My Notes and codes documentation for CUDA learning journey
*Starting new chapter- Chapter 17
Okay so this chapter is all about image reconstruction and authors have taken MRI as the main reference, which is basically how we turn various waveforms into pictures.
So image reconstruction using MRI takes $2$ big steps:
[!note] More about FFT later on… Click Here to jump
Major limitations during MRI scans are:
[!warning]
- Short scan times improve throughput and reduce motion artifacts but may increase noise or lower resolution.
- High resolution and signal-to-noise ratio (SNR) enhance diagnostic accuracy but often require longer scans.
The k-space sampling trajectory determines how data is collected in the frequency domain, influencing reconstruction methods, computational complexity, and image quality.
The book presents $3$ strategies:
Fig 66_01: Scanner k-space trajectories and their associated reconstruction strategies: (A) Cartesian trajectory with FFT reconstruction, (B) spiral (or non-Cartesian trajectory in general) followed by gridding to enable FFT reconstruction, (C) spiral (non-Cartesian) trajectory with a linear solver based reconstruction.
Data is sampled on a uniform grid in k-space, with parallel lines along the $k_x$ axis stacked along the $k_y$ axis.
Here, $m(r)$ is the reconstructed image and $s(k)$ is the k-space data.
[!important] The Fourier Synthesis Equation is:
$m(r) = \sum_j W(k_j)s(k_j) e^{i 2 \pi k_j r}$
- In the cartesian trajectory, k-space samples are acquired on a uniform grid, with evenly spaced points along $k_x$ and $k_y$.
- Under ideal conditions for this trajectory, the weighing function $W(k)$ is constant across all k-space points.
- Let’s denote this as $W(k) = C$, where $C$ is a scalar.
Hence we get: $m(r) = C \sum_j s(k_j) e^{i 2 \pi k_j r} \longrightarrow \sum_j s(k_j) e^{i 2 \pi k_j r}$
Non_Cartesian with Griding: (B)
[!note] Gridding’s convolution operations benefit from parallel computing.
[!caution] High computational demand; historically impractical for large $3D$ datasets.
[!important] Before diving into FFT, let’s first understand Fourier Transform:
The Core Idea:
- The core idea behind Fourier Transform is that: “any signal, no matter how complex, can be broken down into combination of simple sine waves of different frequencies, amplitudes and phases.
![]()
Fig 66_02: Fourier Transform (breakdown of a complex waveform)
*src: 3B1B</i></p> </div> The mathematical Formulation for the continuous Fourier Transform is: $F(\omega) = \int_{-\infty}^{\infty} f(t) e^{-i2 \pi \omega t} dt$ Where: - $f(t)$ is the original signal in the time domain - $F(ω)$ is the representation in the frequency domain - $e^{-i2πωt}$ is the complex exponential that represents the oscillation The inverse Fourier transform reconstructs the original signal from its frequency components *(the one shown in **Fig 66_02**)*: $f(t) = \int_{-\infty}^{\infty} F(\omega) e^{i2 \pi \omega t} d\omega$ And if we change this to discrete form: $X[k]= \sum_{n=0}^{N-1} x[n]e^{-i2 \pi \frac{kn}{N}}$ Where: - $x[n]$ is the discrete time-domain signal - $X[k]$ is the frequency-domain representation of the discrete signal - $N$ is the total number of samples - $k$ is the discrete frequency index The original discrete signal can be reconstructed using the **discrete DFT**: $x[n] = \frac{1}{N} \sum_{k=0}^{N-1} X[k]e^{i2 \pi \frac{kn}{N}}$ *Which looks similar to our equation*
[!tip] For understanding the Fourier Transform formula derivation visit 3Blue1Brown’s Video 👈
[!note] The DFT has computational complexity of $O(N^2)$, which can be slow for large datasets. The Fast Fourier Transform (FFT) reduces the complexity to $O(N \log N)$.
Cartesian Data (Figure 66_01: A): FFT directly reconstructs the image from uniform k-space samples.
Non-Cartesian with Gridding (Figure 66_01: B): Gridding aligns non-uniform data into a Cartesian grid, enabling FFT use.