Základní výzkum

zpracování obrazu: segmentace

Výše uvedený pojem segmentace je zobecněným pojmem. Obecně lze říci, že obraz pro pozorovatele je často prezentován ve formě jakýchsi homogenních oblastí, které se od sebe liší různými charakteristikami. Počet takových typů (nebo tříd) je obvykle malý. Celý obraz lze rozdělit na řadu nepřekrývajících se oblastí, z nichž každá je obrazem jednoho z typů (tříd). Při analýze takových snímků je cílem každého systému identifikovat tyto oblasti a uvést jejich typové číslo. Zpracování obrazu, které o něm umožňuje získat takový soubor informací, se nazývá segmentace. Jinými slovy, předpokládá se, že obrazové oblasti odpovídají skutečným objektům nebo jejich částem.

Existují však snímky, na kterých je celý obraz rozdělen do oblastí, které se od sebe v žádných vlastnostech neliší. Všechny informace pak v tomto případě představují množinu hranic mezi těmito oblastmi. Jednoduchý příklad: cihlové nebo kachlové zdivo.

Metody segmentace obrazu jsou rozděleny do dvou tříd:

Automatické, tedy metody, které nevyžadují interakci uživatele;

Interaktivní nebo manuální metody, které během provozu využívají uživatelský vstup.

Úloha segmentace obrazu se obvykle uplatňuje v určité fázi zpracování obrazu za účelem získání přesnějších a pohodlnějších zobrazení tohoto obrazu pro další práci s ním.

Existuje velké množství metod segmentace a různé metody se zaměřují na různé vlastnosti dělení obrazu. Při výběru metody segmentace pro konkrétní problém byste se proto měli řídit tím, jaké vlastnosti rozdělení jsou skutečně důležité a jaké vlastnosti má původní obrázek. Je také nutné rozhodnout, jaká míra podrobnosti, s jakou je rozdělení do tříd provedeno, je přijatelná. Vše záleží na konkrétním řešeném problému. Například při analýze mikroobvodů může být úkolem identifikace objektů izolovat bloky mikroobvodů a rádiových komponent, nebo to může být detekce prasklin v těchto rádiových komponentech. Pak je logické, že v prvním případě je nutné se omezit na větší detail.

Segmentační algoritmy se také obecně dělí do dvou tříd:

1) na základě základní vlastnosti jasu: diskontinuita;

2) na základě základní vlastnosti jasu: rovnoměrnosti.

V prvním případě je obraz rozdělen do oblastí na základě nějaké změny jasu, jako jsou rozdíly v jasu v celém obrazu. Ve druhém případě je snímek rozdělen podle kritérií homogenity ploch. Příkladem první kategorie je prahové zpracování nebo prahová klasifikace a druhou jsou rostoucí regiony, slučování a rozdělování regionů. Segmentace prvního typu, konkrétně prahové zpracování, bude diskutována dále.

Segmentace v barevném prostoru RGB

Obvykle je prahová segmentace obrazu redukována na úkol segmentovat obrazy ve stupních šedi. Výběr prahu, obvykle jednoduchého, a segmentace na něm založená skutečně provádí přechod z obrázku v barevném prostoru RGB na polotónový, a to navzdory skutečnosti, že neexistuje žádné přímé předzpracování pro převod barevného obrázku na polotónový. Někdy se však stále používá „barevná segmentace“.

Předpokládejme, že v RGB obrázku je nutné vybrat objekty, jejichž barva leží v určitém rozmezí. Úkolem segmentace je v tomto případě klasifikovat každý pixel v obrázku podle toho, zda jeho barva spadá do daného rozmezí či nikoliv. K tomu je v barevném prostoru zavedena míra podobnosti, obvykle euklidovská vzdálenost. Euklidovská vzdálenost mezi body a je určena výrazem

kde, jsou složky RGB vektoru a, jsou vektor.

Myšlenku použití takového zpracování lze obecně vidět v části 2.6 vysvětlivky.

V této práci byly obrazy převážně uvažovány a segmentovány na základě jediného prahu, to znamená, že byl proveden přechod na polotónové obrazy. Důvodem je skutečnost, že segmentační úlohy v barevném prostoru RGB jsou úzce zaměřeny a pro každý snímek je v tomto případě nutné znát normu vzdálenosti pro každou složku R, G a B, kterou lze určit pouze dlouhým experimenty na konkrétní předmět úkol.

Letos v létě se mi poštěstilo získat letní stáž ve firmě Itseez . Byl jsem požádán, abych prozkoumal moderní metody, které by nám umožnily zvýraznit umístění objektů na obrázku. Tyto metody v podstatě spoléhají na segmentaci, takže jsem začal svou práci seznámením se s touto oblastí počítačového vidění.
Segmentace obrazu - Toto je rozdělení obrázku do mnoha oblastí, které jej pokrývají. Segmentace se používá v mnoha oblastech, například ve výrobě pro indikaci vad při montáži dílů, v lékařství pro primární zpracování obrazu a také pro sestavování terénních map ze satelitních snímků. Pro ty, kteří mají zájem pochopit, jak takové algoritmy fungují, vítejte na cat. Podíváme se na několik metod z knihovny počítačového vidění OpenCV .

Segmentační algoritmus podle povodí (WaterShed)


Algoritmus pracuje s obrazem jako funkcí dvou proměnných f=I(x,y) , Kde x, y – souřadnice pixelů:


Hodnotou funkce může být intenzita nebo velikost gradientu. Pro největší kontrast můžete z obrázku vzít přechod. Pokud po ose OZ Při vykreslování absolutní hodnoty gradientu se v místech, kde je rozdíl v intenzitě, tvoří vyvýšeniny a v homogenních oblastech roviny. Po nalezení minima funkce F , probíhá proces plnění „vodou“, který začíná od globálního minima. Jakmile hladina vody dosáhne dalšího lokálního minima, začne se plnit vodou. Když se začnou slučovat dvě oblasti, vytvoří se oddíl, který zabrání sloučení oblastí. Voda bude dále stoupat, dokud nebudou regiony odděleny pouze uměle vybudovanými přepážkami (obr. 1).




Obr.1. Ilustrace procesu plnění vodou

