NFFT 3.6.0
Macros | Functions
inverse_radon.c File Reference

NFFT-based discrete inverse Radon transform. More...

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
#include <complex.h>
#include "nfft3mp.h"
Include dependency graph for inverse_radon.c:

Go to the source code of this file.

Macros

#define NFFT_PRECISION_DOUBLE
 
#define KERNEL(r)   (NFFT_K(1.0)-NFFT_M(fabs)((NFFT_R)(r))/((NFFT_R)S/2))
 define weights of kernel function for discrete Radon transform
 

Functions

static int polar_grid (int T, int S, NFFT_R *x, NFFT_R *w)
 generates the points x with weights w for the polar grid with T angles and R offsets
 
static int linogram_grid (int T, int S, NFFT_R *x, NFFT_R *w)
 generates the points x with weights w for the linogram grid with T slopes and R offsets
 
static int inverse_radon_trafo (int(*gridfcn)(int T, int S, NFFT_R *x, NFFT_R *w), int T, int S, NFFT_R *Rf, int NN, NFFT_R *f, int max_i)
 computes the inverse discrete Radon transform of Rf on the grid given by gridfcn() with T angles and R offsets by a NFFT-based CG-type algorithm
 
int main (int argc, char **argv)
 simple test program for the inverse discrete Radon transform
 

Detailed Description

NFFT-based discrete inverse Radon transform.

Computes the inverse of the discrete Radon transform

\[
   R_{\theta_t} f\left(\frac{s}{R}\right)
   = \sum_{r \in I_R} w_r \; \sum_{k \in I_N^2} f_{k}
       \mathrm{e}^{-2\pi\mathrm{I} k \; (\frac{r}{R}\theta_t)}
       \, \mathrm{e}^{2\pi\mathrm{i} r s / R}
   \qquad(t \in I_T, s \in I_R).
\]

given at the points $\frac{r}{R}\theta_t$ of the polar or linogram grid and where $w_r$ are the weights of the Dirichlet- or Fejer-kernel by 1D-FFTs and the 2D-iNFFT.

Author
Markus Fenn
Date
2005

Definition in file inverse_radon.c.

Macro Definition Documentation

◆ NFFT_PRECISION_DOUBLE

#define NFFT_PRECISION_DOUBLE

Definition at line 44 of file inverse_radon.c.

◆ KERNEL

#define KERNEL (   r)    (NFFT_K(1.0)-NFFT_M(fabs)((NFFT_R)(r))/((NFFT_R)S/2))

define weights of kernel function for discrete Radon transform

Definition at line 50 of file inverse_radon.c.

Function Documentation

◆ polar_grid()

static int polar_grid ( int  T,
int  S,
NFFT_R *  x,
NFFT_R *  w 
)
static

generates the points x with weights w for the polar grid with T angles and R offsets

Definition at line 55 of file inverse_radon.c.

Referenced by main().

◆ linogram_grid()

static int linogram_grid ( int  T,
int  S,
NFFT_R *  x,
NFFT_R *  w 
)
static

generates the points x with weights w for the linogram grid with T slopes and R offsets

Definition at line 79 of file inverse_radon.c.

Referenced by main().

◆ inverse_radon_trafo()

static int inverse_radon_trafo ( int(*)(int T, int S, NFFT_R *x, NFFT_R *w)  gridfcn,
int  T,
int  S,
NFFT_R *  Rf,
int  NN,
NFFT_R *  f,
int  max_i 
)
static

computes the inverse discrete Radon transform of Rf on the grid given by gridfcn() with T angles and R offsets by a NFFT-based CG-type algorithm

Definition at line 114 of file inverse_radon.c.

References CGNR, fft(), FFTW_INIT, KERNEL, MALLOC_F, MALLOC_F_HAT, MALLOC_X, max_i(), PRE_FULL_PSI, PRE_LIN_PSI, PRE_PHI_HUT, PRE_PSI, and PRECOMPUTE_WEIGHT.

Referenced by main().

◆ main()

int main ( int  argc,
char **  argv 
)

simple test program for the inverse discrete Radon transform

Definition at line 238 of file inverse_radon.c.

References inverse_radon_trafo(), linogram_grid(), max_i(), and polar_grid().