TN 0009: Analysis of five Orion images

Author: Michael Richmond
Date: 960126
Revision: #1 960206
Key Words: CCD, astrometry, observation, stars

Table of Contents

Introduction

This note contains my conclusions after looking at a set of 5 images of the same region of the sky, the Orion region, taken during January, 1996, with the TASS Mark III camera. There are some pictures and graphs in the document, so you may want to turn off automatic image loading.

The images

Here are some basic properties of the five images I considered. Each field is centered around the stars of Orion's belt, near RA = 5h35m, Dec = -2, and is roughly 3x3 degrees in size.

  image     date  filter   weather       moon              notes
  --------------------------------------------------------------------------
  orion2  Jan  9    V      clear     up, 4 days past full  gain ~ 1.5 e-/ADU
  orion3  Jan 13    V      clear         down              gain increased
  orion4  Jan 15    V      clouds        down               
  orion5  Jan 19    V      thin clouds   down 
  orion6  Jan 21    V      incr. clouds  down

I looked at the values of pixels in rows 0-6, several of which are covered by metal and so ought to be good measurements of the dark value. I measured the mean inside each column, excluding the first and last 10 rows.

                                 column
              0       1       2       3       4       5       6      stdev
  -------------------------------------------------------------------------
  orion2    4078   -22785  -25783  -24711  -14383  -14216  -14100      31
  orion3  -22009   -28100  -28781  -28540  -24050  -26144  -26015      13
  orion4  -15027   -27216  -28580  -27973  -22837  -22438  -22341      44
  orion5  -22124   -28115  -28781  -28524  -26281  -26145  -26173      37
  orion6  -20938   -27969  -28752  -28445  -25749  -25525  -25449      19
This tells me that column 2 is the lowest column, consistently. I therefore chose to use the mean of column 2 as the dark value, subtracting a constant value from all image pixels. I list the standard deviation of the pixels in column 2 in the stdev column in the table above.

Flatfield vectors

I noticed that most images had an obvious pattern which ran parallel to the scan direction (along columns).

I assumed that this was due to a change in sensitivity across the chip, and that it was multiplicative in nature. I created a flatfield vector for each image by finding the median value of each column. Thus, from an image with (800_rows_x_768_columns), I would create a (1_row_x_768_column) vector.

After I'd made them all, I compared them as a group. As expected, most of them showed a consistent pattern. In the plot below, I've normalized all vectors to have a mean value of 10,000, then offset them by 1,000 units in the vertical direction for clarity.

As my earlier analysis suggested, the Mark III camera has a variation of about 10-15 percent across its width, being least sensitive on the edge near column 0 (North), and most sensitive near its center.

Data reduction

I subtracted a constant dark value from the pixels in each image. Next, I formed a flatfield vector, as described above, and divided each row of the image by a normalized version of it. I used these clean images for all further processing.

Here's a clean image of the frame orion3 for reference. In this image, North is up, East to the left, just as on star charts. You can click on the image to get a full-size version.

The three bright stars in Orion's belt are marked with their designations (in Greek letters). I've also marked three other stars, as A, B, C. All coords are J2000.

   star      RA         Dec      V 
   ---------------------------------
    A    05:37:34.7  -01:25:20  6.92
    B    05:35:12.7  -00:44:08  6.51
    C    05:37:45.8  -00:46:42  7.01
The box at lower center will be used for a test in the section on limiting magnitude.

Normally, however, I display images with North at left, West at the top, so that scan lines run vertically.

Sky values

When I tried to determine a sky value, I had problems. The trouble was that in several frames, the sky brightness changed signficantly over the exposure time, so that a single sky value could not be determined. If the sky brightness didn't change, as in the image orion3, then a histogram of pixel values looked like this:

This nice, gaussian-like shape is what one expects in astronomical images. However, several of the frames had much wider and less well-defined histograms. Here, for example, is that of orion6:

These variations are almost certainly due to changes in the cloud cover over Tom's backyard.