Takový algoritmus může být užitečný, pokud má obraz malý počet lokálních minim, ale pokud jich je velké množství, dochází k nadbytečnému rozdělení na segmenty. Pokud například přímo aplikujeme algoritmus na Obr. 2, dostaneme spoustu malých detailů na Obr. 3.


Rýže. 2. Původní obrázek


Rýže. 3. Obraz po segmentaci pomocí algoritmu WaterShed

Jak se vypořádat s malými detaily?

Chcete-li se zbavit přebytku malých detailů, můžete nastavit oblasti, které budou vázány na nejbližší minima. Oddíl bude vytvořen pouze v případě, že jsou sloučeny dvě oblasti se značkami, jinak se tyto segmenty sloučí. Tento přístup odstraňuje efekt redundantní segmentace, ale vyžaduje předběžné zpracování obrazu pro výběr značek, které lze interaktivně označit v obraze na obr. 4, 5.


Rýže. 4. Obrázek se značkami


Rýže. 5. Obraz po segmentaci pomocí algoritmu WaterShed pomocí značek

Pokud chcete jednat automaticky bez zásahu uživatele, můžete využít například funkci findContours() pro zvýraznění značek, ale i zde je pro lepší členění třeba vyloučit malé kontury Obr. 6., například jejich odstranění podél prahu po délce obrysu. Nebo použijte erozi s dilatací k odstranění malých detailů před zvýrazněním kontur.


Rýže. 6. Jako značky byly použity obrysy s délkou nad určitým prahem


Výsledkem algoritmu získáme masku se segmentovaným obrazem, kde jsou pixely jednoho segmentu označeny stejným štítkem a tvoří spojenou oblast. Hlavní nevýhodou tohoto algoritmu je použití postupu předzpracování pro obrázky s velkým počtem lokálních minim (obrázky se složitou texturou a množstvím různých barev).

Obrázek mat = imread("coins.jpg", CV_LOAD_IMAGE_COLOR); // vybereme kontury Mat imageGray, imageBin; cvtColor(obrázek, obrázekGray, CV_BGR2GRAY); práh(imageGray, imageBin, 100, 255, THRESH_BINARY); std::vektor >kontury; std::vektor hierarchie findContours(imageBin, kontury, hierarchie, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE); Mat markers(image.size(), CV_32SC1); markery = Skalar::all(0); int pocet pocet = 0; for(int idx = 0; idx >= 0; idx = hierarchie, compCount++) ( drawContours(markery, vrstevnice, idx, Skalar::all(compCount+1), -1, 8, hierarchie, INT_MAX); ) std: :vektor colorTab(compCount); for(int i = 0; i< compCount; i++) { colorTab[i] = Vec3b(rand()&255, rand()&255, rand()&255); } watershed(image, markers); Mat wshed(markers.size(), CV_8UC3); for(int i = 0; i < markers.rows; i++) { for(int j = 0; j < markers.cols; j++) { int index = markers.at(i, j); if(index == -1) vyprané.at (i, j) = Vec3b(0, 0, 0); jinak pokud (index == 0) vyprané.at

Segmentační algoritmus (i, j) = Vec3b(255, 255, 255);

jinak vypráno.at


(i, j) = colorTab; ) ) imshow("transformace povodí", wshed); waitKey(0); MeanShift MeanShift seskupuje objekty s podobnými vlastnostmi. Pixely s podobnými vlastnostmi se spojí do jednoho segmentu a výstupem je obraz s homogenními oblastmi. Například jako souřadnice v prostoru funkcí můžete vybrat souřadnice pixelů

(x, y)

a komponenty RGB :
pixel. Vykreslením pixelů v prostoru prvku můžete na určitých místech vidět shluky. Rýže. 7. (a) Pixely v prostoru 2D prvků. (b) Pixely, které dosahují stejného lokálního maxima, jsou zbarveny stejnou barvou. (c) - funkce hustoty, maxima odpovídají místům nejvyšší koncentrace pixelů. Obrázek je převzat z článku. Abychom usnadnili popis kondenzací bodů, uvádíme funkce hustoty – vektor příznaků i -tý pixel, d - parametrem zodpovědným za hladkost je jádro. Maxima funkce jsou umístěna v bodech kondenzace obrazových pixelů v prostoru rysů. Pixely patřící do stejného lokálního maxima se spojí do jednoho segmentu. Ukazuje se, že abyste zjistili, ke kterému z koncentračních center pixel patří, musíte krokovat podél gradientu, abyste našli nejbližší lokální maximum.

Odhad gradientu z funkce hustoty

Střední vektor posunu lze použít k odhadu gradientu funkce hustoty
Jako jádro v OpenCV se používá jádro Epanechnikov:


- toto je objem d -rozměrná koule s jednotkovým poloměrem.


znamená, že součet nejde přes všechny pixely, ale pouze přes ty, které spadají do koule o poloměru h se středem v bodě, kde vektor ukazuje v prostoru prvků. Toto je zavedeno speciálně pro snížení počtu výpočtů. - objem d -rozměrná koule s poloměrem h Můžete samostatně nastavit poloměr pro prostorové souřadnice a samostatně poloměr v barevném prostoru. - počet pixelů spadajících do koule. Velikost lze považovat za odhad hodnoty v regionu .


Pro chůzi po gradientu tedy stačí vypočítat hodnotu - střední vektor posunu. Je třeba mít na paměti, že pokud vyberete jiné jádro, střední vektor posunu bude vypadat jinak.


Při výběru souřadnic pixelů a intenzity barev jako prvků se pixely s podobnými barvami a umístěné blízko sebe sloučí do jednoho segmentu. Pokud tedy zvolíte jiný vektor prvku, budou pixely sloučeny do segmentů pomocí něj. Pokud například odstraníme souřadnice z útvarů, pak obloha a jezero budou považovány za jeden segment, protože pixely těchto objektů v prostoru útvaru by spadaly do jednoho lokálního maxima.

Pokud se objekt, který chceme vybrat, skládá z oblastí, které se výrazně liší barvou, pak (i, j) = Vec3b(255, 255, 255); nebude schopen spojit tyto oblasti do jedné a náš objekt se bude skládat z několika segmentů. Ale je dobré se vyrovnat s předmětem jednotné barvy na pestrém pozadí. Více (i, j) = Vec3b(255, 255, 255); používá se při implementaci algoritmu pro sledování pohybujících se objektů.

Ukázkový kód pro spuštění algoritmu:

Obrázek mat = imread("jahoda.jpg", CV_LOAD_IMAGE_COLOR); Mat imageSegment; int prostorový Poloměr = 35; int colorRadius = 60; int pyramidÚrovně = 3; pyrMeanShiftFiltering(image, imageSegment, spaceRadius, colorRadius, pyramidLevels); imshow("MeanShift", imageSegment); waitKey(0);
Výsledek:


Rýže. 8. Původní obrázek


Rýže. 9. Po segmentaci algoritmem (i, j) = Vec3b(255, 255, 255);

Segmentační algoritmus FloodFill

Pomocí FloodFill(způsob vyplnění nebo „zaplavení“) můžete vybrat oblasti jednotné barvy. Chcete-li to provést, musíte vybrat počáteční pixel a nastavit interval pro změnu barvy sousedních pixelů vzhledem k původnímu. Interval může být také asymetrický. Algoritmus sloučí pixely do jednoho segmentu (vyplní je stejnou barvou), pokud spadají do určeného rozsahu. Výstupem bude segment vyplněný určitou barvou a její plocha v pixelech.

Tento algoritmus může být užitečný pro vyplnění oblasti s nepatrnými barevnými rozdíly s jednotným pozadím. Jeden případ použití FloodFill Může být možné identifikovat poškozené okraje předmětu. Pokud například vyplněním homogenních oblastí určitou barvou algoritmus vyplní i sousední oblasti, pak byla narušena integrita hranice mezi těmito oblastmi. Na obrázku níže můžete vidět, že je zachována celistvost hranic vyplněných oblastí:

Rýže. 10, 11. Původní obrázek a výsledek po vyplnění několika oblastí

A následující obrázky ukazují pracovní možnost FloodFill pokud je poškozena jedna z hranic na předchozím obrázku.


Rýže. 12, 13. Ilustrace práce FloodFill když je narušena celistvost hranice mezi vyplněnými oblastmi

Ukázkový kód pro spuštění algoritmu:

Obrázek mat = imread("třešeň.jpg", CV_LOAD_IMAGE_COLOR); Bod startPoint; startPoint.x = image.cols/2; startPoint.y = image.rows/2; Skalární loDiff(20, 20, 255); Skalární vzestupDiff(5, 5, 255); Skalární fillColor(0, 0, 255); int sousedé = 8; Rect doména; int area = floodFill(obrazek, startPoint, fillColor, &domena, loDiff, upDiff, sousedi); obdélník(obrázek, doména, skalární(255, 0, 0)); imshow("floodFill segmentace", obrázek); waitKey(0);
Do proměnné plocha Bude zaznamenán počet „vyplněných“ pixelů.
Výsledek:


Segmentační algoritmus GrabCut

Jedná se o interaktivní algoritmus výběru objektů, vyvinutý jako pohodlnější alternativa k magnetickému lasu (k výběru objektu musel uživatel obkreslit jeho obrys myší). Aby algoritmus fungoval, stačí objekt spolu s částí pozadí uzavřít do obdélníku (drapáku). Objekt bude automaticky segmentován (oříznut).


Potíže mohou nastat během segmentace, pokud jsou v ohraničujícím rámečku barvy, které se vyskytují ve velkém množství nejen v objektu, ale také v pozadí. V tomto případě můžete přidat další značky objektu (červená čára) a pozadí (modrá čára).


Podívejme se na myšlenku algoritmu. Základem je interaktivní segmentační algoritmus GraphCut, kdy uživatel potřebuje umístit značky na pozadí a na objekt. S obrázkem se zachází jako s polem .Z - hodnoty intenzity pixelů, i -celkový počet pixelů. K oddělení objektu od pozadí algoritmus určí hodnoty prvků pole průhlednosti a může nabývat dvou hodnot, pokud = 0 , pak pixel patří pozadí if = 1 , pak objekt. Interní parametr obsahuje histogram rozložení intenzity popředí a histogram pozadí:
.
Úkolem segmentace je najít neznámé. Za energetickou funkci se považuje:

Navíc minimální energie odpovídá nejlepší segmentaci.


V(a,z) - termín je zodpovědný za spojení mezi pixely. Součet jde přes všechny dvojice pixelů, které jsou sousedy, dis(m,n) - Euklidovská vzdálenost. odpovídá za účast dvojic pixelů na celkovém if a n = a m , pak tato dvojice nebude brána v úvahu.
- odpovídá za kvalitu segmentace, tzn. oddělení objektu od pozadí.

Po nalezení globálního minima energetické funkce E , dostaneme pole průhlednosti. Pro minimalizaci energetické funkce je obraz popsán jako graf a hledá se minimální řez grafu. Na rozdíl od GraphCut v algoritmu GrabCut pixely jsou uvažovány v prostoru RGB, takže k popisu statistik barev se používá model Gaussian Mixture Model (GMM). Operace algoritmu GrabCut můžete vidět spuštěním ukázky OpenCV

Jedním z hlavních úkolů zpracování a analýzy obrazu je segmentace, tzn. rozdělení obrazu na oblasti, pro které je splněno určité kritérium homogenity, například zvýraznění oblastí přibližně stejného jasu na obrázku. Pojem obrazová plocha se používá k definování koherentní skupiny obrazových prvků, které mají určitou společnou vlastnost (vlastnost).
Jedním z hlavních a nejjednodušších způsobů je sestavení segmentace pomocí prahu. Práh je znak (vlastnost), který pomáhá rozdělit požadovaný signál do tříd. Operace prahového dělení spočívá v porovnání hodnoty jasu každého pixelu v obrázku se zadanou prahovou hodnotou.
Binarizace

Operace prahování, která vede k binárnímu obrazu, se nazývá binarizace. Účelem operace binarizace je radikálně snížit množství informací obsažených v obrázku. V procesu binarizace je původní polotónový obrázek, který má určitý počet úrovní jasu, převeden na černobílý obrázek, jehož pixely mají pouze dvě hodnoty - 0 a 1.

Prahování obrazu lze provést různými způsoby.

Binarizace s nižším prahem
Binarizace s nižším prahem
Binarizace s nižší prahovou hodnotou je nejjednodušší operace, která používá pouze jednu prahovou hodnotu:

Všechny hodnoty namísto kritéria budou 1, v tomto případě 255 (bílá) a všechny hodnoty (amplitudy) pixelů, které jsou větší než prahová hodnota t - 0 (černá).

Binarizace s horním prahem
Někdy můžete použít variantu první metody, která vytvoří negativ obrazu získaného binarizačním procesem. Operace binarizace s horním prahem:

Binarizace s dvojitým omezením
Pro zvýraznění oblastí, ve kterých se hodnoty jasu pixelů mohou lišit ve známém rozsahu, je zavedena binarizace s dvojitým omezením (t 1
Jsou možné i další varianty s prahovými hodnotami, kdy je propuštěna pouze část dat (filtr středního pásma).

Neúplné prahování
Tato transformace vytváří obraz, který může být snazší dále analyzovat, protože postrádá pozadí se všemi detaily přítomnými v původním obrazu.

Víceúrovňová prahová transformace
Tato operace vytvoří obraz, který není binární, ale skládá se ze segmentů s různými jasy.

Pokud jde o binarizaci, to je v podstatě vše. I když můžeme dodat, že existuje globální, která se používá pro celý obrázek, a existuje i lokální, která zachycuje část obrázku (obrázku).

Lokální prahování
Metoda Otsa
Metoda využívá histogram rozložení hodnot jasu pixelů rastrového obrázku. Histogram je konstruován pomocí hodnot pi =n i /N, kde N je celkový počet pixelů v obrázku, n i je počet pixelů s úrovní jasu i. Rozsah jasu je rozdělen do dvou tříd pomocí prahu úrovně jasu k,k - celočíselná hodnota od 0 do L. Každá třída odpovídá relativním frekvencím ω 0 ω 1:

Průměrné úrovně pro každou ze dvou tříd obrázků:
Dále se vypočítá maximální hodnota pro posouzení kvality rozdělení obrázku na dvě části:
kde (σ cl)2=ω 0 ω 1 (μ 1 -μ 0) 2 je mezitřídní rozptyl a (σ celkem) 2 je celkový rozptyl pro celý obraz.

Prahování založené na gradientu jasu obrazu
Předpokládejme, že analyzovaný obrázek lze rozdělit do dvou tříd - objekty a pozadí. Algoritmus pro výpočet prahové hodnoty se skládá z následujících 2 kroků:
1. Pro každý pixel je určen modul gradientu jasu
obrázky

2. Výpočet prahu:
Celkový
To, co jsem našel, jsem vám v budoucnu rád zaslal, pokud budu mít čas a budu mít čas, pokusím se implementovat některé z algoritmů. To je jen malá část všeho, co dnes existuje, ale i o to se rád podělím.
děkuji za pozornost.

Řízená segmentace povodí

Poměrně často při analýze obrázků vyvstává úkol rozdělit obrazové pixely do skupin podle určitých charakteristik. Tento proces dělení do skupin se nazývá segmentace. Nejznámější jsou dva typy segmentace – segmentace podle jasu u binárních obrázků a segmentace podle barevných souřadnic u barevných obrázků. Segmentační metody lze považovat za formalizaci konceptu odlišení objektu od pozadí nebo konceptů spojených s gradientem jasu. Segmentační algoritmy se vyznačují určitými parametry spolehlivosti a přesnosti zpracování. Závisí na tom, jak plně jsou zohledněny další charakteristiky rozložení jasu v oblastech objektů nebo pozadí, počet změn jasu, tvar objektů atd.

Existuje mnoho obrázků, které obsahují objekt zájmu poměrně rovnoměrného jasu na pozadí různého jasu. Příklady zahrnují ručně psaný text, sérii lékařských obrázků atd. Pokud se jas bodů objektu výrazně liší od jasu bodů pozadí, pak je řešení problému stanovení prahové hodnoty jednoduchým úkolem. V praxi to není tak jednoduché, protože studovaný obraz je vystaven šumu a jsou povoleny určité odchylky v hodnotách jasu. Existuje několik analytických přístupů k omezení prahové jasnosti. Jedním způsobem je nastavit práh na takovou úroveň, aby celkový součet prvků s podprahovými jasy byl konzistentní s předchozími pravděpodobnostmi těchto hodnot jasu.

Podobné přístupy lze aplikovat na zpracování barevných a spektrozonálních snímků. Existuje také typ segmentace nazývaný segmentace obrysu. Docela často analýza obrazu zahrnuje operace, jako je získání vnějšího obrysu obrázků objektů a zaznamenání souřadnic bodů na tomto obrysu. Existují tři hlavní přístupy k reprezentaci hranic objektu: aproximace křivky, trasování obrysu a propojení bodů přetažení. Pro dokončení analýzy je třeba poznamenat, že existuje také segmentace textur a segmentace tvaru.

Nejjednodušším typem segmentace je prahová segmentace. Velmi široké uplatnění našel v robotice. Vysvětluje to skutečnost, že v této oblasti mají snímky studovaných objektů z velké části celkem jednotnou strukturu a jejich pozadí ostře vystupuje. Kromě toho však pro spolehlivé zpracování potřebujete vědět, že obrázek se skládá z jednoho objektu a pozadí, jehož jas je v přesně známých rozsazích a vzájemně se neprotínají.

Rozvoj technologií zpracování obrazu vedl ke vzniku nových přístupů k řešení problémů segmentace obrazu a jejich uplatnění při řešení mnoha praktických problémů.

V tomto článku se budeme zabývat relativně novým přístupem k řešení problému segmentace obrazu – metodou povodí. Pojďme si krátce vysvětlit název této metody a co je její podstatou.

Navrhuje se považovat obrázek za mapu oblasti, kde hodnoty jasu představují hodnoty výšky vzhledem k určité úrovni. Pokud je tato oblast naplněna vodou, tvoří se kaluže. Při dalším plnění vodou se tyto bazény spojují. Místa, kde se tyto povodí spojují, jsou označena jako čáry rozvodí.

Oddělení dotýkajících se předmětů v obraze je jedním z důležitých problémů zpracování obrazu. K řešení tohoto problému se často používá tzv. metoda marker watershed. Transformace využívající tuto metodu potřebují identifikovat "povodí" a "čáry povodí" v obrazu zpracováním místních oblastí v závislosti na jejich jasových charakteristikách.

Metoda marker watershed je jednou z nejúčinnějších metod segmentace obrazu. Při implementaci této metody se provádějí následující základní postupy:

    Vypočítá se segmentační funkce. Týká se snímků, kde se objekty nacházejí v tmavých oblastech a jsou špatně viditelné.

    Výpočet značek obrázků v popředí. Jsou vypočítány na základě analýzy pixelové konektivity každého objektu.

    Výpočet značek pozadí. Představují pixely, které nejsou součástí objektů.

    Úprava funkce segmentace na základě hodnot umístění značek na pozadí a značek v popředí.

    Výpočty založené na upravené segmentační funkci.

V tomto příkladu jsou nejběžněji používané funkce Image Processing Toolbox fspecial, imfilter, watershed, label2rgb, imopen, imclose, imreconstruct, imcomplement, imregionalmax, bwareaopen, graythresh a imimposemin.

  • Krok 1: Přečtěte si barevný obrázek a převeďte jej na stupně šedi.
  • Krok 2: Použití hodnoty gradientu jako funkce segmentace.
  • Krok 3: Označení objektů v popředí.
  • Krok 4: Vypočítejte značky pozadí.
  • Krok 6: Vizualizace výsledku zpracování.

Krok 1: Přečtěte si barevný obrázek a převeďte jej na stupně šedi.

Data čteme ze souboru pears.png rgb=imread("pears.png"); a prezentovat je jako polotónový obraz.

I=rgb2gray(rgb);

imshow(I) text(732,501,"…",... "FontSize",7,"HorizontalAlignment","right")

Krok 2: Použití hodnoty gradientu jako funkce segmentace.

K výpočtu hodnoty gradientu se používá Sobelův operátor, funkce imfilter a další výpočty. Gradient má velké hodnoty na hranicích objektů a malé hodnoty (ve většině případů) mimo hranice objektů.

Hy=fspecial("sobel"); hx=hy"; Iy=imfilter(double(I), hy, "replikovat"); Ix=imfilter(double(I), hx, "replikovat"); gradmag=sqrt(Ix.^2+Iy.^2 figura, imshow(gradmag,), title("hodnota gradientu"));

Po výpočtu hodnot gradientu tedy můžete začít segmentovat obrazy pomocí uvažované metody povodí značek.

L=povodí(gradmag); Lrgb=label2rgb(L); postava, imshow(Lrgb), title("Lrgb")

Bez dalších dodatečných výpočtů však bude taková segmentace povrchní.

Krok 3: Označení objektů v popředí.

K označení objektů v popředí lze použít různé postupy. V tomto příkladu budou použity morfologické technologie nazvané „otevírání restaurováním“ a „uzavření restaurováním“. Tyto operace umožňují analyzovat vnitřní oblast obrazových objektů pomocí funkce imregionalmax.

Jak bylo uvedeno výše, při označování objektů v popředí se používají i morfologické operace. Pojďme se na některé z nich podívat a porovnat. Nejprve implementujeme operaci rozšíření pomocí funkce imopen.

Se=strel("disk", 20); Io=imopen(I, se); postava, imshow(Io), název("Io")

Ie=imerode(I, se); Iobr=imreconstruct(tj, já); postava, imshow(Iobr), název("Iobr")

Iobrd=imdilat(Iobr, se); Iobrcbr=imreconstruct(implement(Iobrd), imcomplement(Iobr)); Iobrcbr=komplement(Iobrcbr); postava, imshow(Iobrcbr), název("Iobrcbr")

Srovnávací vizuální analýza Iobrcbr a Ioc ukazuje, že prezentovaná rekonstrukce založená na morfologických operacích otevírání a zavírání je efektivnější ve srovnání se standardními operacemi otevírání a zavírání. Vypočítejme místní maxima Iobrcbr a získáme značky popředí.

Fgm=imregionalmax(Iobrcbr);

postava, imshow(fgm), název("fgm")

Aplikujme značky popředí na původní obrázek.

I2=I;

I2(fgm)=255;

postava, imshow(I2), title("fgm superponovaný na původní obrázek")

Všimněte si, že některé skryté nebo uzavřené objekty na obrázku nejsou označeny. Tato vlastnost ovlivňuje utváření výsledku a mnoho takových obrazových objektů nebude z hlediska segmentace zpracováno. Značky v popředí tedy zobrazují pouze hranice většiny objektů. Takto znázorněné hranice podléhají dalšímu zpracování. Zejména se může jednat o morfologické operace.

Se2=strel(jedničky(5, 5));

fgm2=imclose(fgm, se2);

fgm3=imerode(fgm2, se2);

V důsledku této operace zmizí jednotlivé izolované pixely obrazu. Můžete také použít funkci bwareaopen, která vám umožní odstranit určený počet pixelů.

Fgm4=bwareaopen(fgm3, 20);

I3=I;

K přesnému určení lokálních minim v obraze lze použít funkci imimposemin. Na základě toho může funkce imimposemin také upravit hodnoty přechodů v obrázku a zpřesnit tak umístění značek popředí a pozadí.

Gradmag2=imimposemin(gradmag, bgm | fgm4);

Nakonec je provedena operace segmentace založená na povodí.

L=povodí(gradmag2);

Krok 6: Vizualizace výsledku zpracování.

Zobrazme překryté značky popředí, značky pozadí a hranice segmentovaných objektů na původním obrázku.

I4=I;

I4(imdilát(L==0, jedničky(3, 3))|bgm|fgm4)=255;

obrázek, imshow(I4) title("Značky a hranice objektů superponované na původním obrázku")

V důsledku tohoto zobrazení můžete vizuálně analyzovat umístění značek popředí a pozadí.

Zajímavé je také zobrazení výsledků zpracování pomocí barevného obrázku. Matici, která je generována funkcemi watershed a bwlabel, lze převést na obrázek truecolor pomocí funkce label2rgb.

Lrgb=label2rgb(L, "tryska", "w", "shuffle");

1

Jsou uvažovány matematické metody pro segmentaci obrázků standardu Dicom. Matematické metody pro segmentaci obrazu podle standardu Dicom jsou vyvíjeny pro problémy s rozpoznáváním lékařských obrazů. Diagnostika nemocí závisí na kvalifikaci výzkumníka a vyžaduje, aby vizuálně provedl segmentaci, přičemž nástrojem pro tuto diagnostiku jsou matematické metody pro zpracování rastrových obrázků. Zpracování lékařských snímků získaných hardwarem bez předběžného zpracování grafických dat ve většině případů vede k nesprávným výsledkům. Byly provedeny postupy pro extrakci kontur objektu metodou Canny a další algoritmy pro zpracování rastrového obrazu. Výsledky výzkumu umožňují vypočítat morfometrické, geometrické a histogramové vlastnosti útvarů v lidském těle nezbytné pro další léčbu pacienta a poskytnout účinnou medikamentózní léčbu. Vyvinuté principy počítačové automatizované analýzy lékařských snímků jsou efektivně využívány pro provozní úkoly lékařské diagnostiky specializovaného onkologického pracoviště a pro vzdělávací účely.

rozpoznávání vzorů

segmentace objektů zájmu

lékařské snímky

1. Vlasov A.V., Tsapko I.V. Modifikace algoritmu Canny, jak se používá při zpracování radiografických snímků // Bulletin of Science of Siberia. – 2013. – č. 4(10). – s. 120–127.

2. Gonzales R., Woods R. Digitální zpracování obrazu. – M.: Technosféra, 2006. – S. 1072.

3. Kulyabichev Yu.P., Pivtoratskaya S.V. Strukturální přístup k výběru prvků v systémech rozpoznávání vzorů // Přírodní a technické vědy. – 2011. – č. 4. – S. 420–423.

4. Nikitin O.R., Pasechnik A.S. Konturování a segmentace v úlohách automatizované diagnostiky patologií // Metody a zařízení pro přenos a zpracování informací. – 2009. – č. 11. – S. 300–309.

5. Canny J. Výpočetní přístup k detekci hran // Transakce IEEE na analýze vzorů a strojové inteligenci. – 1986. – č. 6. – S.679–698.

6. DICOM – Způsob přístupu: http://iachel.ru/ zob23tai-staihroe/ DICOM

7. Doronicheva A.V., Sokolov A.A., Savin S.Z. Použití Sobelova operátoru pro automatickou detekci hran v lékařských snímcích // Journal of Mathematics and System Science. – 2014. – Sv. 4, č. 4 – S. 257–260.

8. Jähne B., Scharr H., Körkel S. Principles of filter design // Handbook of Computer Vision and Applications. Academic Press. – 1999. – 584 s.

Jednou z prioritních oblastí pro rozvoj medicíny v Rusku je přechod na vlastní inovativní technologie pro elektronickou registraci, ukládání, zpracování a analýzu lékařských snímků orgánů a tkání pacientů. Je to způsobeno nárůstem množství informací prezentovaných ve formě obrázků v diagnostice společensky významných onemocnění, především onkologických, jejichž léčba má ve většině případů výsledky pouze v raných fázích.

Při provádění diagnostického zobrazení standardu DICOM se určí patologická oblast a při potvrzení její patologické podstaty se řeší klasifikační problém: přiřazení k jednomu ze známých druhů nebo identifikace nové třídy. Zjevnou obtíží jsou vady výsledného obrazu, které jsou způsobeny jak fyzickými omezeními zařízení, tak i přípustnými limity zátěže lidského těla. V důsledku toho jsou to softwarové nástroje, které mají za úkol dodatečně zpracovávat snímky, aby zvýšily jejich diagnostickou hodnotu pro lékaře, prezentovaly je pohodlnější formou a vyzdvihly to hlavní z velkého objemu přijatých dat.

Účel studie. Matematické metody pro segmentaci obrazu podle standardu Dicom jsou vyvíjeny pro problémy s rozpoznáváním lékařských obrazů. Diagnostika nemocí závisí na kvalifikaci výzkumníka a vyžaduje, aby vizuálně provedl segmentaci, přičemž nástrojem pro tuto diagnostiku jsou matematické metody pro zpracování rastrových obrázků. Zpracování lékařských snímků získaných hardwarem bez předběžného zpracování grafických dat ve většině případů vede k nesprávným výsledkům. Důvodem je skutečnost, že původní snímky byly neuspokojivé kvality.

Materiál a metody výzkumu

Jako výzkumný materiál se používají počítačové tomogramy pacientů na specializovaném klinickém pracovišti. Před analýzou skutečných grafických dat musí být obraz připraven nebo předzpracován. Tato fáze řeší problém zlepšení vizuální kvality lékařských snímků. Je užitečné rozdělit celý proces zpracování obrazu do dvou širokých kategorií: metody, ve kterých jsou jak vstupem, tak výstupem obrazy; metody, kde jsou vstupními daty obrázky a jako výsledek práce jsou výstupními daty znaky a atributy identifikované na základě vstupních dat. Tento algoritmus nepředpokládá, že každý z výše uvedených procesů je aplikován na obrázek. Registrace dat je prvním z procesů, znázorněných na Obr. 1.

Rýže. 1. Hlavní etapy digitálního zpracování grafických dat

Registrace může být docela jednoduchá, jako v příkladu, kdy je původní obrázek digitální. Fáze registrace obrazu obvykle zahrnuje předběžné zpracování dat, například zvýšení měřítka obrazu. Vylepšení obrazu je jednou z nejjednodušších a nejpůsobivějších oblastí předběžného zpracování. Metody pro zlepšení informačního obsahu obrázků jsou zpravidla určeny úkolem najít špatně rozlišitelné pixely nebo zvýšit kontrast v původním obrázku. Jednou z běžně používaných metod pro zlepšení informačního obsahu obrázků je zvýšení kontrastu obrázku, protože se zvýrazňují hranice objektu zájmu. Je třeba vzít v úvahu, že zlepšování kvality obrazu je do určité míry subjektivní úkol při zpracování obrazu. Obnova obrazu je úkol související také se zlepšením vizuální kvality dat. Metody obnovy obrazu jsou založeny na matematických a pravděpodobnostních modelech deformace grafických dat. Zpracování obrazu jako fáze by mělo být odděleno od konceptu zpracování obrazu jako celého procesu změny obrazu a získání některých dat. Segmentace neboli proces vyjímání objektů zájmu rozděluje obraz na dílčí objekty nebo části. Automatizovaná extrakce objektů zájmu je v digitálním zpracování obrazu poněkud náročný úkol. Příliš detailní segmentace ztěžuje zpracování obrazu, pokud jde o zvýraznění objektů zájmu. Ale nesprávná nebo nedostatečně detailní segmentace ve většině úloh vede k chybám v konečné fázi zpracování obrazu. Prezentace a popis grafických dat obvykle následuje po fázi zvýraznění zájmových objektů na snímku, jehož výstup ve většině případů obsahuje surové pixely, které tvoří hranice regionu nebo tvoří všechny pixely regionů. Při takových možnostech je nutné převést data do podoby dostupné pro počítačovou analýzu. Rozpoznávání vzorů je proces, který přiřazuje objektu identifikátor (například „poloměr“) na základě jeho popisů. Pojďme určit vztah mezi znalostní bází a moduly zpracování obrazu. Znalostní báze (tedy informace o problémové oblasti) je nějakým způsobem zašifrována v rámci samotného systému zpracování obrazu. Tato znalost může být poměrně jednoduchá, jako je například podrobné označení objektů na obrázku, kde by měla být oblast zájmu. Takové znalosti umožňují omezit oblast hledání. Znalostní báze řídí činnost každého modulu zpracování a jejich interakci, jak je znázorněno na Obr. 1 se šipkami směřujícími ve dvou směrech mezi moduly a znalostní bází. Ukládání a tisk výsledků často také vyžaduje použití speciálních technik zpracování obrazu. Nevýhodou těchto kroků zpracování obrazu v systému zpracování lékařského obrazu je to, že chyby vzniklé v prvních fázích zpracování, například při zadávání nebo zvýraznění objektů zájmu na snímku, mohou vést k selhání správné klasifikace. Zpracování dat probíhá přísně sekvenčně a ve většině případů není možné vrátit se k předchozím fázím zpracování, i když byly dříve získány nesprávné výsledky. Metody ve fázi předběžného zpracování jsou velmi rozmanité – identifikace objektů zájmu, jejich škálování, korekce barev, úprava prostorového rozlišení, změna kontrastu atd. Jednou z prioritních akcí ve fázi předběžného zpracování obrazu je úprava kontrastu a jasu. Použitím vhodných masek je možné kombinovat dvě fáze (filtrování a předzpracování) pro zvýšení rychlosti analýzy dat. Konečný výsledek analýzy obrazu je ve většině případů určen úrovní kvality segmentace a míra detailu objektů zájmu závisí na konkrétním úkolu. Z tohoto důvodu nebyla vyvinuta samostatná metoda nebo algoritmus, který by byl vhodný pro řešení všech problémů identifikace zájmových objektů. Obrysové oblasti jsou určeny ke zvýraznění objektů se zadanými vlastnostmi v obrazech. Tyto objekty zpravidla odpovídají objektům nebo jejich částem, které diagnostici označují. Výsledkem konturování je binární nebo hierarchický (vícefázový) obraz, kde každé úrovni obrazu odpovídá určitá třída vybraných objektů. Segmentace je složitý krok při zpracování a analýze lékařských dat z biologických tkání, protože je nutné vymezit oblasti, které odpovídají různým objektům nebo strukturám na histologické úrovni: buňky, organely, artefakty atd. To je vysvětleno vysokou variabilitou jejich parametrů, nízkou úrovní kontrastu analyzovaných snímků a složitým geometrickým vztahem objektů. Ve většině případů je pro získání co nejefektivnějšího výsledku nutné důsledně používat různé metody pro segmentaci objektů zájmu na snímku. Například pro určení hranic zájmového objektu se používá metoda morfologického gradientu, po které se provádí prahová segmentace pro oblasti, které jsou vhodné pro menší rozdíly v jasových charakteristikách. Pro zpracování snímků, ve kterých se nesouvisející homogenní oblasti liší průměrným jasem, byla zvolena metoda Cannyho segmentace, která se provádí na klinickém příkladu. Při rozpoznávání skutečných klinických obrazů je modelování špatně použitelné. Velmi důležité jsou praktické zkušenosti a odborné názory na výsledky analýzy obrazu. Pro testovací snímek byl vybrán snímek z počítačové tomografie, kde je zřetelně přítomen zájmový objekt znázorněný na obr. 1. 2.

Rýže. 2. Počítačový tomografický snímek se zájmovým objektem

K implementaci segmentace používáme metodu Canny. Tento přístup je odolný vůči šumu a ve většině případů vykazuje lepší výsledky ve srovnání s jinými metodami. Canny metoda zahrnuje čtyři kroky:

1) předzpracování - rozmazání obrazu (snížíme rozptyl aditivního šumu);

2) diferenciace rozmazaného obrazu a následný výpočet hodnot gradientu ve směru x a y;

3) implementace nemaximálního potlačení v obraze;

4) prahové zpracování obrazu.

V první fázi Cannyho algoritmu je obraz vyhlazen pomocí masky s Gaussovým filtrem. Gaussova distribuční rovnice v N rozměrech má tvar

nebo ve speciálním případě pro dva rozměry

(2)

kde r je poloměr rozostření, r2 = u2 + v2; σ je směrodatná odchylka Gaussova rozdělení.

Pokud použijeme 2 rozměry, pak tento vzorec specifikuje povrch soustředných kružnic s Gaussovým rozložením od centrálního bodu. Pixely s nenulovou distribucí se používají k určení konvoluční matice, která má být aplikována na původní obrázek. Hodnota každého pixelu se stane váženým průměrem okolí. Počáteční hodnota pixelu má maximální váhu (má maximální Gaussovu hodnotu) a sousední pixely mají minimální váhu v závislosti na jejich vzdálenosti. Teoreticky by rozložení v každém bodě obrázku mělo být nenulové, což následuje po výpočtu vah pro každý pixel v obrázku. Ale v praxi se při výpočtu diskrétní aproximace Gaussovy funkce neberou v úvahu pixely ve vzdálenosti > 3σ, protože je poměrně malá. Program pro zpracování obrazu tedy potřebuje vypočítat matici ×, aby zajistil, že aproximace Gaussova rozdělení je dostatečně přesná.

