WYDZIAŁ FIZYKI I INFORMATYKI STOSOWANEJ Hybrid Images Imię i nazwisko: Anna Konieczna Kierunek studiów: Informatyka Stosowana Rok studiów: 4 Przedmiot: Analiza i Przetwarzanie Obrazów Prowadzący przedmiot: dr hab. inż. Jacek Tarasiuk dr inż. Mariusz Jędrychowski Kraków 2015
1. Wstęp Celem tego projektu było utworzenie programu wytwarzający efekt Hybrid Image. Otrzymany efekt miał na celu pokazad, że obraz może byd postrzegany na dwa różne sposoby w zależności od odległości obserwacji. 2. Opis projektu Zagadnieniem poruszanym w ramach projektu jest odpowiedź na pytanie, w jaki sposób nasze oko postrzega dany obraz z bliska, a jak z odległości. Dobrym narzędziem do wytłumaczenia tego problemu jest wykorzystanie szybkiej transformaty Fouriera. Transformata Fouriera pozwala na odmienne podejście do zagadnienia filtracji obrazu niż w przypadku filtracji w układzie przestrzennym. Jest to spowodowane poruszaniem się w dziedzinie częstotliwości i niesie za sobą wiele korzyści. Jedną z nich jest łatwośd realizacji splotu funkcji. Operacja ta sprowadza się do pomnożenia dwóch funkcji. Reprezentacja częstotliwości składowych obrazu przedstawia się tak, że środek obrazu zajmują niskie częstotliwości, a obrzeża składają się na wysokie częstotliwości. Warunkiem pozwalającym na doprowadzenie do zaobserwowania zjawiska hybrid image jest by jeden obraz był rozmyty, a drugi miał widoczne krawędzie. Analizując częstotliwościową reprezentacje składowych obrazów należy na jeden z nich nałożyd filtr dolnoprzepustowy, zaś na drugi filtr górnoprzepustowy. Filtr dolnoprzepustowy usuwa z obrazu częstotliwości wysokie, pozostawiając bez zmian niskie. Co w efekcie po odwróceniu widma transformat Fouriera rozmyje obraz. Filtr górnoprzepustowy działa odwrotnie do dolnoprzepustowego, czyli usuwa z obrazu częstotliwości niskie, pozostawiając bez zmian wysokie. Do powyżej wspomnianych filtrów wykorzystano filtr Gaussa reprezentowanego przez wzór: f i, j = e (i a)2 +(j b) 2 2σ 2 Gdzie (a,b) to punkt centralny obrazu, a σ kontroluje zasięg filtracji. 2
Jeżeli chcemy pozbyd się wysokiej częstotliwości należy przemnożyd współczynniki Fouriera bezpośrednio z wartościami filtru, a w przypadku filtru górnoprzepustowego mnożymy przez 1-f(i,j). Tak więc plan działania programu jest następujący: Wybranie zdjęd: Obraz 1- zdjęcie Einstaina przed zmianami Obraz 2 - zdjęcie Marilyn przed zmianami Obliczanie jego częstotliwościową reprezentacje: Obraz 3 - widmo wygenerowane z obrazu Einstaina Obraz 4 - widmo wygenerowane z obrazu Marilyn 3
Modyfikacja widma: Obraz 5 - widmo po modyfikacji Obraz 6 - widmo po modyfikacji Rekonstrukcja obrazu: Obraz 7 - Zdjęcie Einstaina po zastosowaniu filtru górnoprzepustowego Obraz 8 - Zdjęcie Marilyn po zastosowaniu filtru dolnoprzepustowego 4
Połączenie obu obrazów poprzez sumowanie ich jasności: Obraz 9 - Koocowy efekt widziany z bliska i z oddali Również zadowalający efekt pod względem technicznym można uzyskad, gdy zdjęcie Einstaina zostanie poddane filtrowi dolnoprzepustowemu a Merilyn filtrem górnoprzepustowym. 5
Obraz 10 - Koocowy efekt widziany z bliska i oddali 3. Ograniczenia W programie tym na wstępie każde zdjęcie przechodzi konwersje do 8 bitów. Co prawda dla kolorowych zdjęd przeprowadzimy filtracje, lecz koocowy efekt będzie w odcieniach szarości. Ponadto program nie działa poprawnie, gdy zdjęcia są prostokątne, dlatego zalecane jest wczytywanie obrazów o kwadratowym kształcie. Przy obrazach lekko odbiegających od kwadratowego kształtu tworzyły się przesunięcia na filtrach. Niestety nie potrafiłam zniwelowad tego błędu. 4. Program Program został napisany w środowisku NetBeans 8.0.2 w języku Java z wykorzystaniem programu ImageJ. Na starcie otwiera się okno dialogowe pobierające wartośd sigm dla każdego filtru osobno. 6
Obraz 11 - Widok startu programu Ponadto możemy modyfikowad adresem zdjęd jakie chcemy poddad efektowi Hybrid Images. Po naciśnięciu ok. generują się wszystkie zdjęcia wspomniane w punkcie 2. Projekt składa się z dwóch plików: Process_Pixels.java klasa z funkcja main. Ponadto otwiera program ImageJ HybridImage.java klasa definiująca działanie całego projektu Najlepszy efekt wychodzi, gdy jako Sigma highpass ustawimy 10, a za Sigma lowpass ustawimy 20. 5. Inny przykład Działanie programu zostało też przetestowane na podstawie całkiem innych zdjęd. Ciężko jest znaleźd lub stworzyd zdjęcia, które by oddawały ten sam efekt jak przy połączeniu Einstaina i Marilyn. Po połączeniu następujących zdjęd: 7
Obraz 12 - własne zdjęcie przypadkowo ułożonych słuchawek Obraz 13 - zdjęcie maskotki angrybirds 8
Otrzymujemy następujący efekt: Obraz 14 - Efekt koocowy nowych zdjęd Co technicznie niby sprawdza się jako efekt hybrid images, ale pod względem estetycznym nie wypada zbyt dobrze. 6. Podsumowanie Projekt pokazał jak szybko i skutecznie rozmyd obraz lub wykryd jego wszystkie krawędzie za pomocą szybkiej transformaty Fouriera. Jednak dużym problemem w tym projekcie jest dobranie odpowiednich zdjęd do danych przekształceo. Za każdym razem uzyskamy iluzje optyczną, ale nie tak dobrą jak w przypadku obrazu 9. Najlepszy efekt uzyska się, gdy zdjęcia zostaną zrobione w podobnych warunkach i ich punkty charakterystyczne typu położenia oczu, czubka nosa i ust pokrywają się. Efekt hybrid images nie jest tylko sztuczką iluzyjną, ale może byd stosowana do odkrycia wady wzroku. 9
7. Bibliografia http://jeremykun.com/2014/09/29/hybrid-images/ http://atol.am.gdynia.pl/tc/radzienski/fourier2.htm http://etacar.put.poznan.pl/marcin.kielczewski/swwr5.pdf 10