====== Registrace ve Fiji ======
Cílem toho cvičení je vyzkoušet si registraci medicínských obrazů za pomocí nástroje Fiji. V první části budete odhadovat parametry transformace ručně. Ve druhé části použijete několik automatických a poloautomatických nástrojů (Moving Least Squares, Linear Stack Alignment with SIFT, bUnwarpJ). Pro porovnání kvality registrace použijte "mozaikové kompozice" registrovaných obrázků (příklady níže). Tyto mozaiky vložte do zprávy, vyhodnoťte dosažené výsledky a možnosti uplatnění jednotlivých metod.
/* složením jednotlivých dílů z různých částí obrázek vytvořte následující mozaiky:
$$ \begin{tabular}{ |c|c|c| } \hline
I$_1$ & I$_2$ & I$_1$ \\ \hline
I$_2$ & I$_1$ & I$_2$ \\ \hline
I$_1$ & I$_2$ & I$_1$ \\ \hline
\end{tabular}$$
$$ \begin{tabular}{ |c|c|c| } \hline
I$_1$ & I$_2$ & I$_3$ \\ \hline
I$_3$ & I$_1$ & I$_2$ \\ \hline
I$_2$ & I$_3$ & I$_1$ \\ \hline
\end{tabular}$$
$$ \begin{tabular}{ |c|c|c| } \hline
I$_1$ & I$_2$ & I$_3$ \\ \hline
I$_3$ & I$_4$ & I$_1$ \\ \hline
I$_4$ & I$_1$ & I$_2$ \\ \hline
\end{tabular}$$
*/
===== Zadání =====
Z webu cvičení si stáhněte {{courses:a6m33zsl:lab_registration_images.zip|lab_registration_images.zip}} se vstupními obrázky a pokud je třeba, tak i software [[http://fiji.sc/wiki/index.php/Downloads|Fiji]] pro váš OS. (Na počítačích v učebně je již nainstalován)
/* V archivu jsou n-tice obrázků stejného preparátu s geometrickým zkreslením, nebo pořízené různými technikami, které budete registrovat.
*/
Práce s jednotlivými registračními metodami je podrobněji popsána níže.
/*
Kontrolní mozaiku můžete vytvořit v Matlabu v grafickém editoru, či pomocí Fiji makra //makeMosaic//, které je součástí {{courses:a6m33zsl:images_reg_fiji.zip|zip}} archivu. Další možnost (lepší pro černobílé obrázky) je vykreslení všech obrázků v jednom, kdy každý z obrázků je neprezentován jako jeden barevný kanál (//Image → Color → Merge Channels//)
*/
- Pokuste se zaregistrovat histologické řezy (obrázky "histology.*") a MRI mozku (obrázky "brain.*") tak, že odhadnete typ transformace a zaregistrujte je [[#Interaktivní odhad transformace|interaktivní metodou]]. Do zprávy vložte mozaiku a uveďte použitý typ transformace. [1.25 bodu]
- Na registraci 3 sérií dat - hlavy - “head.*”, podélný řez tělní dutiny - “enterocoele.*” a příčný řez tělní dutiny - “pectus.*” použijte:
- interaktivní metodu //[[#Poloautomatická registrace - Moving Least Squares|Moving Least Squares]]//. Do zprávy vložte mozaiky (pro každou sérii jeden obrázek) všech registrovaných sérií. [1.25 bodu]
- použijte automatickou metodu //[[#Linear Stack Alignment with SIFT|Linear Stack Alignment with SIFT]]//. Do zprávy vložte mozaiky (6, dva pro každou sérii s různými nastaveními) všech registrovaných sérií. [1.25 bodu]
- použijte automatickou metodu //[[#bUnwarpJ|bUnwarpJ]]//. Do zprávy vložte mozaiky (6, dva pro každou sérii s různými nastaveními) všech registrovaných sérií. [1.25 bodu]
/* - Na registraci 3 sérií dat (hlavy - "head.*", podélný řez tělní dutiny - "enterocoele.*" a příčný řez tělní dutiny - "pectus.*") použijte poloautomatickou metodu //Moving Least Squares//. Do zprávy vložte mozaiky (3) všech registrovaných sérií. [1.25 bodu]
- Na registraci 3 sérií dat (MRT panevniho dna - "MRT.*", podélný řez tělní dutiny - "enterocoele.*" a podélný řez v oblasti pánve - "pelvis.*") použijte automatickou metodu //Linear Stack Alignment with SIFT//. Do zprávy vložte mozaiky (3) všech registrovaných sérií. [1.25 bodu]
- Na registraci 3 sérií dat z (hlavy - "head.*", podélný řez tělní dutiny - "enterocoele.*" a podélný řez v oblasti pánve - "MRT.*") použijte automatickou metodu //bUnwarpJ//. Do zprávy vložte mozaiky (3) všech registrovaných sérií. [1.25 bodu] */
Pro ověření zarovnání jednotlivých registrovaných sekvencí využijeme kombinovanou mozaiku všech obrázků (viz níže).
Porovnejte výsledky metod jednotlivých bodů z úkolu 2.
/* Mozaikovou kompozici registrovaných obrázků provedeme tak, že všechny porovnávané obrázky rozdělíme na 9 stejných dílů a jejich vzájemnou kombinací složíme výsledný obraz. Při dobře provedené registraci by měl opět vzniknout konzistentní obraz bez znatelných přechodů mezi jednotlivými díly. */
===== Práce s obrázky ve Fiji =====
==== Otevření obrázků ====
Pro správnou funkci pluginů (metod) je nutné mít otevřené oba registrované obrazy. Toto provedeme volbou v menu
//File → Open...//
nebo jednoduše přetažením (Drag and Drop) vybraného obrázku na lištu Fiji. Pokud registrujete více než dva obrázky, vyberte jeden referenční a ostatní registrujte na něj.
==== Vizualizace výsledků ====
* Kontrolní mozaiku můžete vytvořit v Matlabu v grafickém editoru, či pomocí Fiji makra //makeMosaic//, které je součástí {{courses:a6m33zsl:images_reg_fiji.zip|zip}} archivu.
* Další možnost (vhodnější pro černobílé obrázky) je vykreslení všech obrázků v jednom, kdy každý z obrázků je neprezentován jako jeden barevný kanál. Máme-li otevřené všechny obrázky, jenž chce složit dohromady použijeme volbu //Image → Color → Merge Channels//.
===== Registrační metody ve Fiji - podrobné pokyny =====
==== Interaktivní odhad transformace ====
Nejprve si vyzkoušíme ručně odhadnout transformaci, kterou by bylo možné dvojice obrázků registrovat. První způsob je použít interaktivní metody, která průběžně ukazuje výsledek vámi zvolené transformace
//Plugins → Transform → Interactive ...//
Z možných metod si vyzkoušejte následují tři:
* //[[http://fiji.sc/wiki/index.php/Interactive_Rigid|Interactive Rigid]]//
* //[[http://fiji.sc/wiki/index.php/Interactive_Affine|Interactive Affine]]//
* //[[http://fiji.sc/wiki/index.php/Interactive_Perspective|Interactive Perspective]]//
Po zvolení druhu transformace se vám na vybraném obrázku zobrazí několik bodů, které charakterizují danou transformaci. Jejich posouváním měníte transformaci, což se bezprostředně projeví v obrázku.
{{ :courses:a6m33zsl:fiji_histo.jpg?400 |Výsledná mozaika po interaktivním odhadu transformace}}
==== Nelineární registrace - Moving Least Squares ====
/* Poloautomatické metody registrace odvozují svůj název od nutnosti zadání některých parametrů uživatelem, obyčejně to bývají korespondující body, o zbytek se už algoritmus postará sám. */
Plugin [[http://fiji.sc/wiki/index.php/Moving_Least_Squares|Moving Least Squares]] pracuje s obrázky otevřenými v samostatných oknech. Před vlastním spuštěním pluginu je nutné na obou obrázcích označit navzájem si odpovídající body (landmarky). V hlavní liště Fiji klikneme na ikonu //Point//,změníme volbu z //Point Tool// na //Multi-Point Tool//, označíme alespoň 3 body na každém z obrázků a spustíme plugin
//Plugins → Registration → Moving Least Squares//
kde zvolíme hledanou transformaci a potvrdíme volbu.
//Poznámka: je třeba odznačit volbu merged results.//
{{ :courses:a6m33zsl:fiji_lsm.jpg?400 |Výsledek Moving Least Squares}}
==== Automatická registrace ====
/*
=== TurboReg ===
Pro práci s tímto pluginem musíte mít otevřené dva obrázky, které chcete registrovat v samostatných oknech a následně spustit interface tohoto pluginu volbou
//Plugins \→ Registration → TurboReg//
kde si zvolíte typ hledaní transformace, přesnost odhadu, atd.
Podrobnější popis pluginu i se stručným popisem jeho požití naleznete na webu [[http://bigwww.epfl.ch/thevenaz/turboreg/}|EPFL]].
*/
=== Linear Stack Alignment with SIFT ===
[[http://fiji.sc/wiki/index.php/Linear_Stack_Alignment_with_SIFT|Linear Stack Alignment with SIFT]] je založen na detekci klíčových bodů v obraze a jejich následnou registraci.
Pomocí [[http://en.wikipedia.org/wiki/Scale-invariant_feature_transform|SIFTu]] ([[http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=790410|odborný článek]]) nejprve detekuje množinu klíčových bodů a spočteme jejich deskriptory. Následně hledáme dvojice klíčových bodů z referenčního a pohyblivého obrázku které jsou si nejpodobnější. Z takto sestavených korespondencí již není těžké určit hledanou transformaci.
Otevřete si postupně všechny obrázky a volbou
//Image → Stack → Images to Stack//
je spojte do jednoho vícevrstvého obrázku, kde každý z původních obrázků je reprezentován jako jedna vrstva. Pak spusťte plugin volbou
//Plugins → Registration → Linear Stack Alignment with SIFT//
v dialogu nastavíte vlastnosti použitých deskriptorů a typ hledané transformace.
/* // Poznámka: Před použitím tohoto pluginu si nejprve vytvořte několika vrstevný obrázek, kde do každé vrstvy vložíte jeden z obrázků dané série. // */
{{ :courses:a6m33zsl:fiji_sitf.jpg?300 |Výsledná mozaika po SIFT}}
=== bUnwarpJ ===
[[http://imagej.net/BUnwarpJ|bUnwarpJ]] je algoritmus pro pružnou a konzistentní registrace obrazu. Provádí současné registraci obou obrazů A a B. Obrázek A je elasticky deformován tak, aby vypadal co nejpodobnější obrazu B, a zároveň se také počítá i "inverzní" transformace (z B do A).
Plugin bUnwarpJ pracuje s jednotlivě otevřenými obrázky a naleznete ji pod volbou
//Plugins → Registration → bUnwarpJ//
V hlavním okně pluginu se nastavují váhy jednotlivých prvků minimalizovaného funkcionálu energie.
{{ :courses:a6m33zsl:fiji_bunwarpj.jpg?300 |Výsledná mozaika po registraci bUnwarpJ}}
/*
===== Teorie registrace =====
Oblast registrace obrazů má široké uplatnění a je hojně užívána nejen v medicíně, ale i v dalších oblastech (počítačovém vidění, astronomii, letectví, atd.). Registraci dvou obrazů (referenční a pohyblivý) lze popsat jako hledání geometrické transformace mezi nimi, takže odpovídající si objekty (pixely) v obou obrazech se po aplikování zvolené transformace budou vzájemně překrývat. Výsledkem jsou dva zaregistrované obrázky.
Polohu bodů ve výstupním obraze získáme z originálního (vstupního) obrazu aplikací dané transformace. Ta je často vyjádřena pomocí transformační matice. V takovém případě stačí vynásobit souřadnice všech bodů obrazu transformační maticí.
$$\begin{bmatrix}
x' \\ y' \\ 0 \\ 1
\end{bmatrix}
= T \cdot
\begin{bmatrix}
x \\ y \\ 0 \\ 1
\end{bmatrix}$$
kde T je transformační matice.
Abychom při aplikaci několika transformací nemuseli pokaždé celý obrázek násobit každou dílčí transformační maticí T_i, spočítáme nejprve celkovou transformaci T pro celý obrázek jako součin transformací T_i.
T = \prod_{i} T_i
Následně vstupní obrázek vynásobíme transformací T. (Podoba výsledné transformace závisí na pořadí jednotlivých matic T_i.)
==== Některé druhy transformace ====
Jelikož moduly Fiji se kterými budeme pracovat používají transformační matice velikosti 4 \times 4, budou všechny následující příklady uvažovat tuto situaci.
**Rigidní transformace** nebo také Euklidovská transformace se skládá z rotace a posunutí či jejich vzájemné kombinace. Rotační matice pro pro otočení o úhel $\alpha$ má tvar
$$\begin{bmatrix}
\cos(\alpha) & -\sin(\alpha) & 0 \\
\sin(\alpha) & \cos(\alpha) & 0 \\
0 & 0 & 1
\end{bmatrix}$$
Translační matice pro posunutí ve směru osy x a y je následující
$$\begin{bmatrix}
1 & 0 & x \\
0 & 1 & y \\
0 & 0 & 1
\end{bmatrix}$$
**Afinní transformace** je již podstatně složitější a je složena několika jednodušších transformací - zvětšení/zmenšení, zkosení, rotace, posunutí.
Matice pro změnu měřítka obrázku ve směru osy x a y, kde d_x je velikostí v ose x a d_y v ose y, je
$$\begin{bmatrix}
d_x & 0 & 0 \\
0 & d_y & 0 \\
0 & 0 & 1
\end{bmatrix}$$
Matice zkosení má tvar:
$$\begin{bmatrix}
1 & k_x & 0 \\
k_y & 1 & 0 \\
0 & 0 & 1
\end{bmatrix}$$
kde koeficienty k_x a k_y, vyjadřují míru zkosení ve směru osy x a y.
**Perspektivní transformace** popisuje projektivní geometrii, která se zabývá popisem změny vzhledu objektu, pokud se změní pozice pozorovatele, tedy projekcí trojrozměrného objektu na plochu (obrázek).
==== Interpolace ====
Interpolace říká jakou intenzitu či barvu ma mít pixel v transformovaném obraze. Je nutná protože souřadnice bodů po transformaci jsou často neceločíselné a my potřebujeme vědět, jaká je intenzita např. v bodě [2.8,5.6].
Pravděpodobně tou nejjednodušší je interpolace pomocí metody **nejbližšího souseda**. Jak již název říká, tato metoda vždy použije hodnoty svého nejbližšího souseda. Další metodou je **lineární interpolace**, které na základě své polohy vůči sousedním bodům spočítá svoji hodnotu (sousední body proloží přímkou). O něco komplexnější a zároveň i přesnější je metoda **bikubická****Bold Text**, která již počítá s více okolními body.
*/
/*
===== Fiji =====
Fiji (Fiji Is Just ImageJ) je Open Source balíček pro zpracování obrazu založený na ImageJ.
Ačkoliv Fiji bylo původně určeno pro neurovědce, postupně v sobě nahromadilo dostatek funkcí, aby přilákalo i vědce z dalších oborů, jako jsou buněčná biologie, parazitologie, genetika, životní věd obecně, vědy o materiálech, atd.
Hlavním účelem Fiji je poskytnout distribuci ImageJ s mnoha užitečnými pluginy. Paralela vztahu mezi Fiji a ImageJ je například jako vztah Ubuntu a Linuxu. Dalším cílem Fiji je poskytnout uživatelům ucelenou strukturu nabídek, rozsáhlé dokumentace ve formě podrobných popisů a návodů algoritmů tak, aby se vyhnul nutnosti instalovat více komponent z různých zdrojů.
(Fiji je také zaměřena na vývojáře, pomocí systému pro správu verzí.)
Podrobnější [[http:/ z Obr.~/rsbweb.nih.gov/ij/docs/user-guide.pdf|manuál]] k Fiji najdete na webu.
==== Stručný popis automatických pluginů ====
=== TurboReg ===
%Účelem tohoto pluginu je zaregistrovat na sebe dva obrázky pomocí tři režimů: $manual$, $automatic$ a $batch$. Ve všech třech případech je uživateli dána možnost interaktivně zadat některé landmarky, kterými se zavádí korespondence mezi obrazy. V automatickém režimu a dávkové jsou landmarky zdrojového obrazu automaticky vyladěn tak, aby lépe odpovídaly těm cílového obrazu. V manuálním režimu je vypnutý tato automatická upřesnění postupu. Většinu času, automatické algoritmus nevyžaduje vstup od uživatele, protože je dostatečně silný na to, že výchozí počáteční podmínky jsou dostatečně přesné.
%Tyto výpočty mohou upřednostňovat buď rychlost nebo přesnost. Je-li upřednostňována rychlost, pak jeden z několika důsledků je, že pokřivené obraz je počítán od zdroje pomocí nearest-neghbour interpolací, v opačném případě je použita kubic-spline interpolace.
%Plugin může pracovat jak s šedo-tonovými obrázky tak s jednotlivými barevnými kanály. V případě použití RGB obrázku pouze jedna barevná rovina zásobníku RGB se bere v úvahu pro registraci a odhadnutá transformace je pak aplikován i na zbývající dvě barevné roviny.
=== Linear Stack Alignment with SIFT ===
Pro každý bod v obraze, můžeme učit nějaké specifické vlastnosti (měření), takzvané deskriptory. Scale-invariant feature transform (SIFT) je algoritmus pro počítačové vidění používající se pro detekci a popis zajímavých bodů v obrazech. [[http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=790410|Algoritmus]] publikoval David Lowe v roce 1999 a je v USA patentován universitou University of British Columbia.
Pomocí SIFTu nejprve detekuje množinu bodů a spočteme jejich deskriptory, a následně hledáme body z referenčního a pohyblivého obrázku které jsou si nejpodobnější. Z takto sestavených korespondencí již není těžké určit hledanou transformaci.
=== bUnwarpJ ===
bUnwarpJ je algoritmus pro pružnou a konzistentní registrace obrazu. Provádí současné registraci obou obrazů A a B. Obrázek A je elasticky deformován tak, aby vypadal co nejpodobnější obrazu B, ve smyslu daného podobnostního kritéria, a zároveň se také počítá i "inverzní" transformace (z B do A).
Tento registrační algoritmus je založen na minimalizaci funkcionálu energie E, která obsahuje rozdílnost mezi zdrojovým a cílovým obrázkem v obou směrech E_{img}. Jednotlivé prvky této rovnice jsou následující - E_\nu je prostorová podobnost landmarků (střední vzdálenost landmarků - l_1 nebo l_2 norma), (E_{div} + E_{rot}) je regularizující člen a energie E_{cons}, která je klíčová pro geometrickou konzistenci elastické deformace v obou směrech. Funkce je konkrétně charakterizována
$$ E = w_i \cdot E_{img} + w_\nu E_\nu + (w_d \cdot E_{div} + w_r \cdot E_{rot}) + w_c \cdot E_{cons}$$
Váhy jednotlivých členů jsou nastavovány uživatelem v hlavním okně pluginu.
Samotný proces minimalizace je prováděn [[http://en.wikipedia.org/wiki/Levenberg-Marquardt|Levenberg-Marquardt]] algoritmem rozšířeným o [[http://en.wikipedia.org/wiki/BFGS_method}|Broyden-Fletcher-Goldfarb-Shanno]] (BFGS) lokální odhad Hessiánu funkce. Oba obrázky jsou deformovány pomocí kubických B-splines.
*/
{{tag>imaging medical fiji registration}}