ncigt-fil
Functions
Partial-Fourier correction routines

Functions

void apply_pF (short Nx, short Ny, short Nz, short Nf, COMPLEX *phase_ref, COMPLEX *result)
 
void homodyne_kcentral (short ncoils, short Nf, short N_acq, short Nx, float *filt_pF, KCOORD *kline_o, KCOORD *kline_e, short fr1, int fill_fac, short Ny, COMPLEX *data, short Nz_proc, short Ny_proc, COMPLEX *data_pF)
 
void setup_pF (SCAN_INFO *hdr_ptr, float *samp_dens, float *filt_pF, float *weight_pF, short filter_type)
 

Detailed Description

Functions to apply homodyne processing to partial-Fourier data, as described in

  1. Noll DC, Nishimura DG, Macovski A. Homodyne detection in magnetic resonance imaging. IEEE Trans Medical Imaging 1991; 10(2):154-163

For an example of how to use the functions, consult the Matlab MEX demo pF_demo.m and correct_pF.c

Function Documentation

void apply_pF ( short  Nx,
short  Ny,
short  Nz,
short  Nf,
COMPLEX *  phase_ref,
COMPLEX *  result 
)

Use phase reference data for phase correction, and then discard the imaginary component (as the final step in an homodyne partial-Fourier recon).

Both input data sets should be in the spatial domain.

Parameters
NxNumber of points along x.
NyNumber of points along y.
NzNumber of points along z.
NfNumber of time frames.
phase_refPhase reference, for correction.
resultData to be phase corrected. The (corrected) result overwrites the input data.
void homodyne_kcentral ( short  ncoils,
short  Nf,
short  N_acq,
short  Nx,
float *  filt_pF,
KCOORD *  kline_o,
KCOORD *  kline_e,
short  fr1,
int  fill_fac,
short  Ny,
COMPLEX *  data,
short  Nz_proc,
short  Ny_proc,
COMPLEX *  data_pF 
)

Extract the central k-space region to be used for phase referencing. The input is 'data', the filter used is filt_pF, and the output is 'data_pF'.

Parameters
ncoilsnumber of coils
Nfnumber of temporal frames
N_acqNumber of acquired ky-kz lines.
NxSize in x direction.
kline_oSampling function, odd time frames.
kline_eSampling function, even time frames.
fr1Whether 1st frame is considered even (0) or odd (1).
fill_facFactor by which raw data must be stretched so that all the (fractional) ky lines become integers.
NySize in ky direction.
dataData to filter.
Nz_procSize in kz direction.
data_pFData filtered.
void setup_pF ( SCAN_INFO *  hdr_ptr,
float *  samp_dens,
float *  filt_pF,
float *  weight_pF,
short  filter_type 
)

Find out to what degree partial-Fourier was used (hdr.pF=1 means all k-space acquired, hdr.pF=0.5 means maximum partial-Fourier acceleration, as only 50% of k-space was acquired). If applicable, i.e., if hdr.pF<1, generate filter to extract the appropriate k-space central region, and set the associated k-space weighting function.

Parameters
hdr_ptrContains scan info. (Need to specify fill_fac, Ny, and Nz_proc before calling. Function will set pF.)
samp_densuse output of calc_samp_dens
filt_pFgenerated filter used to select the low-spatial frequency region of k-space (needs to be preallocated with a length of Ny or Nz_proc)
weight_pFgenerated weighting function, the inverse of the sampling density (needs to be preallocated with same length as filt_pF)
filter_typeSet the shape of the transition band over the low-frequency region. 0: use a step filter (for higher SNR) 1: use a ramp filter (if k-space is off-center)