Medical Imaging Interaction Toolkit  2018.4.99-389bf124
Medical Imaging Interaction Toolkit
mitkUSDiPhASImageSource.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 MITKUSDiPhASImageSource_H_HEADER_INCLUDED_
14 #define MITKUSDiPhASImageSource_H_HEADER_INCLUDED_
15 
16 
17 #include "mitkUSImageSource.h"
19 
20 #include "Framework.IBMT.US.CWrapper.h"
21 
22 #include "mitkImageReadAccessor.h"
23 #include "itkFastMutexLock.h"
24 #include <functional>
25 #include <qstring.h>
26 #include <ctime>
27 #include <string>
28 #include <mutex>
29 #include <iostream>
30 #include <fstream>
31 #include <mitkOphirPyro.h>
32 
33 
34 namespace mitk {
35 
36 class USDiPhASDevice;
46 {
47 
48 public:
51  itkCloneMacro(Self);
52 
53  typedef itk::Image< float, 3 > itkFloatImageType;
56 
61  virtual void GetNextRawImage( std::vector<mitk::Image::Pointer>& ) override;
62 
68  short* rfDataChannelData,
69  int& channelDataChannelsPerDataset,
70  int& channelDataSamplesPerChannel,
71  int& channelDataTotalDatasets,
72 
73  short* rfDataArrayBeamformed,
74  int& beamformedLines,
75  int& beamformedSamples,
76  int& beamformedTotalDatasets,
77 
78  unsigned char* imageData,
79  int& imageWidth,
80  int& imageHeight,
81  int& imagePixelFormat,
82  int& imageSetsTotal,
83 
84  double& timeStamp);
85 
86  void SetGUIOutput(std::function<void(QString)> out);
87 
89  void SetRecordingStatus(bool record);
90  void SetSavingSettings(SavingSettings settings);
91  void SetVerticalSpacing(float mm);
92 
93  void ModifyDataType(DataType dataT);
94  void ModifyUseBModeFilter(bool isSet);
95  void ModifyScatteringCoefficient(int coeff);
96  void ModifyCompensateForScattering(bool useIt);
97  void ModifyEnergyCompensation(bool compensate);
98 
102  void UpdateImageGeometry();
103 
104 protected:
105  void SetDataType(DataType dataT);
106  void SetUseBModeFilter(bool isSet);
107 
109  virtual ~USDiPhASImageSource( );
110 
112  std::vector<mitk::Image::Pointer> m_RecordedImages;
113  std::vector<mitk::Image::Pointer> m_RawRecordedImages;
114  std::vector<long long> m_ImageTimestampRecord;
115  std::vector<long long> m_ImageTimestampBuffer;
118  mitk::OphirPyro::Pointer m_Pyro;
120 
121  std::vector<Image::Pointer> m_FluenceCompOriginal;
122  std::vector<Image::Pointer> m_FluenceCompResized;
123  std::vector<itk::Image<float, 3>::Pointer> m_FluenceCompResizedItk;
124 
125  std::vector<mitk::Image::Pointer> m_ImageBuffer;
128 
129  unsigned int m_ImageDimensions[3];
131 
135 
136  mitk::Image::Pointer ApplyScatteringCompensation(mitk::Image::Pointer inputImage, int scatteringCoefficient);
137  mitk::Image::Pointer ApplyResampling(mitk::Image::Pointer inputImage, mitk::Vector3D outputSpacing, unsigned int outputSize[3]);
138  mitk::Image::Pointer MultiplyImage(mitk::Image::Pointer inputImage, double value);
139 
140  void OrderImagesInterleaved(Image::Pointer PAImage, Image::Pointer USImage, std::vector<Image::Pointer> recordedList, bool raw);
141  void OrderImagesUltrasound(Image::Pointer USImage, std::vector<Image::Pointer> recordedList);
142 
143  void GetPixelValues(itk::Index<3> pixel, std::vector<float>& values);
144  float GetPixelValue(itk::Index<3> pixel);
145  std::vector<float> m_PixelValues;
146 
148 
150  std::function<void(QString)> m_GUIOutput;
151 
155  SavingSettings m_SavingSettings;
156 
157  float m_StartTime;
159 
160  BeamformerStateInfoNative m_BeamformerInfos;
162 
164  DataType m_DataTypeNext;
165 
168 
172 
176 
180 
184 
185  DataType m_DataType;
186 };
187 } // namespace mitk
188 
189 #endif // MITKUSDiPhASImageSource_H
void ImageDataCallback(short *rfDataChannelData, int &channelDataChannelsPerDataset, int &channelDataSamplesPerChannel, int &channelDataTotalDatasets, short *rfDataArrayBeamformed, int &beamformedLines, int &beamformedSamples, int &beamformedTotalDatasets, unsigned char *imageData, int &imageWidth, int &imageHeight, int &imagePixelFormat, int &imageSetsTotal, double &timeStamp)
std::vector< mitk::Image::Pointer > m_ImageBuffer
void OrderImagesUltrasound(Image::Pointer USImage, std::vector< Image::Pointer > recordedList)
Implementation of mitk::USImageSource for DiPhAS API devices. The method mitk::USImageSource::GetNext...
void SetGUIOutput(std::function< void(QString)> out)
mitk::Image::Pointer ApplyResampling(mitk::Image::Pointer inputImage, mitk::Vector3D outputSpacing, unsigned int outputSize[3])
mitk::USDiPhASDevice * m_Device
DataCollection - Class to facilitate loading/accessing structured data.
This is an abstract superclass for delivering USImages. Each subclass must implement the method mitk:...
std::vector< Image::Pointer > m_FluenceCompOriginal
void ModifyEnergyCompensation(bool compensate)
mitk::OphirPyro::Pointer m_Pyro
mitk::USDiPhASDeviceCustomControls::DataType DataType
std::vector< float > m_PixelValues
This specialization of mitk::Image only appends necessary Metadata to an MITK image. Otherwise it can safely be treated like it&#39;s mother class. To generate an USImage from a standard mitkImage, call the appropriate constructor USImage(image::Pointer)
Definition: mitkUSImage.h:31
mitkClassMacro(USDiPhASImageSource, USImageSource)
std::vector< mitk::Image::Pointer > m_RawRecordedImages
BeamformerStateInfoNative m_BeamformerInfos
std::vector< long long > m_ImageTimestampRecord
mitk::Image::Pointer ResampleOutputVertical(mitk::Image::Pointer image, float verticalSpacing=0.1)
mitk::Image::Pointer MultiplyImage(mitk::Image::Pointer inputImage, double value)
std::vector< long long > m_ImageTimestampBuffer
std::vector< Image::Pointer > m_FluenceCompResized
void ModifyCompensateForScattering(bool useIt)
void SetSavingSettings(SavingSettings settings)
std::function< void(QString)> m_GUIOutput
mitk::Image::Pointer image
mitk::Image::Pointer ApplyScatteringCompensation(mitk::Image::Pointer inputImage, int scatteringCoefficient)
float GetPixelValue(itk::Index< 3 > pixel)
std::vector< itk::Image< float, 3 >::Pointer > m_FluenceCompResizedItk
mitk::USDiPhASDeviceCustomControls::SavingSettings SavingSettings
mitk::Image::Pointer CutOffTop(mitk::Image::Pointer image, int cutOffSize=165)
void GetPixelValues(itk::Index< 3 > pixel, std::vector< float > &values)
virtual void GetNextRawImage(std::vector< mitk::Image::Pointer > &) override
itk::Image< float, 3 > itkFloatImageType
USDiPhASImageSource(mitk::USDiPhASDevice *device)
std::vector< mitk::Image::Pointer > m_RecordedImages
mitkNewMacro1Param(Self, mitk::USDiPhASDevice *)
mitk::Image::Pointer ApplyBmodeFilter(mitk::Image::Pointer image, bool useLogFilter=false)
void OrderImagesInterleaved(Image::Pointer PAImage, Image::Pointer USImage, std::vector< Image::Pointer > recordedList, bool raw)