Vyrovnání histogramů pro zlepšení kvality obrazu. Předběžné zpracování obrazu Vyrovnání obrazu

  • 12.04.2020

Ahoj všichni. Nyní s vedoucím práce připravujeme k vydání monografii, kde se o to snažíme jednoduchými slovy mluvit o základech digitální zpracování snímky. Tento článek odhaluje velmi jednoduchou, ale zároveň velmi účinnou techniku ​​pro zlepšení kvality obrazu – ekvalizaci histogramu.

Pro zjednodušení začněme monochromatickými obrázky (tedy obrázky obsahujícími informace pouze o jasu, nikoli však o barvě pixelů). Histogram obrázku je diskrétní funkce H definovaná na množině hodnot, kde bpp je počet bitů přidělených ke kódování jasu jednoho pixelu. Ačkoli to není nutné, histogramy jsou často normalizovány na rozsah vydělením každé hodnoty funkce H[i] celkovým počtem pixelů v obrázku. V tabulce. 1 ukazuje příklady testovacích snímků a histogramů vytvořených na jejich základě:
Tab. 1. Snímky a jejich histogramy

Po pečlivém prostudování odpovídajícího histogramu můžeme vyvodit některé závěry o samotném původním obrázku. Například histogramy velmi tmavých snímků se vyznačují tím, že nenulové hodnoty histogramu jsou soustředěny blízko nulové úrovně jasu a naopak u velmi světlých snímků – všechny nenulové hodnoty jsou soustředěny vpravo. straně histogramu.
Intuitivně můžeme dojít k závěru, že pro lidské vnímání bude nejvhodnější obraz, jehož histogram se blíží rovnoměrnému rozložení. Tito. pro zlepšení vizuální kvalita je nutné na obrázek aplikovat takovou transformaci, aby histogram výsledku obsahoval všechny možné hodnoty jasu a zároveň v přibližně stejném množství. Tato transformace se nazývá ekvalizace histogramu a lze ji provést pomocí kódu ve výpisu 1.
Výpis 1. Implementace postupu vyrovnání histogramu

  1. procedura TCGrayscaleImage. Vyrovnání histogramu ;
  2. konst
  3. k = 255
  4. h: pole [ 0 .. k ] z double ;
  5. i, j: slovo;
  6. začít
  7. pro i := 0 až k do
  8. h[i] := 0;
  9. h[ round (k * self . Pixels [ i, j] ) ] : = h[ round (k * self . Pixels [ i, j] ) ] + 1 ;
  10. pro i := 0 až k do
  11. h[ i] : = h[ i] / (self . Height * self . Width ) ;
  12. pro i := 1 až k do
  13. h[i]: = h[i-1] + h[i];
  14. pro i := 0 sobě . Výška - 1 do
  15. pro j := 0 sobě . Šířka - 1 do
  16. sebe . Pixely [ i, j] : = h[ round (k * self . Pixels [ i, j] ) ] ;
  17. konec ;

V důsledku vyrovnání histogramu se ve většině případů výrazně rozšíří dynamický rozsah snímku, což umožňuje zobrazit dříve nepovšimnuté detaily. Tento efekt je zvláště výrazný na tmavé obrázky, která je uvedena v tabulce. 2. Kromě toho stojí za zmínku ještě jedna důležitá vlastnost ekvalizační procedury: na rozdíl od většiny filtrů a gradačních transformací, které vyžadují nastavení parametrů (konstanty aperturní a gradační transformace), lze ekvalizaci histogramu provádět v plně automatickém režimu bez účasti operátora.
Tab. 2. Snímky a jejich histogramy po ekvalizaci


