VTK
vtkNIFTIImageReader.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkNIFTIImageReader.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
35 #ifndef vtkNIFTIImageReader_h
36 #define vtkNIFTIImageReader_h
37 
38 #include "vtkIOImageModule.h" // For export macro
39 #include "vtkImageReader2.h"
40 
42 class vtkMatrix4x4;
43 
44 struct nifti_1_header;
45 
46 //----------------------------------------------------------------------------
47 class VTKIOIMAGE_EXPORT vtkNIFTIImageReader : public vtkImageReader2
48 {
49 public:
51 
54  static vtkNIFTIImageReader *New();
57 
61  void PrintSelf(ostream& os, vtkIndent indent) VTK_OVERRIDE;
62 
66  const char* GetFileExtensions() VTK_OVERRIDE {
67  return ".nii .nii.gz .img .img.gz .hdr .hdr.gz"; }
68 
72  const char* GetDescriptiveName() VTK_OVERRIDE {
73  return "NIfTI"; }
74 
78  int CanReadFile(const char* filename) VTK_OVERRIDE;
79 
81 
88  vtkGetMacro(TimeAsVector, bool);
89  vtkSetMacro(TimeAsVector, bool);
90  vtkBooleanMacro(TimeAsVector, bool);
92 
96  int GetTimeDimension() { return this->Dim[4]; }
97  double GetTimeSpacing() { return this->PixDim[4]; }
98 
106  double GetRescaleSlope() { return this->RescaleSlope; }
107  double GetRescaleIntercept() { return this->RescaleIntercept; }
108 
110 
117  vtkGetMacro(PlanarRGB, bool);
118  vtkSetMacro(PlanarRGB, bool);
119  vtkBooleanMacro(PlanarRGB, bool);
121 
132  double GetQFac() { return this->QFac; }
133 
146  vtkMatrix4x4 *GetQFormMatrix() { return this->QFormMatrix; }
147 
162  vtkMatrix4x4 *GetSFormMatrix() { return this->SFormMatrix; }
163 
167  vtkNIFTIImageHeader *GetNIFTIHeader();
168 
169 protected:
171  ~vtkNIFTIImageReader() VTK_OVERRIDE;
172 
176  int RequestInformation(
177  vtkInformation* request, vtkInformationVector** inputVector,
178  vtkInformationVector* outputVector) VTK_OVERRIDE;
179 
183  int RequestData(
184  vtkInformation* request, vtkInformationVector** inputVector,
185  vtkInformationVector* outputVector) VTK_OVERRIDE;
186 
192  static bool CheckExtension(const char *fname, const char *ext);
193 
202  static char *ReplaceExtension(
203  const char *fname, const char *ext1, const char *ext2);
204 
208  static int CheckNIFTIVersion(const nifti_1_header *hdr);
209 
213  static bool CheckAnalyzeHeader(const nifti_1_header *hdr);
214 
219 
221 
225  double RescaleSlope;
227 
231  double QFac;
232 
234 
240 
244  int Dim[8];
245 
249  double PixDim[8];
250 
255 
259  bool PlanarRGB;
260 
261 private:
262  vtkNIFTIImageReader(const vtkNIFTIImageReader&) VTK_DELETE_FUNCTION;
263  void operator=(const vtkNIFTIImageReader&) VTK_DELETE_FUNCTION;
264 };
265 
266 #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:35
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.
Read NIfTI-1 and NIfTI-2 medical image files.
virtual int CanReadFile(const char *vtkNotUsed(fname))
Return non zero if the reader can read the given file name.
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:33
bool PlanarRGB
Use planar RGB instead of the default (packed).
double RescaleSlope
Information for rescaling data to quantitative units.
Superclass of binary file readers.
vtkSetMacro(IgnoreDriverBugs, bool)
When set known driver bugs are ignored during driver feature detection.
vtkMatrix4x4 * GetSFormMatrix()
Get a matrix that gives the "sform" orientation and offset for the data.
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.
vtkBooleanMacro(IgnoreDriverBugs, bool)
When set known driver bugs are ignored during driver feature detection.
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.