Výsledky výzkumu a diskuse

Výsledek Gaussova filtru s daty rovnými 5 pro velikost Gaussovy masky a 1,9 pro hodnotu parametru σ - směrodatná odchylka Gaussova rozdělení, je uveden na Obr. 3. Dalším krokem je hledání gradientu zájmové oblasti konvolucí vyhlazeného obrázku s derivací Gaussovy funkce ve vertikálním a horizontálním směru vektoru.

K vyřešení tohoto problému použijeme Sobelův operátor. Proces je založen na jednoduchém přesunutí masky filtru z pixelu na pixel v obrázku. U každého pixelu (x, y) se odezva filtru vypočítává z předdefinovaných spojení. Výsledkem je počáteční výběr hrany. Dalším krokem je porovnat každý pixel s jeho sousedy podél směru gradientu a vypočítat lokální maximum. Informace o směru gradientu jsou nezbytné pro odstranění pixelů v blízkosti hranice, aniž by došlo k porušení samotné hranice v blízkosti lokálních maxim gradientu, což znamená, že hraniční pixely určují body, ve kterých je dosaženo lokálního maxima gradientu. směr vektoru gradientu. Tento přístup může významně snížit detekci falešných hran a poskytuje tloušťku okraje objektu o jednom pixelu, což je empiricky potvrzeno softwarovou implementací algoritmu pro segmentaci řezu břišní dutiny na snímku z počítačové tomografie, který je uveden níže v Obr. 4.

