ncigt-fil
|
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) |
Functions to apply homodyne processing to partial-Fourier data, as described in
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
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.
Nx | Number of points along x. |
Ny | Number of points along y. |
Nz | Number of points along z. |
Nf | Number of time frames. |
phase_ref | Phase reference, for correction. |
result | Data 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'.
ncoils | number of coils |
Nf | number of temporal frames |
N_acq | Number of acquired ky-kz lines. |
Nx | Size in x direction. |
kline_o | Sampling function, odd time frames. |
kline_e | Sampling function, even time frames. |
fr1 | Whether 1st frame is considered even (0) or odd (1). |
fill_fac | Factor by which raw data must be stretched so that all the (fractional) ky lines become integers. |
Ny | Size in ky direction. |
data | Data to filter. |
Nz_proc | Size in kz direction. |
data_pF | Data 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.
hdr_ptr | Contains scan info. (Need to specify fill_fac, Ny, and Nz_proc before calling. Function will set pF.) |
samp_dens | use output of calc_samp_dens |
filt_pF | generated 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_pF | generated weighting function, the inverse of the sampling density (needs to be preallocated with same length as filt_pF) |
filter_type | Set 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) |