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