Warning
This page is located in archive. Go to the latest version of this course pages.

Obsah cvičení

  1. segmentace buněk pomocí programu Fiji
  2. segmentace buněk pomocí programu Matlab
  3. práce s dalšími obrázky
  4. Zpráva: segmentace Fiji (2b), segmentace Matlab (2b), test Langerhansových ostrůvků (1b)

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]
  • Segmentace krvinek v prostředí Matlab - Vytvořte v MATLABu funkci pro segmentaci jednotlivých buněk a jejich spočítání v celém obrázku a aplikujte ji na všechny 3 obrázky. Do výsledného počtu buněk uvažujte i nekompletní buňky na okrajích obrázku. Vytvořenou funkci odevzdejte. [2b]
  • BONUS: Vaše funkce budou vyzkoušeny i na dalších obrázcích (velmi podobných těm, které jste dostali) a pokud i na nich napočítají správný, nebo správnému se blížící počet buněk, získáte bod navíc. [+1b]

Obě metody aplikujte na následující 3 obrázky 5057.png, 5140.png a 5830.png. Do zprávy vždy stručně napište postup včetně zvolených parametrů, vložte výsledné obrázky a obrázky ilustrující postup.

Segmentace krevních buněk

V následující části si prakticky vyzkoušíme segmentaci mikroskopických obrázků v programu Fiji a MATLAB.

Segmentace krvinek v programu Fiji

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>.

Segmentace krvinek v prostředí Matlab

Podívejte se na podobný tutorial, který používá prahování, základní morfologické metody a rozvodí. Video tutoriál můžete také najít zde.

Úkol: Vytvořte v MATLABu funkci [number] = imSegmCounting(image) pro segmentaci jednotlivých buněk a jejich spočítání v celém obrázku a aplikujte ji na všechny obrázky. Neprve 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.

Ilustrace segmentačního procesu v Matlabu

Postup:

  1. Převedeme RGB obrázek na šedotónový (rgb2gray)
  2. Určíme hranici mezi popředím a pozadím, použijte např. funkci graythresh.
  3. Nyní podle nalezené mezní intenzity osegmentujeme obrázek (im2bw)
  4. Vyplníme díry v jednotlivých buňkách pomoci funkce imfill.
  5. Protože některé buňky mohou být stále spojené použijeme funkci watershed pro jejich oddělení.
  6. Pro spočítání jednotlivých komponent (buněk) použijeme funkci bwlabel.
courses/a6m33zsl/lab_microscopy_segm.txt · Last modified: 2017/02/16 18:41 by herinjan