From 175b4b8df5bc8fea26c37b7ea42d7ff4cb888116 Mon Sep 17 00:00:00 2001 From: "Documenter.jl" Date: Sun, 3 Dec 2023 15:24:10 +0000 Subject: [PATCH] build based on b32dd9c --- dev/.documenter-siteinfo.json | 2 +- dev/functions/index.html | 8 +++++++- dev/index.html | 2 +- dev/search_index.js | 2 +- 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/dev/.documenter-siteinfo.json b/dev/.documenter-siteinfo.json index b2fd7dc..ce1ca1d 100644 --- a/dev/.documenter-siteinfo.json +++ b/dev/.documenter-siteinfo.json @@ -1 +1 @@ -{"documenter":{"julia_version":"1.9.4","generation_timestamp":"2023-12-03T00:01:58","documenter_version":"1.2.0"}} \ No newline at end of file +{"documenter":{"julia_version":"1.9.4","generation_timestamp":"2023-12-03T15:24:07","documenter_version":"1.2.0"}} \ No newline at end of file diff --git a/dev/functions/index.html b/dev/functions/index.html index 0d8aa07..f57c925 100644 --- a/dev/functions/index.html +++ b/dev/functions/index.html @@ -1,2 +1,8 @@ -Function Docstrings · RadonKA.jl

Radon

RadonKA.radonFunction
radon(I, θs; backend=CPU())

Calculates the parallel Radon transform of the three dimensional AbstractArray I. The first two dimensions are y and x. The third dimension is z, the rotational axis. Works either with a AbstractArray{T, 3} or AbstractArray{T, 2}.

θs is a vector or range storing the angles in radians.

backend can be either CPU() for multithreaded CPU execution or CUDABackend() for CUDA execution. In principle, all backends of KernelAbstractions.jl should work but are not tested

Please note: the implementation is not quite optimized for cache efficiency and it is a very naive algorithm. But still, it is fast!

See also iradon.

source

IRadon

RadonKA.iradonFunction
iradon(sinogram, θs; backend=CPU())

Calculates the parallel inverse Radon transform of the sinogram. The first two dimensions are y and x. The third dimension is z, the rotational axis. Works either with a AbstractArray{T, 3} or AbstractArray{T, 2}.

θs is a vector or range storing the angles in radians.

backend can be either CPU() for multithreaded CPU execution or CUDABackend() for CUDA execution. In principle, all backends of KernelAbstractions.jl should work but are not tested.

See also radon.

source
RadonKA.filtered_backprojectionFunction
filtered_backprojection(sinogram, θs, backend=CPU())

Calculates the simple Filtered Backprojection in CT with applying a ramp filter in Fourier space.

source
+Function Docstrings · RadonKA.jl

Radon

RadonKA.radonFunction
radon(I, θs; backend=CPU())

Calculates the parallel Radon transform of the AbstractArray I. The first two dimensions are y and x. The third dimension is z, the rotational axis. size(I, 1) and size(I, 2) have to be equal and a even number. The Radon transform is rotated around the pixel size(I, 1) ÷ 2 + 1, so there is always a real center pixel! Works either with a AbstractArray{T, 3} or AbstractArray{T, 2}.

θs is a vector or range storing the angles in radians.

backend can be either CPU() for multithreaded CPU execution or CUDABackend() for CUDA execution. In principle, all backends of KernelAbstractions.jl should work but are not tested

Please note: the implementation is not quite optimized for cache efficiency and it is a very naive algorithm. But still, it is fast!

See also iradon.

Example

The reason the sinogram has the value 1.41421 for the diagonal ray π/4 is, that such a diagonal travels a longer distance through the pixel.

julia> arr = zeros((4,4)); arr[3,3] = 1;
+
+julia> radon(arr, [0, π/4, π/2])
+3×3 view(::Array{Float64, 3}, :, :, 1) with eltype Float64:
+ 0.0  0.0      0.0
+ 1.0  1.41421  1.0
+ 0.0  0.0      0.0
source

IRadon

RadonKA.iradonFunction
iradon(sinogram, θs; backend=CPU())

Calculates the parallel inverse Radon transform of the sinogram. The first two dimensions are y and x. The third dimension is z, the rotational axis. Works either with a AbstractArray{T, 3} or AbstractArray{T, 2}. size(sinogram, 1) has to be a odd number. And size(sinogram, 2) has to be equal to length(angles). The inverse Radon transform is rotated around the pixel size(sinogram, 1) ÷ 2, so there is always a real center pixel! Works either with a AbstractArray{T, 3} or AbstractArray{T, 2}.

θs is a vector or range storing the angles in radians.

backend can be either CPU() for multithreaded CPU execution or CUDABackend() for CUDA execution. In principle, all backends of KernelAbstractions.jl should work but are not tested.

See also radon.

source
RadonKA.filtered_backprojectionFunction
filtered_backprojection(sinogram, θs, backend=CPU())

Calculates the simple Filtered Backprojection in CT with applying a ramp filter in Fourier space.