Snadno vidíte, že histogramy po vyrovnání mají jakési znatelné diskontinuity. To je způsobeno skutečností, že dynamický rozsah výstupního obrazu je širší než dynamický rozsah původního obrazu. Je zřejmé, že v tomto případě mapování uvažované ve výpisu 1 nemůže poskytnout nenulové hodnoty ve všech přihrádkách histogramu. Pokud přesto potřebujete dosáhnout přirozenějšího vzhledu výstupního histogramu, můžete použít náhodné rozložení hodnot i-tého histogramu v některé z jeho sousedství.
Je zřejmé, že ekvalizace histogramu usnadňuje zlepšení kvality monochromatických snímků. Přirozeně bych chtěl podobný mechanismus aplikovat na barevné obrázky.
Většina nepříliš zkušených vývojářů prezentuje obrázek v tři RGB barevné kanály a pokuste se použít postup vyrovnání histogramu pro každou barvu zvlášť. V některých vzácných případech vám to umožní uspět, ale ve většině případů je výsledek takový (barvy jsou nepřirozené a studené). Je to proto, že model RGB nereprezentuje přesně lidské vnímání barev.
Zamysleme se nad dalším barevným prostorem – HSI. Tento barevný model (a další s ním související) je velmi široce používán ilustrátory a designéry, protože umožňuje pracovat se známějšími pojmy odstínu, sytosti a intenzity.
Pokud vezmeme v úvahu projekci RGB krychle ve směru bílo-černé úhlopříčky, pak dostaneme šestiúhelník, jehož rohy odpovídají primární a sekundární barvě a všechny šedé odstíny (ležící na úhlopříčce krychle) se promítají do středu šestiúhelníku (viz obr. 1):

Rýže. 1. Projekce barevné kostky
Abyste mohli pomocí tohoto modelu zakódovat všechny barvy dostupné v modelu RGB, musíte přidat vertikální osu světlosti (nebo intenzity) (I). Výsledkem je šestihranný kužel (obr. 2, obr. 3):


Rýže. 2. Pyramid HSI (vrcholky)
V tomto modelu je odstín (H) dán úhlem vzhledem k červené ose, sytost (S) charakterizuje čistotu barvy (1 znamená zcela čistou barvu a 0 odpovídá odstínu šedé). Při hodnotě sytosti nula nemá odstín žádný význam a není definován.


Rýže. 3. Pyramida HSI
V tabulce. Obrázek 3 ukazuje rozklad obrazu na složky HSI (bílé pixely v tónovém kanálu odpovídají nulové saturaci):
Tab. 3. barevný prostor HSI


Má se za to, že pro zlepšení kvality barevných obrazů je nejúčinnější aplikovat postup vyrovnání na kanál intenzity. To je přesně to, co je uvedeno v tabulce. čtyři
Tab. 4. Ekvalizace různých barevných kanálů


Doufám, že pro vás byl tento materiál alespoň zajímavý, nanejvýš užitečný. Děkuji.

Existují tři hlavní způsoby, jak zvýšit kontrast obrázku:

  • lineární roztažení histogramu (lineární kontrast),
  • normalizace histogramu,
  • zarovnání (linearizace nebo ekvalizace, ekvalizace) histogramu.

Lineární protažení se týká přiřazení nových hodnot intenzity každému pixelu v obrázku. Pokud se intenzity původního snímku změnily v rozsahu od do , pak je nutné uvedený rozsah lineárně "roztáhnout" tak, aby se hodnoty změnily od 0 do 255. K tomu stačí přepočítat starou intenzitu hodnoty pro všechny pixely podle vzorce , kde se koeficienty jednoduše vypočítají na základě skutečnosti, že hranice by měla jít na 0 a - na 255.

Normalizace histogramu na rozdíl od předchozí metody neprotahuje celý rozsah změn intenzity, ale pouze jeho nejinformativnější část. Informativní část tvoří soubor píků histogramu, tzn. intenzity, které se v obraze vyskytují častěji než ostatní. Bins odpovídající vzácným intenzitám se během normalizace vyřadí, poté se provede obvyklé lineární roztažení výsledného histogramu.

zarovnání Histogram je jedním z nejběžnějších způsobů. Účelem vyrovnání je, aby všechny úrovně jasu měly stejnou frekvenci a histogram by odpovídal zákonu o rovnoměrném rozdělení. Řekněme, že jsme dostali obrázek ve stupních šedi, který má rozlišení pixelů. Počet úrovní kvantizace jasu pixelů (počet přihrádek) je . Pak by v průměru pro každou úroveň jasu měla klesnout pixelů. Základní matematika spočívá ve spárování dvou distribucí. Nechť jsou náhodné proměnné popisující změnu intenzity pixelů v obrázcích, buď hustota rozložení intenzity na původním obrázku a požadovaná hustota rozložení. Je nutné najít transformaci distribučních hustot , která by umožnila získat požadovanou hustotu:

