Morphing rastrově reprezentovaných tvarů
Vzhledem k tomu, že jde o poměrně komplexní úlohu je třeba ji rozdělit na několik částí. Každou z těchto částí je možné řešit různými způsoby.
Je na řešiteli, která část ho víc zaujme.
Jednotlivé možnosti řešení konkrétních částí jsou ohodnoceny podle obtížnosti.
Celkový součet bodů za jednotlivé části bude odrážet obtížnost úlohy jako celku a bude přepočítán (1:1) na bodový zisk z této úlohy pro získání zápočtu.
Pro jednoduchost, bude započítána jen jedna možnost řešení konkrétní části.
Jednotlivé podúlohy:
Data:
- 4 2D rastr
- 8 3D data převod z lékařských objemových dat na binární obrázek
- 12 3D data převod čehokoliv vhodného (uzavřená plocha) z povrchové reprezentace (například raytracingem) na binární obrázek
EDT:
- 4 naivní algoritmus
- 16 Meijster algoritmus 2D
- 24 Meijster algoritmus 3D
- 24 Jiný algoritmus
Morphing:
- 4 Lineární interpolace
- 16 Levelset evoluce
Vizualizace:
- 4 2D jednotlivé obrázky
- 8 2D animace (video)
- 12 DVR zobrazení jednotlivých vygenerovaných objemů
- 16 Animace DVR zobrazení (video)
- 24 Animace předpočítaných objemů pomoci DVR v programu (jak to paměťové nároky dovolí, např. smyčka 20 snímků)
- 12 Převod na povrchovou reprezentaci a zobrazení jednotlivých tvarů
- 16 Animace povrchů (video)
- 24 Zobrazení předpočítané animace povrchů v programu (jak to paměťové nároky dovolí, např. smyčka 20 snímků)
- 40 Online výpočet i zobrazení
max 12+24+16+40=92, min 1+1+1+1=16
Poznámky:
EDT:
Algoritmus hledá spodní obálku množiny parabol. Hodnota paraboly v obálce pro x znamená nejkratší vzdálenost. Vrchol, který parabolu generuje pak nejbližší bod odpovídající nejkratší vzdálenosti.
Doplnění popisu algoritmu: s tvoří zásobník parabol, q ukazatel na vrchol zásobníku. Na zásobník se přidává, pokud parabola v části řádku tvoří spodní obálku (nejkratší vzdálenosti), odebírá se pokud parabola "překryla" předchozí hodnoty (while cyklus hledá kam až překryv zasahuje). Průsečíky v t se používají, aby se dalo skákat po celých parabolách a testovat překryv.
Rozšíření do 3D: Hlavní rozdíl oproti publikovanému algoritmu (Meijster 2000) je, že algoritmus má ještě třetí fázi, tři for cykly v každé z fází a b, g jsou trojrozměrná pole. Třetí fáze prochází objem přes všechny sloupečky ve směru osy z. Funkce Sep se nemění. V podstatě se opět počítají paraboly (ne paraboloidy, jak by se mohlo očekávat). Důležité je uvědomit si, že si algoritmus pamatuje tzv. částečné eukleidovské vzdálenosti na druhou v poli g (pokud je x^2+y^2+z^2 úplná e. vzdálenost na druhou, pak x, nebo x^2+y^2 je částečná e. vzdálenost na druhou). Výslednou e. vzdálenost na druhou ukládá do df až poslední fáze. Druhá fáze 3D verze je stejná jako druhá fáze 2D algoritmu, ale ukládá pouze částečnou e. vzdálenost na druhou, kterou třetí fáze používá podobně jako používá druhá fáze 2D algoritmu pole g ve funkci Sep a f. V třetí fázi funkce f k částečné e. vzdálenosti v g přidá další (z-i)^2 a dostaneme úplnou e. vzdálenost na druhou.
Evoluce levelsetu:
POZOR na numerické derivace!: Aby byla evoluce levelsetů stabilní je třeba použít tzv. up-wind schéma pro výpočet F v rekurentním vztahu psi_(n+1) = psi_n + delta t * F. F = f * |nabla psi| - to bylo na přednášce omylem vynecháno. |nabla psi| je velikost gradientu (vektoru parciálních derivací) psi. Je třeba ji spočítat podle schématu např z článku [Breen et al 2001] str 7. f je pak směr pohybu, ven-dovnitř podle potřeby.
Hrubé schéma algoritmu:
psi = EDT(a)
for n
for x,y,z //nebo urychlovaci datova struktura
f = psi(x,y,z) > 0 & b(x,y,z) ? -1 : 1
psi = psi + delta t * f * |nabla psi|
ulož/zobraz mezivýsledek
Literatura:
[Malladi et al 1995]
Ravikanth Malladi and James A. Sethian and Baba C. Vemuri, Shape modeling with front propagation: A level set approach, IEEE Transactions on Pattern Analysis and Machine Intelligence, 1995, vol. 17, 158--175
Odvození evoluce levelsetu, narrowband pro urychlení, použití pro segmentaci obrázku
[Adalsteinsson & Sethian 1994]
D. Adalsteinsson, J. Sethian, A Fast Level Set Method for Propagating Interfaces, Journal of Computational Physics, 1994, vol. 118, 269--277
Přehlednejší odvození evoluce levelsetu, narrowband pro urychleni
[Haber et al 2007]
Eldad Haber and Stefan Heldmann and Jan Modersitzki, An Octree Method for Parametric Image Registration, Siam Journal on Scientific Computing, 2007, vol. 29
Pro zajímavost, octree struktura pro urychlení operací s levelsetem
[Breen et al 2001]
David E. Breen and Ross T. Whitaker, A Level-Set Approach for the Metamorphosis of Solid Models, IEEE Trans. Vis. Comput. Graph., 2001, vol. 7, 173-192
Morphing objemu pomocí levelsetu
[Fabbri et al 2008]
Fabbri, Ricardo and Costa, Luciano Da F. and Torelli, Julio C. and Bruno, Odemir M., 2D Euclidean distance transform algorithms: A comparative survey, ACM Computing Surveys, 2008, vol. 40
Přehled EDT algoritmu
[Meijster 2000]
A. Meijster and J. B. T. M. Roerdink and W. H. Hesselink, A General Algorithm For Computing Distance Transforms In Linear Time, 2000
Vybraný EDT s přehledným pseudokódem