Histogram a jeho zpracování 3. přednáška předmětu Zpracování obrazů Martina Mudrová 24
Definice Co je to histogram? = vektor absolutních četností výskytu každé barvy v obrázku [H(1),H(2), H(c)] c m.n c c počet barev m,n velikost obrázku i= 1 H ( i) intenzitní obrázky: 1 vektor H barevné obrázky: 3 vektory H 1,H 2,H 3 (typicky pro R,G,B složky obrazu, každá ze složek je zpracována zvlášť - podle stejného schématu a se stejnými parametry) = m. n M. Mudrová, 24 2
Základní vlastnosti histogramu je to statistická veličina popisující pravděpodobnost výskytu každé barvy v obraze neříká nic o umístění barev v obraze Dva rozdílné obrázky: Se stejným histogramem (bimodálním v tomto případě): 1 4 1 2 1 8 6 4 2. 1. 2. 3. 4. 5. 6. 7. 8. 9 1 3 M. Mudrová, 24
Další způsoby vyjádření histogramu 1. normalizace x-ové osy (barevného rozsahu) na interval <,1> 2. zobrazení kumulativního histogramu 4 M. Mudrová, 24
Použití histogramu I histogram poskytuje základní informaci o úrovni jasu v obrázku metody zpracování histogramu mohou vést ke zlepšení kvality obrázku! z pohledu subjektivního vjemu! 8 2.5 x 14 7 6 2 1 5 1.5 4 3 1 5 2 1.5 5 1 15 2 25 5 1 15 2 25 5 1 15 2 25 Obrázek je příliš světlý (přeexponovaný) -čáry histogramu jsou převážně v pravé části M. Mudrová, 24 Obrázek je příliš tmavý (podexponovaný) -čáry histogramu jsou převážně v levé části Nízká úroveň kontrastu v obrázku čáry histogramu jsou pouze ve střední části 5
Použití histogramu II umožňuje vhodnou volbu prahu(ů) T při redukci barev - zvláště v případě bimodálního histogramu - použití při detekci objektů granulometrie apod. L pro x< T y= H pro x T x vstupní hodnota intenzity y nová hodnota intenzity T hodnota prahu (threshold level) 6 M. Mudrová, 24
Použití histogramu III kalibrace optických digitálních přístrojů (fotoaparáty, kamery, skenery,...) 1. snímání obrázku se známým histogramem (etalonu) 2. porovnání histogramu získaného obrázku a daného histogramu slouží k nastavení parametrů přístroje Příklad etalonu 7 M. Mudrová, 24
Ekvalizace histogramu Co to znamená? Upravit histogram tak, aby byl tak plochý jak je to jen možné 5 4 3 Real picture histogram Ideal histogram 2 1.1.2.3.4.5.6.7.8.9 1 Algoritmy ekvalizace jsou založeny na statistických metodách: D = n. m MAX D optimální hodnota čar v histogramu n,m... velikost obrázku MAX... hodnota maximální intenzity v obrázku 8 M. Mudrová, 24
Příklad ekvalizace histogramu Originální obrázek original Obrázek po ekvalizaci po ekvalizaci. 5 5 histogram 4 4 3 3 2 2 1 1 1.1.2.3.4.5.6.7.8.9 1 x 1 4 k u m u la c e c a r.1.2.3.4.5.6.7.8.9 1 1 x 1 4 8 8 6 6 4 2 5 1 1 5 2 2 5 3 4 2 5 1 15 2 25 3 9 M. Mudrová, 24
Úpravy histogramu Co se stane, když změním pozici čar v histogramu z hodnot x na y? x vstupní histogram l h 1 A. Lineární úpravy: g = 1 1. Posun histogramu 2. Zúžení/rozšíření histogramu B. Nelineární úpravy: g <> 1 y = x γ b t 1 y výstupní histogram output value y 1.8.6.4.2 Gamma correction.2.4.6.8 1 g=.5 g=2 input value x 1 M. Mudrová, 24
Posun histogramu vpravo Zvyšování jasové úrovně obrázku posouvá histogram doprava (k bílé). 5 45 4 35 3 25 2 15 1 5 5 45 4 35 3 25 2 15 1 5 5 45 4 35 3 25 2 15 1 5.1.2.3.4.5.6.7.8.9 1.1.2.3.4.5.6.7.8.9 1.1.2.3.4.5.6.7.8.9 1 11 M. Mudrová, 24
Posun histogramu vlevo Snižování jasové úrovně obrázku posouvá histogram doleva (k černé). 5 45 4 35 3 25 2 15 1 5.1.2.3.4.5.6.7.8.9 1 5 45 4 35 3 25 2 15 1 5.1.2.3.4.5.6.7.8.9 1 5 45 4 35 3 25 2 15 1 5.1.2.3.4.5.6.7.8.9 1 12 M. Mudrová, 24
Další možnosti úpravy jasu? Nešlo by jednoduše přičíst nějakou konstantu k hodnotě každého pixelu? original original+.3 histogram originalu histogram po uprave 7 7 6 5 4 3 2 1 6 5 4 3 2 1 6 5 4 3 2 1.1.2.3.4.5.6.7.8.9 1.1.2.3.4.5.6.7.8.9 1.1.2.3.4.5.6.7.8.9 1! Tento způsob může vést ke ztrátě detailní informace v oblasti jasných barev bez možnosti jejího zpětného obnovení 13 M. Mudrová, 24
Ztráta tmavých odstínů...nebo odečíst konstantu od hodnoty každého pixelu? 7 6 5 4 3 2 1.1.2.3.4.5.6.7.8.9 1 9 8 7 6 5 4 3 2 1.1.2.3.4.5.6.7.8.9 1 9 8 7 6 5 4 3 2 1.1.2.3.4.5.6.7.8.9 1! Tento způsob může vést ke ztrátě detailní informace v oblasti tmavých barev bez možnosti jejího zpětného obnovení 14 M. Mudrová, 24
Kontrast: Dilatace a zúžení histogramu 7 6 5 4 3 2 1.1.2.3.4.5.6.7.8.9 1 9 8 7 6 5 4 3 2 1.1.2.3.4.5.6.7.8.9 1 5 45 4 35 3 25 2 15 1 5.1.2.3.4.5.6.7.8.9 1 Dilatace histogramu způsobuje zvýšení kontrastu Zúžení histogramu vede ke snížení kontrastu! Pozor na ztrátu detailní informace ve velmi jasných a tmavých úrovních barev v průběhu operací s histogramem dilatace následovaná odpovídajícím zúžením nemusí vést k původnímu obrazu M. Mudrová, 24 15
Gama korekce y = γ x x vstupní histogram l h 1 y = x γ <γ <1 obrázek bude světlejší γ >1 obrázek bude tmavší γ =1 lineární úprava b t 1 y výstupní histogram Gamma correction output value y 1.8.6.4.2.2.4.6.8 1 input value x g=.5 g=2! Některá digitální zařízení definují hodnotu gama převráceně: y = 1 γ x 16 M. Mudrová, 24
Použití gama korekce Parametry úpravy histogramu Obrázek 8 Histogram 6 původní obrázek 4 2. 5 1 posun čar histogramu z <.25,1> do <,.75>, γ =1 posun čar histogramu z <.25,1> do <,.75>, γ =5 5 5 1 8 6 4 2. 5 1 posun čar histogramu z <.25,1> do <,.75>, γ =.2 M. Mudrová, 24 5 2 4 6 8 1 17
Pokročilé metody úpravy histogramu - Operace s vyhledávací tabulkou - LUT (Look-up table) -1 nová barva je přiřazena 1,2 nebo více původním barvám - nevratná operace - použití pro zajímavé efekty (vytváření tzv. vodových kreseb z realistických fotografií) a pro zvýraznění struktur v obraze - Daný histogram s daným tvarem může být obrázku vnucen - 18 M. Mudrová, 24
Příkazy Matlabu pro operace s histogramem imhist histeq imadjust (brighten) (contrast) stretchlim 19 M. Mudrová, 24
Příklad Ekvalizace histogramu % Histogram a jeho upravy (1) % Ekvalizace histogramu clear delete(get(,'children')); original po ekvalizaci. [x,map]=imread('busek.bmp'); i=ind2gray(x,map); subplot(321), imshow(i) title('original') subplot(323),imhist(i) title('histogram originalu'), j=histeq(i,32); subplot(322), subimage(j ) axis off,title('po ekvalizaci.') subplot(324),imhist(j) title('histogram '), subplot(325),plot(cumsum(imhist(i))) title('kumulace car'), subplot(326),plot(cumsum(imhist(j))) 4 2 5 histogram originalu 1 2 1 x 14 kumulace car 1 2 3 4 2 5 histogram 1 2 1 x 14 1 2 3 2 M. Mudrová, 24
Příklad Lineární úprava histogramu % Upravy histogramu(2) clear delete(get(,'children')) figure(1) [x,map]=imread('../busek.bmp'); i=ind2gray(x,map); j=imadjust(i,[ 1],[.8],1); subplot(221),imshow(i) title('original') subplot(222),imhist(i,128) title('histogram originalu') subplot(223),imshow(j) title(' po uprave') subplot(224),imhist(j) title('histogram po uprave') original po uprave histogram originalu 6 4 2 1 2 histogram po uprave 4 2 1 2 21 M. Mudrová, 24