Označte a integrální zákony rozdělení náhodných veličin a . Z podmínky pravděpodobnostní ekvivalence vyplývá, že . Zákon integrálního rozdělení píšeme podle definice:

Proto to dostáváme

Zbývá zjistit, jak odhadnout zákon o integrálním rozdělení. Chcete-li to provést, musíte nejprve vytvořit histogram původního obrázku a poté výsledný histogram normalizovat vydělením hodnoty každé přihrádky celkovým počtem pixelů. Hodnoty bin lze považovat za aproximaci funkce hustoty distribuce. Hodnota integrální distribuční funkce tedy může být reprezentována jako součet následujícího tvaru:

Zkonstruovaný odhad lze použít k výpočtu nových hodnot intenzity. Všimněte si, že výše uvedené transformace histogramu lze aplikovat nejen na celý snímek, ale i na jeho jednotlivé části.

Knihovna OpenCV implementuje funkci equalizeHist, která poskytuje vylepšení kontrastu obrazu pomocí ekvalizace histogramu [ , ]. Funkční prototyp je uveden níže.

void equalizeHist(const Mat& src, Mat& dst)

Funkce funguje ve čtyřech krocích:

Následuje příklad programu, který poskytuje vyrovnání histogramu. Aplikace bere jako argument příkazový řádek název původního obrázku. Po provedení operace vyrovnání histogramu zobrazte původní snímek 1 Použitý obrázek je součástí základny PASACL VOC 2007., převedeny na stupně šedi (obr. 7.11, vlevo) a snímek s histogramem ekvalizován (obr. 7.11, vpravo).

#zahrnout #zahrnout pomocí jmenného prostoru cv; const char helper = "Sample_equalizeHist.exe \n\ \t - název souboru obrázku\n"; int main(int argc, char* argv) ( const char *initialWinName = "Počáteční obrázek", *equalizedWinName = "Equalized Image"; Mat img, grayImg, equalizedImg; if (argc< 2) { printf("%s", helper); return 1; } // загрузка изображения img = imread(argv, 1); // преобразование в оттенки серого cvtColor(img, grayImg, CV_RGB2GRAY); // выравнивание гистограммы equalizeHist(grayImg, equalizedImg); // отображение исходного изображения и гистограмм namedWindow(initialWinName, CV_WINDOW_AUTOSIZE); namedWindow(equalizedWinName, CV_WINDOW_AUTOSIZE); imshow(initialWinName, grayImg); imshow(equalizedWinName, equalizedImg); waitKey(); // закрытие окон destroyAllWindows(); // осовобождение памяти img.release(); grayImg.release(); equalizedImg.release(); return 0; }


Rýže. 7.11.

Se všemi transformacemi prvek po prvku se mění zákon rozdělení pravděpodobnosti, který popisuje obraz. Při lineárním kontrastování je tvar hustoty pravděpodobnosti zachován, nicméně v obecném případě, tzn. s libovolnými hodnotami parametrů lineární transformace se mění parametry hustoty pravděpodobnosti transformovaného obrazu.

Určení pravděpodobnostních charakteristik snímků, které prošly nelineárním zpracováním, je přímým úkolem analýzy. Při řešení praktických úloh zpracování obrazu lze postavit inverzní problém: podle známého tvaru hustoty pravděpodobnosti pf(F) a požadovaný tvar str(G) definujte požadovanou transformaci G= ϕ( F), kterému by měl být vystaven původní obrázek. V praxi digitálního zpracování obrazu vede transformace obrazu na ekvipravděpodobnou distribuci často k užitečnému výsledku. V tomto případě

kde G min a G max - minimální a maximální hodnoty jasu převedeného obrazu. Pojďme určit charakteristiku měniče, který rozhoduje tento úkol. Nechat F a G vázaný funkcí G(n, m) = j( F(n, m)), a Pf(F) a Str(G) jsou integrální distribuční zákony pro vstupní a výstupní jas. Vezmeme-li v úvahu (6.1), zjistíme:

Dosazení tohoto výrazu do podmínky pravděpodobnostní ekvivalence

po jednoduchých transformacích získáme vztah

