MeVisLab Toolbox Reference
mlMedicalImageProperties.h
Go to the documentation of this file.
1/*************************************************************************************
2**
3** Copyright 2007, MeVis Medical Solutions AG
4**
5** The user may use this file in accordance with the license agreement provided with
6** the Software or, alternatively, in accordance with the terms contained in a
7** written agreement between the user and MeVis Medical Solutions AG.
8**
9** For further information use the contact form at https://www.mevislab.de/contact
10**
11**************************************************************************************/
12
13#ifndef ML_MEDICAL_IMAGE_PROPERTIES_H
14#define ML_MEDICAL_IMAGE_PROPERTIES_H
15
19
20// ML-includes
21#include "mlDateTime.h"
22#include "mlImageProperties.h"
23#include "mlLinearAlgebra.h"
25
26#ifdef _MSC_VER
27// Save warning state.
28#pragma warning( push )
29
30// Warning disabled: 'warning C4275': non DLL-interface
31// Reason: Exporting is done manually or as inline functions for the
32// template class ImageProperties.
33#pragma warning(disable : 4275 )
34#endif
35
37
38// Use incomplete type to reduce header file dependencies.
39class RuntimeType;
40
41//-------------------------------------------------------------------------
67//-------------------------------------------------------------------------
69{
70
71public:
72
73 //-------------------------------------------------------------------
76 //-------------------------------------------------------------------
81
84
88
92
98
99 //-------------------------------------------------------------------
102 //-------------------------------------------------------------------
105
109
110 //-------------------------------------------------------------------
113 //-------------------------------------------------------------------
116
118 void setVoxelSize(const Vector3& voxelSize);
119
122
126
130
132
133 //-------------------------------------------------------------------
136 //-------------------------------------------------------------------
148
152
155
157 void setVoxelToWorldMatrix(const Matrix4& matrix);
158
161
163 Vector3 mapVoxelToWorld(const Vector3& voxelPosition) const;
164
166 Vector3 mapWorldToVoxel(const Vector3& worldPosition) const;
167
171
174
176
177 //--------------------------------------------------------------------------------
180 //--------------------------------------------------------------------------------
199 std::vector<std::string>& getCDimensionInfos() { return _cDimInfos; };
200 std::vector<DateTime>& getTDimensionInfos() { return _tDimInfos; };
201 std::vector<std::string>& getUDimensionInfos() { return _uDimInfos; };
202
203 const std::vector<std::string>& getCDimensionInfos() const { return _cDimInfos; };
204 const std::vector<DateTime>& getTDimensionInfos() const { return _tDimInfos; };
205 const std::vector<std::string>& getUDimensionInfos() const { return _uDimInfos; };
206
208
209 //--------------------------------------------------------------------------------
212 //--------------------------------------------------------------------------------
214 ImagePropertyExtensionContainer& getImagePropertyContainer() { return _imagePropertyExtensions; }
215 const ImagePropertyExtensionContainer& getConstImagePropertyContainer() const { return _imagePropertyExtensions; }
217
218
219private:
220
221 //-------------------------------------------------------------------
224 //-------------------------------------------------------------------
227 void updateVoxelSizeFromToWorldMatrix();
228
234 void updateToWorldMatrixFromVoxelSize();
235
239 void correctToWorldMatrix();
241
242
248 void _assignMembers(const MedicalImageProperties& medicalImageProperties);
249
250 //-------------------------------------------------------------------
253 //-------------------------------------------------------------------
255 MLdouble _x_VoxelSize;
256
258 MLdouble _y_VoxelSize;
259
261 MLdouble _z_VoxelSize;
262
264 Matrix4 _toWorldMatrix;
265
268 Matrix4 _toVoxelMatrix;
269
272 bool _isToWorldMatrixValid;
274
275 //-------------------------------------------------------------------
278 //-------------------------------------------------------------------
281 std::vector<std::string> _cDimInfos;
282 std::vector<DateTime> _tDimInfos;
283 std::vector<std::string> _uDimInfos;
285
286
287 //-------------------------------------------------------------------
291 //-------------------------------------------------------------------
292 ImagePropertyExtensionContainer _imagePropertyExtensions;
294};
295
296
297#ifdef _MSC_VER
299#pragma warning( pop )
300#endif
301
302
304
305
306
307
308
309#endif //of __mlMedicalImageProperties_H
310
311
312
This class represents basic image properties:
This class is a container for extended image properties derived from ImagePropertyExtension.
This class encapsulates basic medical image properties:
void setVoxelSize(const Vector3 &voxelSize)
Sets the voxel size to voxelSize. The transformation matrix is adapted adequately.
Vector3 getVoxelSize() const
Returns the voxel size.
const std::vector< std::string > & getUDimensionInfos() const
ImagePropertyExtensionContainer & getImagePropertyContainer()
Permits access to the container for user image properties.
MedicalImageProperties()
Constructor.
const Matrix4 & getWorldToVoxelMatrix() const
Returns the worlToVoxel matrix.
bool isVoxelToWorldMatrixValid() const
Shows the validity state of the VoxelToWorldMatrix (default=true=valid).
std::vector< DateTime > & getTDimensionInfos()
void setVoxelToWorldMatrix(const Matrix4 &matrix)
Sets the matrix which transforms voxel to world coordinates to matrix.
const ImagePropertyExtensionContainer & getConstImagePropertyContainer() const
void setImageProperties(const MedicalImageProperties &medicalImageProperties)
Sets a copy of the passed image properties medicalImageProperties.
const std::vector< std::string > & getCDimensionInfos() const
const std::vector< DateTime > & getTDimensionInfos() const
Vector3 mapWorldToVoxel(const Vector3 &worldPosition) const
Maps the worldPosition vector to voxel coordinates and returns it.
std::vector< std::string > & getUDimensionInfos()
MedicalImageProperties & operator=(const MedicalImageProperties &medicalImageProperties)
Assignment operator from an existing edicalImageProperties object to get a copy.
bool operator!=(const MedicalImageProperties &medicalImageProperties) const
Returns true if *this and medicalImageProperties differ, otherwise false.
bool operator==(const MedicalImageProperties &medicalImageProperties) const
Returns true if *this and medicalImageProperties are identical, otherwise false.
void setVoxelToWorldMatrixValid(bool valid)
Validates/Invalidates the VoxelToWorld matrix by passing true/false as valid.
~MedicalImageProperties() override
Destructor. Cleans up dynamically allocated memory.
void setVoxelSize(MLdouble dx, MLdouble dy, MLdouble dz)
Sets the voxel size to dx, dy and dz. This changes the voxelToWorld matrix.
std::vector< std::string > & getCDimensionInfos()
Permits access to the additional information for subimages on the c-, t- and u-dimensions.
double getVoxelVolumeInMilliliters() const
Returns the volume of a single voxel in milliliters (ml).
Vector3 mapVoxelToWorld(const Vector3 &voxelPosition) const
Maps the voxelPosition vector to world coordinates and returns it.
MedicalImageProperties(const MedicalImageProperties &medicalImageProperties)
Copy constructor from an existing medicalImageProperties object to get a copy.
void translateVoxelToWorldMatrix(const Vector3 &offsetVector)
Translates the voxelToWorld matrix by the offsetVector.
void scaleVoxelToWorldMatrix(const Vector3 &scaleFactors)
Scales the voxelToWorld matrix by the vector scaleFactors and updates the image's voxel size.
double getVoxelVolumeInCubicMillimeters() const
Returns the volume of a single voxel in cubic millimeters (mm3).
const Matrix4 & getVoxelToWorldMatrix() const
Returns the voxelToWorld matrix.
#define MLEXPORT
To export symbols from a dll/shared object, we need to mark them with the MLEXPORT symbol.
Target mlrange_cast(Source arg)
Generic version of checked ML casts.
double MLdouble
Definition mlTypeDefs.h:217