TwoProjectionRegistration - 2D 3D registration

(Gabriele Belotti) #1

Dear all,

I’m testing this particular module to evaluate a 2D/3D registration context.
I was able to obtain DRRs using Siddon-Jacobs ray tracing method (starting point is an FDK of POPI model) and as a proof of concept I fed two of these resulting projections (first at the correct angles and centering, then at small tilted angles with added displacement to the CT volume center).
What I noticed is that the computation of a single step in the registration is incredibly slow even in the case where the initial transform is already at the correct position (around 60”).
I think the long computation times are possibly caused by metric calculation on the 2 Projections vs the DRRs generated from the volume by the interpolators (Siddon-Jacobs), but I cannot verify this assumption since I can only observe a full registration step.

Is there a way to speed up the process? Unfortunately the custom classes that were implemented in this module do not come with many useful tools such as a Sampling Strategy.

Thanks to anyone contributing

NB: I’m reposting from the old mailing list where Gordian replied suggesting me to use a CUDA based forward projector such as the one included in RTK.
I’m looking into this but the real issue is that the Siddon-Jacobs class in the original implementation is an image function exploited as Interpolator while rtkCudaForwardProjectionImageFilter.h defines an image filter

1 Like
(Matt McCormick) #2

This seems like a good approach.

Some refactoring may be required.

(Gabriele Belotti) #3

Ok, I will look into refactoring Simon’s implementation…
Meanwhile, I found the metric calculation (reimplementation of Normalized Correlation) to be quite heavy and time consuming wrt the rest of the application… I will try to check speed ups using masks since using any other metric would require a full reimplementation