Medical Imaging Interaction Toolkit  2018.4.99-389bf124
Medical Imaging Interaction Toolkit
mitkPhotoacousticOCLBeamformingFilter.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 
13 #ifndef _MITKPHOTOACOUSTICSOCLBEAMFORMER_H_
14 #define _MITKPHOTOACOUSTICSOCLBEAMFORMER_H_
15 
16 #include <itkObject.h>
17 
18 #if defined(PHOTOACOUSTICS_USE_GPU) || DOXYGEN
19 
24 
25 #include <chrono>
26 
27 namespace mitk
28 {
36  class PhotoacousticOCLBeamformingFilter : public OclDataSetToDataSetFilter, public itk::Object
37  {
38  public:
40  mitkNewMacro1Param(Self, BeamformingSettings::Pointer);
41 
45  void SetInput(Image::Pointer image);
49  void SetInput(void* data, unsigned int* dimensions, unsigned int BpE);
53  void* GetOutput();
54 
58  mitk::Image::Pointer GetOutputAsImage();
59 
61  void Update();
62 
64  void SetApodisation(const float* apodisation, unsigned short apodArraySize)
65  {
66  m_ApodArraySize = apodArraySize;
67  m_Apodisation = apodisation;
68  }
69 
70  protected:
71 
72  PhotoacousticOCLBeamformingFilter(BeamformingSettings::Pointer settings);
74 
76  bool Initialize();
77 
79  void UpdateDataBuffers();
80 
82  void Execute();
83 
84  mitk::PixelType GetOutputType()
85  {
86  return mitk::MakeScalarPixelType<float>();
87  }
88 
89  int GetBytesPerElem()
90  {
91  return sizeof(float);
92  }
93 
94  virtual us::Module* GetModule();
95 
96  private:
98  cl_kernel m_PixelCalculation;
99 
100  unsigned int m_OutputDim[3];
101 
102  const float* m_Apodisation;
103  unsigned short m_ApodArraySize;
104  unsigned int m_inputSlices;
105 
106  unsigned short m_PAImage;
107 
108  BeamformingSettings::Pointer m_Conf;
109 
110  mitk::Image::Pointer m_InputImage;
111 
112  size_t m_ChunkSize[3];
113 
114  mitk::OCLUsedLinesCalculation::Pointer m_UsedLinesCalculation;
115  mitk::OCLDelayCalculation::Pointer m_DelayCalculation;
116 
117  cl_mem m_ApodizationBuffer;
118  cl_mem m_DelaysBuffer;
119  cl_mem m_UsedLinesBuffer;
120  cl_mem m_ElementHeightsBuffer;
121  cl_mem m_ElementPositionsBuffer;
122 
123  };
124 }
125 #else
126 namespace mitk
127 {
128  class PhotoacousticOCLBeamformingFilter : public itk::Object
129  {
130  public:
132  itkNewMacro(Self);
133 
134  protected:
137 
140  };
141 }
142 #endif
143 #endif
#define mitkNewMacro1Param(classname, type)
Definition: mitkCommon.h:72
static void Update(vtkPolyData *)
Definition: mitkSurface.cpp:31
itk::SmartPointer< Self > Pointer
Definition: mitkImage.h:84
DataCollection - Class to facilitate loading/accessing structured data.
mitk::Image::Pointer image
mitkClassMacroItkParent(mitk::PhotoacousticOCLBeamformingFilter, itk::Object)
Class for defining the data type of pixels.
Definition: mitkPixelType.h:51