some questions about coneParallelBackprojectorKernel_vox
I mainly want to understand the reconstruction after converting cone beam to parallel beam in the backprojectors_VD.cu file. In the coneParallelBackprojectorKernel_vox function, I understand that backprojection weight does not need to be calculated in parallel beam backprojection, while it is required in cone beam geometry. However, I am not sure whether this backprojection weight is needed in the Cone Beam Parallel Backprojector. In the code:
// Calculate backprojection weight-related parameters
const float v_denom = sqrtf(R * R - s * s) - (cos_phi * x + sin_phi * y);
const float v_denom_inv = 1.0f / v_denom;
const float backprojectionWeight = doWeight ? R : R*R * v_denom_inv;
In the subsequent code, it is multiplied by sqrtf(1.0f + v_arg*v_arg):
tex3D<float>(g, s_arg, v_phi_x_first + k_offset * v_phi_x_step_A, L) * backprojectionWeight * sqrtf(1.0f + v_arg*v_arg);
Could you recommend any papers or articles where I can refer to this backprojection weight? Additionally, regarding const float asin_tau_over_R = asin(tau / R);, is this used for cone beam artifact correction?
Technically, cone-beam FBP does not require a backprojection weight. This so-called weight is just a part of the backprojection operator; see here.
In the LEAP-CT documentation, I also write out the form of the cone-parallel backprojection here, where you can see that the integral over angles has a weight in it.
Anyway, it the "weight" varies on whether you are doing axial FBP (FDK) or helical FBP. For helical FBP of cone-parallel data, I recommend looking at this paper.
Thank you for your reply. Let me confirm if I understand this correctly: This so-called "weight" is just a part of the backprojection operator. It has nothing to do with iterative reconstruction or FBP reconstruction, but is related to the scanning geometry (the weights differ between spiral and tomographic scanning, and also between cone-beam and cone-parallel scanning).