Bill Gray 168 Ridge Road Bowdoinham, ME 04008 ph (207) 666 5750 (800) 777 5886 Internet: pluto@projectpluto.com CompuServe: [71736,3544] 13 Jan 97 ~TCONTENTS~t 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 1 2 2 3 6 7 8 9 10 12 Description of CHARON Reasons why CHARON was written Current status of the software Starting and using CHARON Settings in CHARON Making reports to the MPC Use of FITS files The future Method used to find stars in image Reduction methods Following is some information concerning the CHARON astrometric data collection software. The purpose of CHARON is to enable users to extract positional (and, eventually, photometric) information from CCD images and scanned images with a minimum of work; preferably, zero work. The current version is on the enclosed floppy. As will rapidly become apparent, CHARON is a work in progress. To my knowledge, it currently does a good job of measuring positions on CCD images. If you find any problems, or have _any ideas for improvement_, please let me know! DESCRIPTION OF "CHARON" ASTROMETRIC SOFTWARE With CHARON, one must provide an image, specifying either the object or an approximate position in the sky. Charon will then examine the image you've taken, and will search through the GSC database on the Guide CD-ROM, and find stars in the GSC corresponding to those in the image. It then will calculate the transformation between J2000 RA/dec and positions in the image. Once it has done this, it has registered the image to the sky, and will show you the image with GSC stars superimposed as an overlay. You can move the cursor around and collect information concerning the RA, declination and magnitude of objects in the image. You can hit Tab to immediately zoom in on the target object; CHARON will show both the computed, "expected" position of the target object, as well as its actual observed position in the image, and the difference (observed - computed, or "O-C", or "residual") between them. Finally, one can produce a report on the measured position of the object in a format suitable for submission to the Minor Planet Center (MPC) or International Occultation and Transit Association (IOTA). REASONS WHY "CHARON" WAS WRITTEN There is a fairly serious need for better follow-up on newly discovered asteroids. Once an asteroid is found, it takes a bare minimum of three observations to determine its orbit; in reality, it generally takes more observations, made over a longer period of time, to eliminate uncertainties. Quite a few Guide users have asked me about the subject of astrometry software. As things stand today, many observers spend much more time analyzing the data than they do in collecting it. Software to remove most of the "drudgery" would let them spend more time doing something more interesting. This seemed a logical task for me to untake; I already had most of the required software components, as well as all the data handily compressed to one CD. I felt it would be a useful contribution to astronomical data collection, and I also thought it would just make an interesting project. CURRENT STATUS OF THE SOFTWARE As of this writing, CHARON is in beta testing. I'm working to collect as many images as possible in an effort to find where the software breaks down. So far, it doesn't. As long as the image contains at least three or four GSC stars (three usually works, four always does), the software always finds a match, and is then able to improve it by doing a least-squares fit to all GSC stars in the area. It generally does this in one to three seconds on my 486 DX2/66, depending on the number of GSC stars it has to check. It is quite tolerant of poor input data. The images I have provided have had many extra stars not in the GSC, and the GSC has shown objects not found in the images. Giving it a poor input position doesn't confuse it; tilted and inverted images are not problems. One does have to provide at least an approximate image scale. (As you will see, this is not _absolutely_ necessary, but without it, the software is much slower.) Fortunately, most images provide some data on the physical size of the pixels and on the focal length that was used to acquire the image; the approximate image scale can be easily computed from that data. I have tested it with a variety of SBIG images (ST4, ST5, ST6, and ST7), as well as with .PIC files generated by MIPS (which are not in the "normal" .PIC format). I've tested a very few FITS files, and their use is described in a further chapter. Support for ST8, Starlight Xpress, and Cookbook CCD Camera images will probably be added. I'm still in the process of adding new types of images; if the software doesn't work with your image format, please send me some sample images on a floppy, and I'll add support for them. In fact, I'd appreciate any images you can send me; I'd like to test the software with as diverse a set of images as possible. A sampling of images is included on the Guide 5.0 CD-ROM, in the IMAGE subdirectory. STARTING AND USING CHARON You'll want to start by copying this floppy into your Guide directory. For want of a good, descriptive name, the software is currently called CHARON (as in the name of Pluto's moon). It requires the same mouse driver as the DOS versions of GUIDE, and the Guide 5.0 CD has to be in the CD-ROM drive. For demonstration purposes, I asked Dan Kaiser for some sample .ST6 images, and they're already on the CD-ROM. To see the software in action on one, run charon f:\image\hbaug22.st6 -ocHale-B where: f: should be replaced by the CD-ROM drive letter. hbaug22.st6 is, of course, the name of the .ST6 file. -ocHale-B tells it that the object in question is comet (hence the c) Hale-Bopp. (You don't need the entire name; just enough to uniquely specify the comet you want.) When combined with the date and time stored in the .ST6 file, this specifies where in the sky the target is. There are several other -o switches for different classes of objects; for example, -oa4179 -oaToutatis -oa1992 CM -ocHale-Bopp -osao 123456 -oppm 234567 -ovru cam -onsv 13211 -ongc 4565 -om57 -oic 456 -osn 1993J -ogsc 1234 5678 -p132.2,-21.2 Object is asteroid 4179 Object is asteroid Toutatis Object is asteroid 1992 CM Object is comet Hale-Bopp Object is SAO 123456 Object is PPM 234567 Object is the variable star RU Cam Object is NSV 13211 Object is NGC 4565 Object is Messier 57 Object is IC 456 Object is the supernova 1993J Object is GSC 1234 5678 Object is at RA 132.2 degrees, declination -21.2 degrees The software will pause for a bit while it figures out Hale-Bopp's position as seen at that date and time. It will then pause some more while it grabs GSC data for that region and looks for a match. All this may take a few seconds. When it's done, it will spit out the results of its match. For the Hale-Bopp image, CHARON finds 9 Guide Star Catalog stars in the image that match within a tolerance of 1 arcsecond. It spits out some details of the match, such as residual values. It also computes the focal length using both the computed height and width of a pixel; these values should match fairly closely. The angle between the axes is also computed, and should be very close to 90 degrees. Hit a key, and the software will clear the screen and show you the entire image. Superimposed on this are green crosses showing the GSC stars (remember Green=GSC), and red circles showing the stars CHARON found in the image. Also, the cursor appears as a yellow cross. As you move the cursor around, its position in RA/dec is shown in the upper left corner in yellow (same color as the cursor). The position and identifier for the nearest GSC star are shown in green (matches the GSC stars in question), and the position for the nearest image star is shown in red (matches the image star). The calculated target position option is shown with the full-screen red cross. In theory, the actual target should appear near that position, and sure enough, Hale-Bopp lies right on the cross (you may need to adjust the contrast to see it, though.) A small red circle marks CHARON's idea of the center of Hale-Bopp in the image; move the cursor there, read the position in red from the upper left, and (in theory) you're done. You can pan by clicking with the mouse or using the cursor keys. (Cursor keys alone pan half a screen; Ctrl+cursor keys pan one image pixel at a time.) Key commands are as follows: ? to bring up a "help screen" listing these keys (MOST IMPORTANT, since it can spare you constant referring to this page) * to increase contrast / to lower contrast + to brighten the image - to dim the image These four controls roughly follow the user interface of a TV set, which provides "brightness" and "contrast" controls. We can worry about something fancier later, if needed. 5 (center of numeric keypad) to zoom in twofold Insert to zoom out twofold Space bar to return to full-image view Tab to center on the target object (as marked by the big red crosshairs) i to produce a position report in IOTA format o to produce a position report in MPC format f to change the format of RA/dec positions r to toggle the image from white stars on black to black on white g to toggle the display of the GSC stars t to toggle the display of the "target" (image) stars c to add a new star at the position of the cursor Delete to delet a star from the image You can also measure distances and position angles in the same manner as in Guide: click with the left mouse button and drag the mouse. The distance and position angle are updated in the legend area as the mouse is moved, and a "rubber band" shows the line being measured. SETTINGS IN CHARON The easiest way to get to the settings menu is to run Charon with absolutely no command line arguments at all. Change the needed settings and hit Escape, and your changes will be saved. Also, you can access the settings menu while Charon is running by hitting the Enter key. In either case, you're presented with a list of about a dozen settings. You can move from line to line with the arrow keys, and edit the values in the fields. There is some help provided at the bottom of the screen for each line. Report file name: This defaults to MPC.LOG, and is the name of the ASCII text file to which MPC and IOTA reports will be appended. Cutoff point: This defines the percentage of the image considered to be "background". It defaults to .97, meaning that 97% of the image is assumed to be background, with 3% of it being valid stars. You will probably never have to change this setting. Image offset: This setting is used for images where processing may have created pixels with negative values (after dark fields have been subtracted, for example.) It defaults to zero. Scale tolerance: By default, this is set to .01, and means that CHARON will handle up to a 1% error in the approximate focal length. This is usually far more than enough to allow for the slight changes in focal length. If you have no real idea what the focal length is, or if the focal length is not set properly in the image file, you may wish to increase this value to, say, 1, to indicate that the focal length may be off by 100%. Once CHARON has successfully matched an image, it will show the computed focal length, and you can set the correct value in future images. Setting a wide tolerance does force CHARON to consider more possible matches between stars in the image and stars in the GSC; if possible, set the focal length accurately and use a low scale tolerance. Search distance: By default, CHARON examines stars within .5 degree of the target position. If you think the target position may be inaccurate, you may wish to increase this value. If you expect the target position to be accurate, but know that the field of view of your camera is greater than (or less than) 1 degree, you may want to modify this value. Increasing it means CHARON must consider more possible matches, so it can slow the program down; decreasing it too far may cause it to ignore stars that are actually valid. Observer code: The MPC assigns 3-digit codes to observers. Set yours, and CHARON will use that code in MPC and IOTA reports. It will also use the latitude/longitude corresponding to that observer code. Time offset: If your imaging software assigns a consistently biased time to images, you can use this value to "un-bias" the time. I've also used it in cases where someone has used local time instead of UT in their images! Maximum residual: By default, CHARON considers that if a star's position in the image matches a star in the GSC to within one arcsecond, they must be the same star. This is almost always a valid assumption, but I have seen one image, gathered at very low altitude, where this value had to be raised to 3 arcseconds. Video mode: By mode. This option The sole advantage not all cards will default, CHARON starts up in 320x200 (low-res) cycles to 640x480, 800x600, and 1024x768 modes. of 320x200 mode is that it _always_ works; be happy with all of the high-res modes. INITIAL SETUP FOR YOUR POSITION/MAKING MPC REPORTS If you wish to correct for the effects of parallax, you'll need to make sure that Guide has your correct latitude and longitude set in its Settings menu. This normally is not terribly important, of course, but it can cause large positional errors for closer objects: up to a 20 arcsecond shift for objects 1 AU away. Even a sub-arcsecond shift could cause problems, so entering an accurate lat/lon or MPC observer code is important. If you're going to provide data to the Minor Planet Center (MPC) or the International Occultation and Transit Association (IOTA), you need to tell CHARON your MPC observer code. You do this inside the settings menu (reached by hitting Enter, as described above). The next problem is actually getting the object position. Generally, the best way to do this is to hit Tab. This causes CHARON to center on the computed object position (as marked by the red crosshairs); the target object should be close by, with a red circle on it. Move the cursor near the target object, and its RA/dec will be shown in red, with residuals (O-C, or observed-computed coordinates) in arcseconds underneath. Hit 'o', and CHARON will append the object position and other data to the ASCII file MPC.LOG. Alternatively, you can hit 'i', which will append the same data in IOTA format. You can then send the data to the MPC or IOTA. (The formats are mostly identical, but IOTA requires an extra digit of precision for three data fields.) There are three small details that must be mentioned: (1) CHARON's object-finding system may not succeed in finding the target object and marking it with a red circle. This is particularly common in dealing with faint or extended objects. In such a case, you must move the cursor over the object and hit 'c' (for 'centroid'). Given this hint that "yes, there is an object here", CHARON will find the object's position and add a red circle there. You can then make an MPC report as before. (2) The MPC report for comets will not contain the comet designation. The COMET.DAT file on the CD-ROM doesn't contain the new-style designations. I expect to fix this. (3) The reported position in the MPC or IOTA report is _not_ adjusted for parallax, and shouldn't be. Both organizations need "raw", measured positions for orbital computations. USE OF FITS FILES One reason using ST6 files is so simple is that their format is very standardized. Most of the required data, such as time of observation, pixel size, focal length, and so forth, is contained in the header. Unfortunately, no such standards exist for FITS. All of the above data may be contained in a FITS image, but more likely, it will not be. Also, FITS data comes in various "bit depths"; CHARON at present handles only the most common, 16-bit integer data. Some FITS images contain the image scale ("pixels in this image are 1.207 arcseconds wide and .981 arcseconds high"). These are set using the CDELT1 and CDELT2 tags (which give pixel size in degrees) or the CRDELT1 and CRDELT2 tags (which give the size in radians). If the image doesn't contain that data, you'll have to enter the settings menu (either by hitting Enter while Charon is running, or by just running Charon with no command line arguments at all), and entering the focal length and pixel size in the appropriate fields. Some FITS images contain the date and time of the observation, in the tags DATE-OBS and TIME-OBS. (In theory, _all_ 'standard' FITS files will contain this data; in reality, one cannot depend on it.) If the image lacks these tags, or if the tags contain erroneous data, you can set the observation date with -b(day/month/year hour:minute:second) For example, if the previous example was imaged on 28 Aug 1995 at 3:14:16 UT, one would use charon crzywd.fit -f40 -y9,9 -ongc7001 -b28/8/1995 3:14:16 This should allow one to handle all 16-bit integer images. But I have not had a large number of images to test; if you run into problems, please send me a sample image or two. I will probably find that I've failed to handle some hitherto-unencountered field, and can fix it readily. THE FUTURE Please let me know of any problems or points of interest you find with this software! That's the main reason I'm sending you this floppy. There are a few things that I know absolutely Must Be Done before I can consider this software truly complete; I'll list them so that you'll know that yes, they are being considered: Allow one to discard or add stars to the fit. Allow one to reset the assumed background level. Handle other formats: .ST#, .TIF Fix handling of new-style comet designations. Better handling of stars near the edges of Schmidt-camera plates. Possible use of PPM catalogue data when available, as well as the 90,000-star PPM supplement. (More likely, use the Hipparcos and Tycho data when they become available in June 1997.) Possible (not likely) use of Luyten Two-Tenths proper motion data, or of the Northern Proper Motion data. Ability to blink-compare two (or more) images. One would say, "Here are _two_ images of object XYZ (or near RA/dec X,Y); correlate both to the GSC, then blink-compare them." This could be extended to allow mosaicking of two (or more) images. If time permits, I might also try adding some automated detection: "This object appears to have moved slightly between images, or appears in all three images in straight-line motion." I regard this as a riskier process, of course. Similarly, if one can blink-compare two images, one can mosaic any number of images without much more effort. Ability to show images in Guide, matched and registered to the chart. This is not so major a hurdle as one might think. See the updated Guide software on the Web page for examples as to how this process works. METHOD USED TO FIND STARS IN IMAGE The current "usual" method for finding the position of a star in an image uses a centroiding process. One defines a cell size, usually around 5x5 or 7x7. After finding the brightest pixel in the star, this cell, or "centroiding box", is centered on that pixel. CHARON also has a centroiding box; you can currently set its size in the settings menu. With simple centroiding, one does a weighted average of pixel values in the cell, such as: ~c ~c ~c ~c ~c ~c ~c ~c ~c x_star = y_star = total_intensity = 0;~t for( i=0; i<number_of_pixels_in_cell; i=i+1)~t (~t x_star = x_star + intensity[i] * x[i];~t y_star = y_star + intensity[i] * y[i];~t total_intensity=total_intensity+intensity[i];~t )~t x_star = x_star / total_intensity;~t y_star = y_star / total_intensity;~t This is the method that I used in CHARON for some time before deciding to try a more complex system. The above centroiding system works on the assumption that the target star can be modelled as a Gaussian. That's not a generally a bad assumption; the only change I make to it is to assume that there is also a "background level", i.e., the target star is a Gaussian plus a constant. However, the simple centroiding scheme runs into problems if some pixels are saturated or dead, or if the background level is high compared to the intensity of the star, or if the object is close to another object. All of those objections can be met by simply rejecting such objects, since there are usually an ample number of perfectly useful stars that can be considered instead. My chief reason for abandoning the simple scheme was that it doesn't deal well with comets. I assume that the intensity at a pixel (x, y) is given by ~c 2 2~t ~cI(x,y) = I + I exp( -dist /sigma )~t ~c back star~t where ~c 2 2~t ~cdist = sqrt( (x-x_star) +(y-y_star) )~t (This is the mathematical equivalent of the constant-plusGaussian assumption.) For a particular star, I have five unknowns: the star coordinates x_star and y_star, the star's intensity Istar, the background Iback, and the star's "size", sigma. I do have approximate values for the position and intensity, based on the simple centroiding, and if I start with an assumed zero background and a "guessed" sigma, I can do a least-squares fit to get accurate values for all five unknowns. The above process goes by the name of "point-spread function fitting", or "PSF fitting". I've been happy with its ability to deal with close pairs of stars, poor data, and in particular, its ability to get good positions for comets, where Iback may turn out to be unusually high. It can also extract valid positions for objects containing saturated, dead and "hot" pixels; the major problem here is simply identifying those pixels so the software knows not to include them in the fit. The 'centroid size' in the Settings menu allows you to determine the area CHARON uses for the PSF fit. By default, it uses a 5x5 grid cell; in theory, a 7x7 or even a 9x9 would produce better results. In practice, larger areas often result in including parts of stars other than the one being measured. ASTROMETRIC REDUCTION METHOD & DETERMINATION OF PLATE CONSTANTS I have used the most common method for astrometric reduction. The first step is to find the positions of stars in the image in pixel coordinates. I do this by assuming the star (or satellite) forms a Gaussian peak in the image, and fitting a Gaussian curve to each star. This provides me with the pixel position (x, y) of the star, and an estimate of its magnitude, as described in the previous chapter. So in this manner, I have computed (x, y) pixel positions for all stars in the image. Next, I need to match some stars in the image to stars in a reference catalog, usually the Hubble Guide Star Catalog. If I can match N stars, then I have x(i), y(i) corresponds to RA(i) , declination(i), i=1,2,....N I start with an assumed plate center (RA0, declination0), compute "pseudo-plate coordinates" (u, v) for each RA(i), declination(i). Then I assume that x(i) = A u(i) + B v(i) + C + x_residual(i) y(i) = D u(i) + E v(i) + F + y_residual(i) and The six values A, B, C, D, E, and F (plate constants) are determined with a least-squares fit, which minimizes sum( x_residual(i) ^ 2 + y_residual(i) ^ 2), ('^' means 'raised to the power of', i = 1,2,....N. similar to the FORTRAN **.) Therefore, at least 3 known stars are necessary for a fit to be determined. But with only three, all residuals are always zero, no matter how poor the fit really is; extra stars are essential to ensure that errors are detected. Using the plate constants, I can take the (x, y) pixel coordinates of an unknown object, compute its (u, v) pseudo-plate coordinates, and from these, compute its right ascension and declination. This is a "first-order" or "linear" fit, and is one of three kinds of fits that can be selected in the Settings menu. If I know the size of a pixel in microns, I can also compute the focal length from the plate constants. (CHARON displays the focal length as computed from the pixel height and width; this provides another check for errors. The focal length initially provided in the image serves solely to enable CHARON to make its initial match of image stars to GSC stars.) If there are at least 7 stars, quadratic fit: I can consider the use of a x = Au + Bv + C + Gu^2 + Hv^2 + Iuv + x_residual y = Du + Ev + F + Ju^2 + Kv^2 + Luv + y_residual This uses 12 plate constants instead of 6. Going further, if there are at least 11 stars, I can consider the use of a cubic fit, where terms in u^3, vu^2, uv^2, and v^3 are included and we have 20 plate constants. I am not entirely convinced yet of the usefulness of quadratic and cubic fits, except in cases where the image covers a wide area of the sky and distortions are pronounced. However, I do know that some people will be using the software with wide-angle Schmidt cameras, and for them, cubic fits will be a necessity. All three types of fits are available in the Settings menu. I suggest avoiding the use of higher-order fits unless you know that either your optics or your large field of view are causing non-linear distortions in the image. The reason I suggest using the linear fit is that it can be difficult to tell if the higher order fits are really "working" properly. They will _always_ result in some "improvement" to the residuals, which can fool you into thinking you have better data than is actually the case.