NFFT Logo 3.0 API Reference
Main Page | Modules | Data Structures | Directories | File List | Data Fields | Globals

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 "util.h"
#include "nfft3.h"

Go to the source code of this file.

Defines

#define KERNEL(r)   (1.0-fabs((double)(r))/((double)R/2))
 define weights of kernel function for discrete Radon transform

Functions

int polar_grid (int T, int R, double *x, double *w)
 generates the points x with weights w for the polar grid with T angles and R offsets
int linogram_grid (int T, int R, double *x, double *w)
 generates the points x with weights w for the linogram grid with T slopes and R offsets
int Inverse_Radon_trafo (int(*gridfcn)(), int T, int R, double *Rf, int NN, double *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.


Function Documentation

int Inverse_Radon_trafo int(*)()  gridfcn,
int  T,
int  R,
double *  Rf,
int  NN,
double *  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

< index for nodes and freqencies

< plan for the nfft-2D

< plan for the inverse nfft

< variable for the fftw-1Ds

< plan for the fftw-1Ds

< index for directions and offsets

< knots and associated weights

< index for iterations

init two dimensional NFFT plan

init two dimensional infft plan

init nodes and weights of grid

precompute psi, the entries of the matrix B

compute 1D-ffts and init given samples and weights

initialise some guess f_hat_0

solve the system

copy result

finalise the plans and free the variables

Definition at line 91 of file inverse_radon.c.

References CGNR, infft_plan::f_hat_iter, fft(), FFT_OUT_OF_PLACE, FFTW_INIT, infft_before_loop(), infft_finalize(), infft_init_advanced(), infft_loop_one_step(), KERNEL, nfft_plan::M_total, MALLOC_F, MALLOC_F_HAT, MALLOC_X, nfft_plan::N_total, nfft_fftshift_complex(), nfft_finalize(), nfft_plan::nfft_flags, nfft_init_guru(), nfft_precompute_full_psi(), nfft_precompute_lin_psi(), nfft_precompute_psi(), infft_plan::p_hat_iter, PRE_FULL_PSI, PRE_LIN_PSI, PRE_PHI_HUT, PRE_PSI, PRECOMPUTE_WEIGHT, infft_plan::w, nfft_plan::x, and infft_plan::y.

Referenced by main().

int main int  argc,
char **  argv
 

simple test program for the inverse discrete Radon transform

< grid generating function

< number of directions/offsets

< image size

< number of iterations

load data

inverse Radon transform

write result

free the variables

Definition at line 211 of file inverse_radon.c.

References Inverse_Radon_trafo(), linogram_grid(), and polar_grid().


Generated on 1 Nov 2006 by Doxygen 1.4.4