Hi everyone
I am writing a program, but I am stuck at one stage, namely getting the crosshair position by the current slice number in MRI series
I did a great job of doing this for the CT series, but that’s probably because I reconstruct the other two planes from the axial one myself
Coordinate CrosshairManager::getCoordinateCT(const SliceDirection& targetDir) const
{
int targetIndex = static_cast(targetDir);
int sagittalIndex = static_cast(SliceDirection::Sagittal);
int coronalIndex = static_cast(SliceDirection::Coronal);
int axialIndex = static_cast(SliceDirection::Axial);
Coordinate normCoord;
switch (targetDir)
{
case SliceDirection::Axial:
{
normCoord.setXYZ
(
static_cast<double>(sliceIndices[sagittalIndex]) / (maxSliceIndices[sagittalIndex]),
static_cast<double>(sliceIndices[coronalIndex]) / (maxSliceIndices[coronalIndex])
);
break;
}
case SliceDirection::Sagittal:
{
normCoord.setXYZ
(
static_cast<double>(sliceIndices[coronalIndex]) / (maxSliceIndices[coronalIndex]),
static_cast<double>(sliceIndices[axialIndex]) / (maxSliceIndices[axialIndex])
);
break;
}
case SliceDirection::Coronal:
{
normCoord.setXYZ
(
static_cast<double>(sliceIndices[sagittalIndex]) / (maxSliceIndices[sagittalIndex]),
static_cast<double>(sliceIndices[axialIndex]) / (maxSliceIndices[axialIndex])
);
break;
}
}
return applyFlipToCoordinate(normCoord, targetDir);
}
But for MRI I can’t perfectly hit the same point in all planes, I checked the work with the Radiant program
My data:
Three separate MRI series, their dimensions are 480x480xSliceCount
In Saggital 22 slices
In Coronal 25 slices
In Axial 26 slices