Warning
This page is located in archive.

Cvičení 1

První cvičení obsahuje dvě části. V první se seznámíme s prostřením MATLAB pomocí několika úloh, v té druhé se budeme zabývat problematikou segmentace v prostření programu Fiji.

Zadání

  • Segmentace krvinek v programu Fiji - Vytvořte ve Fiji makro které osegmentuje jednolivé bunky a spočítá je, a aplikujte ho na všechny 3 obrázky. Odevzdejte výsledné segmentace a vytvořenou funkci. [2b]

Seznámení s MATLABem

Během cvičení budeme používat MATLAB. Je vhodné, abyste se seznámili s tímto programem a se základy jeho využití, jelikož cvičení mohou být často náročné. Cílem cvičení není trávit příliš mnoho času samotným programováním, ale soustředit se na porozumění tématu a danou úlohu následně pomocí MATLABu efektivně splnit.

Pro případ, že si nejste příliš jisti svými dovednostmi v MATLABu, zde je několik užitečných odkazů:

help ops % krátká nápověda MATLAB
doc sum % dokumentace pro funkci sum
lookfor transponovat % vyhledá řetězec v dokumentaci

Zadání

Vypracujte následující bodu zadání, již během cvičení. Hodnocené jsou úlohy 2.-4., za každou lze získat 1 bod.

  1. Projděte si následující Procvičení základních příkazů Matlabu
  2. Vytvořte 1D signál funkce <latex>y=-2x+1</latex> v rozsahu (0,5) s krokem 0.1 s přidaným šumem v rozpětí <latex>[-1, 1]</latex>. Vykreslete pouze část tohoto signálu v intervalu [1,4] jako zelené křížky 'x'. 1D signál
  3. Proložte signál vytvořený v předcházejícím úkolu přímkou. Pro minimalizaci použijte metodu Least squares. Uvažujte soustavu rovnic <latex>X \cdot A = Y</latex>, kde A jsou koeficienty přímky, pak tato soustava má řešení <latex>A = X \setminus Y</latex>
  4. Vytvořte 2D plochu funkce <latex>z=\frac{\sin\left(\sqrt{x^2+y^2}\right)}{\sqrt{x^2+y^2}}</latex> pro <latex>x,y \in (-15,15)</latex> s krokem 0.25 a vykreslete ji vhodným způsobem. sinc(x^2+y^2)
  5. Načtete libovolný barevný obrázek (např. Lena).
    • Převeďte jej na černobílý obrázek.
    • Následně jeho barvy invertujte.
    • Vytvořte pouze černo-bíly s prahem 128 (uvažujeme rozsah intenzit od 0 do 256).

Lena

Segmentace krvinek v programu Fiji

V následující části si prakticky vyzkoušíme segmentaci mikroskopických obrázků v programu Fiji. Metodu následně aplikujte na následující 3 obrázky 5057.png, 5140.png a 5830.png. Do zprávy stručně popište postup včetně zvolených parametrů, vložte obrázky ilustrující postup a také výsledné obrázky.

Fiji (Fiji Is Just ImageJ) je Open Source balíček pro zpracování obrazu založený na ImageJ, pěkný popis je na wiki.

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ů. Pro získání základní znalosti Fiji si projděte některý z tutoriálů nebo detailnější manuál k ImageJ.

Úkol: Nejprve si všechny obrázky převedeme na šedotónové, pak pomocí prahování oddělíme popředí od pozadí a nakonec pomocí základních morfologických operací a rozvodí oddělíme jednotlivé objekty které následně spočítáme.

Postup:

  1. Otevřete si Obrázek File → Open… nebo jednoduše přetažením (Drag and Drop) vybraného obrázku na lištu Fiji.
  2. Převeďte obrázek na šedotónový Image → Type → 8-bit.
  3. Oprahujte šedotónový obrázek abychom získali binární reprezentaci hledaných buněk (1) a pozadí (0). Použijeme funkci Image → Adjust → Treshold a nastavíme optimální. Prahování
  4. Vyplníme prázdné díry uprostřed některých buněk Process → Binary → Fill Holes.
  5. Pro odstranění drobných artefaktů v obraze použijeme morfologickou operaci Otevírání, respektive Opening Process → Binary → Open. Nejprve je v potřeba nastavit velikost masky (respektive počtu opakování eroze a následné dilatace) v nabídce Process → Binary → Options….
  6. Některé sousedící buňky mohou být stále spojeny a tudíž by se počítaly jako jeden objekt. Pro rozdělení takovýchto shluků použijeme operaci Rozvodí neboli Watershed Process → Binary → Watershed. Rozdělení pomocí Rozvodí
  7. Nakonec pro spočítání objektů v obraze použijeme Analyze → Analyze Particles. Ve volbách doporučujeme nastavit:
    • počítat jen objety větší než 50 pixelů
    • zobrazit výsledky (numerické)
    • vykreslit výsledky do obrázku (Overlay Masks)

Jednotlivé bunky.

Vytváření maker ve Fiji:

Pro praktické použití není příliš vhodné dělat takovéto segmentování a počítání objektů proto každý obrázek zvláště, proto se v praxi používají již hotové funkce nebo makra (sekvence po sobě jdoucích příkazů). Pro zajímavost si vytvořte takovéto makro pro počítání objektů ve Fiji. Návod jak psát makra ve Fiji naleznete zde.

Jednodušší možnost jako vytvářet makra ve Fiji je si nahrát dané příkazy pomocí funkce Plugins → Macros → Record.., které vám otevře nové okno a ve kterém se postupně zapisují všechny vaše použité příkazy. Nyní tedy můžete projít celý postup znovu a nakonec makro uložíte.

Pro další použití aktivujete vaše makro Plugins → Macros → Install.. (zde vyberete vaše makro) a dále na nově otevřený obrázek je jen stačí zavolat Plugins → Macros → <jmenoVasehoMakra>.

courses/a6m33zsl/lab01_matlab_fiji.txt · Last modified: 2018/02/19 13:19 by borovji3