Program: gdcm
Module: $RCSfile: gdcmOrientation.cxx,v $
Language: C++
- Date: $Date: 2005/07/24 02:34:42 $
- Version: $Revision: 1.1 $
+ Date: $Date: 2005/07/29 15:07:56 $
+ Version: $Revision: 1.4 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
#include "gdcmOrientation.h"
#include "gdcmFile.h"
+#include "gdcmDebug.h"
+#include <math.h> // for sqrt
namespace gdcm
{
* (Axial, Coronal, Sagital) of the image
* \note Should be run on the first gdcm::File of a 'coherent' Serie
* @return orientation code
- * @return orientation code
* # 0 : Not Applicable (neither 0020,0037 Image Orientation Patient
- * # nor 0020,0032Image Position found )
+ * # nor 0020,0032 Image Position found )
* # 1 : Axial
* # -1 : Axial invert
* # 2 : Coronal
bool succ = f->GetImageOrientationPatient( iop );
if ( !succ )
{
- return 0.;
+ gdcmErrorMacro( "No Image Orientation (0020,0037) was found in the file, cannot proceed." )
+ return 0;
}
vector3D ori1;
// two perpendicular vectors describe one plane
double dicPlane[6][2][3] =
- { { {1, 0, 0 },{0, 1, 0 } }, // Axial
- { {1, 0, 0 },{0, 0, -1 } }, // Coronal
- { {0, 1, 0 },{0, 0, -1 } }, // Sagittal
- { { 0.8, 0.5, 0.0 },{-0.1, 0.1 , -0.95 } }, // Axial - HEART
- { { 0.8, 0.5, 0.0 },{-0.6674, 0.687, 0.1794} }, // Coronal - HEART
- { {-0.1, 0.1, -0.95},{-0.6674, 0.687, 0.1794} } // Sagittal - HEART
+ { { {1, 0, 0 },{0, 1, 0 } }, // Axial
+ { {1, 0, 0 },{0, 0, -1 } }, // Coronal
+ { {0, 1, 0 },{0, 0, -1 } }, // Sagittal
+ { { 0.8, 0.5, 0.0 },{-0.1, 0.1 , -0.95 } }, // Axial - HEART
+ { { 0.8, 0.5, 0.0 },{-0.6674, 0.687, 0.1794} }, // Coronal - HEART
+ { {-0.1, 0.1, -0.95},{-0.6674, 0.687, 0.1794} } // Sagittal - HEART
};
vector3D refA;
// res=self.VerfCriterion( -i , self.CalculLikelyhood2Vec(refB,refA,ori1,ori2) , res )
// return res[0]
*/
-
}
Res
-Orientation::VerfCriterion(int typeCriterion, double criterionNew, Res const & in)
+Orientation::VerfCriterion(int typeCriterion, double criterionNew, Res const &in)
{
Res res;
double criterion = in.second;
return res;
}
-inline double square_dist(vector3D const &v1, vector3D const & v2)
+inline double square_dist(vector3D const &v1, vector3D const &v2)
{
double res;
res = (v1.x - v2.x)*(v1.x - v2.x) +
//------------------------- Other : -------------------------------------
// The calculus is based with vectors normalice
double
-Orientation::CalculLikelyhood2Vec(vector3D const & refA, vector3D const & refB,
- vector3D const & ori1, vector3D const & ori2 )
+Orientation::CalculLikelyhood2Vec(vector3D const &refA, vector3D const &refB,
+ vector3D const &ori1, vector3D const &ori2 )
{
vector3D ori3 = ProductVectorial(ori1,ori2);