MagneticResonanceImaging / MRIReco.jl

Julia Package for MRI Reconstruction
https://magneticresonanceimaging.github.io/MRIReco.jl/latest/
Other
85 stars 22 forks source link

add Coil Compression methods #122

Closed aTrotier closed 10 months ago

aTrotier commented 1 year ago

For our Siemens datasets we are currently using the coil compression from Gadgetron (gadget PCACoilGadget + CoilReduction) : https://github.com/gadgetron/gadgetron/blob/master/gadgets/mri_core/PCACoilGadget.cpp

Bart also has an implementation : https://github.com/mrirecon/bart/blob/master/src/cc.c

I don't know how Coil Compression can be used for non-cartesian data.

edit : matlab implementation / tutorial -> https://people.eecs.berkeley.edu/~mlustig/software/ESPIRiT_demo/

alexjaffray commented 1 year ago

@aTrotier there is coil compression in the coil sensitivities code. It works on our Siemens spiral data which is 2D.

It is in CoilSensitivity.jl, in a function called geometricCC_2d

aTrotier commented 1 year ago

Thanks I actually missed that part... I will give it a try on large datasets !

tknopp commented 1 year ago

We should put that code in a dedicated file and write a test for it. I could work on the 3d generalization afterwards.

aTrotier commented 1 year ago

corresponding PR #125

tknopp commented 1 year ago

I change the naming to geometricCoilCompression and extended the code to 3D. At least I hope that the code does what it is supposed to do in 3D :-) If somebody wants to test this, please go for it.

I wonder two things:

aTrotier commented 1 year ago

I think the coil compression available in MRIreco is SCC (software coil compression). We use the same coil compression matrix for all the readouts. Whereas in GCC it is done for each spatial position along the readouts + a realignment step.

tknopp commented 1 year ago

Thanks for pushing this forward Aurelien!

With https://github.com/MagneticResonanceImaging/MRIReco.jl/pull/131 being merged should we close this issue?

It would be good if we could get a benchmark into MRIRecoBenchmarks that compares BART and our implementation. I am not sure if timing is actually relevant/interesting here but the accuracy certainly is. It could look similar to this comparison: https://github.com/MagneticResonanceImaging/MRIRecoBenchmarks/tree/master/benchmark3

aTrotier commented 1 year ago

I'll create the benchmark. Do you want to perform it on the dataset used here Or just something based on the simulation ?

I don't use in routine the coil compression in bart, but if I remember it is pretty long for large 3D multi-coil datasets. I can try on one of my brain datasets with 64 coils to see the results.