Package skyview.process.deedger

# Class BoundaryMedian

java.lang.Object
skyview.process.Processor
skyview.process.deedger.BoundaryMedian

All Implemented Interfaces:
  `Serializable`, `Component`

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:

1. 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.
2. Add the jump to the list of jumps between the two input images involved. Increment a matrix counting jumps between image pairs.
3. Find the median jump for each pair of adjacent images. This will be used as the offset between these two images.
4. Create an absolute offset array with a NaN offset for each input image.
5. 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.
6. 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.
7. 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.
8. Set the offset of the undefined images as the offset of the defined image plus their relative offset.
9. Iterate until all input images have an offset defined. If there are too few pixels in a boundary skip it.
10. Apply the calculated offsets to the appropriate pixels of the input image.

See Also:
  - Serialized Form

## Constructor Summary

Constructors
Constructor
Description
`BoundaryMedian()`

## Method Summary

Modifier and Type
Method
Description
`String`
`getDescription()`
Get a description of this object
`String`
`getName()`
Get a name for this object
`void`
`process(Image[] inputs, Image output, int[] source, Sampler samp, DepthSampler dsamp)`
Initialize the de-edger.
`void`
`updateHeader(nom.tam.fits.Header h)`
Update a FITS header with the processing done here.
`boolean`
`updatesOutput()`
Does this processor actually modify the output array?

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### BoundaryMedian

public BoundaryMedian()

## Method Details

### updatesOutput

public boolean updatesOutput()
Description copied from class: `Processor`
Does this processor actually modify the output array?

Specified by:
  `updatesOutput` in class `Processor`

### getName

public String getName()
Get a name for this object

### getDescription

public String getDescription()
Get a description of this object

### process

public void process(Image[] inputs, Image output, int[] source, Sampler samp, DepthSampler dsamp)
Initialize the de-edger.

Specified by:
  `process` in class `Processor`
Parameters:
  `inputs` - The input images.
  `output` - The output user image
  `source` - The index array
  `samp` - The spatial sampler (not used)
  `dsamp` - The energy sampler (not used)

### updateHeader

public void updateHeader(nom.tam.fits.Header h)
Update a FITS header with the processing done here.

Specified by:
  `updateHeader` in class `Processor`