Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fully sampled direct reconstruction does not handle specific acquisition ordering #235

Open
aTrotier opened this issue Feb 19, 2025 · 1 comment

Comments

@aTrotier
Copy link
Contributor

However, I think their is an issue here :

      if !MRIBase.isUndersampledCartTrajectory(shape,tr)
        ftOp = FFTOp(Complex{T}; shape, unitary=false, S = S, fftParams(S)...)

The FFTOp expects rawdata(acq) to be in the right order. I think we should remove the first part of the if/else and always use

idx = MRIBase.cartesianSubsamplingIdx(shape,tr)
ftOp = SamplingOp(Complex{T}; pattern=idx, shape, S = S)  FFTOp(Complex{T}; shape, unitary=false, S = S, fftParams(S)...)

The SamplingOp will put the profiles at the right position to perform the fft even for fully sampled with specific ordering acquisition. Are you ok if with that @tknopp @nHackel ?

Originally posted by @aTrotier in #215

I need to create an example to show the issue before going further

@aTrotier
Copy link
Contributor Author

Ok, I have added a test #238 and it passes because we create a sampling operators at the bottom of the file.

# subsampling
  if !isempty(subsampleIdx) && (subsampleIdx != collect(1:size(tr,2))) && isCartesian(tr)
    β = (D==2) ? (tr.numSamplingPerProfile, tr.numProfiles) : (tr.numSamplingPerProfile, tr.numProfiles, tr.numSlices)
    S = SamplingOp(Complex{T}; pattern = subsampleIdx, shape=β, S = S)
    return S  ftOp
  else
    return ftOp
  end

If I remove the previous lines in the if/else :

idx = MRIBase.cartesianSubsamplingIdx(shape,tr)
ftOp = SamplingOp(Complex{T}; pattern=idx, shape, S = S) ∘ FFTOp(Complex{T}; shape, unitary=false, S = S, fftParams(S)...)

The test are working except for the SENSE simulation test (MRISimulation.jl -> line 138)

Image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant