Program: gdcm
Module: $RCSfile: gdcmOrientation.h,v $
Language: C++
- Date: $Date: 2005/10/01 15:51:42 $
- Version: $Revision: 1.8 $
+ Date: $Date: 2005/11/18 11:42:48 $
+ Version: $Revision: 1.12 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
#ifndef GDCMORIENTATION_H
#define GDCMORIENTATION_H
-#include "gdcmBase.h"
+#include "gdcmRefCounter.h"
#include <map>
namespace gdcm
*
* Example #1:
* Imagine the patient, in "HFS" position.
- * Sagital images are requested.
+ * Full body sagital images are requested.
* All the cosines will be -1, 0, or +1;
* "Patient Orientation" (deduced) will be "A/F".
* Positive X axis is oriented 'towards patient's nose
*
* Example #2:
* Imagine now that patient has a stiffneck and his head is *turned* 30 degrees towards the left.
- * Sagital images are requested.
+ * Head sagital images are requested.
* One of the cosines will be almost 0.5
* Deduced "Patient Orientation" will be "AL\F"
* (main X axis orientation is towards patient's nose, and a little bit towards the left)
- * but the image is *perfectly* sagital !
+ * but the image looks *perfectly* sagital (for the head, not for the patient) !
*
* Imagine the patient's stiffneck causes head to be *bended* 30 degrees towards the left AND *turned* left.
* Sagital images are requested...
* You'll probabely have 3 letters for X axis and Y axis, and the image remains *perfectly* sagital !
- * The values are given within the 'imager referential', better than within the 'Patient Referential' ...
+ * The values are given within the 'Patient referential', *not* within the 'Organ referential' ...
*/
-class GDCM_EXPORT Orientation : public Base
+typedef enum {
+ NotApplicable = 0,
+ Axial = 1,
+ AxialInvert = -1,
+ Coronal = 2,
+ CoronalInvert = -2,
+ Sagital = 3,
+ SagitalInvert = -3,
+ HeartAxial = 4,
+ HeartAxialInvert = -4,
+ HeartCoronal = 5,
+ HeartCoronalInvert = -5,
+ HeartSagital = 6,
+ HeartSagitalInvert = -6
+} OrientationType;
+
+class GDCM_EXPORT Orientation : public RefCounter
{
+ gdcmTypeMacro(Orientation);
public:
- Orientation() {}
- ~Orientation() {}
+ static Orientation *New() {return new Orientation();}
- double TypeOrientation( File *file );
+ OrientationType GetOrientationType( File *file );
std::string GetOrientation ( File *file );
+ static const char* GetOrientationTypeString(OrientationType const o);
+
+protected:
+/// \brief Constructor
+ Orientation() {}
+/// \brief Canonical Destructor
+ ~Orientation() {}
private:
Res VerfCriterion(int typeCriterion, double criterionNew, Res const &res);
double CalculLikelyhood2Vec(vector3D const &refA, vector3D const &refB,