Miscellaneous Operations on Objects

Finding Objects

Photo's object finder looks for all connected pixels above a set of thresholds (pixels which touch only at a corner are considered to be connected), resulting in a set of OBJECTs. If an estimate of the sky level is provided, also fit the centres of all peaks present within each object (both the primary peak and any lower secondary peaks). These are stored in a data type called a PEAK. At this point, the peak's centres are given in their own band's coordinate system.

Rejecting peaks that don't meet certain criteria (`culling')

Cull some of a list of PEAKs given some thresholds. Specifically: The brightest peak in an object is never deleted.

delta may be expressed in terms of the local pixel standard deviation.

Merging Together Peaks Found on Separate PEAK Lists

There are two distinct ways in which lists of PEAKs are merged, when we are merging OBJECT1s in the same band, and when we are merging the lists of PEAKs detected in different bands.

Various tolerances are used to decide when peaks are identical XXX

Finding a Good Centre

Photo centres objects by taking the brightest pixel, and fitting a Gaussian of suitable width. If the width of the object (as determined by the fit) is too large in row and/or column, the object is rebinned (in row and/or column) and the fit repeated. When the smoothing scale matches the object, the resulting centre and error is returned. The rebinning can either return the mean or median of the pixels that are to be binned together; currently the mean is used.

For a star this should produce an approximately optimal centre; the code is that used elsewhere in SDSS software. For more extended objects there's no particular reason to expect that a Gaussian should describe the profile well, but it probably doesn't really matter.

Growing an object by adding pixels to its periphery

Growing an object involves adding pixels to its outside; we need to do this when we've detected an object above some threshold, but we know that it also must have pixels below that threshold. Let us consider the problem of growing by N pixels.

The correct way to do this is to add a single pixel to the end of each row of detected pixels, add an extra row above and below each row, figure out which pixels are now present many times in the object and reduce it to some canonical form, and then repeat the operation N times.

Unfortunately, this is expensive and we have instead used a one-step procedure: Add N pixels to each end of each row, and N - 1 to the rows above and below, N - 2 to the next two, and so on. Finally, deal with overlaps.

Probably we should just switch to the `right' way of doing it, but this hack works well enough