source
diff --git a/dev/index.html b/dev/index.html index 1aa0811..d55662a 100644 --- a/dev/index.html +++ b/dev/index.html @@ -1,2 +1,2 @@ -RadonKA.jl · RadonKA.jl

RadonKA

A simple but still decently fast Radon and IRadon transform based on KernelAbstractions.jl.

Build Status Coverage

Quick Overview

  • For 2D and 3D arrays
  • parallel radon and iradon
  • parallel exponential radon and iradon
  • It is restricted to the incircle of radius N ÷ 2 - 1 if the array has size (N, N, N_z)
  • based on KernelAbstractions.jl
  • tested on CPU() and CUDABackend

Installation

Requires Julia 1.9

julia> ]add https://github.com/roflmaostc/RadonKA.jl

Development

File an issue on GitHub if you encounter any problems.

+RadonKA.jl · RadonKA.jl

RadonKA

A simple but still decently fast Radon and IRadon transform based on KernelAbstractions.jl.

Build Status Coverage

Quick Overview

  • For 2D and 3D arrays
  • parallel radon and iradon
  • parallel exponential radon and iradon
  • It is restricted to the incircle of radius N ÷ 2 - 1 if the array has size (N, N, N_z)
  • based on KernelAbstractions.jl
  • tested on CPU() and CUDABackend

Installation

Requires Julia 1.9

julia> ]add https://github.com/roflmaostc/RadonKA.jl

Development

File an issue on GitHub if you encounter any problems.

