LLNL / LEAP

comprehensive library of 3D transmission Computed Tomography (CT) algorithms with Python and C++ APIs, a PyQt GUI, and fully integrated with PyTorch
https://leapct.readthedocs.io
MIT License
117 stars 12 forks source link

Backprojection Filtration (BPF) reconstruction for CBCT #116

Closed Medphys-KM closed 1 month ago

Medphys-KM commented 1 month ago

I am studying to used leap. It's a great tool, but I can't use it proficiently at present. Can I use follow code to apply BPF to cbct? filterProjections(f) weightedBackproject(g,f) f *= get_FBPscalar() This code is from the official documentation, and I haven't tried it yet. I need to reconstuct truncated cbct projection using BFP, but the official documentation says that leapctype.tomographicModels.BPF() only works for parallel-beam data. Do you have any advice? Thank you!

kylechampley commented 1 month ago

Ya, that documentation is incorrect. I fixed it already, but it has not yet been released to the main branch. I'll do this over the weekend. To perform BPF reconstruction, just use the leapct.BPF function. But it is still true that this will only be an approximate reconstruction for cone-beam CT.

Regardless, why do you want BPF reconstruction? In general, it is inferior to FBP reconstruction. You can perform FBP reconstruction with truncated projection in LEAP if you do the following:

leapct.set_truncatedScan(True)
leapct.FBP(g,f)
Medphys-KM commented 1 month ago

Thanks a lot for you repply. I want to compare the BPF and FDK for the truncated projection. Some reference says that BPF has a theoretical advantage for truncated projection. So, can I use following code for comperation?

FDK

leapct.set_truncatedScan(True) leapct.FBP(g,f)

BPF

leapct.set_truncatedScan(True) leapct.BPF(g,f)

kylechampley commented 1 month ago

I have not heard about BPF being more robust to truncation artifacts. I know that Frank Dennerlein was looking into this at one point. Is that who you heard from about this?

LEAP has an iterative algorithm that works well with truncation, it's called RDLS.

Sorry, leapct.set_truncatedScan(True) does not work with BPF. One trick with BPF is to enlarge the reconstruction FOV (increase numX and numY parameters) so that you avoid truncation artifacts when applying the 2D ramp filter to the image slices.

Medphys-KM commented 1 month ago

As I know, the BPF-based algorithms was proposed by the Dr. Xiaochuan Pan at The University of Chicago. Many papers introduces that one of important properties of the BPF-based algorithms lies in that it can provide exact image reconstruction within a region of interest (ROI) from projection data containing longitudinal and transverse truncations.

I read some papers of Dr. Xiaochuan Pan at The University of Chicago and Dr. Yuxiang Xing at Tsing Hua university. But it is difficult for me to reproduce these methods. Thanks for open sourcing this work. I will try these methods as you suggetested.