VTK  9.3.1
vtkNIFTIImageReader.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2 // SPDX-License-Identifier: BSD-3-Clause
26 #ifndef vtkNIFTIImageReader_h
27 #define vtkNIFTIImageReader_h
28 
29 #include "vtkIOImageModule.h" // For export macro
30 #include "vtkImageReader2.h"
31 
32 VTK_ABI_NAMESPACE_BEGIN
34 class vtkMatrix4x4;
35 VTK_ABI_NAMESPACE_END
36 
37 struct nifti_1_header;
38 
39 VTK_ABI_NAMESPACE_BEGIN
40 
41 //----------------------------------------------------------------------------
42 class VTKIOIMAGE_EXPORT vtkNIFTIImageReader : public vtkImageReader2
43 {
44 public:
46 
49  static vtkNIFTIImageReader* New();
52 
56  void PrintSelf(ostream& os, vtkIndent indent) override;
57 
61  const char* GetFileExtensions() override { return ".nii .nii.gz .img .img.gz .hdr .hdr.gz"; }
62 
66  const char* GetDescriptiveName() override { return "NIfTI"; }
67 
71  int CanReadFile(VTK_FILEPATH const char* filename) override;
72 
74 
81  vtkGetMacro(TimeAsVector, bool);
82  vtkSetMacro(TimeAsVector, bool);
83  vtkBooleanMacro(TimeAsVector, bool);
85 
89  int GetTimeDimension() { return this->Dim[4]; }
90  double GetTimeSpacing() { return this->PixDim[4]; }
91 
99  double GetRescaleSlope() { return this->RescaleSlope; }
100  double GetRescaleIntercept() { return this->RescaleIntercept; }
101 
103 
110  vtkGetMacro(PlanarRGB, bool);
111  vtkSetMacro(PlanarRGB, bool);
112  vtkBooleanMacro(PlanarRGB, bool);
114 
125  double GetQFac() { return this->QFac; }
126 
139  vtkMatrix4x4* GetQFormMatrix() { return this->QFormMatrix; }
140 
155  vtkMatrix4x4* GetSFormMatrix() { return this->SFormMatrix; }
156 
160  vtkNIFTIImageHeader* GetNIFTIHeader();
161 
162 protected:
164  ~vtkNIFTIImageReader() override;
165 
169  int RequestInformation(vtkInformation* request, vtkInformationVector** inputVector,
170  vtkInformationVector* outputVector) override;
171 
175  int RequestData(vtkInformation* request, vtkInformationVector** inputVector,
176  vtkInformationVector* outputVector) override;
177 
183  static bool CheckExtension(const char* filename, const char* ext);
184 
193  static char* ReplaceExtension(const char* filename, const char* ext1, const char* ext2);
194 
198  static int CheckNIFTIVersion(const nifti_1_header* hdr);
199 
203  static bool CheckAnalyzeHeader(const nifti_1_header* hdr);
204 
209 
211 
215  double RescaleSlope;
217 
221  double QFac;
222 
224 
230 
234  int Dim[8];
235 
239  double PixDim[8];
240 
245 
249  bool PlanarRGB;
250 
251 private:
252  vtkNIFTIImageReader(const vtkNIFTIImageReader&) = delete;
253  void operator=(const vtkNIFTIImageReader&) = delete;
254 };
255 
256 VTK_ABI_NAMESPACE_END
257 #endif // vtkNIFTIImageReader_h
double QFac
Is -1 if VTK slice order is opposite to NIFTI slice order, +1 otherwise.
const char * GetFileExtensions() override
Valid extensions for this file type.
double GetQFac()
QFac gives the slice order in the NIFTI file versus the VTK image.
represent and manipulate 4x4 transformation matrices
Definition: vtkMatrix4x4.h:30
static vtkImageReader2 * New()
Store vtkAlgorithm input/output information.
Data structure defining the fields in the nifti1 header. This binary header should be found at the be...
vtkMatrix4x4 * GetQFormMatrix()
Get a matrix that gives the "qform" orientation and offset for the data.
double GetRescaleSlope()
Get the slope and intercept for rescaling the scalar values.
virtual int CanReadFile(VTK_FILEPATH const char *vtkNotUsed(fname))
Return non zero if the reader can read the given file name.
Read NIfTI-1 and NIfTI-2 medical image files.
double RescaleIntercept
Information for rescaling data to quantitative units.
int GetTimeDimension()
Get the time dimension that was stored in the NIFTI header.
a simple class to control print indentation
Definition: vtkIndent.h:28
bool PlanarRGB
Use planar RGB instead of the default (packed).
double RescaleSlope
Information for rescaling data to quantitative units.
Superclass of binary file readers.
vtkMatrix4x4 * GetSFormMatrix()
Get a matrix that gives the "sform" orientation and offset for the data.
#define VTK_FILEPATH
int RequestInformation(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector) override
Subclasses can reimplement this method to collect information from their inputs and set information f...
vtkNIFTIImageHeader * NIFTIHeader
A copy of the header from the file that was most recently read.
const char * GetDescriptiveName() override
Return a descriptive name that might be useful in a GUI.
Store zero or more vtkInformation instances.
virtual int RequestData(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)
This is called in response to a REQUEST_DATA request from the executive.
Store NIfTI header information.
vtkMatrix4x4 * SFormMatrix
The orientation matrices for the NIFTI file.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkMatrix4x4 * QFormMatrix
The orientation matrices for the NIFTI file.
bool TimeAsVector
Read the time dimension as if it was a vector dimension.