/usr/include/vtkDICOMCTRectifier.h is in libvtk-dicom-dev 0.7.10-1+b2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 | /*=========================================================================
Program: DICOM for VTK
Copyright (c) 2012-2016 David Gobbi
All rights reserved.
See Copyright.txt or http://dgobbi.github.io/bsd3.txt for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
/*! \class vtkDICOMCTRectifier
* \brief Prepare a CT for 3D processing
*
* This class will identify gantry-tilted CT images and resample them
* into a rectangular volume. This is often a necessary step prior to
* volume rendering or other forms of 3D rendering.
*/
#ifndef vtkDICOMCTRectifier_h
#define vtkDICOMCTRectifier_h
#include "vtkDICOMAlgorithm.h"
#include "vtkDICOMModule.h" // For export macro
class vtkMatrix4x4;
//----------------------------------------------------------------------------
class VTKDICOM_EXPORT vtkDICOMCTRectifier : public vtkDICOMAlgorithm
{
public:
//! Static method for construction.
static vtkDICOMCTRectifier *New();
vtkTypeMacro(vtkDICOMCTRectifier, vtkDICOMAlgorithm);
//! Print information about this object.
virtual void PrintSelf(ostream& os, vtkIndent indent);
//@{
//! Reverse the default operation.
/*!
* When this option is set, the filter takes a rectangular volume
* as input, and produces a volume whose geometry matches the
* VolumeMatrix.
*/
void SetReverse(int v);
void ReverseOn() { this->SetReverse(1); }
void ReverseOff() { this->SetReverse(0); }
int GetReverse() { return this->Reverse; }
//@}
//@{
//! Set the matrix that describes the CT volume geometry.
/*!
* This should be set to the PatientMatrix that comes from the
* vtkDICOMReader.
*/
void SetVolumeMatrix(vtkMatrix4x4 *matrix);
vtkMatrix4x4 *GetVolumeMatrix() { return this->VolumeMatrix; }
//@}
//@{
//! Get the matrix that describes the rectified geometry.
/*!
* This matrix is generated when any of these methods is called:
* Update(), UpdateInformation(), or UpdateMatrix().
*/
vtkMatrix4x4 *GetRectifiedMatrix() { return this->RectifiedMatrix; }
//@}
//@{
//! Update the RectifiedMatrix without updating the output data.
/*!
* The input data must be set before this is called.
*/
void UpdateMatrix();
//@}
//@{
//! A static method to measure the tilt from a matrix.
/*!
* This can be used to see whether it is necessary to rectify the
* volume. It returns the Gantry Detector Tilt angle, in degrees,
* as computed from the shear in the volume matrix.
*/
static double GetGantryDetectorTilt(vtkMatrix4x4 *volumeMatrix);
//@}
protected:
vtkDICOMCTRectifier();
~vtkDICOMCTRectifier();
//! Compute the rectified matrix from the given volume matrix.
/*!
* The extent, spacing, and origin of the image must also be given,
* and they will be adjusted as necessary.
*/
void ComputeMatrix(
const double matrix[16], const int extent[6], double spacing[3],
double origin[3]);
virtual int RequestInformation(
vtkInformation* request, vtkInformationVector** inputVector,
vtkInformationVector* outputVector);
virtual int RequestUpdateExtent(
vtkInformation* request, vtkInformationVector** inputVector,
vtkInformationVector* outputVector);
virtual int RequestData(
vtkInformation* request, vtkInformationVector** inputVector,
vtkInformationVector* outputVector);
virtual void ThreadedRequestData(
vtkInformation *request, vtkInformationVector **inputVector,
vtkInformationVector *outputVector, vtkImageData ***inData,
vtkImageData **outData, int ext[6], int id);
vtkMatrix4x4 *VolumeMatrix;
vtkMatrix4x4 *RectifiedMatrix;
vtkMatrix4x4 *Matrix;
int Reverse;
private:
vtkDICOMCTRectifier(const vtkDICOMCTRectifier&) VTK_DELETE_FUNCTION;
void operator=(const vtkDICOMCTRectifier&) VTK_DELETE_FUNCTION;
};
#endif // vtkDICOMCTRectifier_h
|