což je charakteristika G(n, m) = j( F(n, m)) v řešeném problému. Podle (6.2) prochází původní obraz nelineární transformací, jejíž charakteristikou je Pf(F) je určeno integrálním distribučním zákonem původního obrázku. Poté se výsledek redukuje na daný dynamický rozsah pomocí operace lineárního kontrastu.

Transformace hustoty pravděpodobnosti tedy předpokládá znalost integrálního rozdělení pro původní obraz. Zpravidla o něm neexistují žádné spolehlivé informace. Aproximace analytickými funkcemi může v důsledku chyb aproximace vést k výraznému rozdílu ve výsledcích od požadovaných. Proto se v praxi zpracování obrazu transformace distribucí provádí ve dvou fázích.



V první fázi se změří histogram původního snímku. U digitálního obrázku, jehož škála šedi patří do rozsahu celých čísel, je například histogram tabulkou 256 čísel. Každý z nich ukazuje počet pixelů v obrázku (snímku), které mají daný jas. Vydělením všech čísel v této tabulce celkovou velikostí vzorku, rovnou počtu vzorků v obrázku, se získá odhad pravděpodobnostního rozložení jasu obrázku. Označte tento odhad q pf(fq), 0 ≤ fq≤ 255. Potom odhad integrálního rozdělení získáme podle vzorce:

Ve druhé fázi je provedena samotná nelineární transformace (6.2), která poskytuje potřebné vlastnosti výstupního obrazu. V tomto případě se místo neznámého skutečného integrálního rozdělení použije jeho odhad na základě histogramu. S ohledem na to se všechny metody transformace obrázků prvek po prvku, jejichž účelem je upravit zákony distribuce, nazývají histogramové metody. Konkrétně se nazývá transformace, kde má výstupní obraz rovnoměrné rozložení vyrovnání (zarovnání) histogramu.

Všimněte si, že postupy transformace histogramu lze aplikovat jak na snímek jako celek, tak na jeho jednotlivé fragmenty. Ten může být užitečný při zpracování nestacionárních snímků, jejichž charakteristiky se v různých oblastech výrazně liší. V tomto případě nejlepší efekt lze dosáhnout aplikací zpracování histogramu na jednotlivé oblasti – oblasti zájmu. Je pravda, že se tím změní hodnoty odečtů a všech ostatních oblastí. Obrázek 6.1 ukazuje příklad vyrovnání provedeného v souladu s popsanou metodikou.

Charakteristickým rysem mnoha snímků získaných v reálných zobrazovacích systémech je významný specifická gravitace tmavé oblasti a relativně malý počet oblastí s vysokým jasem.

Obrázek 6.1 – Příklad ekvalizace histogramu snímku: a) původní snímek a jeho histogram c); b) transformovaný obrázek a jeho histogram d)

Vyrovnání histogramu vede k vyrovnání integrálních oblastí rovnoměrně rozložených rozsahů jasu. Porovnání původních (obrázek 6.1 a) a zpracovaných (obrázek 6.1 b) snímků ukazuje, že redistribuce jasu, ke které dochází během zpracování, vede ke zlepšení zrakového vnímání.

Se všemi transformacemi prvek po prvku se mění zákon rozdělení pravděpodobnosti, který popisuje obraz. Uvažujme mechanismus této změny na příkladu libovolné transformace s monotónní charakteristikou popsanou funkcí (obr. 2.8), která má jednohodnotovou inverzní funkci . Předpokládejme, že náhodná proměnná se řídí hustotou pravděpodobnosti. Nechť je libovolný malý interval hodnot náhodné veličiny a je odpovídající interval transformované náhodné veličiny.

Pokud hodnota spadá do intervalu, pak hodnota spadá do intervalu , což znamená pravděpodobnostní ekvivalenci těchto dvou událostí. Proto, vezmeme-li v úvahu malost obou intervalů, můžeme napsat přibližnou rovnost:

,

kde moduly zohledňují závislost pravděpodobností na absolutních délkách intervalů (a nezávislost znamének přírůstků a ). Vypočteme-li odtud hustotu pravděpodobnosti transformované veličiny, dosadíme místo jejího vyjádření pomocí inverzní funkce a provedeme průchod k limitě v (a tedy ), dostaneme:

. (2.4)

