Multi-Contrast Reconstruction
So far we have discussed single-contrast reconstructions of the form:
\[\begin{equation} \underset{\mathbf{c}}{argmin} \frac{1}{2}\vert\vert \mathbf{S}\mathbf{c}-\mathbf{u} \vert\vert_2^2 + + \mathbf{R(x)} \end{equation}\]
where $\mathbf{S}$ is a single system matrix, $\mathbf{u}$ is the measurement vector, and $\mathbf{R(x)}$ is an (optional) regularization term. In a multi-contrast reconstruction one can use two or more system matrices to solve:
\[\begin{equation} \underset{c1c2}{argmin} \frac{1}{2}\left\| \mathbf{S_1S_2} \begin{pmatrix} \mathbf{c_1} \\ \mathbf{c_2} \end{pmatrix} - \mathbf{u} \right\|_2^2 + \mathbf{R(x)} \end{equation}\]
To apply this technique to our algorithms, we simply have to provide multiple system matrices to our reconstructions:
bContrast = MultiContrastFile([bSF, bSF])
Multi Contrast File: MPIFile[MDFFile
Study: "FocusField", Dates.DateTime("2014-11-13T16:20:01.217")
Experiment: "SF_DF10_Middle (E39)", Dates.DateTime("2014-11-19T19:31:31.527")
, MDFFile
Study: "FocusField", Dates.DateTime("2014-11-13T16:20:01.217")
Experiment: "SF_DF10_Middle (E39)", Dates.DateTime("2014-11-19T19:31:31.527")
]
and can then reconstruct as usual:
c = reconstruct("SinglePatch", b;
SNRThresh=5,
sf = bContrast,
frames=1:acqNumFrames(b),
minFreq=80e3,
recChannels=1:rxNumChannels(b),
iterations=1,
spectralLeakageCorrection=true);
size(c)
(2, 32, 32, 1, 1)
Note that c
now has two entries in its first dimension, one for each contrast.
We can then just simply access the data of each contrast by accessing the specific dimensions:
fig = Figure();
hidedecorations!(heatmap(fig[1, 1], c[1, :, :, 1, 1].data.data, axis = (title = "Contrast 1",)).axis)
hidedecorations!(heatmap(fig[1, 2], c[2, :, :, 1, 1].data.data, axis = (title = "Contrast 2",)).axis)
fig

In this case the channels are identical, because we reused the same system matrix.
This page was generated using Literate.jl.