This program will fill in the gaps of a cube (i.e. replace special pixels
with DN values) by using an interpolation scheme and a direction specified
by the user.
Note: This application will not extrapolate DN
values beyond the endpoints of a data set. For example, if you choose to
fill gaps that run across lines, then any special pixel values in the
first or last vertical column of the image will not be filled. If any of
these are not in a corner, you can run fillgap again using the output of
the first run as input and SAMPLE as the DIRECTION parameter. Corner
pixels can be filled by using the
specpix application or the
lowpass filter application.
Changed INTERP option CUBIC's name to CUBICCONVOLUTION to correlate with
other apps using the INTERP param.
Jeannie Walldren
2008-11-05
Removed references to DataInterp class and replaced them with
NumericalApproximation class.
Jeannie Walldren
2009-04-21
Added an exception catch so the application may continue if the
interpolation fails for some pixel. Added a message to the log to inform
users how many pixels were not filled. Updated user documentation to
explain what they may do if this occurs. Changed the INTERP parameter
CUBICCONVOLUTION back to CUBIC since this application uses a cubic spline,
not cubic convolution. Added test cases and documentation examples.
fillgap provides 3 different interpolation options. The
interpolation option chosen is used to compute a continuous (or
piecewise continous) interpolation so that each line and sample
has a transform location that maps the output line and sample
to a shifted input line and sample. These interpolations provide
this mapping. This is done by collecting the known DN values for
each line or sample column and using the chosen interpolation scheme
to approximate the missing DN values (special pixels).
Type
string
Default
CUBIC
Option List:
Option
Brief
Description
LINEAR
Linear Interpolation of lines and samples
This interpolation type is used to determine intermediate line
and sample shifts for each line. Linear interpolation is
piecewise discontinuous. This interpolation option requires a
minimum 2 points.
CUBIC
Natural Cubic Spline interpolation of each line or
sample column
This interpolation uses a cubic spline with natural
boundary conditions for interpolation of each line and sample
shift. The resulting curve is piecewise cubic on each interval
with matching first and second derivatives at the supplied data
points. The second derivative is chosen to be zero at the first
point and last point. This interpolation option requires a
minimum of 3 points.
AKIMA
Akima Spline interpolation of each line and sample
This interpolation uses a non-rounded Akima spline with natural
boundary conditions for interpolation of each line and sample
shift. This spline uses the non-rounded corner algorithm of
Wodicka. It requires a minimum of 5 points.
This is the direction of the special pixels across the image. If the special pixels run through the bands of the image data,
try both directions to see which works best.
Type
string
Default
SAMPLE
Option List:
Option
Brief
Description
Sample
Across samples
The special pixels run horizontally across the image samples.
Line
Across lines
The special pixels run vertically across the image lines.
Band
Across Bands
The special pixels run 3-D through the image bands.
This example shows the fillgap application using the default parameters
SAMPLE and CUBIC. This will fill horizontal gaps in data using a
cubic spline on the DN values of each vertical column of samples.
Screenshot of GUI with parameters filled in to perform
a fillgap operation on the input image.
Input Image
Input Peaks image
Input image for fillgap
Parameter Name:
FROM
This is the input image for the fillgap example with null horizontal line.
Output Image
Output image showing results of the fillgap application.
Output image for fillgap
Parameter Name:
TO
This is the output image that results after a cubic interpolation to fill the null data gaps.
Example 2
Fill gaps of Cassini ISS image
Description
This example shows the fillgap application using the LINE and CUBIC
parameters. This will fill vertical gaps in data using a cubic spline
on the DN values of each horizontal line.
Screenshot of GUI with parameters filled in to perform
a fillgap operation on the input image.
Input Image
Input Cassini ISS image
Input image for fillgap
Parameter Name:
FROM
This is a Cassini ISS image that has been altered to include each
type of special pixels on an edge of the image.
Output Image
Output image showing results of the fillgap application.
Output image for fillgap
Parameter Name:
TO
This is the output image that results after a cubic interpolation to
fill the special pixel data gaps. Notice the special pixels that
move across samples and touch edges are not filled. This
includes the block of null pixels at the top left corner of the
image. This happens because the valid data only does not exist on
both sides of these gaps and extrapolation is not permited. However,
the special pixels that touch the upper and lower edges are filled
since these gaps move across lines.
Example 3
Fill gaps of Cassini ISS image
Description
This example shows the fillgap application on the output of Example 2.
Here we use the SAMPLE parameter to fill the remaining horizontal gaps in
data using the DN values of each vertical column of samples.
Screenshot of GUI with parameters filled in to perform
a fillgap operation on the input image.
Input Image
Input Cassini ISS image
Input image for fillgap
Parameter Name:
FROM
This is a Cassini ISS image that has been altered to include each
type of special pixels on an edge of the image. Some of these
pixels have already been filled by a previous run of fill gap (see
Example 2).
Output Image
Output image showing results of the fillgap application.
Output image for fillgap
Parameter Name:
TO
This is the output image that results after a cubic interpolation to
fill the special pixel data gaps. Notice all special pixels have
been filled except the top left corner of the image. Special pixels
in the corners of an image can not be filled by the fillgap
application since they are beyond the endpoints of any known data
values (i.e. DNs values of samples and lines).