Coordinate System Conversion Between ITK and Slicer3
From NAMIC Wiki
Home < Coordinate System Conversion Between ITK and Slicer3
DirectionType imageDir;
PointType origin;
int dominantAxisRL = itk::Function::Max3(imageDir[0][0],imageDir[1][0],imageDir[2][0]);
int signRL = itk::Function::Sign(imageDir[dominantAxisRL][0]);
int dominantAxisAP = itk::Function::Max3(imageDir[0][1],imageDir[1][1],imageDir[2][1]);
int signAP = itk::Function::Sign(imageDir[dominantAxisAP][1]);
int dominantAxisSI = itk::Function::Max3(imageDir[0][2],imageDir[1][2],imageDir[2][2]);
int signSI = itk::Function::Sign(imageDir[dominantAxisSI][2]);
DirectionType DirectionToRAS;
DirectionToRAS.SetIdentity( );
if (signRL == 1)
{
DirectionToRAS[dominantAxisRL][dominantAxisRL] = -1.0;
origin[dominantAxisRL] *= -1.0;
}
if (signAP == -1)
{
DirectionToRAS[dominantAxisAP][dominantAxisAP] = -1.0;
origin[dominantAxisAP] *= -1.0;
}
if (signSI == 1)
{
DirectionToRAS[dominantAxisSI][dominantAxisSI] = -1.0;
origin[dominantAxisSI] *= -1.0;
}
imageDir *= DirectionToRAS;
/* Set the Image Coordinate Frame */