Dalším krokem je použití prahové hodnoty k určení, kde je hranice u každého daného pixelu v obrázku. Čím nižší je práh, tím více hran bude mít objekt zájmu, ale výsledek bude náchylnější k šumu a obrysům cizích obrazových dat. Vysoký práh může ignorovat slabé okraje oblasti nebo může být ohraničen několika oblastmi. Konturování hranic používá dva prahové hodnoty filtrování: pokud je hodnota pixelu nad horní hranicí, nabývá maximální hodnoty (hranice se považuje za platnou), pokud je pod ní, pixel je potlačený, body s hodnotou spadající do rozsahu mezi prahovými hodnotami vzít pevnou průměrnou hodnotu. Pixel se připojí ke skupině, pokud se jí dotkne v jednom z osmi směrů. Mezi výhody metody Canny patří, že se při zpracování obrazu přizpůsobuje vlastnostem segmentace. Toho je dosaženo zavedením dvouúrovňového prahu pro ořezávání nadbytečných dat. Jsou definovány dvě prahové úrovně, horní - p vysoká a spodní - p nízká, kde p vysoká > p nízká. Hodnoty pixelů nad hodnotou p high jsou označeny jako odpovídající hranici (obr. 5).

Rýže. 3. Aplikace Gaussova filtru na CT vyšetření s objektem zájmu

