johannesmayer / SIRF

Main repository for the CCPPETMR software
http://www.ccppetmr.ac.uk
Other
2 stars 0 forks source link

Alternative Trajectories #6

Open johannesmayer opened 6 years ago

johannesmayer commented 6 years ago

The following trajectories are rather easy to simulate:

The following 'non-cartesian' trajectories need to be enabled:

Select encoding based on the trajectory parameter set in the ISMRMRD Header passed to the simulation. Setting this will be enabled in the interface of the python/matlab code .

johannesmayer commented 6 years ago

In order to provide RPE support, one needs NFFT encoding: The interface is given in the toolbox <gadgetron/hoNFFT.h> Use is exemplified in CPUGriddingReconGadget:


hoNDArray<float_complext> *data;
hoNDArray<floatd2> *traj; // this has to be 2D since we do cartesian readouts
hoNDArray<float> *dcw; // this has to be 0x0 array because we forward project

hoNFFT_plan<float, 2> plan( from_std_vector<size_t, 2>(imageDims),
                               oversamplingFactor,
                                           kernelWidth);    

hoNDArray<float_complext> result; result.create(imageDimsOs[0], imageDimsOs[1]);

plan.preprocess(*traj);

// last argument has to be forward with Cartesian to non Carteisan layout.
plan.compute(*data, result, *dcw, hoNFFT_plan<float, 2>::NFFT_BACKWARDS_NC2C); 
return boost::make_shared<hoNDArray<float_complext>>(result); // or any other post processing of result!
johannesmayer commented 6 years ago

In vector_td_utilities the function

template<class T, unsigned int D> inline
vector_td<T,D> from_std_vector( std::vector<T> &_vector )

provides interface to std vector extraction of dimensions

johannesmayer commented 6 years ago

Check influence of parameter oversampling_factor in encoding call hoNFFT_plan<float, 2> nufft_operator( from_std_vector<size_t, 2>(slice_dims) , oversampling_factor, kernel_size);

This has to do with deapodization but I don't know how yet.

johannesmayer commented 6 years ago

Rewrite encoding to take 4d data since coilmaps take up an extra dimension. Dimensions need then be [N_ro, N_r, N_ang, N_coil]

johannesmayer commented 6 years ago

Provide automated trajectory computing based on input files. Slice and Phase encoding then become parameters of the trajectory. This would allow trajectory consistency with the rawdata files at all times.

johannesmayer commented 6 years ago

Interace is provided now. Now a radial readout should be enabled!

johannesmayer commented 6 years ago

Enable subtrajectory sampling, s.t. only points which necessary are actually interpolated