- All Implemented Interfaces:
public class BoundaryMedian extends Processor
This class adjusts the 0 point for data taken from multiple images to try to minize edge effects. The alogithm used in this version is as follows:
- Find all of the 'edge' pixels in the image
and compute the jump over the edge.
- We determine the edge pixels by looking at the source images of pixels which differ by one in the x or y dimension. We sweep in both directions
- The jump is simply the change in value between the two pixels.
- Add the jump to the list of jumps between the two input images involved. Increment a matrix counting jumps between image pairs.
- Find the median jump for each pair of adjacent images. This will be used as the offset between these two images.
- Create an absolute offset array with a NaN offset for each input image.
- Find the source image which has the maximum number of pixels in the output image. Make this the base image with an absolute offset of 0.
- Consider the source images in two sets: the set for which an offset has been defined, and a set for which it has not. Initially only the base image is in the first set and all others are in the undefined set.
- Find the largest entry in the counts matrix where the row corresponds to an image with a defined offset, and the column corresponds to an image with an undefined offset.
- Set the offset of the undefined images as the offset of the defined image plus their relative offset.
- Iterate until all input images have an offset defined. If there are too few pixels in a boundary skip it.
- Apply the calculated offsets to the appropriate pixels of the input image.
- See Also:
- Serialized Form
Constructors Constructor Description
Modifier and Type Method Description
getDescription()Get a description of this object
getName()Get a name for this object
process(Image inputs, Image output, int source, Sampler samp, DepthSampler dsamp)Initialize the de-edger.
updateHeader(nom.tam.fits.Header h)Update a FITS header with the processing done here.
updatesOutput()Does this processor actually modify the output array?
public boolean updatesOutput()Description copied from class:
ProcessorDoes this processor actually modify the output array?
public java.lang.String getName()Get a name for this object
public java.lang.String getDescription()Get a description of this object
Initialize the de-edger.
public void updateHeader(nom.tam.fits.Header h)Update a FITS header with the processing done here.