Medical Imaging Interaction Toolkit  2023.12.00
Medical Imaging Interaction Toolkit
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
mitkToFCameraDevice.h
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 #ifndef mitkToFCameraDevice_h
13 #define mitkToFCameraDevice_h
14 
15 #include <MitkToFHardwareExports.h>
16 #include "mitkCommon.h"
17 #include "mitkStringProperty.h"
18 #include "mitkProperties.h"
19 #include "mitkPropertyList.h"
20 
21 #include "itkObject.h"
22 #include "itkObjectFactory.h"
23 
24 #include <mutex>
25 #include <thread>
26 
27 // Microservices
28 #include <mitkServiceInterface.h>
29 
30 namespace mitk
31 {
37  class MITKTOFHARDWARE_EXPORT ToFCameraDevice : public itk::Object
38  {
39  public:
40 
47  virtual bool OnConnectCamera() = 0;
48 
54  virtual bool ConnectCamera();
58  virtual bool DisconnectCamera() = 0;
63  virtual void StartCamera() = 0;
67  virtual void StopCamera();
71  virtual bool IsCameraActive();
75  virtual bool IsCameraConnected();
79  virtual void UpdateCamera() = 0;
86  virtual void GetAmplitudes(float* amplitudeArray, int& imageSequence) = 0;
92  virtual void GetIntensities(float* intensityArray, int& imageSequence) = 0;
98  virtual void GetDistances(float* distanceArray, int& imageSequence) = 0;
109  virtual void GetAllImages(float* distanceArray, float* amplitudeArray, float* intensityArray, char* sourceDataArray,
110  int requiredImageSequence, int& capturedImageSequence, unsigned char* rgbDataArray=nullptr) = 0;
115  itkGetMacro(CaptureWidth, int);
120  itkGetMacro(CaptureHeight, int);
125  itkGetMacro(SourceDataSize, int);
130  itkGetMacro(BufferSize, int);
135  itkGetMacro(MaxBufferSize, int);
136 
140  void SetBoolProperty( const char* propertyKey, bool boolValue );
141 
145  void SetIntProperty( const char* propertyKey, int intValue );
146 
150  void SetFloatProperty( const char* propertyKey, float floatValue );
151 
155  void SetStringProperty( const char* propertyKey, const char* stringValue );
156 
160  virtual void SetProperty( const char *propertyKey, BaseProperty* propertyValue );
161 
165  virtual BaseProperty* GetProperty( const char *propertyKey );
166 
170  bool GetBoolProperty(const char *propertyKey, bool& boolValue);
171 
175  bool GetStringProperty(const char *propertyKey, std::string& string);
176 
180  bool GetIntProperty(const char *propertyKey, int& integer);
181 
182  virtual int GetRGBCaptureWidth();
183 
184  virtual int GetRGBCaptureHeight();
185 
186  protected:
187 
188  ToFCameraDevice();
189 
190  ~ToFCameraDevice() override;
191 
195  virtual void AllocatePixelArrays();
199  virtual void CleanupPixelArrays();
200 
207  int m_FreePos;
215  std::mutex m_ImageMutex;
216  std::mutex m_CameraActiveMutex;
217  std::thread m_Thread;
221 
223 
224  };
225 } //END mitk namespace
230 MITK_DECLARE_SERVICE_INTERFACE(mitk::ToFCameraDevice, "org.mitk.services.ToFCameraDevice")
231 #endif
mitk::ToFCameraDevice::m_CurrentPos
int m_CurrentPos
current position in the buffer which will be retrieved by the Get methods
Definition: mitkToFCameraDevice.h:206
mitk::ToFCameraDevice::m_SourceDataSize
int m_SourceDataSize
size of the PMD source data
Definition: mitkToFCameraDevice.h:214
mitk::BaseProperty
Abstract base class for properties.
Definition: mitkBaseProperty.h:36
mitkServiceInterface.h
mitk::ToFCameraDevice::m_CameraConnected
bool m_CameraConnected
flag indicating if the camera is successfully connected or not. Caution: thread safe access only!
Definition: mitkToFCameraDevice.h:219
itk::SmartPointer< Self >
mitk::ToFCameraDevice::m_PropertyList
PropertyList::Pointer m_PropertyList
a list of the corresponding properties
Definition: mitkToFCameraDevice.h:222
mitkClassMacroItkParent
#define mitkClassMacroItkParent(className, SuperClassName)
Definition: mitkCommon.h:45
mitk::ToFCameraDevice::m_AmplitudeArray
float * m_AmplitudeArray
float array holding the amplitude image
Definition: mitkToFCameraDevice.h:203
mitk
Find image slices visible on a given plane.
Definition: RenderingTests.dox:1
mitk::ToFCameraDevice::m_Thread
std::thread m_Thread
Definition: mitkToFCameraDevice.h:217
mitk::ToFCameraDevice::m_RGBImageHeight
int m_RGBImageHeight
height of the RGB image (y dimension)
Definition: mitkToFCameraDevice.h:212
mitk::ToFCameraDevice::m_BufferSize
int m_BufferSize
buffer size of the image buffer needed for loss-less acquisition of range data
Definition: mitkToFCameraDevice.h:204
mitk::ToFCameraDevice::m_FreePos
int m_FreePos
current position in the buffer which will be filled with data acquired from the hardware
Definition: mitkToFCameraDevice.h:207
mitkStringProperty.h
mitk::ToFCameraDevice::m_CameraActive
bool m_CameraActive
flag indicating if the camera is currently active or not. Caution: thread safe access only!
Definition: mitkToFCameraDevice.h:218
mitk::ToFCameraDevice::m_ImageSequence
int m_ImageSequence
counter for acquired images
Definition: mitkToFCameraDevice.h:220
mitk::ToFCameraDevice::m_RGBPixelNumber
int m_RGBPixelNumber
number of pixels in the range image (m_RGBImageWidth*m_RGBImageHeight)
Definition: mitkToFCameraDevice.h:213
mitkPropertyList.h
mitkCommon.h
mitk::ToFCameraDevice::m_PixelNumber
int m_PixelNumber
number of pixels in the range image (m_CaptureWidth*m_CaptureHeight)
Definition: mitkToFCameraDevice.h:210
mitk::ToFCameraDevice::m_IntensityArray
float * m_IntensityArray
float array holding the intensity image
Definition: mitkToFCameraDevice.h:201
mitk::ToFCameraDevice::m_RGBImageWidth
int m_RGBImageWidth
width of the RGB image (x dimension)
Definition: mitkToFCameraDevice.h:211
mitk::ToFCameraDevice::m_DistanceArray
float * m_DistanceArray
float array holding the distance image
Definition: mitkToFCameraDevice.h:202
mitk::ToFCameraDevice::m_MaxBufferSize
int m_MaxBufferSize
maximal buffer size needed for initialization of data arrays. Default value is 100.
Definition: mitkToFCameraDevice.h:205
mitk::ToFCameraDevice::m_ImageMutex
std::mutex m_ImageMutex
mutex for images provided by the range camera
Definition: mitkToFCameraDevice.h:215
mitk::ToFCameraDevice
Virtual interface and base class for all Time-of-Flight devices.
Definition: mitkToFCameraDevice.h:37
MITK_DECLARE_SERVICE_INTERFACE
#define MITK_DECLARE_SERVICE_INTERFACE(IFace, IId)
Definition: mitkServiceInterface.h:26
mitkProperties.h
mitk::ToFCameraDevice::m_CameraActiveMutex
std::mutex m_CameraActiveMutex
mutex for the cameraActive flag
Definition: mitkToFCameraDevice.h:216
mitk::ToFCameraDevice::m_CaptureWidth
int m_CaptureWidth
width of the range image (x dimension)
Definition: mitkToFCameraDevice.h:208
mitk::ToFCameraDevice::m_CaptureHeight
int m_CaptureHeight
height of the range image (y dimension)
Definition: mitkToFCameraDevice.h:209