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
105 stars 10 forks source link

Backprojection Filtration (BPF) reconstruction for CBCT #116

Open Medphys-KM opened 4 hours ago

Medphys-KM commented 4 hours 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 4 hours 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 4 hours 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 3 hours 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 43 minutes 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.