Open fzimmermann89 opened 1 week ago
Coverage Report
Tests | Skipped | Failures | Errors | Time |
---|---|---|---|---|
2293 | 0 :zzz: | 18 :x: | 0 :fire: | 2m 46s :stopwatch: |
:file_folder: Download as zip :mag: View online
Note to myself: wondering if this could also cause issues with self-supervised training.
Should check if F(subset of trajectory)(image) = F(image)[subset] -- which might also be a good test.
Also, what was the outcome of #381 ?
@ckolbPTB @schuenke
I thought to norm of FourierOp should always be 1?
I don't think this holds for arbitrary FourierOps. If a FourierOp only yields an undersampled k-space then the Norm will not be 1. Also if padding or cropping of image-space/k-space is required (mismatch of recon_matrix and encoding_matrix) the norm will not be 1.
Here I verified that FFT and NUFFT lead to the same result: https://github.com/PTB-MR/mrpro/blob/3c6d873cd72afe1feda0abba93d677036d783b9f/tests/operators/test_non_uniform_fast_fourier_op.py#L51
for recon_matrix == encoding_matrix and fully-sampled k-space.
The oversampling-parameter of the NUFFT I am not sure about. All the packages I know do not ensure that the norm is independent of this parameter but this does not mean it is the correct thing to do.
It should also match for all of the common MR trajectories. Otherwise, a tiny trajectory change would result in a scaled image -- which would be quite surprising. Ill try if I can make these tests pass..
I thought to norm of FourierOp should always be 1?
I don't think this holds for arbitrary FourierOps. If a FourierOp only yields an undersampled k-space then the Norm will not be 1. Also if padding or cropping of image-space/k-space is required (mismatch of recon_matrix and encoding_matrix) the norm will not be 1.
Here I verified that FFT and NUFFT lead to the same result:
for recon_matrix == encoding_matrix and fully-sampled k-space.
The oversampling-parameter of the NUFFT I am not sure about. All the packages I know do not ensure that the norm is independent of this parameter but this does not mean it is the correct thing to do.
For the Fast Fourier operator, the operator norm should always be be one (if norm="ortho" is used, which we always have, right?), regardless of full or undersampling. For the general FourierOp, the norm will indeed not always be one.
My current opinion:
As we calculate the operator norm using the gram, it should be independent of the norm setting in the fft as long as it's the same in fft and ifft (we only use fft.gram for our operator norm)
Nufft and fft should match for on grid trajectories.
Nufft scaling should be independent of grid size.
An undersampled fft should always have norm <=1: The eigenvektor with energy only at sampled k space points has the highest ew. If and only if this is also ev to ew 1 of the fully sampled fft, the norm will be one. (Imdersamplimg only removes eigenvalues)
A zero padded fft should have norm 1 It's eogencektor will be the zero padded eogencektor of the normal fft.
I think depending on how to normalize, we can either make the zero padded(oversampled) or undersampled fft have norm 1.
What can't be norm 1 are transforms with row sum>1 - repeated samples in the Nufft. Here, dcf@fourier should have norm 1
At least two potential issues with Fourier Op:
Currently, the answer two both is "No" This adds the tests showcasing the potential problems