Isis 3 Programmer Reference
Isis::VariableLineScanCameraDetectorMap Class Reference

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

#include <VariableLineScanCameraDetectorMap.h>

Inheritance diagram for Isis::VariableLineScanCameraDetectorMap:
Inheritance graph
Collaboration diagram for Isis::VariableLineScanCameraDetectorMap:
Collaboration graph

Public Member Functions

 VariableLineScanCameraDetectorMap (Camera *parent, std::vector< LineRateChange > &lineRates)
 Constructs a VariableLineScanCameraDetectorMap. More...
 
virtual ~VariableLineScanCameraDetectorMap ()
 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...
 
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...
 
LineRateChangelineRate (const double line) const
 Get the line rate information for a given line. More...
 
void SetStartTime (const double etStart)
 Reset the starting ephemeris time. More...
 
void SetLineRate (const double lineRate)
 Reset the line rate. More...
 
double LineRate () const
 Access the time, in seconds, between scan lines. More...
 
double StartTime () const
 Access the starting time at the top edge of the first line in the parent image. 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...
 

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< LineRateChange > & p_lineRates
 
double p_etStart
 Starting time at the top of the first parent line. More...
 
double p_lineRate
 Time, in seconds, between lines in parent cube. 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 line scan camera.

Author
2008-08-08 Steven Lambright
See also
Camera
History:
2008-08-08 Steven Lambright Original version
History:
2009-03-07 Debbie A. Cook Removed reference to obsolute CameraDetectorMap methods
History:
2012-06-20 Debbie A. Cook, Updated Spice members to be more compliant with Isis
                    coding standards
History:
2016-10-18 Kristin Berry - Added new SetParent method to include time offset. Updated test. References #4476.
History:
2016-10-19 Jesse Mapel - Added exposureDuration method for accessing a pixel's exposure duration. Updated test. References #4476.
History:
2016-10-21 Jesse Mapel - Moved the LineRateChange look up to a separate method. References #4476.
History:
2016-10-21 Jesse Mapel and Kristin Berry - Fixed bug in SetDetector() and SetParent() methods so that we now subtract 1/2 pixel from the rateStartLine to calculate the p_parentLine and et variables, respectively. This was needed since rateStartLine is the integer value for the first line that uses the current rate. The integer value indicates the center of the line, vertically, so we subtract 0.5 to get the top of the needed start pixel. References #4476.
History:
2016-10-27 Jeannie Backer - Moved constructor documentation and destructor to cpp file. References #4476.

Definition at line 49 of file VariableLineScanCameraDetectorMap.h.

Constructor & Destructor Documentation

◆ VariableLineScanCameraDetectorMap()

Isis::VariableLineScanCameraDetectorMap::VariableLineScanCameraDetectorMap ( Camera parent,
std::vector< LineRateChange > &  lineRates 
)

Constructs a VariableLineScanCameraDetectorMap.

Parameters
parentThe camera
p_lineRatesThis should be a vector with an entry for every scan rate change in it. The pair consists of the line number and ET of the changed time; the first entry should be line 1 and the last entry should be one line past the end of the image. See HrscCamera for an example.

Definition at line 23 of file VariableLineScanCameraDetectorMap.cpp.

◆ ~VariableLineScanCameraDetectorMap()

Isis::VariableLineScanCameraDetectorMap::~VariableLineScanCameraDetectorMap ( )
virtual

Destructor.

Definition at line 36 of file VariableLineScanCameraDetectorMap.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.

◆ 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::VariableLineScanCameraDetectorMap::exposureDuration ( const double  sample,
const double  line,
const int  band 
) const
virtual

This virtual method is for returning the exposure duration of a given pixel.

For a variable line scan camera, the exposure duration is assumed to be the line scan rate for the given line. Note, this may not be the actual exposure duration. The line scan rate is the time from the beginning of one line to the beginning of the next. The exposure duration is the time from the beginning of a line to the end of that line. So, if the end of a line is not the beginning of the next line, these two values will not be the same.

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"line was not found in the line scan rate table."

@TODO How do we get the actual exposure duration?

Reimplemented from Isis::LineScanCameraDetectorMap.

Definition at line 174 of file VariableLineScanCameraDetectorMap.cpp.

References lineRate().

◆ LineRate()

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

Access the time, in seconds, between scan lines.

Returns
Line rate.

Reimplemented from Isis::CameraDetectorMap.

Definition at line 70 of file LineScanCameraDetectorMap.cpp.

References Isis::LineScanCameraDetectorMap::p_lineRate.

