Loading [MathJax]/jax/output/NativeMML/config.js
Isis 3 Programmer Reference
Isis::RollingShutterCameraDetectorMap Class Reference

Convert between parent image coordinates and detector coordinates. More...

#include <RollingShutterCameraDetectorMap.h>

Inheritance diagram for Isis::RollingShutterCameraDetectorMap:
Inheritance graph
Collaboration diagram for Isis::RollingShutterCameraDetectorMap:
Collaboration graph

Public Member Functions

 RollingShutterCameraDetectorMap (Camera *parent, std::vector< double > times, std::vector< double > sampleCoeffs, std::vector< double > lineCoeffs)
 Constructs a RollingShutterCameraDetectorMap. More...
 
virtual ~RollingShutterCameraDetectorMap ()
 Destructor. More...
 
virtual bool SetParent (const double sample, const double line)
 Compute detector position from a parent image coordinate. More...
 
virtual bool SetParent (const double sample, const double line, const double deltaT)
 Compute detector position from a parent image coordinate. More...
 
virtual bool SetDetector (const double sample, const double line)
 Compute parent position from a detector coordinate. More...
 
std::pair< double, double > applyJitter (const double sample, const double line)
 Iteratively finds a solution to "apply" jitter to an image coordinate. More...
 
std::pair< double, double > removeJitter (const double sample, const double line)
 Remove the distortion from the image (parent) coordinates. More...
 
double AdjustedStartingSample () const
 Return the starting detector sample adjusted for summation. More...
 
double AdjustedStartingLine () const
 Return the starting detector line adjusted for summation. More...
 
double ParentSample () const
 Return parent sample. More...
 
double ParentLine () const
 Return parent line. More...
 
double DetectorSample () const
 Return detector sample. More...
 
double DetectorLine () const
 Return detector line. More...
 
void SetStartingDetectorSample (const double sample)
 Set the starting detector sample. More...
 
void SetStartingDetectorLine (const double line)
 Set the starting detector line. More...
 
void SetDetectorSampleSumming (const double summing)
 Set sample summing mode. More...
 
void SetDetectorLineSumming (const double summing)
 Set line summing mode. More...
 
virtual double SampleScaleFactor () const
 Return scaling factor for computing sample resolution. More...
 
virtual double LineScaleFactor () const
 Return scaling factor for computing line resolution. More...
 
virtual double LineRate () const
 Return the line collection rate (0 for framing cameras) More...
 
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. More...
 

Protected Attributes

Camerap_camera
 Pointer to the camera. More...
 
double p_parentSample
 The parent sample calculated from the detector. More...
 
double p_parentLine
 The parent line calculated from the detector. More...
 
double p_detectorLine
 Detector coordinate line value. More...
 
double p_detectorSample
 Detector coordinate sample value. More...
 
double p_detectorSampleSumming
 The scaling factor for computing sample resolution. More...
 
double p_detectorLineSumming
 The scaling factor for computing line resolution. More...
 
double p_startingDetectorSample
 Detector start coordinate sample value. More...
 
double p_startingDetectorLine
 Detector start coordinate line value. More...
 
double p_ss
 Start sample. More...
 
double p_sl
 Start line. More...
 

Private Member Functions

void Compute ()
 Compute new offsets whenenver summing or starting sample/lines change. More...
 

Private Attributes

std::vector< double > m_times
 List of normalized [-1, 1] readout times for all the lines in the input image. More...
 
std::vector< double > m_sampleCoeffs
 List of coefficients for the n-order polynomial characterizing the jitter in the sample direction. More...
 
std::vector< double > m_lineCoeffs
 List of coefficients for the n-order polynomial characterizing the jitter in the line direction. More...
 

Detailed Description

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.

See also
Camera
Author
2018-04-02 Makayla Shepherd and Ian Humphrey

Definition at line 29 of file RollingShutterCameraDetectorMap.h.

Constructor & Destructor Documentation

◆ RollingShutterCameraDetectorMap()

Isis::RollingShutterCameraDetectorMap::RollingShutterCameraDetectorMap ( Camera parent,
std::vector< double >  times,
std::vector< double >  sampleCoeffs,
std::vector< double >  lineCoeffs 
)

Constructs a RollingShutterCameraDetectorMap.

Parameters
timesA std::vector of normalized readout times
coeffsA std::vector of the coefficients of the polynomial that fit the jitter. The coefficients are from highest degree to lowest degree.
parentThe parent camera that uses the detector map.

Definition at line 25 of file RollingShutterCameraDetectorMap.cpp.

References m_lineCoeffs, m_sampleCoeffs, and m_times.

◆ ~RollingShutterCameraDetectorMap()

Isis::RollingShutterCameraDetectorMap::~RollingShutterCameraDetectorMap ( )
virtual

Destructor.

Definition at line 39 of file RollingShutterCameraDetectorMap.cpp.

Member Function Documentation

◆ AdjustedStartingLine()

double Isis::CameraDetectorMap::AdjustedStartingLine ( ) const
inherited

Return the starting detector line adjusted for summation.

