Name detpeak - detection of bright peaks in an image Synopsis detpeak [options] image.fits [...] Description detpeak detects localizes bright object centroids in an image. It takes as argument a list of FITS cube names and outputs on stdout the center of each detected bright zone. It is also possible to get an average pixel value for each zone. Bright objects are detected if and only if they contain a peak of sufficient amplitude i.e. more than K sigmas above the mean image value, AND if they cover a surface at least of 3x3 pixels. To detect peaks located in a window smaller than 3x3, there is an option to smear out the image by a low-pass filter before applying peak detection, but of course it has associated drawbacks. By default, detpeak will be looking at all the signal which is more than 2 sigmas above the average pixel value. This value can be changed using the -s (or --sigma) option. In spite of calls to morphological filters, detpeak is surprisingly faster than other usual algorithms. It should be used as a peak position estimator more than a precise locator, though. Algorithm detpeak creates first a binary map of all pixel positions which have a value above a given threshold (by default, average plus 2 sigmas). A binary morphological erosion, and a dilatation are then performed to close all regions smaller than 3x3, which removes all isolated bad pixels. Last, a floodfill algorithm is applied to find the geomet- ric center of all remaining white blobs. A position and an average pixel value are returned for each found blob, in each image plane of each input cube. If fine positioning is activated (-f or --finepos option), a subsequent process is called, which requests 3 user- defined radiuses in pixels: r1, r2, and r3. For each found peak position in the image, a background is computed as the mean pixel value in the ring centered on the estimated peak position, of radiuses r2 and r3. Then a barycenter is computed within the disk centered on the same spot, of radius r1, using background-subtracted pixel values as weights. This fine positioning method proves quite reli- able, but requires all peaks in the image to have more or less the same size to fit into the circles defined by r1, r2, r3. Options -s cut or --sigma cut Use this option to change the cut level in a factor of sigmas. The lower this value, the more bright zones may be detected. The higher this factor is, the less detected peaks. The default of 2.0 seems to work fine on images having a high Signal to Noise Ratio. -f `r1 r2 r3' or --finepos `r1 r2 r3' Fine positioning: provide three values r1 < r2 < r3. The radiuses r2 and r3 specify a ring around each detected point, from which an estimation of the background is computed. A barycenter is then computed in the disk of radius r1, using back- ground-subtracted pixel values as weights. No defaults are given to these parameters. Be aware when using this position refining that it assumes the following conditions. All peaks are isolated, i.e. the closest distance between 2 peaks is strictly greater than 2 * r3. There is a background zone around every peak, always within the disk defined by r2 and r3. Otherwise, the back- ground estimation is contaminated with peak signals. All peaks are contained in a disk of radius r1. -l or --smearing This option (low-pass filter) applies a 5x5 convo- lution with a flat kernel before trying to detect objects. The smearing is h.PPful to detect objects which are smaller than a 3x3 window. It increases the number of detections, but also the number of false detections. Bad pixels, for example, are smeared out to a 5x5 window and detected as proper peaks. Another issue is that 2 close peaks will be smeared out to a single one. Most probably, the returned result will be a barycenter of the 2 regions instead of the 2 expected centers. Because the smearing will lower the signal in all regions, the default sigma cut is halved when this options is used. --sao or -o sao SAOimage compatible output format. See section below. --mag or -o mag Magnitude output format. See section below. This is no estimation of the stars' magnitude, but just an average pixel value over the zone, to be used for example as a criterion to classify objects, or for point-pattern matching. Output Formats As a default, detpeak only outputs the positions in X and Y. A typical output is: #----------------------------------------------- # FILE star.fits # PLANE: 1 112.47 129.55 #----------------------------------------------- The following options are also possible: SAOimage compatible format. A typical output is: % detpeak -o sao star.fits (equivalent to: detpeak --sao star.fits) #----------------------------------------------- # FILE star.fits # PLANE: 1 POINT( 112.47, 129.55) #----------------------------------------------- This output can be redirected to a file, and read from the SAOimage utility, in menu Cursor/region/read. Another option is to output the average pixel value in each detected zone (magnitude output format). A typical output is: % detpeak -o mag star.fits (equivalent to detpeak --mag star.fits) #--------------------------------------------------------- # FILE star.fits # PLANE: 1 112.47 129.55 0.06 #--------------------------------------------------------- Examples > detpeak *.fits would return all found bright positions for all planes in all files matching *.fits in the current directory. To find all very bright peaks (more than 5 sigmas above the average): > detpeak -s 5.0 *.fits To use fine positioning in an image where all peaks are within a disk of 5 pixels in radius, around which a back- ground can be computed on a ring of radiuses 6 and 12 pix- els: > detpeak -f `5 6 12' *.fits Files Input files shall all comply with FITS format. See Also stcube, shiftadd Bugs Peaks located on an image edge will not be detected. The fine positioning method makes assumptions about the signal, which may not be fulfilled in many cases. Use it with caution, especially when determining the radiuses r1, r2, and r3 for background computation and weighing region. It would be nice to find an algorithm for automatic set- ting of the sigma threshold, instead of relying on a default value.