-
Notifications
You must be signed in to change notification settings - Fork 106
convex optimisation with complex unknowns (e.g. compressed sensing MRI) #1518
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
Comments
Hi @mehrhardt. I just tried the code on current master, and it seems to work fine, i.e., converge to a reconstruction with small real part and Shepp-Logan imaginary part, no weird artefacts. What may have solved the issue is the recently merged #1513. Could you try the example again with that fix? |
I can confirm that the example now works fine. The artefacts came from the clipping for plotting "clim=[-.2, 1.2]". Still it uses the indicator of [0, 1] which I believe is done on the real part only. This is not obvious (or "correct") from its definition |
Is there a way to make this connection explicit in ODL? I.e. how could one define the bijection |
@kohr-h, I have found a solution for MRI that is satisfactory, see example below. It requires a new definition of the Fourier transform as an operator from R^2n to R^2n. I could only make this work for the Discrete Fourier transform, for the "normal" Fourier transform the adjoint was off by a non-constant factor. Some parts in there (e.g. the gradient definition) are quite cumbersome, perhaps you know a better way to do this in ODL?
|
Solving complex problems with variational regularization is tricky and some special care needs to be given for this to make sense. I know that this is highly related to other issues raised #1328 #1333 #590 but it seems to be not properly solved (yet).
The most standard approach is to identify C^n with R^2n and define everything on R^2n, see e.g. https://www.springer.com/gp/book/9783030014575. For this one needs to define an isomorphism between these spaces. I tried to accomplish this in ODL with the following:
which has a wrong adjoint
Is there another way to accomplish this in ODL?
There is an example in ODL which seems to do exactly what I want:
odl/examples/solvers/douglas_rachford_pd_mri.py
On the first glance, two potential problems are that it treats images as
real
and thedata_fit
results in complex values (with zero imaginary part though). I modified the example to have the phantom purely imaginary (see below), but this resulted in weird artefacts. Thus, I guess ODL does implicitly something different (not quite sure what though). With the identification above, there should be no difference if the image was purely real or purely imaginary.Note also that the example uses the indicator with box constraints on a complex space which is not defined. With the identification above, this should act on real and imaginary part separately but the code results in reconstructions with negative imaginary part.
The text was updated successfully, but these errors were encountered: