[Rtk-users] Backprojection in 2D/3D and adjointness concerns
Laura Hellwege
l.hellwege at uni-luebeck.de
Thu Jan 9 13:10:33 CET 2025
Hello!
I have some questions related to this post from 2015:
https://public.kitware.com/pipermail/rtk-users/2015-February/009750.html
First, the referenced website "http://www.openrtk.org/Doxygen/classrtk_1_1NormalizedJosephBackProjectionImageFilter.html" seems to not exist anymore.
Second, I have some issues concerning backprojection and adjointness:
For the following I am using these parameters:
sid = 500
sdd = 1000
n_projections = 4
angular_increment = 90.0
I am using the python version of ITK and tried forward projection (CUDAForwardProjectionImageFilter) followed by backprojection (JosephBackProjectionImageFilter/CudaBackProjectionImageFilter/CudaRayCastBackProjectionImageFilter) of an image with a single pixel value set to one:
img = np.zeros(image_size)
img[image_size[0] // 2, image_size[1] // 2, image_size[2] // 2] = 1.0
1. I do not get expected results for the 2D case:
image_size = [3, 1, 3]
pixel_size_mm = 1.0
slice_thickness_mm = 1.0
projection_size = [5, 1]
projection_spacing = [1.0, 1.0]
After forward projection, the backprojected image by JosephBackProjectionImageFilter is all zeros. Is this expected behavior?
1. According to the definition of adjoint operator, the following should hold:
<Ax, y> = <x, adjoint(A)y> (with <.,.> indicating the scalar product)
This works for 3D CPU case (JosephBackProjectionImageFilter):
image_size = [3, 3, 3]
pixel_size_mm = 1.0
slice_thickness_mm = 1.0
projection_size = [5, 5]
projection_spacing = [1.0, 1.0]
<Ax, y> = <fp, fp> = 9.0
<x, adjoint(A)y> = <img, bp> = 9.000001907348633
This discrepancy is within tolerance.
1. However, in the 3D GPU case:
<x, adjoint(A)y> = <img, bp> = 4.0 for CudaBackProjectionImageFilter
and
<x, adjoint(A)y> = <img, bp> = 0.33841705322265625 for CudaRayCastBackProjectionImageFilter
What kind of filtering or normalization has been used on the projections/images? I could not verify adjointment with the aforementioned method of backprojecting a sinogram of ones and applying division.
Is there a GPU backprojection filter for which adjointness holds?
Thank you in advance for your reply and suggestions.
Best regards, Laura
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.creatis.insa-lyon.fr/pipermail/rtk-users/attachments/20250109/70397594/attachment.htm>
More information about the Rtk-users
mailing list