PlusLib  2.9.0
Software library for tracked ultrasound image acquisition, calibration, and processing.
vtkPlusUsScanConvertCurvilinear.h
Go to the documentation of this file.
1 /*=Plus=header=begin======================================================
2 Program: Plus
3 Copyright (c) Laboratory for Percutaneous Surgery. All rights reserved.
4 See License.txt for details.
5 =========================================================Plus=header=end*/
6 
7 #ifndef __vtkPlusUsScanConvertCurvilinear_h
8 #define __vtkPlusUsScanConvertCurvilinear_h
9 
10 #include "vtkPlusImageProcessingExport.h"
11 #include "vtkPlusUsScanConvert.h"
12 
18 class vtkPlusImageProcessingExport vtkPlusUsScanConvertCurvilinear : public vtkPlusUsScanConvert
19 {
20 public:
21  static vtkPlusUsScanConvertCurvilinear* New();
23  virtual void PrintSelf(ostream& os, vtkIndent indent) VTK_OVERRIDE;
24 
25  virtual const char* GetTransducerGeometry()
26  {
27  return "CURVILINEAR";
28  }
29 
31  virtual PlusStatus ReadConfiguration(vtkXMLDataElement* scanConversionElement);
32 
34  virtual PlusStatus WriteConfiguration(vtkXMLDataElement* scanConversionElement);
35 
37  virtual vtkImageData* GetOutput();
38 
40  {
42  double weightCoefficients[4];
45  // Position of the output pixel (in the image matrix) */
47  };
48 
50  const std::vector<InterpolatedPoint>& GetInterpolatedPointArray()
51  {
52  return this->InterpolatedPointArray;
53  };
54 
56  vtkSetMacro(RadiusStartMm, double);
57  vtkGetMacro(RadiusStartMm, double);
58  vtkSetMacro(RadiusStopMm, double);
59  vtkGetMacro(RadiusStopMm, double);
60  vtkSetMacro(ThetaStartDeg, double);
61  vtkSetMacro(ThetaStopDeg, double);
62  vtkSetMacro(OutputImageStartDepthMm, double);
63 
71  PlusStatus GetScanLineEndPoints(int scanLineIndex, double scanlineStartPoint_OutputImage[4],double scanlineEndPoint_OutputImage[4]);
72 
75 
76 protected:
79 
80  virtual int SplitExtent(int splitExt[6], int startExt[6], int num, int total);
81 
82  virtual int RequestInformation(vtkInformation*, vtkInformationVector**, vtkInformationVector*);
83 
84  virtual int RequestUpdateExtent (vtkInformation*, vtkInformationVector**, vtkInformationVector*);
85 
86  virtual void AllocateOutputData(vtkImageData *output, vtkInformation* outInfo, int *uExtent);
87 
88  virtual void ThreadedRequestData(vtkInformation *request,
89  vtkInformationVector **inputVector,
90  vtkInformationVector *outputVector,
91  vtkImageData ***inData,
92  vtkImageData **outData,
93  int outExt[6],
94  int id);
95 
98 
102  double RadiusStopMm;
103 
107  double ThetaStopDeg;
108 
111 
113  std::vector<InterpolatedPoint> InterpolatedPointArray;
114 
115  int InterpInputImageExtent[6];
120  int InterpOutputImageExtent[6];
121  double InterpOutputImageSpacing[3];
122  double InterpTransducerCenterPixel[2];
124 
129  void ComputeInterpolatedPointArray(
130  int* inputImageExtent, double radiusStartMm, double radiusStopMm, double thetaStartDeg, double thetaStopDeg,
131  int* outputImageExtent, double* outputImageSpacing, double* transducerCenterPixel, double intensityScaling
132  );
133 
134 private:
136  void operator=(const vtkPlusUsScanConvertCurvilinear&); // Not implemented.
137 };
138 
139 #endif
140 
141 
142 
143 
virtual PlusStatus GetScanLineEndPoints(int scanLineIndex, double scanlineStartPoint_OutputImage[4], double scanlineEndPoint_OutputImage[4])=0
virtual PlusStatus WriteConfiguration(vtkXMLDataElement *scanConversionElement)
igsioStatus PlusStatus
Definition: PlusCommon.h:40
virtual void PrintSelf(ostream &os, vtkIndent indent) VTK_OVERRIDE
#define VTK_OVERRIDE
Definition: PlusCommon.h:49
std::vector< InterpolatedPoint > InterpolatedPointArray
const std::vector< InterpolatedPoint > & GetInterpolatedPointArray()
This class performs scan conversion from scan lines for curvilinear probes.
virtual double GetDistanceBetweenScanlineSamplePointsMm()=0
This is a base class for defining a common scan conversion algorithm interface for all kinds of probe...
virtual vtkImageData * GetOutput()=0
virtual PlusStatus ReadConfiguration(vtkXMLDataElement *scanConversionElement)