====== 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}}