Returns
(double) The starting line

Definition at line 123 of file CameraDetectorMap.cpp.

References Isis::CameraDetectorMap::p_sl.

◆ AdjustedStartingSample()

double Isis::CameraDetectorMap::AdjustedStartingSample ( ) const
inherited

Return the starting detector sample adjusted for summation.

Returns
(double) The starting sample

Definition at line 113 of file CameraDetectorMap.cpp.

References Isis::CameraDetectorMap::p_ss.

◆ applyJitter()

std::pair< double, double > Isis::RollingShutterCameraDetectorMap::applyJitter ( const double  sample,
const double  line 
)

Iteratively finds a solution to "apply" jitter to an image coordinate.

Parameters
sampleImage sample to apply jitter to.
lineImage line to apply jitter to.
Returns
std::pair<double,double> Returns the image coordinate with jitter applied to it.

Definition at line 121 of file RollingShutterCameraDetectorMap.cpp.

References 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(), and Isis::IException::Unknown.

Referenced by SetDetector().

◆ Compute()

◆ DetectorLine()

double Isis::CameraDetectorMap::DetectorLine ( ) const
inherited

Return detector line.

Returns
(double) The detector line

Definition at line 163 of file CameraDetectorMap.cpp.

References Isis::CameraDetectorMap::p_detectorLine.

Referenced by Isis::Camera::SetImage().

◆ DetectorSample()

double Isis::CameraDetectorMap::DetectorSample ( ) const
inherited

Return detector sample.

Returns
(double) The detector sample

Definition at line 153 of file CameraDetectorMap.cpp.

References Isis::CameraDetectorMap::p_detectorSample.

Referenced by Isis::Camera::SetImage().

◆ exposureDuration()

double Isis::CameraDetectorMap::exposureDuration ( const double  sample,
const double  line,
const int  band 
) const
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.

Parameters
sampleThe sample of the desired pixel.
lineThe line of the desired pixel.
bandThe band of the desired pixel.
Returns
double The exposure duration for the desired pixel in seconds.
Exceptions
IException::Programmer"Exposure duration is only available for LineScan, VariableLineScan, and PushFrame Cameras."

Reimplemented in Isis::NirsDetectorMap, Isis::VariableLineScanCameraDetectorMap, Isis::PushFrameCameraDetectorMap, and Isis::LineScanCameraDetectorMap.

Definition at line 212 of file CameraDetectorMap.cpp.

References Isis::IException::Programmer.

Referenced by Isis::Camera::exposureDuration().

◆ LineRate()

double Isis::CameraDetectorMap::LineRate ( ) const
virtualinherited

Return the line collection rate (0 for framing cameras)

Returns
(double) The line collection rate

Reimplemented in Isis::RadarPulseMap, Isis::LineScanCameraDetectorMap, and Isis::ApolloPanoramicDetectorMap.

Definition at line 193 of file CameraDetectorMap.cpp.

◆ LineScaleFactor()

double Isis::CameraDetectorMap::LineScaleFactor ( ) const
virtualinherited

◆ ParentLine()

double Isis::CameraDetectorMap::ParentLine ( ) const
inherited

Return parent line.

Returns
(double) The parent line

Definition at line 143 of file CameraDetectorMap.cpp.

References Isis::CameraDetectorMap::p_parentLine.

Referenced by Isis::Camera::RawFocalPlanetoImage(), and Isis::Camera::SetRightAscensionDeclination().

◆ ParentSample()

double Isis::CameraDetectorMap::ParentSample ( ) const
inherited

Return parent sample.

Returns
(double) The parent sample

Definition at line 133 of file CameraDetectorMap.cpp.

References Isis::CameraDetectorMap::p_parentSample.

Referenced by Isis::Camera::RawFocalPlanetoImage(), and Isis::Camera::SetRightAscensionDeclination().

◆ removeJitter()

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.

Parameters
sampleInput (parent) image sample coordinate.
lineInput (parent) image line coordinate.
Returns
std::pair<double,double> Returns a pair of doubles corresponding to the de-jittered sample and line. This is in image coordinates.

Definition at line 165 of file RollingShutterCameraDetectorMap.cpp.

References m_lineCoeffs, m_sampleCoeffs, and m_times.

Referenced by applyJitter(), and SetParent().

◆ SampleScaleFactor()

double Isis::CameraDetectorMap::SampleScaleFactor ( ) const
virtualinherited

Return scaling factor for computing sample resolution.

Returns
(double) The scaling factor for sample resolution

Definition at line 173 of file CameraDetectorMap.cpp.

References Isis::CameraDetectorMap::p_detectorSampleSumming.

Referenced by Isis::Camera::ObliqueSampleResolution(), and Isis::Camera::SampleResolution().

◆ SetDetector()

bool Isis::RollingShutterCameraDetectorMap::SetDetector ( const double  sample,
const double  line 
)
virtual

Compute parent position from a detector coordinate.

This method will compute a parent sample/line given a detector coordinate

Parameters
sampleSample number in the detector
lineLine number in the detector
Returns
conversion successful

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.

