19 #include "itkMultiThreader.h"
20 #include <itksys/SystemTools.hxx>
25 m_SourceDataBuffer(NULL), m_SourceDataArray(NULL)
83 this->m_FreePos = (this->m_FreePos+1) % this->
m_BufferSize;
93 itksys::SystemTools::Delay(10);
112 struct itk::MultiThreader::ThreadInfoStruct * pInfo = (
struct itk::MultiThreader::ThreadInfoStruct*)pInfoStruct;
115 return ITK_THREAD_RETURN_VALUE;
117 if (pInfo->UserData == NULL)
119 return ITK_THREAD_RETURN_VALUE;
122 if (toFCameraDevice!=NULL)
127 t1 = realTimeClock->GetCurrentStamp();
129 bool overflow =
false;
130 bool printStatus =
false;
142 toFCameraDevice->Modified();
161 t2 = realTimeClock->GetCurrentStamp() - t1;
163 t1 = realTimeClock->GetCurrentStamp();
168 return ITK_THREAD_RETURN_VALUE;
185 amplitudeArray[i*this->m_CaptureWidth+j] = this->
m_AmplitudeArray[(i+1)*this->m_CaptureWidth-1-j];
192 MITK_WARN(
"ToF") <<
"Warning: Data can only be acquired if camera is active.";
211 intensityArray[i*this->m_CaptureWidth+j] = this->
m_IntensityArray[(i+1)*this->m_CaptureWidth-1-j];
218 MITK_WARN(
"ToF") <<
"Warning: Data can only be acquired if camera is active.";
238 distanceArray[i*this->m_CaptureWidth+j] = this->
m_DistanceArray[(i+1)*this->m_CaptureWidth-1-j];
245 MITK_WARN(
"ToF") <<
"Warning: Data can only be acquired if camera is active.";
250 int requiredImageSequence,
int& capturedImageSequence,
unsigned char* rgbDataArray)
268 if ((requiredImageSequence < 0) || (requiredImageSequence > this->
m_ImageSequence))
281 capturedImageSequence = requiredImageSequence;
298 MITK_WARN(
"ToF") <<
"Warning: Data can only be acquired if camera is active.";
310 if (strcmp(propertyKey,
"ModulationFrequency") == 0)
312 int modulationFrequency = 0;
314 modulationFrequency =
m_Controller->SetModulationFrequency(modulationFrequency);
318 else if (strcmp(propertyKey,
"IntegrationTime") == 0)
320 int integrationTime = 0;
322 integrationTime =
m_Controller->SetIntegrationTime(integrationTime);
itk::SmartPointer< Self > Pointer
char * m_SourceDataArray
array holding the current PMD source data
ToFCameraPMDController::Pointer GetController()
returns the corresponding camera controller
virtual void UpdateCamera()
updated the controller hold by this device
int m_SourceDataSize
size of the PMD source data
virtual void GetAllImages(float *distanceArray, float *amplitudeArray, float *intensityArray, char *sourceDataArray, int requiredImageSequence, int &capturedImageSequence, unsigned char *rgbDataArray=NULL)
gets the 3 images (distance, amplitude, intensity) from the ToF camera. Caution! The user is responsi...
float * m_IntensityArray
float array holding the intensity image
int m_PixelNumber
number of pixels in the range image (m_CaptureWidth*m_CaptureHeight)
virtual void GetIntensities(float *intensityArray, int &imageSequence)
gets the intensity data from the ToF camera as a greyscale image. Caution! The user is responsible fo...
DataCollection - Class to facilitate loading/accessing structured data.
PropertyList::Pointer m_PropertyList
a list of the corresponding properties
char ** m_SourceDataBuffer
buffer holding the last acquired images
float * m_DistanceArray
float array holding the distance image
int m_ThreadID
ID of the started thread.
virtual void StartCamera()
starts the continuous updating of the camera. A separate thread updates the source data...
bool GetIntProperty(const char *propertyKey, int &integer)
get an int from the property list
itk::FastMutexLock::Pointer m_CameraActiveMutex
mutex for the cameraActive flag
itk::MultiThreader::Pointer m_MultiThreader
itk::MultiThreader used for thread handling
ToFCameraPMDController::Pointer m_Controller
corresponding CameraController
int m_FreePos
current position in the buffer which will be filled with data acquired from the hardware ...
Abstract base class for properties.
virtual void SetProperty(const char *propertyKey, BaseProperty *propertyValue)
set a BaseProperty property in the property list
bool m_CameraActive
flag indicating if the camera is currently active or not. Caution: thread safe access only! ...
int m_CurrentPos
current position in the buffer which will be retrieved by the Get methods
bool m_CameraConnected
flag indicating if the camera is successfully connected or not. Caution: thread safe access only! ...
virtual void GetAmplitudes(float *amplitudeArray, int &imageSequence)
gets the amplitude data from the ToF camera as the strength of the active illumination of every pixel...
virtual bool DisconnectCamera()
closes the connection to the camera
int m_CaptureWidth
width of the range image (x dimension)
virtual void SetProperty(const char *propertyKey, BaseProperty *propertyValue)
set a BaseProperty
itk::FastMutexLock::Pointer m_ImageMutex
mutex for images provided by the range camera
virtual void AllocatePixelArrays()
method for allocating memory for pixel arrays m_IntensityArray, m_DistanceArray and m_AmplitudeArray ...
virtual void CleanUpSourceData()
method for cleaning up memory allocated for m_SourceDataArray and m_SourceDataBuffer ...
int m_BufferSize
buffer size of the image buffer needed for loss-less acquisition of range data
int m_MaxBufferSize
maximal buffer size needed for initialization of data arrays. Default value is 100.
virtual void GetDistances(float *distanceArray, int &imageSequence)
gets the distance data from the ToF camera measuring the distance between the camera and the differen...
int m_CaptureHeight
height of the range image (y dimension)
virtual void AllocateSourceData()
method for allocating m_SourceDataArray and m_SourceDataBuffer
static ITK_THREAD_RETURN_TYPE Acquire(void *pInfoStruct)
Thread method continuously acquiring images from the ToF hardware.
float * m_AmplitudeArray
float array holding the amplitude image
static Pointer New(void)
instanciates a new, operating-system dependant, instance of mitk::RealTimeClock.
virtual void CleanupPixelArrays()
method for cleanup memory allocated for pixel arrays m_IntensityArray, m_DistanceArray and m_Amplitud...
Interface for all representations of PMD ToF devices. ToFCameraPMDDevice internally holds an instance...
int m_ImageSequence
counter for acquired images
virtual bool IsCameraActive()
returns true if the camera is connected and started
virtual bool OnConnectCamera()
opens a connection to the ToF camera