IV ROK GIK. PRZEDMIOT: CYFROWE PRZETWARZANIE OBRAZU ‐ ĆWICZENIA
wersja 140414
CPO ‐ ćw.4. Zmiana geometrii obrazów ‐ dr inż. Sławomir Mikrut
Ćwiczenie_4. Zmiana geometrii obrazów
• Cel tematu
Celem ćwiczenia jest zapoznanie się studentów z zagadnieniem zmiany geometrii obrazów
cyfrowych oraz metodami interpolacji.
• Dane do ćwiczeń
Na ćwiczeniach korzystamy z danych (plik: test_4.jpg) zlokalizowanych :
‐ na stronie
http://fotogrametria.agh.edu.pl/wiki/bin/view/Dydaktyka/CPOMaterSt
• Przebieg ćwiczeń
1. Część teoretyczna
1.1 Zmiana geometrii obrazu
Zmiana geometrii obrazu ma na celu zastąpienie obrazu wejściowego (pierwotnego), nowym –
wyjściowym (wtórnym) wyliczając pozycje pikseli na podstawie zadanej funkcji matematycznej.
Ponieważ rozmiar obrazu wyjściowego może być inny niż wejściowego, zmieniamy zatem jego
geometrie. Odbywa się to poprzez zastosowanie wybranej transformacji. Najczęściej
wykorzystywane w geodezji i kartografii transformacje to: Helmerta, afiniczna, biliniowa, rzutowa
czy wielomianowa. Swoje zastosowanie praktyczne ma najczęściej w procesie kalibracji podkładów
mapowych, wykonywaną w oparciu o punkty o znanych współrzędnych (punkty osnowy,
szczegółów sytuacyjnych, siatka krzyży itp. ). Podstawowymi elementami transformacji są:
‐ zmiana skali (może być jednakowa dla całego obrazu, ale nie musi),
‐ obrót wokół dowolnego punktu,
‐ przesunięcie.
Przy zmianie geometrii obrazu zachodzi konieczność wyliczenia jasności pikseli dla nowego obrazu.
Istnieje kilka metod interpolacji wartości jasności pikseli z obrazu pierwotnego na wtórny. Do
najpopularniejszych należy zaliczyć: najbliższego sąsiada (ang. nearest), bilingową (ang. bilinear),
bikubiczną (ang. bicubic). Wspomniany proces nazywany jest również przepróbowaniem (ang.
resamplingiem) obrazu cyfrowego.
IV ROK GIK. PRZEDMIOT: CYFROWE PRZETWARZANIE OBRAZU ‐ ĆWICZENIA
wersja 140414
CPO ‐ ćw.4. Zmiana geometrii obrazów ‐ dr inż. Sławomir Mikrut
2. Część praktyczna
2.1
Zmiana skali obrazu
Do zmiany skali obrazu służy funkcja imresize wywoływana przy pomocy różnych parametrów.
Do zmiany skali, jednakowej dla całego obrazu można wykorzystać parametr skale lub podać ile
wierszy i kolumn ma mieć nowy obraz. Można również podać metodę interpolacji pikseli
wyliczonych dla nowego obrazu:
Imresize(image, scale);
Imresize(image, [numrow numcol]);
Imresize(image, [numrow numcol], method);
Można również dokonywać resamplingu obrazu przy pomocy różnych parametrów (np.
antialiasing). Wówczas wywołanie ma postać:
Imresize(image, scale, method, parameter, value);
2.2 Obrót
Obraz wejściowy można poddawać zmianom dzięki funkcji:
Imrotate(images, angle, method, bbox);
Gdzie parametry opisane są następująco (podkreślono wartości przyjmowane default‐owo przez
program):
‐ angle: kąt obrotu podany w stopniach i liczony odwrotnie do ruchu wskazówek zegara,
‐ method: metoda interpolacji: nearest (najbliższego sąsiada), bilinear (biliniowa), bicubic
(bikubiczna),
‐ bbox: z wartościami: crop (przycięty do wielkości obrazu wejściowego), loose (pozostawienie
rozmiaru),
2.3 Przesunięcie
W Matlabie operacja przesunięcia obrazu jest wykonywana poprzez dodanie sztucznie wierszy i
kolumn do macierzy obrazu. Jeśli przyjmiemy, że:
I1
– obraz wejściowy o „r” ‐ wierszach i „c”‐ kolumnach [r1, c1] ,
I2
– obraz wyjściowy [r2, c2],
IV ROK GIK. PRZEDMIOT: CYFROWE PRZETWARZANIE OBRAZU ‐ ĆWICZENIA
wersja 140414
CPO ‐ ćw.4. Zmiana geometrii obrazów ‐ dr inż. Sławomir Mikrut
wektor przesunięcia‐ [r0, c0],
to jeśli [r1, c1] = size (L1); wówczas obraz I2 będzie zdefiniowany:
I2=[zeros([r1 c0]), L1; zeros([r0 (c0+c1)])];
Przesunięcie obrazu można również wykonać przy pomocy funkcji translate(SE,V),
gdzie SE jest tablicą elementów strukturalnych tworzonych przy pomocy funkcji
strel(shapes, parameters),
V – jest n ‐ elementowym wektorem mówiącym o
wielkości przesunięcia. Stosując funkcję imdilate(image, SE).
Funkcję tą wykorzystuje się wówczas, gdy chcemy przesunąć obraz z zachowaniem tej samej
rozdzielczości (wielkość obrazu wejściowego i wyjściowego jest taka sama). Poprzedni przykład
(otrzymany obraz I2), przesunął obraz, ale niejako zmienił też jego rozdzielczość (do obrazu
wejściowego dodał tablice o powierzchni zdefiniowanej przez wektory przesunięcia, co
powiększyło obraz wejściowy).
Aby przesunąć obraz I1 o wektor [r0,c0], należy wykonać funkcje:
SE = translate (strel(1), [r0 c0]);
‐ definiowanie element strukturalnego;
I3 = imdilate(I1, SE)
– rozszerzenie obrazu I1 o wektor zdefiniowany w SE.
Proszę spróbować wykonać przesunięcie dowolnego obrazu oboma metodami.
2.4 Inne funkcje przydatne przy zmianie geometrii obrazów
‐ odbicie symetryczne obrazów (funkcje: fliplr(image) oraz flipud(image));
‐ zniekształcenia obrazu (funkcja: reshape(image, rows, columns));
‐ maketform, imtransform (z parametrami: ‘affine’, ‘projective’, ’polynomial’),
IV ROK GIK. PRZEDMIOT: CYFROWE PRZETWARZANIE OBRAZU ‐ ĆWICZENIA
wersja 140414
CPO ‐ ćw.4. Zmiana geometrii obrazów ‐ dr inż. Sławomir Mikrut
Zadanie
Każdy student oblicza swój numer n jako sumę ng (numer grupy) i ns (nr studenta w grupie),
czyli n = ng + ns.
1. Wczytać obraz test_4.jpg.
2. Sprawdzić jego wymiar (ile wierszy a ile kolumn i przypisać zmienne odpowiednio r i c ).
3. Utworzyć nowy obraz (I2), którego narożniki będą miały współrzędne r+n, c +n, poprzez
zmianę skali obrazu. Wykorzystać parametr antialiasing oraz bez tego parametru.
Obrazy porównać i wyciągnąć wnioski. Sprawdzić wielkość nowego obrazu.
4. Następnie obrócić obraz w kierunku zgodnym z ruchem wskazówek zegara o kąt
alfa =30 gradów + n (uwaga na jednostki !). Obrócony obraz (I3) „dociąć” do wymiaru
obrazu wejściowego (r+n i c+n).
5. Dokonując obrotu skorzystać z wszystkich 3 dostępnych metod interpolacji (I3,I4,I5).
6. Zapisać każdy obraz osobno i przeanalizować jaki wpływ ma rodzaj metody interpolacji.
Wyciągnąć wnioski.
7. Wykonać profil dla każdego obrazu po przekątnej i przeanalizować różnice.
8. Zapisać wszystkie 3 obrazy w jednym pliku (I6) umiejscawiając je jeden obok drugiego.
Sprawdzić wielkość nowego pliku.
9. Przesunąć obraz o wektor 100+n, 100+n (I7).
10. Przesunąć obraz o wektor 100+n, 100+n, ale umieścić obraz wejściowy w lewym górnym
rogu obrazu wyjściowego (I8). Przesunięcie wykonać zwiększając wielkość obrazu
wejściowego (I2) oraz zachowując rozdzielczość obrazu wejściowego (imdilate) .
Oznaczyć jako(I9). Obrazy wyświetlić, porównać. Sprawdzić rozmiary.
11. Dokonać odbicia obrazu symetrycznie względem osi pionowej i poziomej.
12. Zrobić ramkę dookoła obrazu wejściowego test_4.jpg (I1) o szerokości n z każdej strony.
13. Rozpoznać działanie funkcji maketform, imtransform przy różnych parametrach na
przykładach.
14. Wypuścić plik tekstowy o swoim nazwisku, nr ćw. i rozszerzeniu *.txt (np. Nowak_4.txt), w
którym należy podać swój numer n, oraz wyliczony wymiar obrazu (I2) ‐ pkt.3 zadania.
Plik należy uzupełnić swoimi wnioskami wynikającymi z pkt. 3, 6 i 13.
15. Wyniki pokazać prowadzącemu.