Isis 3 Programmer Reference
|
#include <Interpolator.h>
Public Types | |
enum | interpType { None = 0, NearestNeighborType = 1, BiLinearType = 2, CubicConvolutionType = 4 } |
The interpolator type, including: None, Nearest Neighbor, BiLinear or Cubic Convultion. More... | |
Public Member Functions | |
Interpolator () | |
Constructs an empty Interpolator object. More... | |
Interpolator (const interpType &type) | |
Constructs an Interpolator object, and sets the type of interpolation. More... | |
~Interpolator () | |
Destroys the Interpolator object. More... | |
double | Interpolate (const double isamp, const double iline, const double buf[]) |
Performs an interpolation on the data according to the parameters set in the constructor. More... | |
void | SetType (const interpType &type) |
Sets the type of interpolation. More... | |
int | Samples () |
Returns the number of samples needed by the interpolator. More... | |
int | Lines () |
Returns the number of lines needed by the interpolator. More... | |
double | HotSample () |
Returns the sample coordinate of the center pixel in the buffer for the interpolator. More... | |
double | HotLine () |
Returns the line coordinate of the center pixel in the buffer for the interpolator. More... | |
Private Member Functions | |
void | Init () |
Initializes the object data members. More... | |
double | NearestNeighbor (const double isamp, const double iline, const double buf[]) |
Performs a nearest-neighbor interpolation on the buffer data. More... | |
double | BiLinear (const double isamp, const double iline, const double buf[]) |
Performs a bi-linear interpolation on the buffer data. More... | |
double | CubicConvolution (const double isamp, const double iline, const double buf[]) |
Performs a cubic-convulsion interpolation on the buffer data. More... | |
Private Attributes | |
interpType | p_type |
The type of interpolation to be performed. More... | |
Pixel interpolator.
This class is used for interpolating buffers of pixel data. It is usually associated with spacial translation, rotations and scaling in geometric warping algorithums (i.e., rubber sheeting). When special-pixel values are found in the data buffer the current interpolator is abandonded and the next lower interpolator is used instead (i.e.; if Cubic-convolution can not be performed then a bi-linear is used and if the bi-linear can not be performed then nearest-neighbor will be used.
Definition at line 34 of file Interpolator.h.
The interpolator type, including: None, Nearest Neighbor, BiLinear or Cubic Convultion.
Definition at line 40 of file Interpolator.h.
Isis::Interpolator::Interpolator | ( | ) |
Constructs an empty Interpolator object.
Definition at line 17 of file Interpolator.cpp.
Isis::Interpolator::Interpolator | ( | const interpType & | type | ) |
Constructs an Interpolator object, and sets the type of interpolation.
type | The type of interpolation to be performed. (NearestNeighbor, BiLinear or CubicConvulsion) |
Definition at line 28 of file Interpolator.cpp.
Isis::Interpolator::~Interpolator | ( | ) |
Destroys the Interpolator object.
Definition at line 34 of file Interpolator.cpp.
|
private |
Performs a bi-linear interpolation on the buffer data.
isamp | The input sample/column/x coordinate. |
iline | The input line/row/y coordinate. |
buf[] | The data buffer to be interpolated. For bi-linear there are four values with the pixel of interest in the upper left corner of a 2x2 window. |
Definition at line 118 of file Interpolator.cpp.
References Isis::IsSpecial().
|
private |
Performs a cubic-convulsion interpolation on the buffer data.
isamp | The input sample/column/x coordinate. |
iline | The input line/row/y coordinate. |
buf[] | The data buffer to be interpolated. For cubic-convultion there are sixteen values with the pixel of interest in the second row and second column of a 4x4 window. |
This algorithm has been checked extensively, and is correctly coded!
This algorithm works by modeling the picture locally with a polynomial surface, which means DNs less than all inputs or greater than all inputs are possible.
Definition at line 156 of file Interpolator.cpp.
References Isis::IsSpecial().
double Isis::Interpolator::HotLine | ( | ) |
Returns the line coordinate of the center pixel in the buffer for the interpolator.
Definition at line 297 of file Interpolator.cpp.
Referenced by Isis::ControlPointEditWidget::demRadius(), Isis::QnetTool::demRadius(), Isis::DemShape::DemShape(), Isis::Chip::Extract(), Isis::ProcessRubberSheet::processPatchTransform(), Isis::Chip::Read(), and Isis::ProcessRubberSheet::StartProcess().
double Isis::Interpolator::HotSample | ( | ) |
Returns the sample coordinate of the center pixel in the buffer for the interpolator.
Definition at line 265 of file Interpolator.cpp.
Referenced by Isis::ControlPointEditWidget::demRadius(), Isis::QnetTool::demRadius(), Isis::DemShape::DemShape(), Isis::Chip::Extract(), Isis::ProcessRubberSheet::processPatchTransform(), Isis::Chip::Read(), and Isis::ProcessRubberSheet::StartProcess().
|
private |
Initializes the object data members.
Definition at line 37 of file Interpolator.cpp.
double Isis::Interpolator::Interpolate | ( | const double | isamp, |
const double | iline, | ||
const double | buf[] | ||
) |
Performs an interpolation on the data according to the parameters set in the constructor.
If the buffer contains special pixel values then the current interpolation is abandoned and the next lower type of interpolation is attempted. The order from highest to lowest is (Cubic Convolution, Bi-linear and Nearest Neighbor).
isamp | The exact sample position being interpolated within the image. |
iline | The exact line position being interpolated within the image. |
buf[] | The buffer of data to be interpolated. The buffer is assumed to be the correct dimensions for the interpolator. |
Definition at line 56 of file Interpolator.cpp.
Referenced by Isis::ControlPointEditWidget::demRadius(), Isis::QnetTool::demRadius(), Isis::Chip::Extract(), Isis::SpatialPlotTool::getSpatialStatistics(), Isis::DemShape::localRadius(), and Isis::Chip::Read().
int Isis::Interpolator::Lines | ( | ) |
Returns the number of lines needed by the interpolator.
Definition at line 236 of file Interpolator.cpp.
Referenced by Isis::ControlPointEditWidget::demRadius(), Isis::QnetTool::demRadius(), Isis::DemShape::DemShape(), Isis::Chip::Extract(), Isis::SpatialPlotTool::getSpatialStatistics(), Isis::ProcessRubberSheet::processPatchTransform(), Isis::Chip::Read(), and Isis::ProcessRubberSheet::StartProcess().
|
private |
Performs a nearest-neighbor interpolation on the buffer data.
isamp | The input sample/column/x coordinate. |
iline | The input line/row/y coordinate. |
buf[] | The data buffer to be interpolated. For nearest-neighbor there is only one value, the pixel of interest. |
Definition at line 101 of file Interpolator.cpp.
int Isis::Interpolator::Samples | ( | ) |
Returns the number of samples needed by the interpolator.
Definition at line 208 of file Interpolator.cpp.
Referenced by Isis::ControlPointEditWidget::demRadius(), Isis::QnetTool::demRadius(), Isis::DemShape::DemShape(), Isis::Chip::Extract(), Isis::SpatialPlotTool::getSpatialStatistics(), Isis::ProcessRubberSheet::processPatchTransform(), Isis::Chip::Read(), and Isis::ProcessRubberSheet::StartProcess().
void Isis::Interpolator::SetType | ( | const interpType & | type | ) |
Sets the type of interpolation.
(NearestNeighbor, BiLinear, CubicConvulsion).
type | The type of interpolation to be set. |
Definition at line 85 of file Interpolator.cpp.
Referenced by Isis::SpatialPlotTool::getSpatialStatistics().
|
private |
The type of interpolation to be performed.
(NearestNeighbor, BiLinear or CubicConvultion
Definition at line 52 of file Interpolator.h.