ncigt-fil
Functions
EPI specific functions

Provides common corrections needed for EPI data. More...

Functions

int calc_vrgf_data_matrix (DATA_OBJ *vrgf, int input_res, int output_res, float time_attack, float time_flat, float time_decay, float time_sample_delay, float time_sampling_window)
 
int correct_rampsamp (DATA_OBJ *k, DATA_OBJ *vrgf, void *scratchbuf)
 
int ngc_apply_phase_shift (DATA_OBJ *k, DATA_OBJ *ramp, fil_fft_mngr *mngr, NGC_MEM *ngc_mem)
 
int ngc_compute_phase_shift (DATA_OBJ *ngc_even, DATA_OBJ *ngc_odd, DATA_OBJ *ramp, fil_fft_mngr *mngr, NGC_MEM *ngc_mem)
 
int ngc_mem_init (int *sz, int nEl, NGC_MEM *ngc_mem)
 
int ngc_mem_quit (NGC_MEM *ngc_mem)
 

Detailed Description

Provides common corrections needed for EPI data.

These functions include that ability to grid data acquired on EPI readout gradient ramps and to correct for offsets between even and odd EPI readout lines.

See also:

Function Documentation

int calc_vrgf_data_matrix ( DATA_OBJ *  vrgf,
int  input_res,
int  output_res,
float  time_attack,
float  time_flat,
float  time_decay,
float  time_sample_delay,
float  time_sampling_window 
)

This function computes the matrix to regrid EPI data that is sampled on the readout gradient attack and decay slopes.

Parameters
vrgfthe output regridding matrix
input_resnumber of input data on readout
output_resnumber of data points on the readout line after gridding
time_attackthe 'ramp up' time for the gradient (in msec)
time_flatthe 'flat top' time for the gradient (in msec)
time_decaythe 'ramp down' time for the gradient (in msec)
time_sample_delaythe time (in msec) between the start of the readout gradient and the start of the sampling window
time_sampling_windowlength of time (in msec) the sampling window is 'on'
int correct_rampsamp ( DATA_OBJ *  k,
DATA_OBJ *  vrgf,
void *  scratchbuf 
)

a function to regrid EPI data sampled on gradient ramps, using the provided gridding object

Parameters
kthe input ramp-sampled data (of type "fltc" or "dblc")
vrgfthe ramp-sampling gridding matrix. Needs to be of type "fltr", with vrgf.sz[0] == k.sz[0]
scratchbufA pointer to some workspace memory. Needs to be as large as the (dblc) input data memory size. If NULL, the temporary scratch space will be internally allocated.
int ngc_apply_phase_shift ( DATA_OBJ *  k,
DATA_OBJ *  ramp,
fil_fft_mngr *  mngr,
NGC_MEM *  ngc_mem 
)

Applies a pre-estimated phase correction to correct the k-space shift between the odd/even lines of EPI data.

Parameters
kinput k-space data, of size [Nx Ny Ncoil]
rampinput phase correction data, of length [ ncoil ]
mngrand FIL FFT manager
ngc_meman pre-initialized NGC object to hold the memory buffers
int ngc_compute_phase_shift ( DATA_OBJ *  ngc_even,
DATA_OBJ *  ngc_odd,
DATA_OBJ *  ramp,
fil_fft_mngr *  mngr,
NGC_MEM *  ngc_mem 
)

Computes the estimated shift (for each coil of data) based on cross-correlation between the input even and odd EPI readout lines.

Input data type can be either "dblc" of "fltc".

Parameters
ngc_eveninput set of even (+Gx) EPI phase reference lines. Should be 2D, with size [ Nx Ncoils ]
ngc_oddinput set of odd (-Gx) EPI phase reference lines. Should be 2D, with size [ Nx Ncoils ]
rampan object to store the output estimated phase correction for each coil. Should be a "fltr" object of length [Ncoils]. If ramp->data is set to NULL, data object will be initialized internally.
mngran FIL FFT manager
ngc_meman pre-initialized NGC object to hold the memory buffers
int ngc_mem_init ( int *  sz,
int  nEl,
NGC_MEM *  ngc_mem 
)

Initializes the memory structures needed for Nyquist ghost correction when using the 3-line-at-start-of-echo-train method.

Parameters
sza 2D int array holding the Nx and ncoil sizes of the data used to estimate the phase correction values
nElthe number of complex data value elements (Nx * Ny * ncoil) in the EPI data to be corrected
ngc_memthe NGC memory object to hold the initialized memory
int ngc_mem_quit ( NGC_MEM *  ngc_mem)

Free the NGC memory