![]() |
VR-Vantage 3.1 API Documentation
|
This class provides the implementation of ISAR. More...
Public Member Functions | |
| ssISAR () | |
| Default Constructor. | |
| ~ssISAR () | |
| Default Destructor. | |
| void | setNoiseParameters (float power_law, float scale_coefficient, float sea_state_shift) |
| This function sets the parameters that determine how sea state noise is added to the scene. | |
| void | addShipInView (ssShipMotion *shipMotion, ssObject *shipObject) |
| This class maintains a list of ship motion objects that are within view. | |
| void | clearShipsInView () |
| This class maintains a list of ship motion objects that are within view. | |
| int | getNumShipsInView () |
| Return the number of ships that this class has been told are in view for the current integration cycle. | |
| bool | update (ssSensor *sensor) |
| Update this ISAR sensor implementation. | |
| double | getSimulationTime () |
| Get the currently simulation time, in seconds, based on the timer that is being used by this ISAR sensor. | |
| void | getDisplayImageProperties (float &CPI_s, float &minIntensity, float &maxIntensity, float &minRange, float &maxRange, float &minRangeRate, float &maxRangeRate, int &numRangePixels, int &numRangeRatePixels) |
| Get Display image (not ISAR image) final properties. | |
| void | computeIsarImage (float *imageData, int imageWidth, int imageHeight, int components, float horzFOV, float vertFOV, ssSensor *sensor) |
| At the end of an integration period, this method should be called to generate an ISAR image from the images that have been generated for this period. | |
| void | setUseVectorISAR (bool flag) |
| bool | getUseVectorISAR () |
Private Member Functions | |
| void | unscaleDoppler (float *imgData, int imgWidth, int imgHeight, int components, ssSensor *sensor) |
| void | findAxisExtents (float *imgData, int imgWidth, int imgHeight, int components, ISAR_LIMITS &limits, ssSensor *sensor) |
| void | constructImage (float *imgData, int imgWidth, int imgHeight, int components, bool area_weight, float minAbsRangeRate, ISAR_LIMITS limits) |
| Creates an ISAR image using a radiance array as input. | |
| void | computeNumSensorBins (ssSensor *sensor, double sample_time_start_sec, double sample_time_end_sec, int maxHorzBins, int maxVertBins, ISAR_LIMITS &limits) |
| Approximates the horizontal, vertical bin counts using the arc/aperture determined due to a continuous ship rotation without changes direction. | |
| VECTOR | computeMaxFlipTimeInterval (ssSensor *sensor, double maxDeltaTimeStep, double angularTolDeg=60) |
| Calculates the maximum time interval for a continuous ship rotation without changes direction. | |
| void | computeSensorLookAngles (double &x_rad, double &y_rad, double &z_rad, ssSensor *sensor, double sample_time_sec) |
| Calculates the Ship Rotation to position ship for notional ISAR view. | |
| double | computeApparentArc (ssSensor *sensor, double sample_time_start_sec, double sample_time_end_sec) |
| Uses the contiguous sampling times returned by computeMaxFlipTimeInterval(). | |
| VECTOR | getCurrentPath (ssSensor *sensor) |
| VECTOR | computePathAngularVelocity (ssSensor *sensor, double sample_time_sec) |
| Calculates the Ship Motion Rotation Matrix for relative ISAR position. | |
| void | stretchRadianceArray (float *savedRadianceArray, int size, float fmin=0, float fmax=0) |
| Modify the contents of the passed in array by applying gain and level. | |
| void | outputTestFile (const char *fileName, const float *imageData, int imageWidth, int imageHeight, int counter) |
| Opens the file that is specified by name and writes the contents of the passed in array of floating point values to that file. | |
Private Attributes | |
| double | m_integrationPeriod |
| bool | m_isflipped |
| int | m_numHorizontalBins |
| int | m_numVerticalBins |
| float | m_CPI |
| ISAR_LIMITS | m_limits |
| int | m_numRangePixels |
| int | m_numRangeRatePixels |
| float | m_powerLaw |
| float | m_scaleCoefficient |
| float | m_seaStateShift |
| ssTimer * | m_integrationTimer |
| ssTimer * | m_simulationTimer |
| ssShipMotion * | m_activeShipMotion |
| ssObject * | m_activeShipObject |
| int | m_numShipsInView |
| bool | m_useVectorISAR |
This class provides the implementation of ISAR.
This class uses the rotational motion of the ship that is within view to determine the size of the synthetic aperture for this sensor during each integration period. The size of the synthetic aperture determines the resulting clarity of the final radar image.
| ssISAR::ssISAR | ( | ) |
Default Constructor.
| ssISAR::~ssISAR | ( | ) |
Default Destructor.
| void ssISAR::setNoiseParameters | ( | float | power_law, |
| float | scale_coefficient, | ||
| float | sea_state_shift | ||
| ) |
This function sets the parameters that determine how sea state noise is added to the scene.
These parameters and algorithms require updates for better fidelity. There are currently no physics here!
scale_coefficient*(sea_state+sea_state_shift)^power_law
| [in] | power_law | - exponent of the equation used to model noise |
| [in] | scale_coefficient | - coefficient of the equation used to model noise |
| [in] | sea_state_shift | - additive term to sea state in the equation used to model noise |
| void ssISAR::addShipInView | ( | ssShipMotion * | shipMotion, |
| ssObject * | shipObject | ||
| ) |
This class maintains a list of ship motion objects that are within view.
This method should be used in conjunction with clearShipsInView() to maintain an accurate list of which ships are currently within view. The motion of these ships are used to compute the resolution of the ISAR image.
| shipMotion | - The ship motion object that should be added to our list of active ships. |
|
inline |
This class maintains a list of ship motion objects that are within view.
This method remove all ships motion objects that this class is using and should be used in conjunction with addShipInView() to maintain an accurate list of which ships are currently within view.
|
inline |
Return the number of ships that this class has been told are in view for the current integration cycle.
Update this ISAR sensor implementation.
If the return value is true, a new ISAR image should be created this frame, which means that computeIsarImage() should be called. If false is returned, computeIsarImage() should not be called this frame.
| sensor | - Sensor that is currently being used |
| windSpeed | - The speed of the wind in knots |
| double ssISAR::getSimulationTime | ( | ) |
Get the currently simulation time, in seconds, based on the timer that is being used by this ISAR sensor.
| void ssISAR::getDisplayImageProperties | ( | float & | CPI_s, |
| float & | minIntensity, | ||
| float & | maxIntensity, | ||
| float & | minRange, | ||
| float & | maxRange, | ||
| float & | minRangeRate, | ||
| float & | maxRangeRate, | ||
| int & | numRangePixels, | ||
| int & | numRangeRatePixels | ||
| ) |
Get Display image (not ISAR image) final properties.
| void ssISAR::computeIsarImage | ( | float * | imageData, |
| int | imageWidth, | ||
| int | imageHeight, | ||
| int | components, | ||
| float | horzFOV, | ||
| float | vertFOV, | ||
| ssSensor * | sensor | ||
| ) |
At the end of an integration period, this method should be called to generate an ISAR image from the images that have been generated for this period.
The location of the sensor relative to the ship (it is pitching and rolling) has been used to generate multiple images that make the synthetic aperture of the radar. This call brings those images together to form a single higher quality image.
| imageData | - The most recently rendered image of the ship |
| imageWidth | - Pixel width of the image that is being passed in |
| imageHeight | - Pixel height of the image that is being passed in |
| components | - number of color channels per pixel |
| horzFOV | - The current horizontal field-of-view of the camera |
| vertFOV | - The current vertical field-of-view of the camera |
| sensor | - Sensor that is currently being used |
|
inline |
|
private |
|
private |
|
private |
Creates an ISAR image using a radiance array as input.
This method my be one of the most important in the entire ISAR implementations. The rendered ship is passes in as a full resolution radiance array. The image is processed to represent the ISAR image by scaling it based on the number of passed in range and cross-range bins. The resulting ISAR image is then written back into the image array that was passed in.
| [in,out] | imgData | - radiance array in, ISAR image out |
| imgWidth | - Pixel width of the image that is being passed in | |
| imgHeight | - Pixel height of the image that is being passed in | |
| components | - number of color channels per pixel | |
| area_weight | - if true, assumes intensity should be redistributed when binning such that intensity/unitarea is conserved. | |
| minAbsRangeRate | - min detectable target velocity [m/s] | |
| limits | - min/max limits found from scenegraph sampling for intensity, range, rangerate. ///////////////////////////////////////////////////////////////////////// |
|
private |
Approximates the horizontal, vertical bin counts using the arc/aperture determined due to a continuous ship rotation without changes direction.
This thethod uses ISARSensorApparentArc() and assumes ship coordinate origin are set at the metacentric height, the ship's length lies along the x-axis, and the z-axis is vertical
| sensor | - current sensor object |
| sample_time_start_sec | - calculation start time in seconds |
| sample_time_end_sec | - calculation end time in seconds |
| maxHorzBins | - maximum number of bins there can be in the horizontal direction |
| maxVertBins | - maximum number of bins there can be in the vertical direction |
| limits | - min/max limits found from scenegraph sampling for intensity, range, rangerate. ///////////////////////////////////////////////////////////////////////// |
|
private |
Calculates the maximum time interval for a continuous ship rotation without changes direction.
Assumes ship coordinate origin are set at the metacentric height, Ship length lies along the x-axis, z-axis is vertical
| sensor | - Current sensor object |
| maxDeltaTimeStep | - Largest acceptable time step (seconds) that can be taken to sample the rotational motion |
| angularTolDeg | - threshold of minimum change in angle [degree] of the ship tangential (rotation) velocity that denotes change in direction. The art of good enough. sigh... |
|
private |
Calculates the Ship Rotation to position ship for notional ISAR view.
Assumes ship coordinate origin are set at the metacentric height, Ship length lies along the x-axis, z-axis is vertical.
NOTE: y-rad needs to be checked as it is not currently used
| [out] | x_rad | - rotation angle [radians] with z-axis as rotor(heading) |
| [out] | y_rad | - rotation angle [radians] with y-axis as rotor HOWEVER this rotation is not currently needed/used |
| [out] | z_rad | - rotation angle [radians] with x-axis as rotor(roll) |
| sensor | - current sensor object | |
| sample_time_sec | - elapsed time in seconds |
|
private |
Uses the contiguous sampling times returned by computeMaxFlipTimeInterval().
Assumes ship coordinate origin are set at the metacentric height, Ship length lies along the x-axis, z-axis is vertical
| sensor | - current sensor object |
| sample_time_start_sec | - calculation start time in seconds |
| sample_time_end_sec | - calculation end time in seconds |
Calculates the Ship Motion Rotation Matrix for relative ISAR position.
Assumes ship coordinate origin are set at the metacentric height, Ship length lies along the x-axis, z-axis is vertical.
NOTE: Sensor look is not needed currently
| sensor | - current sensor object |
| sample_time_sec | - elapsed time in seconds |
|
private |
Modify the contents of the passed in array by applying gain and level.
The manipulation will result in the minimum and maximum values stored in the array matching the passed in values for min and max. All array value in between these two value will be modified so that they maintain their relative spacing between these new min and max values. This manipulation will "stretch" the values stored in the array so that they range from the passed in min to the passed in max.
|
private |
Opens the file that is specified by name and writes the contents of the passed in array of floating point values to that file.
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |