====== Cvičení 9 : Rekonstrukce MRI obrazu ======
Úkolem cvičení je vytvořit obraz v k-prostoru a poté rekonstruovat \rho-, T_1- a T_2-vážený obraz z NMR (MRI) pomocí Fourierovské rekonstrukce.
/*
Stáhněte si {{courses:a6m33zsl:mri_fantom.mat?linkonly|mat-file}} s 3 maticemi (//pd, t1, t2// odpovídající \rho, T_1, T_2), které budou tvořit náš virtuální fantom. Relaxační doby T_1 a T_2 jsou v //ms// (proto je třeba zadávat T_r a T_e v ms).
Pro hlubší porozumění tématu doporučujeme se seznámit s interaktivními animacemi na následující strance [[http://www.imaios.com/en/e-Courses/e-MRI/MRI-Sequences/Spin-echo|Spin echo]] (login: ZSL; heslo: zsl)
*/
Pro rekonstrukci budeme používat virtuální fantom -- tři matice (''pd, t1, t2'' opovídající \rho, T_1, T_2). Fantom si vygenerujte pomocí skriptu {{ :courses:a6m33zsl:get_nmr_phantom.m | get_nmr_phantom}}.
{{ :courses:a6m33zsl:phantom_properties.png?800 |}}
Šablona pro cvičení, včetně vygenerování fantomu je k dispozici ve skriptu {{ :courses:a6m33zsl:mri_reconstruction.m | mri_reconstruction}}.
===== Zadání =====
- Implementujte funkci //{{courses:a6m33zsl:encodingmri.m?linkonly|[k_space,t]=encodingMRI(pho,T_1,T_2,T_r,T_e)}}// kodující obrázek NMR, jejímž vstupem bude virtuální fantom (matice \rho, T_1 a T_2) a výstupem matice //K// (k-prostor), kde řadky budou odpovídat jednotlivým excitacím (viz. [[#Implementace]]). [2b]
- Aplikujte vytvořenou funkci na virtuální fantom, nastavte T_r=5s, T_e=1ms. Zobrazte absolutní hodnotu obrazu v k-prostoru, hodnoty jednotlivých prvků matice K mapujte na jasy logaritmicky. [1b]
- Proveďte výpočet obrazu v k-prostoru a zpětnou rekonstrukci obrazu pomocí inverzní FFT ([[http://www.mathworks.com/help/matlab/ref/ifft2.html|ifft2]]) pro 3 následující kombinace parametrů v tabulce. [2b]
* Která z kombinací odpovídá T_1, T_2 a která \rho váženému obrazu a proč?
* Uveďte rovnici a vysvětlete jednotlivé případy.
* Zobrazte všechny tři rekonstruované obrazy, vyřízněte jen tu část, která odpovídá vstupu. Porovnejte s maticemi parametrů T_1, T_2, \rho.
^ ^ 1 ^ 2 ^ 3 ^
^ T_r | 5s | 5ms | 5s |
^ T_e | 1ms | 1ms | 1s |
===== Rekonstrukce obrazu =====
MRI nám dává možnost pomocí nastavení parametrů T_r a T_e vytvářet obrazy vážené podle \rho (hustoty protonů, proton density), nebo podle relaxačních časů T_1 a T_2. Jak se dnes přesvědčíte, nepodaří se nám nikdy získat obraz reprezentující čistě \rho, T_1, nebo T_2. V obraze bude vždy přitomná i jistá složka ostatních parametrů. Vhodnou volbou parametrů T_e a T_r však můžeme vliv těchto nežádoucích složek potlačit.
Nastudujte si {{:courses:a6m33zsl:mri3.pdf|přednášky}} o MRI.
===== Implementace =====
Implementujte funkci rekonstruující obrázek NMR, jejímž vstupem bude virtuální fantom (matice \rho, T_1 a T_2) a výstupem bude matice //K// (k-prostor), kde řádky budou odpovídat jednotlivým excitacím.
- Pro každý pixel obrázku vypočtěte amplitudu výstupního signálu podle zjednodušeného vzorce: U=\rho(1-e^{-\frac{T_r}{T_1}})e^{-\frac{T_e}{T_2}}
- Zvolte počet excitací (opakování) pro fázové kódování. Počet opakování //M// je roven počtu řádků vstupního obrazu.
- Vytvořte vektor fází \varphi\in\langle0,2\pi), \varphi_n=(n-1)\frac{2\pi}{M},~n=1\ldots M. Každá řádka obrazu je kódována jednou fází \varphi_n, každý element vektoru \boldsymbol{\varphi} bude odpovídat jedné excitaci.
- Vytvořte vektor frekvencí \boldsymbol{\omega} pro frekvenční kódování sloupců \omega_m=100m\textrm{ [Hz]},~m=1\ldots S, kde //S// odpovídá počtu sloupců vstupního obrazu.
- Zvolte počet časových vzorků na řádku, N=aS,\textrm{ kde }a\ge2,~a\in \mathbb{N}.
- Vypočítejte vzorkovací frekvenci \Omega=a\max{(\boldsymbol{\omega)}}.
- Vypočítejte interval vzorkování T=\frac{2\pi}{\Omega}.
- Vygenerujte vektor vzorkovacích časů t_s=(s-1)T,~s=1\ldots N.
- Spočítejte reálnou část obrazu v k-prostoru. Obraz v k-prostoru je matice o velikosti M\times N s elementy: \mathbf{K}(r,s)=\sum_{i,j=1}^{i=M,j=S}U_{i,j}cos(\omega_j\mathbf{t}(s)+(r-1)\varphi_i)\label{suma}, kde //i// je index fázového kódování, //j// index frekvenčního kódování, //r// pořadové číslo opakování a \mathbf{t} vektor vzorkovacích časů.
- Pomocí Hilbertovy transformace dopočítejte imaginární složku obrazu v k-prostoru. Víme že výsledkem má být reálný obraz, hledáme tedy imaginární část k-prostoru tak, aby zpětná fourierova transformace celého k-prostoru byla reálná. K tomu poslouží Hilbertova transformace, v Matlabu //hilbert(x)//. Pozor, Matlabská funkce funguje po sloupcích, my potřebujeme Hilbertovu transformaci po řádcích ($\textrm{k_space} = hilbert(\mathbf{K}^\intercal)^\intercal$).
{{ :courses:a6m33zsl:mri_kspace.png?400 |Absolutní hodnota k-prostoru pro T_r = 5s, T_e = 1ms. Jasy mapovány logaritmicky, a = 4}}
Absolutní hodnota k-prostoru pro T_r = 5s, T_e = 1ms. Jasy mapovány **logaritmicky**, a = 4.
{{tag>medical MRI reconstruction matlab}}