Today, we broke compressed sensing out into its own implementation. We got two versions of it to work, but we're still failing with joint sparsity.
https://youtu.be/4rwyh0xGJCo?si=fzspVN21yh6KkVXE
Today, we broke compressed sensing out into its own implementation. We got two versions of it to work, but we're still failing with joint sparsity.
https://youtu.be/4rwyh0xGJCo?si=fzspVN21yh6KkVXE
Today, we were able to implement compressed sensing for a single coil with hard data consistency. The result is bad, but the code is working! Next time, we're going to focus on setting the bound higher than 0.
https://youtu.be/N7qWRngFweE
We implemented compressed sensing with joint sparsity. It's currently broken. We'll debug again next stream.
https://youtu.be/2d0VfvoeW7s
Without a way to automatically set the regularization parameter, we're on our way to implementing compressed sensing using joint sparsity. We have an obvious bug right now, which we'll try to address in our next stream.
https://youtu.be/otCmkpCW2bM
I streamed again today to try to make the compressed sensing problem feasible. This first attempt didn't work.
https://www.youtube.com/watch?v=M9d9Q5q4YCs
Today, we understood what has been causing our issues with compressed sensing. The good news is that the code is working as intended. The bad news is that physics is not conforming to our expectations. Now, we're moving on to try to rectify these issues.
https://www.youtube.com/watch?v=xhFxm8Ivchk
Unsuccessfully tried to debug compressed sensing. We're going to have to try again next time.
https://youtu.be/36hqlCud86s
We've implemented compressed sensing (without any other constraints imposed) but need to change the noise bound by a factor of 100,000 to get a good result. This indicates that there is a bug.
https://youtu.be/-KPMhaZvbLE
During today's stream, we completed our implementation of SPIRiT regularization in the rewrite of the reconstruction system. We're also automatically setting the noise bound, though it looks like our bound is very poor. We'll have to look into that.
https://www.youtube.com/watch?v=aQOEdlNQLWM
We made a little progress towards our rewrite of the reconstruction system. We're working on incorporating Spirit Regularization in with our non-rectangular field-of-view.
https://youtu.be/--GeNZdvh9U
Today we started a significant rewrite to better take advantage of the non-rectangular field-of-view and, hopefully, make it easier to accommodate many different constraints.
https://youtu.be/5LgvNZYrpLg
Today, we started our implementation of compressed sensing.
https://www.youtube.com/watch?v=fpt9p3xJ-VE
Today we implemented a code optimization and we did a significant code cleanup. This is in preparation of implementing compressed sensing.
https://youtu.be/6IhGE3rbksQ
In this second stream of the day, we completed the successful implementation of the optimizations, and we can now take the support into account during the reconstruction.
https://youtu.be/RTkRnW4ztGE
In this stream, we started implementing some code optimizations, but had to stop before we were successful.
https://www.youtube.com/watch?v=GBwO9_sFIgk
We are now using an array of gammas, one per coil, that are calculated automatically along with PDHG with line search. This is a completely automatic algorithm, and it's working well. The results with SPIRiT regularization are better than those of model-based-reconstruction without the additional regularization.
https://youtu.be/JT4xSHqrgNs
We cleaned up the code and have PDHG running to solve the least squares minimization over a sphere. It's outputting an image, but the image isn't high quality yet. This may be because of how gamma was set, or how well the optimization is doing with its arbitrary step sizes. We ended with some TODO items to try and fix this.
https://youtu.be/WDQhr4cNCFY
The latest stream is done. We made progress towards including the SPIRiT assumption as a constraint, but we've got a long way to go.
You can watch the stream here: https://youtu.be/30jNWSMlTIg
We found and fixed some bugs in our SPIRiT Regularization code. And we've now compared it to regular model based reconstruction. Indeed, SPIRiT regularization improves the quality!
https://youtu.be/KCZx6JigzOE
We got a first version of SPIRiT regularization working! You can see the stream here: https://youtu.be/s6DpgML-wkg
Although SPIRiT seemed to be working last time, there was a major bug. We fixed that and it works much better now. We also got to the point where we can accommodate nonzero epsilon values.
You can watch a recording here: https://youtu.be/e546JtfsJUM
I streamed again this morning ...... and..... I got SPIRiT working!
You can watch the stream here. https://youtu.be/lX3LRDLQxFA
My latest stream is complete. I was able to solve more bugs, but SPIRiT is still not working. I was doing convolution instead of cross correlation. Also, I was using conjugate transpose when I should have been doing transpose. They're now fixed.
Here's the stream: https://youtu.be/wOd9N1waAI4
The link in the last snippet was wrong. In this stream, we fixed several bugs but still don't have SPIRiT working.
Here's the stream: https://youtu.be/9fsBRNjREHk?si=EQHWaSpDEIviOCUk
In this stream, we fixed several bugs, but we still didn't get SPIRiT working.
You can see the stream here: https://youtu.be/IhIqw9CeF9M?si=ASUvYERbYzwRvAfB
The stream is complete. You can see it at the link below.
I got as far as having a code for SPIRiT that runs all the way through but doesn't work. Hopefully we'll change that during our next stream.
During this morning's stream, I got circular convolution and its adjoint working. This will let us go back to working on SPIRiT regularization during next stream.
Here's the stream: https://www.youtube.com/watch?v=KmPkw9NBcQ0
I took a step back and started working on a 1 dimensional circular convolution. I got it working, but still don't have the adjoint up and running.
You can see the stream here: https://www.youtube.com/watch?v=HHLcrmeuwhs
Stream 2 is complete. I fixed several bugs in the code that determines the interpolation coefficients, and I started developing circular convolution. You can see the stream here: https://youtu.be/3q0yPtTeYYQ
The first stream is complete. I'm starting by creating the SPIRiT reconstruction in MATLAB. In this first stream, I got as far as figuring out the linear interpolation coefficients.
You can see the video of the stream here: https://youtu.be/a34SzRUP-xI
Faster scanning with MRI reduces the need to anesthetize the subject and increases robustness to motion. This is especially important for young pediatric patients that have difficulty remaining still and fetuses that have no impetus to do so.
To scan faster, one can simply collect less data. However, reconstructing a high-quality image from less data is a challenge. In this work, I will be developing a novel method to accelerate MRI. The image is the result of a convex optimization problem that can be solved with existing fast algorithms.
We'll talk about all of this. I'm doing this for fun; hopefully it works out.