Transformacje skali szarości obrazów - WEMiF

Transkrypt

Transformacje skali szarości obrazów - WEMiF
Politechnika Wrocławska
Wydział Elektroniki Mikrosystemów i Fotoniki
Przetwarzanie sygnałów – laboratorium
ETD5067L
Ćwiczenie 6.
Transformacje skali szarości obrazów
1. Obraz cyfrowy
Obraz w postaci cyfrowej najczęściej jest zapisywany jako dwuwymiarowa tablica liczb.
Każdy element tej tablicy odpowiada za stopień jasności punktu o współrzędnych, będących
numerem wiersza i kolumny, w których znajduje się punkt obrazu. Obrazy jednobarwne mają
dokładnie jeden stopień jasności przypadający na dany punkt obrazu, natomiast obrazy kolorowe
najczęściej mają trzy stopnie jasności, po jednym na każdą składową: R (czerwoną), B (niebieską)
i G (zieloną). Wymienione barwy są tzw. barwami podstawowymi i można z ich pomocą uzyskać
dowolny kolor. Ponieważ dla obrazów kolorowych na pojedynczy punkt przypadają trzy wartości,
często można je traktować jako trzy dwuwymiarowe tablice liczb, po jednej dla każdej barwy
podstawowej. Na zajęciach będziemy zajmowali się obrazami jednobarwnymi, ponieważ obrazy te
częściej wykorzystywane są w przemyśle czy diagnostyce medycznej. Na zajęciach obraz będzie
dwuwymiarową tablicą liczb rzeczywistych z przedziału od 0 do 1 i będzie wczytywany z pliku
o nazwie data.pic za pomocą polecenia load sciezka\dostepu\data.pic. Po wykonaniu tego
polecenia w środowisku Octave pojawi się zmienna o nazwie sat, w której będzie znajdował się
obraz do przetworzenia. Obraz można wyświetlić za pomocą polecenia imshow(sat).
2. Korekcja jasności obrazu
Korekcja jasności obrazu polega na zwiększeniu lub zmniejszeniu wartości każdego punktu
obrazu o stałą wartość. W przypadku gdy jasność punktu przekracza wartość maksymalną, czyli
w naszym przypadku 1, należy przypisać jej wartość maksymalną (czyli w naszym przypadku 1).
Jeżeli wartość punktu jest mniejsza niż wartość minimalna, w naszym przypadku 0, należy zmienić
ją na wartość minimalną (czyli 0). Poniżej na rys. 1 przedstawiono przykłady rozjaśniania
i przyciemnienia obrazu. Wykresy przedstawiają kształt funkcji modyfikującej wartość jasności,
natomiast na obrazach widać, jak taka korekcja działa.
1
a)
b)
c)
Rys. 1. Modyfikacje jasności obrazów: a) obraz oryginalny, b) rozjaśniony, c) przyciemniony
2
3. Korekcja kontrastu
Kontrast w obrazach jest zdefiniowany jako stopień rozróżniania przez obserwatora
poszczególnych elementów obrazu. Zgodnie z tą definicją obraz o najmniejszym kontraście to
obraz, w którym wszystkie punkty mają taką samą jasność. Natomiast obraz o największym
kontraście to obraz składający się punktów o jasnościach albo maksymalnej (w naszym przypadku
1) albo minimalnej (w naszym przypadku 0). Kontrast obrazu modyfikuje się przez zmianę skali
(współczynnika kierunkowego prostej). Matematycznie należy wykonać operację mnożenia
jasności punktu przez stałą wartość, a potem przyciąć wynik do wartości minimalnej
i maksymalnej. Zwiększenie kontrastu otrzymuje się przez przemnożenie jasności punktów obrazu
przez liczbę większą o 1. Zmniejszenie kontrastu otrzymuje się natomiast przez przemnożenie
jasności punktów przez liczbę mniejszą od 1. Na rys. 2 widać, jak wygląda funkcja modyfikująca
kontrast oraz jaki ma ona wpływ na przetwarzany obraz.
4. Wyrównywanie histogramu
W przypadku niektórych obrazów można ustawić odpowiednią jasność i kontrast w sposób
automatyczny. Procedura ta nazywa się wyrównywaniem histogramu. Wyrównywaniem, gdyż po
jej wykonaniu otrzymuje się obraz o jednostajnym rozkładzie jasności punktów. Oznacza to,
że jeżeli podzielimy przedział jasności punktu na równe podprzedziały, to w każdym podprzedziale
będzie w przybliżeniu jednakowa liczba punktów. Procedura wyrównywania histogramu
rozpoczyna się od obliczenia histogramu jasności punktów. Następnie histogram należy
przekształcić na dystrybuantę empiryczną jasności punktów w obrazie za pomocą równania
i
∑ hi
Di = k =1
N
∑ hi
dla i=1, 2,, N
,
i =1
w którym Di jest i-tą wartością dystrybuanty, hi jest wysokością i-tego słupka histogramu, a N jest
liczbą słupków w histogramie. Jeżeli teraz obraz poddamy transformacji jasności i funkcja
transformująca będzie dystrybuantą jego jasności, to po przekształceniu za pomocą tej funkcji
otrzymamy obraz, którego histogram będzie przypominał funkcję stałą.
Rys. 3 przedstawia histogram jasności obrazu i dystrybuantę oraz obraz przekształcony
za pomocą tej dystrybuanty wraz z nowym histogramem.
Istnieje wersja operacji wyrównywania histogramu, która dla każdego punktu oblicza
transformację jasności na podstawie jego otoczenia. A więc operacja ta wyznacza histogram
w otoczeniu punktu, następnie przekształca go na dystrybuantę i wykorzystuje lokalną dystrybuantę
do transformacji jasności tego punktu. Operacja taka nazywana jest lokalnym wyrównywaniem
histogramu i znajduje zastosowanie w przetwarzaniu zdjęć rentgenowskich.
3
a)
b)
c)
Rys. 2. Modyfikacja kontrastu: a) obraz oryginalny, b) obraz ze zwiększonym kontrastem, c) obraz
ze zmniejszonym kontrastem
4
a)
b)
c)
Rys. 3. Wyrównywanie histogramu: a) obraz oryginalny i jego histogram, b) obraz przetworzony
i funkcja transformacji jasności będąca dystrybuantą jasności oryginalnego obrazu, c) obraz
przetworzony i jego histogram
5
Zadania do realizacji na zajęciach
Na zajęciach student powinien opracować i zaimplementować niżej wymienione funkcje.
Dodatkowo do każdej funkcji, musi być napisanych skrypt, który prezentuje i testuje działanie tej
funkcji. Obrazek testowy (plik data.pic) jest do pobrania ze strony internetowej.
Zadanie nr 1
W zadaniu pierwszym należy napisać funkcję w postaci
function Y=brightness(X,b)
#definicja ciała funkcji
endfunction
która będzie zmniejszać lub zwiększać – w zależności od tego, czy b będzie dodatnie czy
ujemne – jasność obrazu X o b.
Zadanie nr 2
W zadaniu drugim należy napisać funkcję w postaci
function Y=contrast(X,c)
#ciało funkcji
endfunction
która będzie zwiększała lub zmniejszała – w zależności od tego, czy c będzie większe od 1
czy mniejsze od 1 – kontrast obrazu X. Parametr c określa skalę kontrastu.
Zadanie nr 3
W zadaniu trzecim należy napisać funkcję w postaci
function H=ImHist(X,N)
#definicja ciała funkcji
endfunction
która zwraca histogram jasności obrazu H, w której parametr N określa liczbę słupków
w histogramie.
6
Zadanie nr 4
W zadaniu czwartym należy napisać funkcję w postaci
function D=EmpDist(H,N)
#definicja ciała funkcji
endfunction
która oblicza dystrybuantę empiryczną D na podstawie histogramu H.
Zadanie nr 5
W zadaniu piątym należy napisać funkcję w postaci
function Y=EqHist(X,D)
#definicja ciała funkcji
endfunction
która wyrównuje histogram obrazu X, wykorzystując dystrybuantę D.
Pytania na kartkówkę
1.
2.
3.
4.
5.
6.
Napisać funkcję brigtness.
Napisać funkcję contrast.
Napisać funkcję ImHist.
Napisać funkcję EmpDist.
Napisać w jaki sposób wyrównuje się histogram obrazu.
Napisać w jaki sposób wyrównuje się lokalnie histogram obrazu.
7