Isis 3 Programmer Reference
|
Convert between parent image coordinates and detector coordinates. More...
#include <RollingShutterCameraDetectorMap.h>
Public Member Functions | |
RollingShutterCameraDetectorMap (Camera *parent, std::vector< double > times, std::vector< double > sampleCoeffs, std::vector< double > lineCoeffs) | |
Constructs a RollingShutterCameraDetectorMap. | |
virtual | ~RollingShutterCameraDetectorMap () |
Destructor. | |
virtual bool | SetParent (const double sample, const double line) |
Compute detector position from a parent image coordinate. | |
virtual bool | SetParent (const double sample, const double line, const double deltaT) |
Compute detector position from a parent image coordinate. | |
virtual bool | SetDetector (const double sample, const double line) |
Compute parent position from a detector coordinate. | |
std::pair< double, double > | applyJitter (const double sample, const double line) |
Iteratively finds a solution to "apply" jitter to an image coordinate. | |
std::pair< double, double > | removeJitter (const double sample, const double line) |
Remove the distortion from the image (parent) coordinates. | |
double | AdjustedStartingSample () const |
Return the starting detector sample adjusted for summation. | |
double | AdjustedStartingLine () const |
Return the starting detector line adjusted for summation. | |
double | ParentSample () const |
Return parent sample. | |
double | ParentLine () const |
Return parent line. | |
double | DetectorSample () const |
Return detector sample. | |
double | DetectorLine () const |
Return detector line. | |
void | SetStartingDetectorSample (const double sample) |
Set the starting detector sample. | |
void | SetStartingDetectorLine (const double line) |
Set the starting detector line. | |
void | SetDetectorSampleSumming (const double summing) |
Set sample summing mode. | |
void | SetDetectorLineSumming (const double summing) |
Set line summing mode. | |
virtual double | SampleScaleFactor () const |
Return scaling factor for computing sample resolution. | |
virtual double | LineScaleFactor () const |
Return scaling factor for computing line resolution. | |
virtual double | LineRate () const |
Return the line collection rate (0 for framing cameras) | |
virtual double | exposureDuration (const double sample, const double line, const int band) const |
This virtual method is for returning the exposure duration of a given pixel. | |
Protected Attributes | |
Camera * | p_camera |
Pointer to the camera. | |
double | p_parentSample |
The parent sample calculated from the detector. | |
double | p_parentLine |
The parent line calculated from the detector. | |
double | p_detectorLine |
Detector coordinate line value. | |
double | p_detectorSample |
Detector coordinate sample value. | |
double | p_detectorSampleSumming |
The scaling factor for computing sample resolution. | |
double | p_detectorLineSumming |
The scaling factor for computing line resolution. | |
double | p_startingDetectorSample |
Detector start coordinate sample value. | |
double | p_startingDetectorLine |
Detector start coordinate line value. | |
double | p_ss |
Start sample. | |
double | p_sl |
Start line. | |
Private Member Functions | |
void | Compute () |
Compute new offsets whenenver summing or starting sample/lines change. | |
Private Attributes | |
std::vector< double > | m_times |
List of normalized [-1, 1] readout times for all the lines in the input image. | |
std::vector< double > | m_sampleCoeffs |
List of coefficients for the n-order polynomial characterizing the jitter in the sample direction. | |
std::vector< double > | m_lineCoeffs |
List of coefficients for the n-order polynomial characterizing the jitter in the line direction. | |
Convert between parent image coordinates and detector coordinates.
This class is used to convert between parent dector coordinates (sample/line) and detector coordinates for a rolling shutter camera.
Definition at line 29 of file RollingShutterCameraDetectorMap.h.
Isis::RollingShutterCameraDetectorMap::RollingShutterCameraDetectorMap | ( | Camera * | parent, |
std::vector< double > | times, | ||
std::vector< double > | sampleCoeffs, | ||
std::vector< double > | lineCoeffs ) |
Constructs a RollingShutterCameraDetectorMap.
times | A std::vector of normalized readout times |
coeffs | A std::vector of the coefficients of the polynomial that fit the jitter. The coefficients are from highest degree to lowest degree. |
parent | The parent camera that uses the detector map. |
Definition at line 25 of file RollingShutterCameraDetectorMap.cpp.
References m_lineCoeffs, m_sampleCoeffs, and m_times.
|
virtual |
Destructor.
Definition at line 39 of file RollingShutterCameraDetectorMap.cpp.
|
inherited |
Return the starting detector line adjusted for summation.
Definition at line 123 of file CameraDetectorMap.cpp.
References Isis::CameraDetectorMap::p_sl.
|
inherited |
Return the starting detector sample adjusted for summation.
Definition at line 113 of file CameraDetectorMap.cpp.
References Isis::CameraDetectorMap::p_ss.
std::pair< double, double > Isis::RollingShutterCameraDetectorMap::applyJitter | ( | const double | sample, |
const double | line ) |
Iteratively finds a solution to "apply" jitter to an image coordinate.
Each iteration adds jitter to the original image coordinate until it finds an image coordinate that maps back to to the original image coordinate when jitter is removed. This is similar to how we handle applying radial distortion.
Note: If the jitter varies significantly (>1 pixel difference) then it is possible for there to be multiple solutions to the inverse problem and it is impossible to know which one to choose.
Definition at line 128 of file RollingShutterCameraDetectorMap.cpp.
References removeJitter(), and Isis::IException::Unknown.
Referenced by SetDetector().
|
privateinherited |
Compute new offsets whenenver summing or starting sample/lines change.
Definition at line 99 of file CameraDetectorMap.cpp.
References Isis::CameraDetectorMap::p_detectorLineSumming, Isis::CameraDetectorMap::p_detectorSampleSumming, Isis::CameraDetectorMap::p_sl, Isis::CameraDetectorMap::p_ss, Isis::CameraDetectorMap::p_startingDetectorLine, and Isis::CameraDetectorMap::p_startingDetectorSample.
Referenced by Isis::CameraDetectorMap::CameraDetectorMap(), Isis::CameraDetectorMap::SetDetectorLineSumming(), Isis::CameraDetectorMap::SetDetectorSampleSumming(), Isis::CameraDetectorMap::SetStartingDetectorLine(), and Isis::CameraDetectorMap::SetStartingDetectorSample().
|
inherited |
Return detector line.
Definition at line 163 of file CameraDetectorMap.cpp.
References Isis::CameraDetectorMap::p_detectorLine.
Referenced by Isis::Camera::SetImage(), and Isis::Camera::SetImage().
|
inherited |
Return detector sample.
Definition at line 153 of file CameraDetectorMap.cpp.
References Isis::CameraDetectorMap::p_detectorSample.
Referenced by Isis::Camera::SetImage(), and Isis::Camera::SetImage().
|
virtualinherited |
This virtual method is for returning the exposure duration of a given pixel.
For framing cameras, exposure duration is not available so it throws an error.
sample | The sample of the desired pixel. |
line | The line of the desired pixel. |
band | The band of the desired pixel. |
IException::Programmer | "Exposure duration is only available for LineScan, VariableLineScan, and PushFrame Cameras." |
Reimplemented in Isis::LineScanCameraDetectorMap, Isis::PushFrameCameraDetectorMap, Isis::VariableLineScanCameraDetectorMap, and Isis::NirsDetectorMap.
Definition at line 212 of file CameraDetectorMap.cpp.
References Isis::IException::Programmer.
Referenced by Isis::Camera::exposureDuration(), and Isis::Camera::exposureDuration().
|
virtualinherited |
Return the line collection rate (0 for framing cameras)
Reimplemented in Isis::ApolloPanoramicDetectorMap, Isis::LineScanCameraDetectorMap, and Isis::RadarPulseMap.
Definition at line 193 of file CameraDetectorMap.cpp.
Referenced by Isis::LineScanCameraSkyMap::SetSky().
|
virtualinherited |
Return scaling factor for computing line resolution.
Definition at line 183 of file CameraDetectorMap.cpp.
References Isis::CameraDetectorMap::p_detectorLineSumming.
Referenced by Isis::Camera::LineResolution(), Isis::Camera::ObliqueLineResolution(), Isis::ThemisIrCamera::SetBand(), Isis::PushFrameCameraDetectorMap::SetDetector(), Isis::PushFrameCameraDetectorMap::SetParent(), and Isis::PushFrameCameraDetectorMap::TotalFramelets().
|
inherited |
Return parent line.
Definition at line 143 of file CameraDetectorMap.cpp.
References Isis::CameraDetectorMap::p_parentLine.
Referenced by Isis::Camera::RawFocalPlanetoImage(), and Isis::Camera::SetRightAscensionDeclination().
|
inherited |
Return parent sample.
Definition at line 133 of file CameraDetectorMap.cpp.
References Isis::CameraDetectorMap::p_parentSample.
Referenced by Isis::Camera::RawFocalPlanetoImage(), and Isis::Camera::SetRightAscensionDeclination().
std::pair< double, double > Isis::RollingShutterCameraDetectorMap::removeJitter | ( | const double | sample, |
const double | line ) |
Remove the distortion from the image (parent) coordinates.
This is a helper function for the SetParent method.
sample | Input (parent) image sample coordinate. |
line | Input (parent) image line coordinate. |
Definition at line 167 of file RollingShutterCameraDetectorMap.cpp.
References m_lineCoeffs, m_sampleCoeffs, and m_times.
Referenced by applyJitter(), and SetParent().
|
virtualinherited |
Return scaling factor for computing sample resolution.
Definition at line 173 of file CameraDetectorMap.cpp.
References Isis::CameraDetectorMap::p_detectorSampleSumming.
Referenced by Isis::Camera::ObliqueSampleResolution(), and Isis::Camera::SampleResolution().
|
virtual |
Compute parent position from a detector coordinate.
This method will compute a parent sample/line given a detector coordinate
sample | Sample number in the detector |
line | Line number in the detector |
Reimplemented from Isis::CameraDetectorMap.
Definition at line 101 of file RollingShutterCameraDetectorMap.cpp.
References applyJitter(), Isis::CameraDetectorMap::p_detectorLine, Isis::CameraDetectorMap::p_detectorLineSumming, Isis::CameraDetectorMap::p_detectorSample, Isis::CameraDetectorMap::p_detectorSampleSumming, Isis::CameraDetectorMap::p_parentLine, Isis::CameraDetectorMap::p_parentSample, Isis::CameraDetectorMap::p_sl, and Isis::CameraDetectorMap::p_ss.
|
inlineinherited |
Set line summing mode.
Use this method to specify if detector lines are summed/averaged. That is, one image lines represents the average of N detectors. If not set the default is 1.
summing | Line summing mode |
Definition at line 123 of file CameraDetectorMap.h.
References Isis::CameraDetectorMap::Compute(), and Isis::CameraDetectorMap::p_detectorLineSumming.
Referenced by Isis::CrismCamera::CrismCamera().
|
inlineinherited |
Set sample summing mode.
Use this method to specify if detector samples are summed/averaged. That is, one image sample represents the average of N detectors. If not set the default is 1.
summing | Sample summing mode |
Definition at line 108 of file CameraDetectorMap.h.
References Isis::CameraDetectorMap::Compute(), and Isis::CameraDetectorMap::p_detectorSampleSumming.
Referenced by Isis::ApolloPanoramicCamera::ApolloPanoramicCamera(), Isis::CrismCamera::CrismCamera(), Isis::DawnVirCamera::DawnVirCamera(), Isis::HrscCamera::HrscCamera(), and Isis::RosettaVirtisCamera::RosettaVirtisCamera().
|
virtual |
Compute detector position from a parent image coordinate.
This method will compute the detector position from the parent line/sample coordinate
sample | Sample number in the parent image |
line | Line number in the parent image |
Reimplemented from Isis::CameraDetectorMap.
Definition at line 55 of file RollingShutterCameraDetectorMap.cpp.
References SetParent().
Referenced by SetParent().
|
virtual |
Compute detector position from a parent image coordinate.
This method will compute the detector position from the parent line/sample coordinate and an offset from the currently set time in seconds. If the time has not already been set, the input offset is not applied.
sample | Sample number in the parent image |
line | Line number in the parent image |
deltaT | option time offset from center of exposure in seconds |
Reimplemented from Isis::CameraDetectorMap.
Definition at line 75 of file RollingShutterCameraDetectorMap.cpp.
References Isis::Spice::isTimeSet(), Isis::CameraDetectorMap::p_camera, Isis::CameraDetectorMap::p_detectorLine, Isis::CameraDetectorMap::p_detectorLineSumming, Isis::CameraDetectorMap::p_detectorSample, Isis::CameraDetectorMap::p_detectorSampleSumming, Isis::CameraDetectorMap::p_parentLine, Isis::CameraDetectorMap::p_parentSample, Isis::CameraDetectorMap::p_sl, Isis::CameraDetectorMap::p_ss, removeJitter(), Isis::Sensor::setTime(), and Isis::Spice::time().
|
inlineinherited |
Set the starting detector line.
Use this method to specify the starting detector that represents the first image line in the cube. If not set the default is 1.
line | Starting detector line |
Definition at line 93 of file CameraDetectorMap.h.
References Isis::CameraDetectorMap::Compute(), and Isis::CameraDetectorMap::p_startingDetectorLine.
|
inlineinherited |
Set the starting detector sample.
Use this method to specify the starting detector that represents the first image sample in the cube. If not set the default is 1.
sample | Starting detector sample |
Definition at line 79 of file CameraDetectorMap.h.
References Isis::CameraDetectorMap::Compute(), and Isis::CameraDetectorMap::p_startingDetectorSample.
Referenced by Isis::ApolloPanoramicCamera::ApolloPanoramicCamera().
|
private |
List of coefficients for the n-order polynomial characterizing the jitter in the line direction.
Definition at line 67 of file RollingShutterCameraDetectorMap.h.
Referenced by removeJitter(), and RollingShutterCameraDetectorMap().
|
private |
List of coefficients for the n-order polynomial characterizing the jitter in the sample direction.
Definition at line 62 of file RollingShutterCameraDetectorMap.h.
Referenced by removeJitter(), and RollingShutterCameraDetectorMap().
|
private |
List of normalized [-1, 1] readout times for all the lines in the input image.
Definition at line 57 of file RollingShutterCameraDetectorMap.h.
Referenced by removeJitter(), and RollingShutterCameraDetectorMap().
|
protectedinherited |
Pointer to the camera.
Definition at line 138 of file CameraDetectorMap.h.
Referenced by Isis::CameraDetectorMap::CameraDetectorMap(), Isis::ApolloPanoramicDetectorMap::SetDetector(), Isis::LineScanCameraDetectorMap::SetDetector(), Isis::RadarPulseMap::SetDetector(), Isis::VariableLineScanCameraDetectorMap::SetDetector(), Isis::PushFrameCameraDetectorMap::SetFramelet(), Isis::ApolloPanoramicDetectorMap::SetParent(), Isis::RadarPulseMap::SetParent(), Isis::MocWideAngleDetectorMap::SetParent(), Isis::CameraDetectorMap::SetParent(), Isis::LineScanCameraDetectorMap::SetParent(), SetParent(), Isis::VariableLineScanCameraDetectorMap::SetParent(), and Isis::PushFrameCameraDetectorMap::TotalFramelets().
|
protectedinherited |
Detector coordinate line value.
Definition at line 142 of file CameraDetectorMap.h.
Referenced by Isis::CameraDetectorMap::DetectorLine(), Isis::ApolloPanoramicDetectorMap::SetDetector(), Isis::CameraDetectorMap::SetDetector(), Isis::PushFrameCameraDetectorMap::SetDetector(), SetDetector(), Isis::ApolloPanoramicDetectorMap::SetParent(), Isis::RadarPulseMap::SetParent(), Isis::CameraDetectorMap::SetParent(), Isis::LineScanCameraDetectorMap::SetParent(), Isis::PushFrameCameraDetectorMap::SetParent(), SetParent(), and Isis::VariableLineScanCameraDetectorMap::SetParent().
|
protectedinherited |
The scaling factor for computing line resolution.
Definition at line 146 of file CameraDetectorMap.h.
Referenced by Isis::CameraDetectorMap::CameraDetectorMap(), Isis::CameraDetectorMap::Compute(), Isis::CameraDetectorMap::LineScaleFactor(), Isis::CameraDetectorMap::SetDetector(), SetDetector(), Isis::CameraDetectorMap::SetDetectorLineSumming(), Isis::CameraDetectorMap::SetParent(), and SetParent().
|
protectedinherited |
Detector coordinate sample value.
Definition at line 143 of file CameraDetectorMap.h.
Referenced by Isis::CameraDetectorMap::DetectorSample(), Isis::ApolloPanoramicDetectorMap::SetDetector(), Isis::CameraDetectorMap::SetDetector(), Isis::PushFrameCameraDetectorMap::SetDetector(), SetDetector(), Isis::ApolloPanoramicDetectorMap::SetParent(), Isis::MocWideAngleDetectorMap::SetParent(), Isis::CameraDetectorMap::SetParent(), and SetParent().
|
protectedinherited |
The scaling factor for computing sample resolution.
Definition at line 145 of file CameraDetectorMap.h.
Referenced by Isis::CameraDetectorMap::CameraDetectorMap(), Isis::CameraDetectorMap::Compute(), Isis::CameraDetectorMap::SampleScaleFactor(), Isis::CameraDetectorMap::SetDetector(), SetDetector(), Isis::CameraDetectorMap::SetDetectorSampleSumming(), Isis::CameraDetectorMap::SetParent(), and SetParent().
|
protectedinherited |
The parent line calculated from the detector.
Definition at line 141 of file CameraDetectorMap.h.
Referenced by Isis::CameraDetectorMap::ParentLine(), Isis::ApolloPanoramicDetectorMap::SetDetector(), Isis::CameraDetectorMap::SetDetector(), Isis::LineScanCameraDetectorMap::SetDetector(), Isis::PushFrameCameraDetectorMap::SetDetector(), Isis::RadarPulseMap::SetDetector(), SetDetector(), Isis::VariableLineScanCameraDetectorMap::SetDetector(), Isis::ApolloPanoramicDetectorMap::SetParent(), Isis::CameraDetectorMap::SetParent(), Isis::PushFrameCameraDetectorMap::SetParent(), and SetParent().
|
protectedinherited |
The parent sample calculated from the detector.
Definition at line 140 of file CameraDetectorMap.h.
Referenced by Isis::CameraDetectorMap::ParentSample(), Isis::ApolloPanoramicDetectorMap::SetDetector(), Isis::CameraDetectorMap::SetDetector(), SetDetector(), Isis::MocWideAngleDetectorMap::SetDetector(), Isis::ApolloPanoramicDetectorMap::SetParent(), Isis::CameraDetectorMap::SetParent(), Isis::PushFrameCameraDetectorMap::SetParent(), and SetParent().
|
protectedinherited |
Start line.
Definition at line 151 of file CameraDetectorMap.h.
Referenced by Isis::CameraDetectorMap::AdjustedStartingLine(), Isis::CameraDetectorMap::Compute(), Isis::CameraDetectorMap::SetDetector(), SetDetector(), Isis::CameraDetectorMap::SetParent(), and SetParent().
|
protectedinherited |
Start sample.
Definition at line 150 of file CameraDetectorMap.h.
Referenced by Isis::CameraDetectorMap::AdjustedStartingSample(), Isis::CameraDetectorMap::Compute(), Isis::CameraDetectorMap::SetDetector(), SetDetector(), Isis::CameraDetectorMap::SetParent(), and SetParent().
|
protectedinherited |
Detector start coordinate line value.
Definition at line 148 of file CameraDetectorMap.h.
Referenced by Isis::CameraDetectorMap::CameraDetectorMap(), Isis::CameraDetectorMap::Compute(), and Isis::CameraDetectorMap::SetStartingDetectorLine().
|
protectedinherited |
Detector start coordinate sample value.
Definition at line 147 of file CameraDetectorMap.h.
Referenced by Isis::CameraDetectorMap::CameraDetectorMap(), Isis::CameraDetectorMap::Compute(), and Isis::CameraDetectorMap::SetStartingDetectorSample().