diff --git a/dev/search_index.js b/dev/search_index.js index c2c3e45..3e9a04d 100644 --- a/dev/search_index.js +++ b/dev/search_index.js @@ -1,3 +1,3 @@ var documenterSearchIndex = {"docs": -[{"location":"functions/#Radon","page":"Function Docstrings","title":"Radon","text":"","category":"section"},{"location":"functions/","page":"Function Docstrings","title":"Function Docstrings","text":"radon","category":"page"},{"location":"functions/#RadonKA.radon","page":"Function Docstrings","title":"RadonKA.radon","text":"radon(I, θs; backend=CPU())\n\nCalculates the parallel Radon transform of the three dimensional AbstractArray I. The first two dimensions are y and x. The third dimension is z, the rotational axis. Works either with a AbstractArray{T, 3} or AbstractArray{T, 2}.\n\nθs is a vector or range storing the angles in radians.\n\nbackend can be either CPU() for multithreaded CPU execution or CUDABackend() for CUDA execution. In principle, all backends of KernelAbstractions.jl should work but are not tested\n\nPlease note: the implementation is not quite optimized for cache efficiency and it is a very naive algorithm. But still, it is fast!\n\nSee also iradon.\n\n\n\n\n\n","category":"function"},{"location":"functions/#IRadon","page":"Function Docstrings","title":"IRadon","text":"","category":"section"},{"location":"functions/","page":"Function Docstrings","title":"Function Docstrings","text":"iradon\nfiltered_backprojection","category":"page"},{"location":"functions/#RadonKA.iradon","page":"Function Docstrings","title":"RadonKA.iradon","text":"iradon(sinogram, θs; backend=CPU())\n\nCalculates the parallel inverse Radon transform of the sinogram. The first two dimensions are y and x. The third dimension is z, the rotational axis. Works either with a AbstractArray{T, 3} or AbstractArray{T, 2}.\n\nθs is a vector or range storing the angles in radians.\n\nbackend can be either CPU() for multithreaded CPU execution or CUDABackend() for CUDA execution. In principle, all backends of KernelAbstractions.jl should work but are not tested.\n\nSee also radon.\n\n\n\n\n\n","category":"function"},{"location":"functions/#RadonKA.filtered_backprojection","page":"Function Docstrings","title":"RadonKA.filtered_backprojection","text":"filtered_backprojection(sinogram, θs, backend=CPU())\n\nCalculates the simple Filtered Backprojection in CT with applying a ramp filter in Fourier space.\n\n\n\n\n\n","category":"function"},{"location":"#RadonKA","page":"RadonKA.jl","title":"RadonKA","text":"","category":"section"},{"location":"","page":"RadonKA.jl","title":"RadonKA.jl","text":"A simple but still decently fast Radon and IRadon transform based on KernelAbstractions.jl.","category":"page"},{"location":"","page":"RadonKA.jl","title":"RadonKA.jl","text":"(Image: Build Status) (Image: Coverage)","category":"page"},{"location":"#Quick-Overview","page":"RadonKA.jl","title":"Quick Overview","text":"","category":"section"},{"location":"","page":"RadonKA.jl","title":"RadonKA.jl","text":"For 2D and 3D arrays \nparallel radon and iradon\nparallel exponential radon and iradon\nIt is restricted to the incircle of radius N ÷ 2 - 1 if the array has size (N, N, N_z)\nbased on KernelAbstractions.jl\ntested on CPU() and CUDABackend","category":"page"},{"location":"#Installation","page":"RadonKA.jl","title":"Installation","text":"","category":"section"},{"location":"","page":"RadonKA.jl","title":"RadonKA.jl","text":"Requires Julia 1.9","category":"page"},{"location":"","page":"RadonKA.jl","title":"RadonKA.jl","text":"julia> ]add https://github.com/roflmaostc/RadonKA.jl","category":"page"},{"location":"#Development","page":"RadonKA.jl","title":"Development","text":"","category":"section"},{"location":"","page":"RadonKA.jl","title":"RadonKA.jl","text":"File an issue on GitHub if you encounter any problems.","category":"page"}] +[{"location":"functions/#Radon","page":"Function Docstrings","title":"Radon","text":"","category":"section"},{"location":"functions/","page":"Function Docstrings","title":"Function Docstrings","text":"radon","category":"page"},{"location":"functions/#RadonKA.radon","page":"Function Docstrings","title":"RadonKA.radon","text":"radon(I, θs; backend=CPU())\n\nCalculates the parallel Radon transform of the AbstractArray I. The first two dimensions are y and x. The third dimension is z, the rotational axis. size(I, 1) and size(I, 2) have to be equal and a even number. The Radon transform is rotated around the pixel size(I, 1) ÷ 2 + 1, so there is always a real center pixel! Works either with a AbstractArray{T, 3} or AbstractArray{T, 2}.\n\nθs is a vector or range storing the angles in radians.\n\nbackend can be either CPU() for multithreaded CPU execution or CUDABackend() for CUDA execution. In principle, all backends of KernelAbstractions.jl should work but are not tested\n\nPlease note: the implementation is not quite optimized for cache efficiency and it is a very naive algorithm. But still, it is fast!\n\nSee also iradon.\n\nExample\n\nThe reason the sinogram has the value 1.41421 for the diagonal ray π/4 is, that such a diagonal travels a longer distance through the pixel.\n\njulia> arr = zeros((4,4)); arr[3,3] = 1;\n\njulia> radon(arr, [0, π/4, π/2])\n3×3 view(::Array{Float64, 3}, :, :, 1) with eltype Float64:\n 0.0 0.0 0.0\n 1.0 1.41421 1.0\n 0.0 0.0 0.0\n\n\n\n\n\n","category":"function"},{"location":"functions/#IRadon","page":"Function Docstrings","title":"IRadon","text":"","category":"section"},{"location":"functions/","page":"Function Docstrings","title":"Function Docstrings","text":"iradon\nfiltered_backprojection","category":"page"},{"location":"functions/#RadonKA.iradon","page":"Function Docstrings","title":"RadonKA.iradon","text":"iradon(sinogram, θs; backend=CPU())\n\nCalculates the parallel inverse Radon transform of the sinogram. The first two dimensions are y and x. The third dimension is z, the rotational axis. Works either with a AbstractArray{T, 3} or AbstractArray{T, 2}. size(sinogram, 1) has to be a odd number. And size(sinogram, 2) has to be equal to length(angles). The inverse Radon transform is rotated around the pixel size(sinogram, 1) ÷ 2, so there is always a real center pixel! Works either with a AbstractArray{T, 3} or AbstractArray{T, 2}.\n\nθs is a vector or range storing the angles in radians.\n\nbackend can be either CPU() for multithreaded CPU execution or CUDABackend() for CUDA execution. In principle, all backends of KernelAbstractions.jl should work but are not tested.\n\nSee also radon.\n\n\n\n\n\n","category":"function"},{"location":"functions/#RadonKA.filtered_backprojection","page":"Function Docstrings","title":"RadonKA.filtered_backprojection","text":"filtered_backprojection(sinogram, θs, backend=CPU())\n\nCalculates the simple Filtered Backprojection in CT with applying a ramp filter in Fourier space.\n\n\n\n\n\n","category":"function"},{"location":"#RadonKA","page":"RadonKA.jl","title":"RadonKA","text":"","category":"section"},{"location":"","page":"RadonKA.jl","title":"RadonKA.jl","text":"A simple but still decently fast Radon and IRadon transform based on KernelAbstractions.jl.","category":"page"},{"location":"","page":"RadonKA.jl","title":"RadonKA.jl","text":"(Image: Build Status) (Image: Coverage)","category":"page"},{"location":"#Quick-Overview","page":"RadonKA.jl","title":"Quick Overview","text":"","category":"section"},{"location":"","page":"RadonKA.jl","title":"RadonKA.jl","text":"For 2D and 3D arrays \nparallel radon and iradon\nparallel exponential radon and iradon\nIt is restricted to the incircle of radius N ÷ 2 - 1 if the array has size (N, N, N_z)\nbased on KernelAbstractions.jl\ntested on CPU() and CUDABackend","category":"page"},{"location":"#Installation","page":"RadonKA.jl","title":"Installation","text":"","category":"section"},{"location":"","page":"RadonKA.jl","title":"RadonKA.jl","text":"Requires Julia 1.9","category":"page"},{"location":"","page":"RadonKA.jl","title":"RadonKA.jl","text":"julia> ]add https://github.com/roflmaostc/RadonKA.jl","category":"page"},{"location":"#Development","page":"RadonKA.jl","title":"Development","text":"","category":"section"},{"location":"","page":"RadonKA.jl","title":"RadonKA.jl","text":"File an issue on GitHub if you encounter any problems.","category":"page"}] }