-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Radon Transform of Discrete Data #34
Comments
There currently is no efficient way to do that, but it is in the long-term plans and there is even a PR but it is WIP: There is an inefficient way though. In the same way that the Shepp-Logan phantom is just a (short) list of Ellipse objects, you could define a long list of Cuboid objects (one for each voxel), and then apply I will leave this issue open until we complete #14 which is what you really want. |
Thanks! Long-term plans is perfectly fine, I just want to stress test where this package is standing (geometry visualizations are absolutely wonderful! Want to integrate them in my lectures). A colleague of mine is currently using ASTRA and I want to see if it is possible to replace it with Sinograms.jl or not. Regarding the inefficient way: This is certainly not an option because my sinogram is of size 2274x1013... I have some other questions / discussion points (one regarding N(u)FFT based forward/backward projections and one regarding iterative reconstruction). Do you prefer discussions in Github/Issues or should I raise user questions in the discussion forum https://github.com/JuliaImageRecon/Sinograms.jl/discussions/landing? |
In the long run, having this be the Julia alternative to ASTRA is the goal. That is a high bar. |
Hi, as newcomer to the field, is that the algorithm you're talking about? Or related: https://ieeexplore.ieee.org/abstract/document/7866886 |
yes, distance driven (or branchless version) is a wip here and there is PR #51 on it just waiting for me to have time to review it. (it will likely need quite a few changes.) |
Is there any news on it? @JeffFessler I recently played with KernelAbstractions and had pretty good performance with generic code for CPU and GPU. Maybe I can polish the code and share it here. It's more like an educational radon transform based on interpolations, so quite naive. But performance is not that bad. I wonder, if it would be worth to implement your draft with KernelAbstractions instead? How do you do that in your lab? Do you have CUDA implementations? In CUDA C code? |
I just merged an initial version of branchless distance driven (DD) projector / back-projector. |
I just published this: https://github.com/roflmaostc/RadonKA.jl For me it really showed the power of Julia and KernelAbstractions. It's a very naive algorithm but I should compare it to your version here! Especially I am interested in the exponential Radon transform (attenuation during travelling through the space.) Maybe it is not too hard to change your code to KernelAbstractions? That would offer multithreading, CUDA, etc. |
It's still not tagged, is it? Would be interesting to test performance to RadonKA.jl It also has a simple API to specify ray geometries. |
From the doc example: Yours is fan beam whereas mine is parallel. But still a factor of 100 in difference.
|
I didn't tag yet because I would (eventually) like to update it a lot to improve allocations and type stability, but it will be a while before I can get to that. |
I am still exploring this package since I would like to reconstruct some real mirco-CT data.
In order to do so, I would like to forward-project the data that was reconstructed with the scanner software and compare it with the measured sinogram. However. It seams that
radon
is only defined for shape-phantoms like the sheep-logan phantom. Is there a way to pass an array of data and project that? In other words: Is there an interface like https://github.com/JuliaImages/ImageReconstruction.jl/blob/master/src/ImageReconstruction.jl#L15 that I am missing somehow?The text was updated successfully, but these errors were encountered: