While reading some code, I stumbled on a GetLength() function that wasn’t returning the length of the current projectionLine…
The resulting image doesn’t change much. So I can’t say if it makes the image better or worse.
In detail:
Source: \src\projector\iProjectorIncrementalSiddonMulti.cc
(line:189) if (mp_Scanner->GetRdmPositionsAndOrientations( ap_ProjectionLine->GetIndex1(), ap_ProjectionLine->GetIndex2(),
ap_ProjectionLine->GetPosition1(), ap_ProjectionLine->GetPosition2(),
ap_ProjectionLine->GetOrientation1(), ap_ProjectionLine->GetOrientation2() ))
[…]
// **************************************
// STEP 1: LOR length calculation
// **************************************
(line:213) HPFLTNB length_LOR = ap_ProjectionLine->GetLength();
GetLength() does not take into account the length change caused by mp_Scanner->GetRdmPositionsAndOrientations
If it wasn’t intentional, a simple solution would be to add a call to ComputeLineLength():
// **************************************
// STEP 1: LOR length calculation
// **************************************
ap_ProjectionLine->ComputeLineLength();
HPFLTNB length_LOR = ap_ProjectionLine->GetLength();
Hope that helps.
Simon Laperle