I decided to ignore those frames with widely-varying sky values, and choose the 3 best. For each, I estimated the sky value and the width of a fitted gaussian.

  image      sky     sky sigma   comments
  ---------------------------------------------------
  orion2    12791       121
  orion3     2756        22
  orion5     2499        50      not really gaussian

Point-spread function

I examined the shape of stars in each frame, using a azimuthally-averaged profile to fit a 1-D gaussian to each star. I only looked a couple of stars on each frame, and didn't check for variation in the shape across the image. Here are my results -- the ellipticities and position angles are very rough estimates.

  image     FWHM       ellip   PA     
  --------------------------------
  orion2    2.5 pix    0.40    90 deg
  orion3    2.6        0.35    40
  orion4    2.5        0.25    35 
  orion5    2.9        0.20    15
  orion6    2.7        0.25    20

The position angles are measured relative to North/South. Thus, if a star is elongated in the scan direction, East/West, it would have PA = 90 degrees. It looks like Tom fixed up the scan rate after orion2 was taken.

Overall, the PSF is rather elongated, compared to most astronomical images I've taken. That's not too surprising, considering the early stages of development, and I don't worry about it.

Gain

I tried to measure the gain, in electrons per ADU, by the following method. In each clean image, I chose a set of 10 or so areas, all near the same row number (so all taken at roughly the same time), and placed a 20x20 pixel box down in a region empty of stars. I meausured the mean and standard deviation of pixel values in the box. Now, if all the noise were contributed by Poisson statistics in photons arriving from the sky, we would expect

      stdev (# photons)    = sqrt (# photons)
   or
      stdev (# electrons)  = sqrt (# electrons)

However, the pixels contain ADUs, and there's a conversion factor k, the gain, such that

      # electrons = k * # ADU
In this case, we expect that
      stdev (# ADU)        = sqrt (# ADU / k)
                           = 1/sqrt(k) * sqrt(# ADU)
Or, turning the equation around to solve for k,
      k  =  # ADU / (stdev # ADU)^2     [equation 1]

Applying this method to each of the images, I found

  name     local mean   local stdev    k
  -------------------------------------------
  orion2     12771        103         1.2
  orion3      2746         24         4.8
  orion4      7382         54         2.5
  orion5      2548         24         4.4
  orion6      3673         28         4.7

Now, Tom has said that he did modify the gain after orion2, increasing its value. Good -- that matches the results of my test. The values around k=4.5 aren't far from the value of k=5.4 which Tom describes in Technical Note 8. However, I should point out that Tom quotes in Technical Note 7. that the readnoise of the Mark III is around 15 ADU, which means that a large part of the "local stdev" I measured is, in fact, due to readout noise and not due to the Poisson distribution of incoming photons. Therefore, my analysis above is flawed, and can't provide the true results.

Instead, one would have to solve an equation like

      stdev (# electrons)  = sqrt (# electrons +  readnoise*readnoise)
where readnoise is measured in electrons, or
      stdev (# ADU)        = sqrt (# ADU / k   +  [readnoise/k]^2)
In this case, the measured standard deviation is larger than one would expect from the noise due to the mean sky level, and therefore, if we used equation 1 above, we would calculate an incorrectly small value for k. Since the values I calculate above are indeed a bit smaller than the electronics design predicts, I think that all is well.

Finding Stars

I used a relatively simple method to find stars in the clean images, one which

I hope someday to make the program, part of the XVista package that Dick Treffers and I have written, freely available.

I ran the program with the following values:

and found
  name        # stars
  ---------------------
  orion2       647
  orion3       824
  orion4       462

Of course, fiddling with the many free parameters could change these numbers quite a bit. I discovered that there are many bright stars not picked up by my program, and also many faint, but clearly visible, stars. There's more work to be done here.

I believe that the fact that most of the images were rather elongated probably caused problems for my program. I will investigate possible fixes -- there are several ways to improve its performance.

Photometry

Given a list of stellar positions, I ran another program to measure the amount of light inside circular apertures. The program used an annulus around each object to estimate a "local sky" value for it; the annulus had inner and outer radii of 15 and 25 pixels, respectively.

I used circular apertures of radii 3 and 6 pixels to calculate instrumental magnitudes. The figures below refer to the 3-pixel-radius magnitudes, unless otherwise noted.

Matching images against each other

The first thing I did was to try to match up the lists of stars produced from each of the three good images (orion2, orion3, orion5) with each other. I used a set of programs based on the algorithms described in a paper called "The Focas Automatic Catalog Matching Algorithms", by Valdes et al., published in PASP 107, 1119 (1995). When I wrote the code, I tried to avoid constructions that would prevent it from being ported simply to other environments. It possible that some of this code might become part of XVista (someday...).

My programs produced several results of interest. First, in order to cause the coordinates of objects from two images to match, one must (almost always) transform one set in some fashion. I assumed that the transformation could be written

   x' = A + Bx + Cy
   y' = D + Ex + Fy
where (x,y) is the position of a star in one image, (x',y') is the position of the same star in another image, and A,B,C,D,E,F are all variables to be calculated by a matching program, Note that for a pair of images which have identical scales, but are simply shifted by 3 pixels in x and -5 pixels in y, we should find A=3, B=1, C=0, D=-5, E=0, F=1.

It is interesting to see how closely matched pairs of objects agree in their positions, and in their magnitudes. Finally, it's sometimes useful to consider the objects which didn't have any match in the other image.

Let me describe below the results of matching stars found in different images.

Comparing the stars in orion2 with those in orion3, I found

        orion2: 647 stars
        orion3: 824 stars

        transform orion2 -> orion3:  
           A =  -0.41   B =  1.011  C = -0.003
           D = 177.23   E = -0.000  F =  1.001

        430 matches
           delta x   =  0.09 +/- 0.65  pix   (East-West)
           delta y   =  0.07 +/- 0.68  pix   (North-South)
           delta mag = -1.17 +/- 0.55  mag

As we expect, we find that the two images have the same scale, and are not rotated with respect to one another (note that B and F are both close to 1.0, and C and E are close to 0.0). The matches are good to about 2/3 of a pixel; this includes both centering errors and the coordinate transformation.

Comparing the stars in orion3 with those in orion5, I found

        orion3: 824 stars
        orion5: 462 stars

        transform orion3 -> orion5:  
           A =   6.87   B =  0.997  C = -0.002
           D =   2.81   E = -0.000  F =  0.999

        405 matches
           delta x   = -0.10 +/- 0.70  pix   (East-West)
           delta y   =  0.10 +/- 0.68  pix   (North-South)
           delta mag = -0.08 +/- 0.23  mag

These two images are nearly co-incident, differing by only a few pixels in each direction. The scatter in matched positions is again about 2/3 of a pixel. The scatter in magnitudes is much smaller in this pair of images, perhaps due to the lack of a full moon (and its large contribution to sky noise), perhaps due to the consistent gain value.

Matching images against the GSC

The next step was to compare my lists of stars against those in the Hubble Guide Star Catalog, which provides a good positional reference over the entire sky. It also contains V-band measurements for stars, although there has been some criticism of its photometry. I will claim that for current, and many future, uses of TASS, it is completely adequate.

Actually, for the tests described in this section, I used a slightly modified version of the very first edition of the GSC. Newer editions have fixed errors and included additional stars. In addition, I shrank the GSC drastically to make it fit onto a small disk, in the following way: I discarded all information except position and magnitude, and I slightly degraded the positions and magnitudes by binning them at roughly 1-arcsec and 0.1 mag intervals. Therefore, it's quite possible that people using more recent editions of the full GSC might reach slightly different conclusions than I did.

One further note on the "GSC" values: to ease comparison of star lists with entries from the GSC, I converted the positions of stars to positions relative to the plate center, in the following way. I choose a position near RA=5h35m, Dec=-2, and grabbed stars within a 2.8x2.8 degree box around it. There were a total of 2786 stars in the resulting catalog. Given the central position (ra0, dec0) for the field, I assigned to each star an "x" and "y" offset, where

         x = (star_s.ra -  ra0)*cos(star_s.dec*DEGTORAD)*3600.0;
         y = (star_s.dec - dec0)*3600.0;
Thus, I squashed the spherical coordinates from the GSC onto a plane, in a simple-minded manner. I would appreciate learning a better way to do this.

For all tests with the GSC, I used the orion3 image, which seemed to be the best overall. Here's what I found after matching the two:

        GSC:   2786 star
        orion3: 824 stars
        
        transform GSC -> orion3:  
           A = 332.73   B =  0.0724 C =  0.0003
           D = 393.00   E = -0.0000 F = -0.0721

        695 matches
           delta x   =  0.00 +/- 0.95  pix   (East-West)
           delta y   = -0.03 +/- 0.77  pix   (North-South)
           delta mag = -4.08 +/- 0.76  mag
So, what do we learn? The coordinate systems are not rotated (much) relative to each other, as one would expect. The plate scale of Mark III images is given by the coefficients B and F in the transformation:
        1 pixel = 13.80 arcsec       (East-West)
        1 pixel = 13.87 arcsec       (North-South)
I'm not sure at this point if the two values are significantly different, or, if they are, why they should be different. I can imagine several reasons for a difference, but, at the moment, I'll just pretend that they are the same (perhaps to within the errors?), and conclude that the plate scale of the Mark III images is about 13.85 arcsec/pixel.

It is gratifying to see that the scatter in positions is not very different from that derived from a pair of TASS images. The fact that the East-West positions have a larger error might be due to the elongated nature of the Mark III images. In any case, it seems possible to measure the position of an object in a Mark III frame to a precision of about

      (0.8 pixels * 13.85 arcsec/pixel) ~ 11 arcsec 

I have the feeling that I need to think harder about this process. Clearly, measuring positions will be very important for many TASS users, and a precision of only 11 arcseconds will not satisfy some of them. Is it possible that measuring the position of an object relative to N others with known positions will decrease the uncertainty by sqrt(N)? I'm not sure ... if someone could provide a good discussion of the issues, I'd appreciate it.

Using instrumental magnitudes measured through larger apertures (6 pixel radius, rather than 3 pixel radius) yielded a slightly larger scatter:

           delta mag = -3.86 +/- 0.88  mag
This isn't too surprising, since many faint objects provide little or no signal beyond 3-4 pixels from their peak.

Limiting magnitude

The tests above, in which I matched my hacked version of the GSC against orion3, yielded a set of matched GSC stars with the following magnitude distribution:

    mag     6    7    8    9   10   11   12   13   14   15
    -------------------------------------------------------
    #stars  7   17   33   35   91  161  183  119   46    3
One way to define limiting magnitude is as the magnitude at which only 50% of objects are detected. The numbers above should continue rising to mag=15, but stop rising quickly around mag=12, and decrease at mag=13. The distribution suggests to me that my program's ability to find stars in the orion3 image starts to decrease around mag=12, although clearly it does pick up many fainter objects.

Mike Gutzwiller did a better job of matching stars and reports a deeper limiting magnitude: read his report in the Appendix II.

For more detailed tests, I selected a small region, one quarter of a square degree, defined by (J2000) coords

    84.0 < RA  (degrees) < 84.5   [ 5h36m < RA < 5h38m ]
    -1.5 < Dec (degrees) < -2.0    
and grabbed all the stars from a recent copy of the GSC (not the hacked-up version I used above) in that area. I then picked a slightly larger sub-area in the image orion3 and looked for stars with a lower threshold the my previous seaches; here, I used skysig=22 and minsig=1.5. I found
    382 stars in the GSC inside this area
    113 stars in orion3 in a slightly larger area
After matching them up, I found a set of
    39 matches
    delta x   =  0.4 +/- 1.0 pix
    delta y   = -0.1 +/- 0.6 pix
    delta mag = -3.9 +/- 1.0 pix

And one can look at the number of GSC stars which were detected in the image as a function of magnitude:

    mag                 7   8   9  10  11  12  13  14  15
  ---------------------------------------------------------
   # detected           3   2   3   2   9  14   4   0   2
   # not detected       7   4   7  15  24  62  73  71  80
   percent detected    30  33  30  12  27  18   5   0   2
As we have seen earlier, my software starts missing more stars than usual around mag V=12, although certainly some objects down to V=15 are detected. Certainly this could be due to

Now, let's compare the objects

    set A: detected in the image, which appear in the GSC
    set B: detected in the image, which don't appear in the GSC
    set C: not detected in the image, but does appear in the GSC
Here are some pictures: each is a closeup of the orion3 image, and I overlay it in turn with boxes at the positions of the objects in each of the above sets. Remember that I selected objects from the GSC inside an area slightly smaller than the images, near its center. The pictures are oriented to have North at top, East at left. You can click on any picture to get a larger version of it.

Here is set A: detected in both image and GSC:

Here is set B: present in GSC, but not found in image.

Here is set C: detected in image, but not in GSC. Note that there are no such sources inside the central area which is covered by the GSC stars.

Appendix: a hacked-up local subset of GSC

For those who might find it useful, I offer here a copy of my hacked-up version of the first edition of the Guide Star Catalog. It contains (a subset of?) the stars roughly within the area of the Orion images. All magnitudes have been rounded to 0.1, and all positions rounded to 0.1 seconds or 1.0 arcseconds. The final two columns provide my calculated offset from the center of the field, in arcseconds.

Beware -- it's large: 2795 lines and 189,560 bytes.

Click here to download the ASCII catalog for the Orion area.



Appendix II: Mike Gutzwiller's analysis of limiting magnitude

The following is the text of a message posted to the TASS mailing list on Monday, Feb 5, 1996 by Mike Gutzwiller.

To all,

I've been working on processing the Orion images with some success in recognizing stars. First, thanks to Michael Richmond for making the subset of the Hubble GSC available for comparison with my data.

Most of my analysis was done with the orion3.dat image. To process the image I first "dark subtracted" the image using the average value under pixel 2 as other have used. I then created a "flat field" image and divided it into the "dark subtracted" image. This gave me an image with the following characteristics:

        average sky background  ~2500 ADU's
        noise (1 sigma)         ~30 ADU's
        saturated peaks         >20,000 ADU's

After examining several stars I determined the pixel scales in x and y and the zero point of the image in RA and Dec. I then created an average PSF for the stars by examining local maxima and their surroundings and then scaled the PSF so that the sum of the PSF was zero. I then created a star candidate list in the following way:

        1) Start with any local maximum where the peak was at least 75 
           ADU's above the background.
        2) I correlated the area around the peak with the scaled PSF. If
           the correlation was good I kept the candidate.
        3) I determined the x and y centroid of each peak and summed the
           pixels under the PSF minus the local sky background.  These
           values were then transformed in RA, Dec, and magnitude using
           scale factors I determined earlier.
The results when compared with the GSC are as follows:
Mag range       GSC stars       Stars found     % Stars found

< 11.0          199             197             99%
11.0 - 11.4      89              82             92%
11.5 - 11.9     115             113             98%
12.0 - 12.4     152             138             91%
12.5 - 12.9     203             189             93%
13.0 - 13.4     274             234             85%
13.5 - 13.9     347             215             62%
14.0 - 14.4     511             185             36%
14.5 - 14.9     656             103             16%
>= 15.0         122              14             11%

A star was considered a match if it was within 5 seconds in RA, 65 arc-seconds in Dec and 1.5 magnitudes. The average sigmas seen were 1.8 seconds in RA, 24.2 arc-seconds in Dec and 0.58 magnitudes. There are certainly some systematics I haven't yet accounted for (particularly rotation which I am assuming to be zero.) but it looks like I am detecting stars well into mag 14.