-
Notifications
You must be signed in to change notification settings - Fork 0
Description
Thanks for sharing your work and open-sourcing!
One question that I found which is a bit confusing (probably because I did not understand it fully):
With the example script that you provided, I'm trying to get a grasp of how these projection matrices were constructed. When loading the projection matrices and printing out the first matrix, I see
array([[-127.500, 1000.000, 0.000, 127500.000],
[-127.500, 0.000, -1000.000, 127500.000],
[-1.000, 0.000, 0.000, 1000.000]])
Since the translation part is consistent across all the matrices (and looking at the projection images, I can see that the movement of the source is just a rotation) and doing normalization on the rotation matrix, I have
array([[-0.1275, 1. , 0. ],
[-0.1275, 0. , -1. ],
[-0.001 , 0. , 0. ]])
My question is: how was this rotation matrix obtained from the simulation setup? Do you have a formula for computing the projection matrices using DSO and DSD? I'm a bit confused since the matrix does not seem to be orthogonal. Also, the relative rotation from the two adjacent projection matrices when computed with e.g. R2 @ R1.T is 1.0285, which is not 360/300.
Overall, I would greatly appreciate if you could help me understand how the conebeam projections were simulated and how projection matrices can be calculated from the known information.
Thanks again for the great work :)