#include <VirtualRangeCam.h>
Public Member Functions | |
unsigned long | AcquireImages (int widthStepRange, int widthStepGray, int widthStepCartesian, char *rangeImage=NULL, char *intensityImage=NULL, char *cartesianImage=NULL, bool getLatestFrame=true, bool undistort=true, ipa_CameraSensors::t_ToFGrayImageType grayImageType=ipa_CameraSensors::INTENSITY_32F1) |
unsigned long | AcquireImages (cv::Mat *rangeImage=0, cv::Mat *intensityImage=0, cv::Mat *cartesianImage=0, bool getLatestFrame=true, bool undistort=true, ipa_CameraSensors::t_ToFGrayImageType grayImageType=ipa_CameraSensors::INTENSITY_32F1) |
unsigned long | Close () |
unsigned long | GetCalibratedUV (double x, double y, double z, double &u, double &v) |
int | GetNumberOfImages () |
unsigned long | GetProperty (t_cameraProperty *cameraProperty) |
unsigned long | Init (std::string directory, int cameraIndex=0) |
bool | isInitialized () |
bool | isOpen () |
unsigned long | Open () |
unsigned long | SaveParameters (const char *filename) |
unsigned long | SetPathToImages (std::string path) |
unsigned long | SetProperty (t_cameraProperty *cameraProperty) |
unsigned long | SetPropertyDefaults () |
VirtualRangeCam () | |
~VirtualRangeCam () | |
Private Member Functions | |
void | FindSourceImageFormat (std::map< std::string, int >::iterator &itCounter, std::string &ext) |
unsigned long | GetCalibratedXYMatlab (int u, int v, float z, float &x, float &y) |
unsigned long | GetCalibratedZMatlab (int u, int v, float zRaw, float &zCalibrated) |
unsigned long | LoadParameters (const char *filename, int cameraIndex) |
void | UpdateImageDimensionsOnFirstImage (std::string filename, std::string ext=".xml") |
Private Attributes | |
std::vector< std::string > | m_AmplitudeImageFileNames |
std::string | m_CameraDataDirectory |
Directory where the image data resides. | |
int | m_CameraIndex |
Index of the specified camera. Important, when several cameras of the same type are present. | |
cv::Mat | m_CoeffsA0 |
a0 z-calibration parameters. One matrix entry corresponds to one pixel | |
cv::Mat | m_CoeffsA1 |
a1 z-calibration parameters. One matrix entry corresponds to one pixel | |
cv::Mat | m_CoeffsA2 |
a2 z-calibration parameters. One matrix entry corresponds to one pixel | |
cv::Mat | m_CoeffsA3 |
a3 z-calibration parameters. One matrix entry corresponds to one pixel | |
cv::Mat | m_CoeffsA4 |
a4 z-calibration parameters. One matrix entry corresponds to one pixel | |
cv::Mat | m_CoeffsA5 |
a5 z-calibration parameters. One matrix entry corresponds to one pixel | |
cv::Mat | m_CoeffsA6 |
a6 z-calibration parameters. One matrix entry corresponds to one pixel | |
bool | m_CoeffsInitialized |
std::vector< std::string > | m_CoordinateImageFileNames |
int | m_ImageHeight |
Image height. | |
int | m_ImageWidth |
Image width. | |
std::vector< std::string > | m_IntensityImageFileNames |
double | m_k1 |
double | m_k2 |
double | m_p1 |
double | m_p2 |
Distortion parameters. | |
std::vector< std::string > | m_RangeImageFileNames |
Interface class to virtual range camera like Swissranger 3000/4000. The class offers an interface to a virtual range camera, that is equal to the interface of a real range camera. However, pictures are read from a directory instead of the camera.
Definition at line 86 of file VirtualRangeCam.h.
Definition at line 76 of file VirtualRangeCam.cpp.
Definition at line 87 of file VirtualRangeCam.cpp.
unsigned long VirtualRangeCam::AcquireImages | ( | int | widthStepRange, |
int | widthStepGray, | ||
int | widthStepCartesian, | ||
char * | rangeImage = NULL , |
||
char * | grayImage = NULL , |
||
char * | cartesianImage = NULL , |
||
bool | getLatestFrame = true , |
||
bool | undistort = true , |
||
ipa_CameraSensors::t_ToFGrayImageType | grayImageType = ipa_CameraSensors::INTENSITY_32F1 |
||
) | [virtual] |
Acquires an image from SwissRanger. This implementation is designated for people that do not use openCV image type.
widthStepRange | The stride of a row from the range image. |
widthStepGray | The stride of a row from the grayscale intensity image. |
widthStepCartesian | The stride of a row from the cartesian image. |
rangeImage | character array with depth information. |
grayImage | character array with intensity (grayscale) information. |
cartesianImage | character array with cartesian (x,y,z) information in meters. |
getLatestFrame | Set true to acquire a new image on calling instead of returning the one acquired last time |
useCalibratedZ | Calibrate z values |
grayImageType | Either gray image data is filled with amplitude image or intensity image |
***********************************************************************
***********************************************************************
***********************************************************************
***********************************************************************
***********************************************************************
***********************************************************************
Implements ipa_CameraSensors::AbstractRangeImagingSensor.
Definition at line 575 of file VirtualRangeCam.cpp.
unsigned long VirtualRangeCam::AcquireImages | ( | cv::Mat * | rangeImage = 0 , |
cv::Mat * | intensityImage = 0 , |
||
cv::Mat * | cartesianImage = 0 , |
||
bool | getLatestFrame = true , |
||
bool | undistort = true , |
||
ipa_CameraSensors::t_ToFGrayImageType | grayImageType = ipa_CameraSensors::INTENSITY_32F1 |
||
) | [virtual] |
Acquires an image from SwissRanger camera. Data is read from the camera and put into a corresponding OpenCV cv::Mat
data type. The cv::Mat
are allocated on demand.
rangeImage | OpenCV conform image with depth information. |
grayImage | OpenCV conform image with grayscale information. |
cartesianImage | OpenCV conform image with cartesian (x,y,z) information in meters. |
getLatestFrame | Set true to acquire a new image on calling instead of returning the one acquired last time |
useCalibratedZ | Calibrate z values |
grayImageType | Either gray image data is filled with amplitude image or intensity image |
IPA_Exception | Throws an exception, if camera access failed |
Implements ipa_CameraSensors::AbstractRangeImagingSensor.
Definition at line 532 of file VirtualRangeCam.cpp.
unsigned long VirtualRangeCam::Close | ( | ) | [virtual] |
Close camera device.
Implements ipa_CameraSensors::AbstractRangeImagingSensor.
Definition at line 467 of file VirtualRangeCam.cpp.
void VirtualRangeCam::FindSourceImageFormat | ( | std::map< std::string, int >::iterator & | itCounter, |
std::string & | ext | ||
) | [inline, private] |
Compares the value of the iterator with ext in order to find the extension which has instances in the directory. Throws an error if different file formats are present at the same time.
itCounter | Iterator containing a file extension and a number of instances. |
ext | Is empty if no extension was found before, otherwise it contains the found extension. |
Definition at line 263 of file VirtualRangeCam.cpp.
unsigned long VirtualRangeCam::GetCalibratedUV | ( | double | x, |
double | y, | ||
double | z, | ||
double & | u, | ||
double & | v | ||
) |
Definition at line 960 of file VirtualRangeCam.cpp.
unsigned long VirtualRangeCam::GetCalibratedXYMatlab | ( | int | u, |
int | v, | ||
float | z, | ||
float & | x, | ||
float & | y | ||
) | [private] |
Definition at line 921 of file VirtualRangeCam.cpp.
unsigned long VirtualRangeCam::GetCalibratedZMatlab | ( | int | u, |
int | v, | ||
float | zRaw, | ||
float & | zCalibrated | ||
) | [private] |
Definition at line 909 of file VirtualRangeCam.cpp.
int VirtualRangeCam::GetNumberOfImages | ( | ) | [virtual] |
Returns the number of images in the directory
Reimplemented from ipa_CameraSensors::AbstractRangeImagingSensor.
Definition at line 875 of file VirtualRangeCam.cpp.
unsigned long VirtualRangeCam::GetProperty | ( | t_cameraProperty * | cameraProperty | ) | [virtual] |
Function to set properties of the range imaging sensor.
propertyID | The ID of the property. |
cameraProperty | The value of the property. |
Implements ipa_CameraSensors::AbstractRangeImagingSensor.
Definition at line 503 of file VirtualRangeCam.cpp.
unsigned long VirtualRangeCam::Init | ( | std::string | directory, |
int | cameraIndex = 0 |
||
) | [virtual] |
Initializes Swissranger.
directory | Path to the directory of the range imaging sensor parameter file. |
cameraIndex | It is possible to have several cameras of the same type on the system. One may use the camera index to apply different configuration files to each of them. |
Implements ipa_CameraSensors::AbstractRangeImagingSensor.
Definition at line 95 of file VirtualRangeCam.cpp.
bool ipa_CameraSensors::VirtualRangeCam::isInitialized | ( | ) | [inline, virtual] |
Determines if range imaging camera has successfully been initialized.
Implements ipa_CameraSensors::AbstractRangeImagingSensor.
Definition at line 117 of file VirtualRangeCam.h.
bool ipa_CameraSensors::VirtualRangeCam::isOpen | ( | ) | [inline, virtual] |
Determines if range imaging camera camera has successfully been opened.
Implements ipa_CameraSensors::AbstractRangeImagingSensor.
Definition at line 118 of file VirtualRangeCam.h.
unsigned long VirtualRangeCam::LoadParameters | ( | const char * | filename, |
int | cameraIndex | ||
) | [private, virtual] |
Load general range camera parameters .
filename | Configuration file-path and file-name. |
cameraIndex | The index of the camera within the configuration file i.e. SR_CAM_0 or SR_CAM_1 |
Implements ipa_CameraSensors::AbstractRangeImagingSensor.
Definition at line 1005 of file VirtualRangeCam.cpp.
unsigned long VirtualRangeCam::Open | ( | ) | [virtual] |
Opens the camera device. All camera specific parameters for opening the camera should have been set within the Init()
function.
Implements ipa_CameraSensors::AbstractRangeImagingSensor.
Definition at line 278 of file VirtualRangeCam.cpp.
unsigned long VirtualRangeCam::SaveParameters | ( | const char * | filename | ) | [virtual] |
Save camera parameters. Saves the on-line set parameters for the range imaging camera to a file.
filename | Configuration file name. |
Implements ipa_CameraSensors::AbstractRangeImagingSensor.
Definition at line 901 of file VirtualRangeCam.cpp.
unsigned long VirtualRangeCam::SetPathToImages | ( | std::string | path | ) | [virtual] |
Function specific to virtual camera. Resets the image directory read from the configuration file.
path | The camera path |
Reimplemented from ipa_CameraSensors::AbstractRangeImagingSensor.
Definition at line 895 of file VirtualRangeCam.cpp.
unsigned long VirtualRangeCam::SetProperty | ( | t_cameraProperty * | cameraProperty | ) | [virtual] |
Function to set properties of the range imaging sensor.
propertyID | The ID of the property. |
cameraProperty | The value of the property. |
Implements ipa_CameraSensors::AbstractRangeImagingSensor.
Definition at line 480 of file VirtualRangeCam.cpp.
unsigned long VirtualRangeCam::SetPropertyDefaults | ( | ) | [virtual] |
Function to set property defaults of the range imaging sensor.
Implements ipa_CameraSensors::AbstractRangeImagingSensor.
Definition at line 497 of file VirtualRangeCam.cpp.
void VirtualRangeCam::UpdateImageDimensionsOnFirstImage | ( | std::string | filename, |
std::string | ext = ".xml" |
||
) | [inline, private] |
Reads out the image width and height from the first image found in the filesystem.
filename | The name of that image. |
Definition at line 241 of file VirtualRangeCam.cpp.
std::vector<std::string> ipa_CameraSensors::VirtualRangeCam::m_AmplitudeImageFileNames [private] |
Definition at line 172 of file VirtualRangeCam.h.
std::string ipa_CameraSensors::VirtualRangeCam::m_CameraDataDirectory [private] |
Directory where the image data resides.
Definition at line 169 of file VirtualRangeCam.h.
int ipa_CameraSensors::VirtualRangeCam::m_CameraIndex [private] |
Index of the specified camera. Important, when several cameras of the same type are present.
Definition at line 170 of file VirtualRangeCam.h.
cv::Mat ipa_CameraSensors::VirtualRangeCam::m_CoeffsA0 [private] |
a0 z-calibration parameters. One matrix entry corresponds to one pixel
Given a 32 bit swissranger depth value, the real depth value in meteres is given by: z(u,v)=a0(u,v)+a1(u,v)*d(u,v)+a2(u,v)*d(u,v)^2 +a3(u,v)*d(u,v)^3+a4(u,v)*d(u,v)^4+a5(u,v)*d(u,v)^5 +a6(u,v)*d(u,v)^6;
Definition at line 161 of file VirtualRangeCam.h.
cv::Mat ipa_CameraSensors::VirtualRangeCam::m_CoeffsA1 [private] |
a1 z-calibration parameters. One matrix entry corresponds to one pixel
Definition at line 162 of file VirtualRangeCam.h.
cv::Mat ipa_CameraSensors::VirtualRangeCam::m_CoeffsA2 [private] |
a2 z-calibration parameters. One matrix entry corresponds to one pixel
Definition at line 163 of file VirtualRangeCam.h.
cv::Mat ipa_CameraSensors::VirtualRangeCam::m_CoeffsA3 [private] |
a3 z-calibration parameters. One matrix entry corresponds to one pixel
Definition at line 164 of file VirtualRangeCam.h.
cv::Mat ipa_CameraSensors::VirtualRangeCam::m_CoeffsA4 [private] |
a4 z-calibration parameters. One matrix entry corresponds to one pixel
Definition at line 165 of file VirtualRangeCam.h.
cv::Mat ipa_CameraSensors::VirtualRangeCam::m_CoeffsA5 [private] |
a5 z-calibration parameters. One matrix entry corresponds to one pixel
Definition at line 166 of file VirtualRangeCam.h.
cv::Mat ipa_CameraSensors::VirtualRangeCam::m_CoeffsA6 [private] |
a6 z-calibration parameters. One matrix entry corresponds to one pixel
Definition at line 167 of file VirtualRangeCam.h.
bool ipa_CameraSensors::VirtualRangeCam::m_CoeffsInitialized [private] |
Definition at line 155 of file VirtualRangeCam.h.
std::vector<std::string> ipa_CameraSensors::VirtualRangeCam::m_CoordinateImageFileNames [private] |
Definition at line 175 of file VirtualRangeCam.h.
int ipa_CameraSensors::VirtualRangeCam::m_ImageHeight [private] |
Image height.
Definition at line 178 of file VirtualRangeCam.h.
int ipa_CameraSensors::VirtualRangeCam::m_ImageWidth [private] |
Image width.
Definition at line 177 of file VirtualRangeCam.h.
std::vector<std::string> ipa_CameraSensors::VirtualRangeCam::m_IntensityImageFileNames [private] |
Definition at line 173 of file VirtualRangeCam.h.
double ipa_CameraSensors::VirtualRangeCam::m_k1 [private] |
Definition at line 180 of file VirtualRangeCam.h.
double ipa_CameraSensors::VirtualRangeCam::m_k2 [private] |
Definition at line 180 of file VirtualRangeCam.h.
double ipa_CameraSensors::VirtualRangeCam::m_p1 [private] |
Definition at line 180 of file VirtualRangeCam.h.
double ipa_CameraSensors::VirtualRangeCam::m_p2 [private] |
Distortion parameters.
Definition at line 180 of file VirtualRangeCam.h.
std::vector<std::string> ipa_CameraSensors::VirtualRangeCam::m_RangeImageFileNames [private] |
Definition at line 174 of file VirtualRangeCam.h.