Rýže. 4. Potlačení nemaxim v segmentovaném obrazu

Rýže. 5. Aplikace Cannyho segmentačního algoritmu s různými prahovými úrovněmi

Praxe ukazuje, že na škále prahových úrovní citlivosti existuje určitý interval, při kterém se hodnota oblasti zájmového objektu prakticky nemění, ale zároveň existuje určitá prahová úroveň, po jejímž překročení je „ selhání“ metody vymezování a výsledek identifikace oblastí zájmu se stává nejistým. Toto je nedostatek algoritmu, který lze kompenzovat kombinací Cannyho algoritmu s Houghovou transformací pro nalezení kružnic. Kombinace algoritmů umožňuje jasně identifikovat předměty studia a také eliminovat mezery v obrysech.

Závěry

Tím byl vyřešen problém formulování typických charakteristik patologických objektů v lékařských snímcích, což v budoucnu umožní provádět operativní analýzu dat o konkrétních patologiích. Důležitými parametry pro stanovení hodnocení kvality segmentace jsou pravděpodobnosti falešného poplachu a chybného selhání. Tyto parametry určují použití automatizace analytických metod. Segmentace je jednou z nejdůležitějších při řešení problému klasifikace a rozpoznávání objektů na snímcích. Metody konturování založené na segmentaci hranic oblastí - Sobel, Canny, Prewit, Laplassian - byly docela dobře prozkoumány a aplikovány. Tento přístup je dán skutečností, že koncentrace pozornosti člověka při analýze obrazů je často zaměřena na hranice mezi zónami, které mají víceméně jednotný jas. Na základě toho kontury často slouží jako základ pro definování různých charakteristik pro interpretaci obrazů a objektů v nich. Hlavním úkolem algoritmů pro segmentaci oblastí zájmu je konstrukce binárního obrazu, který obsahuje uzavřené strukturní oblasti dat v obraze. Pokud jde o lékařské snímky, tyto oblasti jsou hranicemi orgánů, žil, MCC a nádorů. Vyvinuté principy počítačové automatizované analýzy lékařských obrazů jsou efektivně využívány jak pro provozní úkoly lékařské diagnostiky specializovaného onkologického pracoviště, tak pro vzdělávací účely.

Zkoumáno s podporou programu Dálný východ, grant č. 15-I-4-014o.

Recenzenti:

Kosykh N.E., doktor lékařských věd, profesor, hlavní výzkumný pracovník, výpočetní středisko, pobočka Dálného východu Ruské akademie věd, Chabarovsk;

Levkova E.A., doktor lékařských věd, profesor, Far Eastern State Transport University, Chabarovsk.

Bibliografický odkaz

Doronicheva A.V., Savin S.Z. METODA SEGMENTACE LÉKAŘSKÝCH OBRAZŮ // Základní výzkum. – 2015. – č. 5-2. – S. 294-298;
URL: http://fundamental-research.ru/ru/article/view?id=38210 (datum přístupu: 04.06.2019). Dáváme do pozornosti časopisy vydávané nakladatelstvím "Akademie přírodních věd"


Nahoru