====== Obsah cvičení ====== - segmentace buněk pomocí programu Fiji - segmentace buněk pomocí programu Matlab - práce s dalšími obrázky - **Zpráva:** segmentace Fiji (2b), segmentace Matlab (2b), test {{courses:a6m33zsl:zsl_lag-ostruvky.zip|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 {{courses:a6m33zsl:5057.png?linkonly|5057.png}}, {{courses:a6m33zsl:5140.png?linkonly|5140.png}} a {{courses:a6m33zsl:5830.png?linkonly|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 ==== [[http://fiji.sc/|Fiji]] (Fiji Is Just ImageJ) je Open Source balíček pro zpracování obrazu založený na [[http://en.wikipedia.org/wiki/ImageJ|ImageJ]], pěkný popis je na [[http://en.wikipedia.org/wiki/FIJI_%28software%29|wiki]]. /* 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í.)*/ Pro získání základní znalosti Fiji si projděte některý z [[http://fiji.sc/wiki/index.php/Category:Tutorials|tutoriálů]] nebo detailnější {{courses:a6m33zsl:imagej-user-guide.pdf|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:** - 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. - Převeďte obrázek na šedotónový //Image → Type → 8-bit//. - 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í. {{ :courses:a6m33zsl:fiji-segm-treshold.png?400 |Prahování}} - Vyplníme prázdné díry uprostřed některých buněk //Process → Binary → Fill Holes//. - Pro odstranění drobných artefaktů v obraze použijeme morfologickou operaci Otevírání, respektive [[http://homepages.inf.ed.ac.uk/rbf/HIPR2/open.htm|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...//. - 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 [[http://zone.ni.com/reference/en-XX/help/372916M-01/nivisionconcepts/morphological_segmentation/|Watershed]] //Process → Binary → Watershed//. {{ :courses:a6m33zsl:fiji-segm-watershade.png?400 |Rozdělení pomocí Rozvodí}} - 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) {{ :courses:a6m33zsl::fiji-segm-particles.png?400 |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 [[http://fiji.sc/Introduction_into_Macro_Programming|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 → //. ==== Segmentace krvinek v prostředí Matlab ==== Podívejte se na podobný [[http://blogs.mathworks.com/steve/2006/06/02/cell-segmentation/|tutorial]], který používá prahování, základní morfologické metody a rozvodí. Video tutoriál můžete také najít [[http://www.mathworks.es/videos/color-based-segmentation-with-live-image-acquisition-68771.html|zde]]. **Úkol:** Vytvořte v MATLABu funkci {{courses:a6m33zsl:imsegmcounting.m|[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. {{ :courses:a6m33zsl:matlab_segm_cells.jpg?800 |Ilustrace segmentačního procesu v Matlabu}} **Postup:** - Převedeme RGB obrázek na šedotónový ([[http://www.mathworks.com/help/images/ref/rgb2gray.html|rgb2gray]]) - Určíme hranici mezi popředím a pozadím, použijte např. funkci [[http://www.mathworks.es/es/help/images/ref/graythresh.html|graythresh]]. - Nyní podle nalezené mezní intenzity osegmentujeme obrázek ([[http://www.mathworks.es/es/help/images/ref/im2bw.html|im2bw]]) - Vyplníme díry v jednotlivých buňkách pomoci funkce [[http://www.mathworks.es/es/help/images/ref/imfill.html|imfill]]. - Protože některé buňky mohou být stále spojené použijeme funkci [[http://www.mathworks.es/es/help/images/ref/watershed.html|watershed]] pro jejich oddělení. - Pro spočítání jednotlivých komponent (buněk) použijeme funkci [[http://www.mathworks.es/es/help/images/ref/bwlabel.html|bwlabel]]. {{tag>imaging medical microscopy exercise segmentation Fiji morphology}}