Referenced by Isis::LineScanCameraDetectorMap::exposureDuration(), and Isis::LineScanCameraSkyMap::SetSky().

◆ lineRate()

LineRateChange & Isis::VariableLineScanCameraDetectorMap::lineRate ( const double  line) const

Get the line rate information for a given line.

Parameters
lineThe line to find the line rate information for.
Returns
LineRateChange& The LineRateChange object that is used for time calculations with the input line.

@TODO How to handle if rateIndex < 0?

Definition at line 191 of file VariableLineScanCameraDetectorMap.cpp.

Referenced by exposureDuration().

◆ 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().

◆ 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::VariableLineScanCameraDetectorMap::SetDetector ( const double  sample,
const double  line 
)
virtual

Compute parent position from a detector coordinate.

This method will compute a parent sample given a detector coordinate. The parent line will be computed using the the time in the parent camera

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

Reimplemented from Isis::LineScanCameraDetectorMap.

Definition at line 51 of file VariableLineScanCameraDetectorMap.cpp.

References Isis::iTime::Et(), Isis::CameraDetectorMap::p_camera, Isis::CameraDetectorMap::p_parentLine, Isis::CameraDetectorMap::SetDetector(), Isis::LineScanCameraDetectorMap::SetLineRate(), and Isis::Spice::time().

◆ 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().

◆ SetLineRate()

void Isis::LineScanCameraDetectorMap::SetLineRate ( const double  lineRate)
inherited

Reset the line rate.

Use this method to reset the time between lines. Usually this will not need to be done unless the rate changes between bands.

Parameters
lineRatethe time in seconds between lines

Definition at line 60 of file LineScanCameraDetectorMap.cpp.

References Isis::LineScanCameraDetectorMap::p_lineRate.

Referenced by SetDetector(), and SetParent().

◆ SetParent() [1/2]

bool Isis::VariableLineScanCameraDetectorMap::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. The parent line will be used to set the appropriate time in the parent camera.

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

Reimplemented from Isis::LineScanCameraDetectorMap.

Definition at line 96 of file VariableLineScanCameraDetectorMap.cpp.

◆ SetParent() [2/2]

bool Isis::VariableLineScanCameraDetectorMap::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. The parent line will be used to set the appropriate time in the parent camera.

Parameters
sampleSample number in the parent image
lineLine number in the parent image
deltaToffset in seconds from center exposure time
Returns
bool conversion successful

The following time calculation has some potential pitfalls. If the line rate and exposure duration are not the same, such as with the Dawn VIR camera, then this will not return the true center pixel time. If there is a difference, then the calculation should be rateStartEt + (line-rateStartLine) * rate + exposureDuration()/2. See exposureDuration()'s documentation for more information.

Reimplemented from Isis::LineScanCameraDetectorMap.

Definition at line 114 of file VariableLineScanCameraDetectorMap.cpp.

References Isis::CameraFocalPlaneMap::DetectorLineOffset(), Isis::Camera::FocalPlaneMap(), Isis::CameraDetectorMap::p_camera, Isis::CameraDetectorMap::p_detectorLine, Isis::LineScanCameraDetectorMap::SetLineRate(), Isis::CameraDetectorMap::SetParent(), and Isis::Sensor::setTime().

◆ 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()

◆ SetStartTime()

void Isis::LineScanCameraDetectorMap::SetStartTime ( const double  etStart)
inherited

Reset the starting ephemeris time.

Use this method to reset the starting time of the top edge of the first line in the parent image. That is the time, prior to cropping, scaling, or padding. Usually this will not need to be done unless the time changes between bands.

Parameters
etStartstarting ephemeris time in seconds

Definition at line 47 of file LineScanCameraDetectorMap.cpp.

References Isis::LineScanCameraDetectorMap::p_etStart.

Referenced by Isis::ThemisIrCamera::SetBand().

◆ StartTime()

double Isis::LineScanCameraDetectorMap::StartTime ( ) const
inherited

Access the starting time at the top edge of the first line in the parent image.

Returns
The start ephemeris time for the image.

Definition at line 149 of file LineScanCameraDetectorMap.cpp.

References Isis::LineScanCameraDetectorMap::p_etStart.

Member Data Documentation

◆ p_camera

◆ p_detectorLine

◆ p_detectorLineSumming

◆ p_detectorSample

◆ p_detectorSampleSumming

◆ p_etStart

◆ p_lineRate

◆ p_parentLine

◆ p_parentSample

◆ 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: