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