Tento výraz umožňuje vypočítat hustotu pravděpodobnosti transformačního produktu, která, jak je z něj patrné, se neshoduje s hustotou distribuce původní náhodné veličiny. Je zřejmé, že provedená transformace má významný vliv na hustotu, protože (2.4) zahrnuje její inverzní funkci a její derivaci.

Vztahy se poněkud zkomplikují, pokud transformace není popsána funkcí jedna ku jedné. Příkladem takové složitější charakteristiky s nejednoznačnou inverzní funkcí je pilová charakteristika na Obr. 2.4, k. Obecně se však význam pravděpodobnostních transformací v tomto případě nemění.

Všechny transformace obrázků uvažovaných v této kapitole prvek po prvku lze uvažovat z hlediska změny hustoty pravděpodobnosti popsané výrazem (2.4). Je zřejmé, že pod žádným z nich se hustota pravděpodobnosti výstupního produktu nebude shodovat s hustotou pravděpodobnosti původního obrázku (samozřejmě s výjimkou triviální transformace). Je snadné vidět, že při lineárním kontrastu je tvar hustoty pravděpodobnosti zachován, ale v obecném případě, tj. pro libovolné hodnoty parametrů lineární transformace, se parametry hustoty pravděpodobnosti transformovaného obrazu mění. .

Určení pravděpodobnostních charakteristik snímků, které prošly nelineárním zpracováním, je přímým úkolem analýzy. Při řešení praktických problémů zpracování obrazu může nastat inverzní problém: pomocí známého tvaru hustoty pravděpodobnosti a požadovaného tvaru určete požadovanou transformaci, které má být původní obraz podroben. V praxi digitálního zpracování obrazu vede transformace obrazu na ekvipravděpodobnou distribuci často k užitečnému výsledku. V tomto případě

kde a jsou minimální a maximální hodnoty jasu převedeného obrázku. Pojďme určit vlastnosti převodníku, který řeší tento problém. Nechť a být ve vztahu funkcí (2.2) a a jsou zákony integrálního rozdělení vstupních a výstupních veličin. Vezmeme-li v úvahu (2.5), zjistíme:

.

Dosazení tohoto výrazu do podmínky pravděpodobnostní ekvivalence

po jednoduchých transformacích získáme vztah

což je charakteristické (2.2) v řešeném problému. Podle (2.6) prochází původní obraz nelineární transformací, jejíž charakteristika je určena integrálním distribučním zákonem samotného původního obrazu. Poté je výsledek redukován na specifikovaný dynamický rozsah pomocí operace lineárního kontrastu.

Podobně lze získat řešení dalších podobných problémů, ve kterých je požadováno uvést distribuční zákony obrazu do dané podoby. Tabulka takových transformací je uvedena v. Jedna z nich, takzvaná distribuční hyperbolizace, zahrnuje snížení hustoty pravděpodobnosti transformovaného obrazu na hyperbolickou formu:

(2.7)

Vezmeme-li v úvahu, že při průchodu světla okem se vstupní jas logaritmizuje jeho sítnicí, pak se výsledná hustota pravděpodobnosti ukáže jako rovnoměrná. Rozdíl oproti předchozímu příkladu tedy spočívá v zohlednění fyziologických vlastností zraku. Lze ukázat, že obraz s hustotou pravděpodobnosti (2.7) je získán na výstupu nelineárního prvku s charakteristickou

také určeno integrálním distribučním zákonem původního obrazu.

Transformace hustoty pravděpodobnosti tedy předpokládá znalost integrálního rozdělení pro původní obraz. Zpravidla o něm neexistují žádné spolehlivé informace. Použití analytických aproximací pro uvažované účely je také málo užitečné, protože jejich malé odchylky od skutečných rozdělení mohou vést k významnému rozdílu ve výsledcích od požadovaných. Proto se v praxi zpracování obrazu transformace distribucí provádí ve dvou fázích.

V první fázi se změří histogram původního snímku. U digitálního obrázku, jehož stupně šedi například patří do rozsahu celých čísel 0...255, je histogram tabulkou 256 čísel. Každý z nich ukazuje počet bodů v rámečku, které mají daný jas. Vydělením všech čísel v této tabulce celkovou velikostí vzorku rovnající se počtu použitých obrazových pixelů se získá odhad rozdělení pravděpodobnosti jasu obrazu. Tento odhad označujeme . Potom se odhad integrálního rozdělení získá podle vzorce:

