Laboratorium Cyfrowego Przetwarzania Obrazów Ćwiczenie 3 Interpolacja i przekształcenia geometryczne obrazów Opracowali: - dr inż. Beata Leśniak-Plewińska - dr inż. Jakub Żmigrodzki Zakład Inżynierii Biomedycznej, Instytut Metrologii i Inżynierii Biomedycznej, Wydział Mechatroniki Politechniki Warszawskiej. Warszawa, 2015
1. Cel ćwiczenia. W ramach ćwiczenia studenci zapoznają się z podstawowymi metodami interpolacji obrazów (dwuliniową, dwusześcienną i metodą najbliższego sąsiada) oraz histogramem obrazów. 2. Wymagane wiadomości Teoria histogramu obrazu i jego wyrównywania oraz metod interpolacji obrazu w zakresie wykładu do przedmiotu. 3. Literatura 1. Notatki z wykładu 2. R. Tadeusiewicz i P. Korohoda "Komputerowa analiza i przetwarzanie obrazów", Wydawnictwo Fundacji Postępu Telekomunikacji, Kraków, 1997 (http://winntbg.bg.agh.edu.pl/skrypty2/0098/komputerowa_analiza.pdf) 3. R.C. Gonzalez i R.E. Woods "Digital Image Processing Using MATLAB", Prentice Hall, 2004 Ćwiczenie 3 - Interpolacja i przekształcenia geometryczne obrazów 2/9
4. Spis (niestandardowych) funkcji Matlab'a przydatnych podczas realizacji ćwiczenia. h = pokaz_obraz (X, 'NazwaParametru', WartoscParametru) Funkcja służy do tworzenia ilustracji danych 2D. Parametrami wyjściowymi funkcji są: h uchwyt do obiektu graficznego, Parametrami wejściowymi funkcji są: X dane obrazowe (macierz), 'NazwaParametru', WartoscParametru - nazwa i wartość parametru określającego wybrane właściwości obiektu graficznego. Parametry opisano w poniższej tabeli. Nazwa parametru 'mapa' 'typ' Opis i wartości parametru macierz liczbowa określająca paletę barw; standardowe palety barw dostępne w MATLAB'ie: hsv, jet, hot, gray, cool, bone, copper, pink, prism, flag. Wartość domyślna: gray; Łańcuch znakowy określający czy dane wejściowe zostaną przeskalowane przed wyświetleniem: 'skalowany' - tworzy ilustrację, w której wartości pixeli obrazu (elementów macierzy) są przeskalowane tak, aby wykorzystać pełen zakres aktualnej palety barw; 'nieskalowany' - brak skalowania. Wartość domyślna: 'skalowany' Przykłady: h = pokaz_obraz(lena, 'mapa', gray, 'typ', 'nieskalowany'); Powyższe polecenie utworzy ilustrację 2D danych zawartych w zmiennej lena. Paletą barw będą odcienie szarości. Dane nie będą skalowane. Ponadto polecenie zwróci uchwyt do utworzonego obiektu graficznego (ilustracji) i przypisze go zmiennej h. pokaz_obraz(lena); Powyższe polecenie utworzy ilustrację 2D danych zawartych w zmiennej lena. Paleta barw i rodzaj skalowania będą miały wartości domyślne. Ćwiczenie 3 - Interpolacja i przekształcenia geometryczne obrazów 3/9
E= mse (X,XI) Funkcja służy do wyznaczania błędu średnio-kwadratowego określonego wzorem: E= 1 m 1 n i=1 m n j=1 X ij XI ij 2 gdzie: X ij - element obrazu wzorcowego, XI ij - element obrazu przetworzonego, m i n wymiary obrazów. Parametrami wyjściowymi funkcji są: E błąd średnio-kwadratowy Parametrami wejściowymi funkcji są: X macierz reprezentująca obraz wzorcowy, XI - macierz reprezentująca obraz przetworzony. Wymiary obrazów (liczba wierszy i kolumn) X i XI muszą być identyczne. Przykłady: E = mse(x,xi); Powyższa komenda wyznaczy błąd średnio-kwadratowy dla obrazu przetworzonego zawartego w zmiennej XI w porównaniu do obrazu wzorcowego X. Ćwiczenie 3 - Interpolacja i przekształcenia geometryczne obrazów 4/9
Z = przeksztalc_obraz (X, 'NazwaParametru', WartoscParametru) Funkcja służy do wykonywania wybranych przekształceń geometrycznych obrazu. Parametrami wyjściowymi funkcji są: Z dane 2D (macierz) będące wynikiem transformacji geometrycznej, Parametrami wejściowymi funkcji są: X dane wejściowe 2D (macierz), dla których wykonywana jest transformacja geometryczna 'NazwaParametru', WartoscParametru - nazwa i wartość parametru określającego sposób realizacji przekształcenia. Parametry opisano w poniższej tabeli. 'typ' Nazwa parametru Opis i wartości parametru Łańcuch znakowy określający rodzaj transformacji geometrycznych: 'translacja' - translacja 'obrot' - obrót 'skalowanie'- skalowanie Powyższe transformacje wykonywane są z wykorzystaniem operacji opisanych układami równań dla współrzędnych punktów obrazu (Tabela 1) 'wymiar' 'Tform' - transformacja geometryczna opisana za pomocą macierzy T (Tabela 1). Transformacja wykonywana jest z wykorzystaniem rachunku macierzowego, a przekształcenie określone jest za pomocą macierzy T (Tabela 1) Macierz określająca wymiary transformacji. W przypadku transformacji wykorzystujących układy równań współrzędnych ('typ' = 'translacja', 'obrot' lub 'skalowanie') wartość parametru 'wymiar' jest wektorem trójelementowym o postaci: T = [tx ty 0] - translacja o wektor o składowych t x (oś x) i t y (oś y) (wartości składowych tx i ty wektora w pikselach) T = [0 0 α] - obrót o kąt α (wartość kąta w radianach) T = [sx sy 0] - skalowanie o czynnik sx dla osi x i sy dla osi y 'kierunek' W przypadku transformacji wykorzystujących rachunek macierzowy ('typ' = 'Tform') wartość parametru 'wymiar' jest macierzą T w odpowiedniej postaci (Tabela 1). Łańcuch znakowy określający kierunek transformacji. W przypadku transformacji wykorzystujących układy równań współrzędnych ('typ' = 'translacja', 'obrot' lub 'skalowanie'): 'wprost' - element o współrzędnych (v,w) w obrazie pierwotnym jest Ćwiczenie 3 - Interpolacja i przekształcenia geometryczne obrazów 5/9
kopiowany do elementu o współrzędnych (x,y) w obrazie wynikowym; wartości współrzędnych (x,y) wynikają z układu równań opisujących zastosowane przekształcenie; 'odwrotny' - do piksela o współrzędnych (x,y) w obrazie wynikowym kopiowany jest piksel o współrzędnych (v,w) z obrazu pierwotnego; wartości współrzędnych (v,w) wynikają z układu równań opisujących zastosowane przekształcenie odwrotne. W przypadku, gdy typ transformacji określony jest jako 'Tform', kierunek transformacji jest zawsze odwrotny, niezależnie od podanej wartości parametru 'kierunek'. Tabela 1. Wybrane przekształcenia geometryczne obrazu Przekształcenie Macierz T Układ równań współrzędnych punktów translacja (wartości składowych wektora tx i ty w punktach) T=[ 1 0 0 1] x=v t x 0 1 0 y=w t tx ty =[ x cos sin 0 1] x=v cos α w sin α obrót o kąt α T sin cos 0 y=v sin α w cos α 0 0 x 0 0 Skalowanie T=[s 1] x=s x v 0 s y 0 y=s y w 0 0 Przykłady: Z = przeksztalc_obraz(x,'typ','translacja','wymiar',[5.5 11 0],... 'kierunek','wprost'); Powyższe polecenie wykona operację translacji obrazu X o wektor o składowych tx=5.5, ty=11, współrzędne obrazu wejściowego zostaną wprost przekształcone na współrzędne obrazu wynikowego z wykorzystaniem równań opisujących przekształcenie (translację). tform = [1 0 0; 0 1 0; 5.5 11 1]; Z = przeksztalc_obraz(x,'typ','tform','wymiar',tform); Powyższe polecenie wykona operację translacji obrazu X o wektor tx=5.5, ty=11, z wykorzystaniem rachunku macierzowego. Ćwiczenie 3 - Interpolacja i przekształcenia geometryczne obrazów 6/9
4. Przebieg ćwiczenia Przed przystąpieniem do realizacji ćwiczenia należy poprosić prowadzącego o wskazanie folderu zawierającego dane niezbędne do realizacji ćwiczenia. Oznaczenia użyte w tekście: (sygnal) nazwa funkcji, która powinna zostać użyta w celu rozwiązania danego problemu, s1 nazwa zmiennej, s1a=s1(1:end/4) polecenie MATLAB'a, które należy wpisać w okno komend (ang.: command window). s t = A sin 2 f t - opis w notacji matematycznej. 1. Interpolacja. a) Z plików 'kidneys.bmp', 'kidneys_ds2.mat', 'kidneys_ds4.mat' i 'kidneys_ds8.mat' załaduj do przestrzeni roboczej obraz kidneys, oraz obrazy: kidneys_ds2, kidneys_ds4 i kidneys_ds8. Trzy ostatnie obrazy są wynikiem odpowiednio 2-, 4- i 8-mio krotnej decymacji ( podpróbkowania ) obrazu kidneys. b) Wyświetl obrazy: kidneys, kidneys_ds2, kidneys_ds4 i kidneys_ds8 (pokaz_obraz, domyślne wartości parametrów: 'typ' i 'mapa'). c) Przywróć pierwotny rozmiar każdemu ze zdecymowanych obrazów stosując kolejno trzy rodzaje interpolacji: dwuliniową (ang. bilinear), dwusześcienną (ang. bicubic) i metodę najbliższego sąsiada (ang. nearest neighbour) (imresize standardowa funkcja biblioteki Image Processing pakietu MATLAB). d) Wyświetl obrazy po zmianie rozmiaru dla każdej z metod interpolacji (pokaz_obraz, domyślne wartości parametrów: 'typ' i 'mapa') i porównaj z obrazem kidneys. e) Dla każdej metody interpolacji oceń dokładność operacji zmiany rozmiaru obrazu stosując jako kryterium błąd średnio-kwadratowy (mse). f) Wyniki przedstaw jako wykres błędu średnio-kwadratowego w funkcji krotności interpolacji (plot). Która z zastosowanych metod interpolacji jest najdokładniejsza i dlaczego? Od czego zależy dokładność metody interpolacji? g) Oceń szybkość każdej z trzech metod metod interpolacji dwuliniowej, dwusześciennej i metody najbliższego sąsiada. W tym celu dla obrazu kidneys wykonaj kolejno jego powiększenie dla krotności powiększenia (interpolacji) równych: 2,4,6,,30 (2:2:30) oraz dla trzech metod interpolacji: dwuliniowej, dwusześciennej i metody najbliższego sąsiada (pętla for, instrukcje: tic toc, funkcja imresize). h) Wyniki przedstaw jako wykres czasu wyznaczania powiększonego obrazu względem krotności jego powiększenia (interpolacji) (plot). Ćwiczenie 3 - Interpolacja i przekształcenia geometryczne obrazów 7/9
Która z zastosowanych metod interpolacji jest najszybsza i dlaczego? 1. Przekształcenia geometryczne. a) Z pliku 'simpson256.bmp' załaduj do przestrzeni roboczej obraz simpson. b) Wyświetl obraz simpson (pokaz_obraz, domyślne wartości parametrów: 'typ' i 'mapa'). c) Wykonaj trzy przekształcenia geometryczne obrazu simpson dla parametru 'kierunek' o wartości 'wprost' i dla następujących parametrów przekształcenia (parametry: 'typ' i 'wymiar'): translację o wektor o składowych tx=55.5 i ty=111 ('typ' = 'translacja'), obrót o kąt α = -30 ('typ' = 'obrot') skalowanie ze skalą o składowych sx=2 i sy=1.5 ('typ' = 'skalowanie'). d) Zilustruj wyniki przekształceń (pokaz_obraz, domyślne wartości parametrów: 'typ' i 'mapa'). e) Powtórz przekształcenia geometryczne obrazu simpson z p.p. c) dla parametru 'kierunek' o wartości 'odwrotne' (pozostałe parametry bez zmian). f) Zilustruj wyniki poszczególnych przekształceń (pokaz_obraz, domyślne wartości parametrów: 'typ' i 'mapa'). Dla jakiej wartości parametru 'kierunek' po przekształceniu geometrycznym uzyskujemy jakościowo lepsze obrazy i dlaczego (p. 1.c) i 1.e) )? 2. Zadanie g) Powtórz przekształcenia geometryczne obrazu simpson z p.p. c) dla parametru 'typ' o wartości 'Tform' (domyślna wartość parametru 'kierunek'). h) Zilustruj wyniki przekształceń (pokaz_obraz, domyślne wartości parametrów: 'typ' i 'mapa'). a) Porównaj czas realizacji przekształceń geometrycznych stosujących: składanie przekształceń prostych ('typ' = 'Tform') oraz przekształcenie złożone ('typ' = 'Tform'). Test przeprowadź dla 100-krotnej translacji obrazu simpson o wektor tx=1 (pętla for, instrukcje tic toc). b) Zilustruj wyniki p.p. a) (pokaz_obraz, domyślne wartości parametrów: 'typ' i 'mapa'). Wyjaśnij dlaczego uzyskane czasy realizacji przekształceń są różne? Ćwiczenie 3 - Interpolacja i przekształcenia geometryczne obrazów 8/9
Sprawozdanie Ćwiczenie 3 Interpolacja i przekształcenia geometryczne obrazów L.p. Imię i nazwisko Grupa Data wykonania 1 2 3 Punkt ćwiczenia Liczba punktów do uzyskania Uzyskana liczba punktów Uwagi prowadzącego 1 4 2 4 3 2 Ćwiczenie 3 - Interpolacja i przekształcenia geometryczne obrazów 9/9