From 0c5cc8b64eb77478e29fbf5e00a7b995e10975fb Mon Sep 17 00:00:00 2001 From: roflmaostc Date: Wed, 7 Feb 2024 15:41:33 +0100 Subject: [PATCH] Replace cone with fan which is more correct --- README.md | 2 +- docs/src/geometries.md | 8 ++++---- docs/src/index.md | 2 +- examples/1_documentation_different_geometries.jl | 10 +++++----- src/geometry.jl | 2 +- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 307a7f7..de572bd 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ A simple yet sufficiently fast Radon and inverse Radon (iradon) transform implem * [x] For 2D and 3D arrays * [x] parallel `radon` and `iradon` (`?RadonParallelCircle`) * [x] attenuated `radon` and `iradon` (see the parameter `μ`) and see this [paper](https://iopscience.iop.org/article/10.1088/0266-5611/17/1/309/meta) as reference) -* [x] arbitrary 2D geometries where starting and endpoint of each ray can be specified (cone beam could be a special case if this) (`?RadonFlexibleCircle`) +* [x] arbitrary 2D geometries where starting and endpoint of each ray can be specified (fan beam could be a special case if this) (`?RadonFlexibleCircle`) * [x] based on [KernelAbstractions.jl](https://github.com/JuliaGPU/KernelAbstractions.jl) * [x] tested on `CPU()` and `CUDABackend()` * [x] registered adjoint rules for both `radon` and `iradon` diff --git a/docs/src/geometries.md b/docs/src/geometries.md index 5c26086..d16c844 100644 --- a/docs/src/geometries.md +++ b/docs/src/geometries.md @@ -50,13 +50,13 @@ This interface has a simple API but is quite powerful. The first range indicates the position upon entrance in the circle. The second range indicates the position upon exit of the circle. -### Cone Beam +### fan Beam ```julia -geometry_cone = RadonFlexibleCircle(N, -(N-1)÷2:(N-1)÷2, range(-(N-1)÷4, (N-1)÷4, N-1)) +geometry_fan = RadonFlexibleCircle(N, -(N-1)÷2:(N-1)÷2, range(-(N-1)÷4, (N-1)÷4, N-1)) -projected_cone = iradon(sinogram, angles; geometry=geometry_cone); +projected_fan = iradon(sinogram, angles; geometry=geometry_fan); -simshow(projected_cone, γ=0.01) +simshow(projected_fan, γ=0.01) ``` ![](../assets/parallel_geometry_cone.png) diff --git a/docs/src/index.md b/docs/src/index.md index 527ae9d..a3be4de 100644 --- a/docs/src/index.md +++ b/docs/src/index.md @@ -13,7 +13,7 @@ A simple yet sufficiently fast Radon and inverse Radon (iradon) transform implem * [x] For 2D and 3D arrays * [x] parallel `radon` and `iradon` (`?RadonParallelCircle`) * [x] attenuated `radon` and `iradon` (see the parameter `μ`) -* [x] arbitrary 2D geometries where starting and endpoint of each ray can be specified (cone beam could be a special case if this) (`?RadonFlexibleCircle`) +* [x] arbitrary 2D geometries where starting and endpoint of each ray can be specified (fan beam could be a special case if this) (`?RadonFlexibleCircle`) * [x] It is restricted to the incircle of radius `N ÷ 2 - 1` if the array has size `(N, N, N_z)` * [x] based on [KernelAbstractions.jl](https://github.com/JuliaGPU/KernelAbstractions.jl) * [x] tested on `CPU()` and `CUDABackend` diff --git a/examples/1_documentation_different_geometries.jl b/examples/1_documentation_different_geometries.jl index 71f5d60..eccd47f 100644 --- a/examples/1_documentation_different_geometries.jl +++ b/examples/1_documentation_different_geometries.jl @@ -62,22 +62,22 @@ projection_small = iradon(sinogram_small, angles; geometry=geometry_small); simshow(projection_small) # ╔═╡ da663a25-6dcd-4664-9bd1-c84970e58346 -md"# Similar to Cone Beam Tomography" +md"# Similar to fan Beam Tomography" # ╔═╡ 65d32c65-6e1f-417b-aba3-3c34dac35e05 -geometry_cone = RadonFlexibleCircle(N, -(N-1)÷2:(N-1)÷2, range(-(N-1)÷4, (N-1)÷4, N-1)) +geometry_fan = RadonFlexibleCircle(N, -(N-1)÷2:(N-1)÷2, range(-(N-1)÷4, (N-1)÷4, N-1)) # ╔═╡ 26036d0c-2d5e-436c-8343-c4cd66c362c6 N-100 # ╔═╡ 37d760fa-74e6-47d1-b8e6-3315c1747b4c -projected_cone = iradon(sinogram, angles; geometry=geometry_cone); +projected_fan = iradon(sinogram, angles; geometry=geometry_fan); # ╔═╡ 878121c5-4ad5-477b-88c7-f53df7510052 -simshow(projected_cone, γ=0.01) +simshow(projected_fan, γ=0.01) # ╔═╡ afe43c8c-cb98-411b-af8f-1228983ee2e0 -md"# Extreme Cone Beam Tomography" +md"# Extreme fan Beam Tomography" # ╔═╡ 7b0c8263-50d0-4569-96cb-297b4746ece3 geometry_extreme = RadonFlexibleCircle(N, -(N-1)÷2:(N-1)÷2, zeros((199,))) diff --git a/src/geometry.jl b/src/geometry.jl index 95d0cdf..a4c886b 100644 --- a/src/geometry.jl +++ b/src/geometry.jl @@ -36,7 +36,7 @@ with respect to the midpoint which is located at `N ÷ 2 + 1`. One definition could be: `RadonFlexibleCircle(10, -4:4, zeros((9,)))` It would describe rays which enter the circle at positions `-4:4` but all of them would focus at the position 0 when leaving the circle. -This is an extreme form of cone beam tomography. +This is an extreme form of fan beam tomography. """ struct RadonFlexibleCircle{T, T2} <: RadonGeometry N::Int