.

Ve druhé fázi se provádí samotná nelineární transformace (2.2), která poskytuje potřebné vlastnosti výstupního obrazu. V tomto případě se místo neznámého skutečného integrálního rozdělení použije jeho odhad na základě histogramu. S ohledem na to se všechny metody transformace obrázků prvek po prvku, jejichž účelem je upravit zákony distribuce, nazývají histogramové metody. Zejména transformace, ve které má výstupní obraz rovnoměrné rozložení, se nazývá ekvalizace (zarovnání) histogramů.

Všimněte si, že postupy transformace histogramu lze aplikovat jak na snímek jako celek, tak na jeho jednotlivé fragmenty. Ten může být užitečný při zpracování nestacionárních snímků, jejichž obsah se svými vlastnostmi v různých oblastech výrazně liší. V tomto případě lze nejlepšího efektu dosáhnout aplikací zpracování histogramu na jednotlivé oblasti.

Použití vztahů (2.4)-(2.8) , které platí pro obrázky se spojitým rozložením jasu, není pro digitální obrázky zcela správné. Je třeba mít na paměti, že v důsledku zpracování nelze získat ideální rozdělení pravděpodobnosti výstupního snímku, proto je užitečné řídit jeho histogram.

a) originální obrázek

b) výsledek zpracování

Rýže. 2.9. Příklad ekvalizace obrazu

Obrázek 2.9 ukazuje příklad vyrovnání provedeného v souladu s popsanou metodikou. Charakteristickým znakem mnoha snímků získaných v reálných zobrazovacích systémech je významný podíl tmavých oblastí a relativně malý počet oblastí s vysokým jasem. Ekvalizace je navržena tak, aby opravila obraz zarovnáním celistvých oblastí oblastí s různým jasem. Porovnání původních (obr. 2.9.a) a zpracovaných (obr. 2.9.b) snímků ukazuje, že redistribuce jasu, ke které dochází při zpracování, vede ke zlepšení zrakového vnímání.

Provádíme zpracování obrazu, vizualizaci a analýzu

Image Processing Toolbox™ poskytuje komplexní sadu referenčních standardních algoritmů a aplikací pracovních postupů pro zpracování obrazu, analýzu, vizualizaci a vývoj algoritmů. Pomocí hlubokého učení a tradičních technik zpracování obrazu můžete provádět segmentaci obrazu, vylepšení obrazu, odšumování, geometrické transformace a registraci obrazu. Panel nástrojů pro zpracování podporuje 2D, 3D a libovolně velké obrázky.

Aplikace Image Processing Toolbox vám umožňují automatizovat běžné pracovní postupy zpracování obrazu. Můžete interaktivně segmentovat obrazová data, porovnávat metody registrace obrazu a dávkově zpracovávat velké datové sady. Vizualizační funkce a aplikace vám umožňují prozkoumat obrázky, 3D svazky a videa; upravit kontrast; vytvářet histogramy; a ovládat viditelné oblasti (KINGS).

Algoritmy můžete urychlit jejich spuštěním na vícejádrových procesorech a GPU. Mnoho funkcí sady nástrojů podporuje generování kódu C/C++ pro nasazení počítačového vidění a analýzu prototypů.

Začátek práce

Naučte se základy nástroje pro zpracování obrazu

Importujte, exportujte a převádějte

Import a export obrazových dat, konverze typů a tříd obrázků

Zobrazení a průzkum

Interaktivní zobrazovací a průzkumné nástroje

Geometrické transformace a registrace obrazu

Měřte, otočte, provádějte jiné N-D konverze a zarovnat obrazy pomocí korelace intenzity, porovnávání prvků nebo mapování kontrolních bodů

Filtrování a vylepšení obrazu

Úprava kontrastu, morfologické filtrování, rozmazání, zpracování založené na ROI

Segmentace a analýza obrazu

Plošná analýza, analýza struktury, pixelová a obrazová statistika

Hluboké učení pro zpracování obrazu

Provádějte úlohy zpracování obrazu, jako je odstranění obrazového šumu a generování obrazů s vysokým rozlišením z obrazů s nízkým rozlišením, pomocí konvolučních neuronových sítí (vyžaduje Deep Learning Toolbox™)