Giter Site home page Giter Site logo

bjork's Introduction

B-spline Parameterized Joint Optimization of Reconstruction and K-space Trajectories (BJORK) for Accelerated 2D MRI

This repo provides a PyTorch-based reimplementation of 'B-spline Parameterized Joint Optimization of Reconstruction and K-space Trajectories (BJORK) for Accelerated 2D MRI' and 'Efficient approximation of Jacobian matrices involving a non-uniform fast Fourier transform (NUFFT)'.

Since researchers' usually have personalized training pipeline, we currently provide the key components, the B-spline parameterization of trajectory and the efficient calculation of NUFFT Jacobian here. You may plug it into your own training modules with minimal modifications. However, if the demands for a runnable, self-contained code are high (please open an issue if needed), we will also provide whole package.

sys_ops.py contains the forward mode, adjoint model, frame operaor, and the inverse $(A'A+\lambda I)^{-1}$. The Jacobian is approximated by the efficient algorithm detailed in 'Efficient approximation of Jacobian matrices involving a non-uniform fast Fourier transform (NUFFT)'. The implementation use the MRI system matrix provided by MIRTorch.

bspline.py provides the B-spline parameterization of the sampling trajectory.

demo.py provides the Non-Cartesian adaption of the MoDL reconstruction, which can be inserted it to pix2pix training pipeline, with a user-defined dataloader.

Requirements

The minimum requirements are numpy, scipy, PyTorch 1.10 and MIRTorch.

Acknowledgments

If the code is helpful to your research, please consider citing:

@article{wang:22:bjork,
  author={Wang, Guanhua and Luo, Tianrui and Nielsen, Jon-Fredrik and Noll, Douglas C. and Fessler, Jeffrey A.},
  journal={IEEE Transactions on Medical Imaging}, 
  title={B-spline Parameterized Joint Optimization of Reconstruction and K-space Trajectories (BJORK) for Accelerated 2D MRI}, 
  year={2022},
  pages={1-1},
  doi={10.1109/TMI.2022.3161875}}
@article{wang:22:eaj,
  title={Efficient approximation of Jacobian matrices involving a non-uniform fast Fourier transform (NUFFT)},
  author={Wang, Guanhua and Fessler, Jeffrey A},
  journal={arXiv preprint arXiv:2111.02912},
  year={2021}
}

This reimplementation uses the torchkbnufft toolbox:

@conference{muckley:20:tah,
  author = {M. J. Muckley and R. Stern and T. Murrell and F. Knoll},
  title = {{TorchKbNufft}: A High-Level, Hardware-Agnostic Non-Uniform Fast {Fourier} Transform},
  booktitle = {ISMRM Workshop on Data Sampling \& Image Reconstruction},
  year = 2020,
  note = {Source code available at https://github.com/mmuckley/torchkbnufft}.
}

bjork's People

Contributors

guanhuaw avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bjork's Issues

Need for complete code.

Hi, I was working on trajectory optimization of MRI. I was trying to run your method, but facing some issues. It will be helpful if you can provide complete code of your approach. Thanks.

Help needed to account for density compensation

Hello @guanhuaw,

Thank you for the codes.

I am struggling with following two issues. It will be great if you could please help me with these.

  1. Does the current A.H (adjoint of the forward model) operator account for density compensation factor as well? If yes, please let me know. If no, can I use TorchKBNufft's tkbn.calc_density_compensation_function. But, I am not sure if gradients will propagate properly or not. Can you please let me know how to account for density compensation in your code.

  2. If I create two operators as follows:
    A= NuSense_om(smaps, traj)
    AHA=NuSenseFrame_om(smaps, traj)
    z1=A.H * (A* img)
    z2=AHA*img

Then range of z1, and z2 are very different. The values in z2 are very high, it seems to have some different normalization. How can I normalize AHA so that both z1 and z2 are same?

Any suggestions will be helpful.

Thank you,
Hemant

Runnable, self-contained code

Hello,
after reading your paper I'm very impressed with the method.
You've mentioned rising an issue if there is a demand for a complete code of this work, thus, I would like to ask you to provide the code.
I'm a master's degree student, actively studying the application of DL in medical images.
It would be very helpful to see the complete picture of your work,
also, if it's not convenient for you to post the code in the GitHub repo, I can provide my email.
Please let me know your decision,
Thanks!

How to do differentiable gridding in kspace using MIRtorch and Bjork package?

Hi Guanhua,

Thank you so much for pointing me to this repo! However, I'm still a bit confused about how to use these packages to do differentiable gridding in k-space? To be more specific, I have a 3D non-Cartesian trajectory controlled by a few parameters I wish to optimize, and I hope to do gridding in k-space, calculate cost function based on the gridded k-space and backpropogate. Do you think it's possible to achieve using your tools? Any suggestions would be much appreciated!

Yours,
Qijia

Sincerely hope to get the complete code

Hello!
I am a master's degree student from Zhejiang University, currently researching trajectory optimization of mrf imaging. After reading your code, I am deeply inspired. Maybe we can combine our work with each other. I don't know how to use your code right now. So sincerely hope to get your complete code. If it is not convenient to publish, my email address is as follows: [email protected].
Best wishes!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.