◆ SetDetectorLineSumming()

◆ SetDetectorSampleSumming()

void Isis::CameraDetectorMap::SetDetectorSampleSumming ( const double  summing)
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.

Parameters
summingSample 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::Chandrayaan1M3Camera::Chandrayaan1M3Camera(), Isis::CrismCamera::CrismCamera(), Isis::CTXCamera::CTXCamera(), Isis::DawnFcCamera::DawnFcCamera(), Isis::DawnVirCamera::DawnVirCamera(), Isis::HayabusaAmicaCamera::HayabusaAmicaCamera(), Isis::HiriseCamera::HiriseCamera(), Isis::HrscCamera::HrscCamera(), Isis::Hyb2OncCamera::Hyb2OncCamera(), Isis::IssNACamera::IssNACamera(), Isis::IssWACamera::IssWACamera(), Isis::JunoCamera::JunoCamera(), Isis::KaguyaMiCamera::KaguyaMiCamera(), Isis::LroNarrowAngleCamera::LroNarrowAngleCamera(), Isis::LroWideAngleCamera::LroWideAngleCamera(), Isis::MarciCamera::MarciCamera(), Isis::MdisCamera::MdisCamera(), Isis::MexHrscSrcCamera::MexHrscSrcCamera(), Isis::MocNarrowAngleCamera::MocNarrowAngleCamera(), Isis::MocWideAngleCamera::MocWideAngleCamera(), Isis::NewHorizonsLorriCamera::NewHorizonsLorriCamera(), Isis::NewHorizonsMvicFrameCamera::NewHorizonsMvicFrameCamera(), Isis::RosettaOsirisCamera::RosettaOsirisCamera(), Isis::RosettaVirtisCamera::RosettaVirtisCamera(), Isis::SsiCamera::SsiCamera(), Isis::TgoCassisCamera::TgoCassisCamera(), Isis::ThemisIrCamera::ThemisIrCamera(), and Isis::ThemisVisCamera::ThemisVisCamera().

◆ SetParent() [1/2]

bool Isis::RollingShutterCameraDetectorMap::SetParent ( const double  sample,
const double  line 
)
virtual

Compute detector position from a parent image coordinate.

This method will compute the detector position from the parent line/sample coordinate

Parameters
sampleSample number in the parent image
lineLine number in the parent image
Returns
conversion successful

Reimplemented from Isis::CameraDetectorMap.

Definition at line 55 of file RollingShutterCameraDetectorMap.cpp.

◆ SetParent() [2/2]

bool Isis::RollingShutterCameraDetectorMap::SetParent ( const double  sample,
const double  line,
const double  deltaT 
)
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.

Parameters
sampleSample number in the parent image
lineLine number in the parent image
deltaToption time offset from center of exposure in seconds
Returns
conversion successful

Reimplemented from Isis::CameraDetectorMap.

Definition at line 75 of file RollingShutterCameraDetectorMap.cpp.

References Isis::iTime::Et(), 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().

◆ SetStartingDetectorLine()

void Isis::CameraDetectorMap::SetStartingDetectorLine ( const double  line)
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.

Parameters
lineStarting detector line

Definition at line 93 of file CameraDetectorMap.h.

References Isis::CameraDetectorMap::Compute(), and Isis::CameraDetectorMap::p_startingDetectorLine.

Referenced by Isis::HayabusaAmicaCamera::HayabusaAmicaCamera(), Isis::HayabusaNirsCamera::HayabusaNirsCamera(), Isis::JunoCamera::JunoCamera(), Isis::MdisCamera::MdisCamera(), and Isis::RosettaOsirisCamera::RosettaOsirisCamera().

◆ SetStartingDetectorSample()

Member Data Documentation

◆ m_lineCoeffs

std::vector<double> Isis::RollingShutterCameraDetectorMap::m_lineCoeffs
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().

◆ m_sampleCoeffs

std::vector<double> Isis::RollingShutterCameraDetectorMap::m_sampleCoeffs
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().

◆ m_times

std::vector<double> Isis::RollingShutterCameraDetectorMap::m_times
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().

◆ p_camera

◆ p_detectorLine

◆ p_detectorLineSumming

◆ p_detectorSample

double Isis::CameraDetectorMap::p_detectorSample
protectedinherited

◆ p_detectorSampleSumming

◆ p_parentLine

◆ p_parentSample

double Isis::CameraDetectorMap::p_parentSample
protectedinherited

◆ p_sl

◆ p_ss

◆ p_startingDetectorLine

double Isis::CameraDetectorMap::p_startingDetectorLine
protectedinherited

◆ p_startingDetectorSample

double Isis::CameraDetectorMap::p_startingDetectorSample
protectedinherited

The documentation for this class was generated from the following files:

U.S. Department of the Interior | U.S. Geological Survey
ISIS | Privacy & Disclaimers | Astrogeology Research Program
To contact us, please post comments and questions on the USGS Astrogeology Discussion Board
To report a bug, or suggest a feature go to: ISIS Github
File Modified: 07/13/2023 15:22:37