Wykład 2.
Transkrypt
Wykład 2.
Wykªad 2
Jacek Tabor
pytania z 2 wykªadu:
•
co to jest ±rednia, mediana, histogram, dystrybuanta
•
w jaki sposób zamienia si¦ zdj¦cie kolorowe na zdj¦cie w odcieniach szaro±ci (prosz¦
poda¢ przybli»ony wzór)?
1
•
co to jest gamma korekta obrazu (prosz¦ poda¢ wzór)
•
co to jest binaryzacja?
•
prosz¦ opisa¢ jak si¦ robi rozszerzanie histogramu
•
prosz¦ opisa¢ jak si¦ robi wyrównywanie histogramu
Format YCbCr
Typowe zdj¦cie jest zapisane w formacie RGB, ka»dy kolor ma zakres warto±ci
od 0 do 255 (1 bajt). Czasami u»ywa si¦ dwóch bajtów, albo zmienia zakres
na rzeczywisty z zakresu
[0, 1].
Okazuje si¦, »e w wielu przypadkach potrzebna jest praca osobno na
kanale odpowiadaj¡cym za jasno±¢, a osobno za kolory (cz¦sto taki sposób
zapisu jest bardziej naturalny).
W praktyce cz¦sto dokonujemy w prepro-
cessingu zdj¦cia dokonujemy konwersji zdj¦cia do odcieni szaro±ci.
[za
http://fotografia.wordpress.com/porady/jak-konwertowac-zdjecia-do-odcieni-sz
Ju» sam podgl¡d poszczególnych kanaªów (Channels) daje nam informacj¦ o
tym, gdzie powinni±my szuka¢ naszego zdj¦cia czarno biaªego.
Kanaª czerwony (Red) reprezentuje scen¦ jakby byªa zrobiona przez czerwony ltr, zgodnie z zasadami optyki przyciemnia tym samym kolory dopeªniaj¡cy (niebieskie) i rozja±nia wszelkie czerwienie. Jako ¹ródªo obrazu czarnobiaªego doskonale nadaje si¦ do zdj¦¢ krajobrazów, bo uwypukla biaªe chmury
na niebie, rozja±nia tony ziemi i ±ciemnia tony ro±linno±ci. Czasami wystarczy skasowa¢ pozostaªe kanaªy i mamy gotowy obraz czarno-biaªy.
1
Kanaª
zielony (Green) rozja±nia zielenie i zawiera du»o informacji o szczegóªach
obrazu, bo nasze oczy s¡ wybitnie uwra»liwione wªa±nie na ten kolor. Kanaª
zielony czasami mo»e dawa¢ dobre efekty w przypadku ludzkiej skóry, która w
kanale czerwonym wygl¡da jak biaªa plama (nasza skóra jest ró»owa, co jest
reprezentowane jako wysoki poziom czerwieni, a to oznacza biel w ikanale czerwonym, analogicznie brak skªadowej koloru czerwonego reprezentowany jest
jako czer«). Kanaª niebieski (Blue) bywa maªo przydatny, zawiera najwi¦cej
szumów, a jako, »e ltr niebieski silnie ±ciemnia czerwie«, s¡ w nim widoczne
wszelkie niedoskonaªo±ci skóry. Aby odtworzy¢ widzenie jasno±ci obrazu przez
ludzki oko, nale»aªoby wykorzysta¢ 60% informacji z koloru zielonego, 30%
z koloru czerwonego i 10% z niebieskiego. Tak te» dziaªa wi¦kszo±¢ komend
Convert to Grayscale.
Standardowo (w szczególno±ci komenda w pakiecie SIVP, rgb2gray) u»ywa
si¦ nast¦puj¡cych proporcji:
Y = 0.299 ∗ R + 0.587 ∗ G + 0.114 ∗ B.
Innym rozwi¡zaniem jest przej±cie na format który w osobnym kanale ma
skal¦ szaro±ci (to pozwala ªatwiej pracowa¢ na zdj¦ciu bo cz¦±ciej z naszego
punktu widzenia jest bardziej naturalne). W zwi¡zku z tym przechodzimy
zazwyczaj na format HSV lub YCbCr. Wi¦cej informacji prosz¦ przeczyta¢
na wikipedii:
http://http://pl.wikipedia.org/wiki/-YCbCr
Przykªad ze Scilaba 1. Format ycbcr w Scilabie (troch¦ niezgodny ze
standardem):
clear ;
stacksize ( "max" ) ;
RGB=imread ( "C: \ U s e r s \ Jacek \AppData\Roaming\ S c i l a b \ s c i l a b − 5 . 3 . 3 \ atoms \SIVP←\0.5.3 − 2\ images \ l e n a . png" ) ;
// RGB=imread ( " l e n a . j p g " ) ;
imshow ( RGB ) ;
YCbCr=rgb2ycbcr ( RGB ) ;
// d a j e c z a r n e
// k o l e j n o s c j e s t tak j a k b y l a RGB
// G odpowiada czarnemu
YCbCr ( : , : , 1 ) = 0 . 5 ;
YCbCr ( : , : , 3 ) = 0 . 5 ;
Y=ycbcr2rgb ( YCbCr ) ;
imshow ( Y ) ;
// w s p o l c z y n n i k B
2
YCbCr=rgb2ycbcr ( RGB ) ;
YCbCr ( : , : , 1 ) = 0 . 5 ;
YCbCr ( : , : , 2 ) = 0 . 5 ;
Cb=ycbcr2rgb ( YCbCr ) ;
imshow ( Cb ) ;
// w s p o l c z y n n i k R
YCbCr=rgb2ycbcr ( RGB ) ;
YCbCr ( : , : , 2 ) = 0 . 5 ;
YCbCr ( : , : , 3 ) = 0 . 5 ;
Cr=ycbcr2rgb ( YCbCr ) ;
imshow ( Cr ) ;
Je»eli ju» mamy zdj¦cie w odcieniach szaro±ci (zakres 0 do 255), to praca
bezkontekstowa (czyli przeksztaªcanie warto±ci piksela bez patrzenia na s¡siednie) jest ªatwa, i najszybciej j¡ dokona¢ za pomoc¡ look-up table (w skrócie
LUT - patrz wykªad Boªdaka, ostatni link w wykªadzie).
2
Elementy statystyki i histogram
Statystyka zajmuje si¦ badaniem danych.
Podstawowe funkcje statystyki
opisowej to ±rednia i mediana, liczone dla danego zestawu danych
(xi )
za
pomoc¡ wzorów
1X
xi ;
n
median(x) = {m : card{i : xi <= m} = card{i : xi ≥ m}}.
mean(x) =
Je»eli próbka ma nieparzyst¡ ilo±¢, to mediana jest wyznaczona jednoznacznie
przy zaªo»eniu, »e ci¡g jest ustawiony rosn¡co, to ±rodkowy element dla
parzystej mo»e by¢ dowolny z przedziaªu mi¦dzy dwoma ±rodkowymi elementami (cz¦sto w zwi¡zku z tym przyjmuje si¦ albo dowolny koniec tego
przedziaªu, albo ±rodek).
Okazuje si¦, »e ltry medianowe s¡ bardzo przydatne do usuwania szumu
ze zdj¦¢.
Z naszego punktu widzenia kluczowe do analizy zdj¦¢ jest poj¦cie histogramu dzielimy zakres który przyjmuje nasza zmienna na równe pudeªka
i zliczamy ile razy wpada do danego pudeªka (najcz¦±ciej jeszcze normalizujemy dziel¡c przez ilo±¢ danych).
Przykªad ze Scilaba 2. Rysowanie histogramu:
3
// h i s t o g r a m na c z t e r y sposoby
clear
stacksize ( "max" ) ;
// r e c z n i e p o l i c z o n y
image=imread ( " l e n a . j p g " ) ;
[ h , w]= s i z e ( image ( : , : , 1 ) ) ;
histR=zeros ( 1 , 2 5 6 ) ;
histG=zeros ( 1 , 2 5 6 ) ;
histB=zeros ( 1 , 2 5 6 ) ;
for y =1: h
for x =1: w
lR=1+double ( image ( y , x , 1 ) ) ; // b i o r e pod uwage r e d
histR ( lR )=histR ( lR ) +1;
lG=1+double ( image ( y , x , 2 ) ) ; // b i o r e pod uwage g r e e n
histG ( lG )=histG ( lG ) +1;
lB=1+double ( image ( y , x , 3 ) ) ; // b i o r e pod uwage b l u e
histB ( lB )=histB ( lB ) +1;
end
end
// bar ( h i s t ) ; // o p c j o n a l n i e
clf ( ) ;
plot ( histR / ( h ∗ w ) , " r " ) ;
plot ( histG / ( h ∗ w ) , "g" ) ;
plot ( histB / ( h ∗ w ) , "b" ) ;
// wbudowana w IDP
global IPD_PATH ;
RGB = ReadImage ( IPD_PATH + "demos\ t e a s e t . png" ) ;
Image = RGB2Gray ( RGB ) ;
figure ( ) ; ShowImage ( Image , "Gray L e v e l Image " ) ;
Histogram = CreateHistogram ( Image , 1 0 ) ;
figure ( ) ; plot ( Histogram ) ;
// wbudowane w SIVP
im = imread ( " l e n a . j p g " ) ;
// r y s u j e h i s t o g r a m d l a k o l o r u z i e l o n e g o
imhist ( im ( : , : , 2 ) , 2 5 6 , 1 , "g" ) ;
Do analizy danych rzeczywistych przydatne jest jeszcze poj¦cie dystry-
buanty, które dla danej warto±ci
element próbki jest
3
r
podaje prawdopodobie«stwo, »e losowy
≤ r.
Podstawowe operacje bezkontekstowe
W momencie gdy mamy zrobiony histogram, mo»emy dokona¢ progowania
(thresholding), w celu zamiany zdj¦cia na czarno-biaªe (czasami potrzebujemy do obróbki mie¢ jednoznaczn¡ gur¦).
Uwaga, do dzielenia histogra-
mu/szukania progu mo»e si¦ przyda¢ komenda
pakietu IPD.
4
CalculateOtsuThreshold
z
Rozszerzanie histogramu jest proste rozszerzamy tak zakres, by zajmowaª caªy przedziaª
0 − 255
(patrz w nast¦pnym przykªadzie).
O rozszerzaniu i wyrównywaniu histogramu prosz¦ doczyta¢ na stronie:
http://atol.am.gdynia.pl/tc/Radzienski/Polepszanie.htm
clear ;
stacksize ( "max" ) ;
RGB=imread ( " l e n a . j p g " ) ;
im=im2double ( RGB ) ;
imshow ( im ) ;
YCbCr=rgb2ycbcr ( RGB ) ;
YCbCr ( : , : , 2 ) =1.6 ∗ ( YCbCr ( : , : , 2 ) − 0.2) ;
Y=ycbcr2rgb ( YCbCr ) ;
imshow ( Y ) ;
Cz¦sto dokonujemy nieliniowych operacji (tak zwana korekcja gamma cz¦sto stosowana do oceny/poprawy jako±ci monitorów). Wtedy najpro±ciej
[0, 1] przy zdj¦ciu, a nast¦pnie warto±¢
γ , patrz
http://en.wikipedia.org/wiki/Gamma_correction
przej±¢ do zakresu
jasno±ci podnie±¢
do pot¦gi
// gamma k o r e k c j a n i e p r z e z Look−up t a b l e
stacksize ( "max" ) ;
len=imread ( " l e n a . j p g " ) ;
im=rgb2gray ( im ) ;
IM=im2double ( im ) ;
imshow ( len ) :
imshow ( IM ) ;
function B=korekta ( A , f )
B=zeros ( A ) ;
for i =1: s i z e ( A , " c " )
for j =1: s i z e ( A , " r " )
end
B ( i , j )=f ( A ( i , j ) ) ;
end
endfunction
function y=ga ( x )
y=x ^ 0 . 5 ;
endfunction
IM2=korekta ( IM , ga ) ;
imshow ( IM2 ) ;
To jest wa»ne, gdy» czªowiek rozró»nia okoªo 30-70 odcieni szarego, a na
5
normalnym zdj¦ciu jest ich 256 w zwi¡zku z tym pomijamy (nie dostrzegamy)
w sposób naturalny pewnych informacji.
UWAGA: je»eli mamy zdj¦cie kolorowe, i chcemy dokona¢ rozszerzenia,
nale»y zmieni¢ na inn¡ konwencj¦ zapisu barw, w której mamy osobno wyró»nion¡
jasno±¢ (i pozostaªe dwie wspóªrz¦dne opisuj¡ce kolor w SIVP to YCbCR
lub ew.
NTSC, w IPD to LAB). I wtedy modykujemy tylko jasno±¢, co
powoduje, »e barwa zostanie zachowana. W przeciwnym razie mo»emy otrzyma¢ sztuczne barwy (typu oletowe niebo), gdy» ka»d¡ warstw¦ R, G, B
by±my modykowali oddzielnie.
Wi¦cej o operacjach bezkontekstowych prosz¦ przeczyta¢ z
pb.bialystok.pl/~boldak/DIP/CPO-W02-v3-50pr.pdf
[do strony 41 wª¡cznie]
6
http://aragorn.