SlideShare ist ein Scribd-Unternehmen logo
1 von 90
<br />Spis treści TOC  quot;
1-5quot;
    1Wstęp PAGEREF _Toc208215386  42Przegląd literatury PAGEREF _Toc208215387  63Projekt aplikacji PAGEREF _Toc208215388  234Wykorzystane algorytmy i metody PAGEREF _Toc208215389  274.1Algorytmy ustawiające obrazy PAGEREF _Toc208215390  274.1.1Algorytmy bezpośrednie PAGEREF _Toc208215391  274.1.1.1Metryka błędu PAGEREF _Toc208215392  274.1.1.2Poszukiwanie optymalnego rozmieszczenia obrazów PAGEREF _Toc208215393  284.1.2Algorytmy bazujące na punktach kluczowych PAGEREF _Toc208215394  294.1.2.1SIFT:  Scale Invariant Feature Transform PAGEREF _Toc208215395  294.1.2.1.1Wykrywanie ekstremów w przestrzeni skali PAGEREF _Toc208215396  294.1.2.1.2Wyznaczanie dokładnego położenia punktów kluczowych PAGEREF _Toc208215397  344.1.2.1.3Usuwanie wpływu krawędzi PAGEREF _Toc208215398  344.1.2.1.4Przypisanie orientacji PAGEREF _Toc208215399  354.1.2.1.5Lokalny deskryptor obrazu PAGEREF _Toc208215400  364.1.2.1.6Dopasowanie punktów kluczowych PAGEREF _Toc208215401  384.1.2.1.7Wyznaczanie parametrów przekształcenia afinicznego PAGEREF _Toc208215402  394.1.2.2FAST: Features from Accelerated Segment Test PAGEREF _Toc208215403  424.1.2.2.1Podstawy algorytmu PAGEREF _Toc208215404  424.1.2.2.2Implementacja detektora punktów kluczowych przy pomocy uczenia maszynowego PAGEREF _Toc208215405  434.1.2.2.3Wytłumienie punktów niemaksymalnych PAGEREF _Toc208215406  444.1.2.2.4Deskryptor punktów kluczowych i ich dopasowanie PAGEREF _Toc208215407  454.1.2.3Detektor narożników Harrisa PAGEREF _Toc208215408  454.1.2.3.1Podstawy algorytmu PAGEREF _Toc208215409  454.1.2.3.2Funkcja odpowiedzi narożnika PAGEREF _Toc208215410  484.1.2.3.3Metoda implementacji algorytmu PAGEREF _Toc208215411  484.1.2.3.4Deskryptor narożników i ich dopasowanie PAGEREF _Toc208215412  494.2Zniekształcenie soczewki PAGEREF _Toc208215413  504.3Algorytmy wygładzające połączenia między obrazami PAGEREF _Toc208215414  534.3.1Uśrednianie PAGEREF _Toc208215415  534.3.2Płynne wygładzanie PAGEREF _Toc208215416  534.3.3Najbliższy środek PAGEREF _Toc208215417  534.4Korekcja fotometryczna PAGEREF _Toc208215418  544.4.1Wyznaczanie parametrów korekcji PAGEREF _Toc208215419  554.5Obiektywna miara jakości dopasowania obrazów PAGEREF _Toc208215420  585Implementacja aplikacji PAGEREF _Toc208215421  595.1Szczegóły implementacji PAGEREF _Toc208215422  595.1.1Dynamiczne wczytywanie algorytmów PAGEREF _Toc208215423  595.1.2Wybór i ustawienie obrazów PAGEREF _Toc208215424  595.1.3Wybór algorytmów PAGEREF _Toc208215425  605.1.3.1Algorytm bezpośredni PAGEREF _Toc208215426  625.1.3.2SIFT PAGEREF _Toc208215427  635.1.3.3FAST PAGEREF _Toc208215428  645.1.3.4Detektor narożników Harrisa PAGEREF _Toc208215429  655.1.3.5Dopasowanie manualne PAGEREF _Toc208215430  665.1.4Przeglądanie wyników PAGEREF _Toc208215431  675.2Możliwości dalszego rozwoju PAGEREF _Toc208215432  686Testy algorytmów PAGEREF _Toc208215433  706.1Badanie korzyści zastosowania wyszukiwania hierarchicznego dla algorytmu bezpośredniego PAGEREF _Toc208215434  706.2Porównanie działania poszczególnych algorytmów PAGEREF _Toc208215435  736.3Badanie zależności jakości dopasowania obrazów od rozmiarów obrazu PAGEREF _Toc208215436  786.4Badanie zależności czasu wykonywania algorytmów od rozmiarów obrazu PAGEREF _Toc208215437  807Podsumowanie PAGEREF _Toc208215438  828Bibliografia PAGEREF _Toc208215439  849Spis ilustracji PAGEREF _Toc208215440  8710Załączniki PAGEREF _Toc208215441  90<br />Wstęp<br />Obrazy panoramiczne mają na celu oddanie złudzenia głębi przestrzennej, pokazując rozległy krajobraz pod szerokim kątem. Taka prezentacja terenu powoduje, że nie jest on zniekształcony, przez co obraz oddaje większy realizm. W malarstwie stosowane są one od wielu wieków, natomiast w fotografii istnieją praktycznie od jej początku, a zatem od pierwszej połowy XIX wieku. W czasach fotografii analogowej wymyślono wiele rozmaitych sprzętowych sposobów tworzenia panoram, począwszy od przesuwanych dagerotypów o dużych rozmiarach, poprzez obrotowe soczewki, kończąc na szerokokątnych obiektywach. W latach pięćdziesiątych XIX zauważono, że obrazy panoramiczne można również tworzyć poprzez sklejanie pojedynczych, zachodzących na siebie fotografii. Od tamtego czasu próbowano zabierać się do tego na różne sposoby, jednak sztuka była zbyt trudna, stosowano zatem droższe rozwiązania sprzętowe. Po wynalezieniu komputerów okazały się one doskonałym narzędziem mogącym służyć dopasowywaniu do siebie fotografii, tak, aby w rezultacie powstał obraz panoramiczny. Dziś jest to najpowszechniejsza metoda ich tworzenia. Tematyka fotografii panoramicznych staje się coraz popularniejsza, w związku z łatwością ich tworzenia jednym z istniejących komercyjnych rozwiązań oraz ogromnymi korzyściami wynikającymi ze wzrostu realizmu oddawanego przez takie fotografie. Istniejące aplikacje, służące do konstrukcji obrazów panoramicznych charakteryzują się wykorzystaniem jednego z algorytmów, bez większych możliwości ręcznego sterowania ich parametrami wejściowymi i obiektywnej oceny jakości końcowego obrazu.<br />Rysunek  SEQ Rysunek  ARABIC 1: Fotografia panoramiczna widoku San Francisco z Rincon Hill, zrobiona przez Martina Behrmana w 1851r. techniką dagerotypu. Źródło: Library of Congress Prints and Photographs Division, Washington, USA.<br />Wśród literatury dotyczącej tworzenia obrazów panoramicznych możemy znaleźć pozycje opisujące poszczególne algorytmy. Istnieją także prace, w których porównywane są algorytmy wyszukujące punkty szczególne w obrazach, ale porównania te odbywają się głównie w odniesieniu do rozpoznawania obrazów lub identyfikacji obiektów, a nie tworzenia obrazów panoramicznych. Oprócz tego, porównania takie pomijają algorytmy bezpośrednie. Nie istnieją również żadne aplikacje komputerowe pozwalające zarówno na proste tworzenie obrazów panoramicznych wybranym algorytmem i jednocześnie łatwe porównanie działania każdego z nich.<br />Celem niniejszej pracy jest zaprojektowanie, implementacja oraz przetestowanie aplikacji pozwalającej na tworzenie obrazów panoramicznych, umożliwiając obiektywne i subiektywne porównanie działania różnych algorytmów. Główną częścią jej tworzenia była własnoręczna budowa kompletnej, w pełni działającej i bezawaryjnej aplikacji według stworzonego projektu, przyjaznej użytkownikowi a jednocześnie umożliwiającej dalszy rozwój, gotowej do wykorzystania podczas badań lub pracy ze studentami.<br />Pracę otwiera przegląd literatury związanej z zagadnieniami podstaw przetwarzania obrazów, niezbędnych w zrozumieniu pracy, a także prac dotyczących tworzenia obrazów panoramicznych i wykorzystywanych w tym celu mechanizmów, zarysowując obraz istniejących w tej dziedzinie rozwiązań.<br />W trzecim rozdziale przedstawiono opis projektu aplikacji. Przedstawiono tam schemat działania aplikacji, projekt stworzenia jego interfejsu, a także rozwiązania problemów programistycznych, które występują podczas tworzenia tego typu aplikacji.<br />Czwarty rozdział zawiera szczegółowy opis wykorzystanych w aplikacji mechanizmów i algorytmów. Są tam zatem wyjaśnione szczegóły działania najważniejszych  algorytmów aplikacji, czyli odpowiadających za prawidłowe ustawienie obrazów względem siebie, ale także tych poprawiających jakość wizualną końcowego efektu, czyli wygładzających połączenia między obrazami oraz korygujących zniekształcenie soczewki.<br />Następny, piąty rozdział obejmuje opis gotowej aplikacji, umożliwiającej tworzenie obrazów panoramicznych przy pomocy wielu algorytmów, pozwalając na ich porównanie. Zawiera szczegóły implementacji przedstawionych w poprzednim rozdziale algorytmów przy pomocy pseudokodu oraz mechanizmów wykorzystanych w aplikacji. Opisany jest tutaj także sposób obsługi programu i możliwości dalszego jego rozwijania.<br />W rozdziale szóstym opisano przebieg i wyniki testów przeprowadzonych przy pomocy stworzonej aplikacji na przedstawionych i zaimplementowanych wcześniej algorytmach. Wyniki tych testów dają pogląd na jakość działania każdego z algorytmów, pozwalając porównać je ze sobą i skojarzyć poszczególne algorytmy z obszarami ich zastosowania.<br />Mimo, że dziedzina, którą zajmuje się niniejsza praca nie jest nowa, wciąż jest w fazie rozwoju. Wynika to z ogromnej popularności, jaką cieszą się fotografie panoramiczne. Można się zatem spodziewać kolejnych odkryć i modyfikacji istniejących rozwiązań, dlatego stworzona aplikacja pozwala na łatwy dalszy rozwój z wykorzystaniem zaprogramowanych już mechanizmów. Intencją napisania pracy było umożliwienie poznania zaimplementowanych algorytmów, zarówno od strony teoretycznej jak i praktycznej, pozwalając porównać ich działanie przy pomocy jednego programu.<br />Przegląd literatury<br />Zajmując się tworzeniem obrazów panoramicznych należy zapoznać się z podstawowymi metodami rozpoznawania, przetwarzania obrazów i widzenia komputerowego, które bardzo często znajdują zastosowanie przy tworzeniu obrazów panoramicznych. Obszernym kompendium wiedzy na ten temat może być  CITATION Tad91  1045 (Tadeusiewicz & Flasiński, Rozpoznawanie obrazów, 1991). Poruszono w niej cały wachlarz zagadnień, poczynając od teoretycznej interpretacji zadania rozpoznawania obrazów, poprzez klasyfikację poszczególnych metod do tego służących, kończąc na ich szczegółowym opisie. Zajmując się metodami rozpoznawania obrazów autor wyróżnia tutaj następujące typy: 1) metody minimalno odległościowe, w których zadany wzorzec należy do klasy, która znajduje się od niego w najmniejszej odległości, obliczonej według założonej metryki. W tym przypadku wybór metryki jest zatem kluczowy. Metody te są chętnie stosowane ze względu na prostotę rozumowania, jednak wymagają dużych nakładów obliczeniowych. 2) metody wzorców, są to metody, w których zawieranie się obiektu w obszarze wzorca danej klasy określane jest poprzez funkcję przynależności. 3) metody aproksymacyjne to takie, w których funkcje przynależności rozwinięto w szereg względem danej rodziny funkcji, co pozwala, po pewnych transformacjach, na stwierdzenie, że do określenia wszystkich funkcji przynależności wystarczy wyznaczenie występujących w szeregach współczynników, i tylko te współczynniki będą wymagały zapamiętania. 4) za metody specjalne autor uznaje modyfikacje poprzednich metod, na przykład metody potencjalne, które bazują na rozpisaniu funkcji przynależności na superpozycję funkcji przypominających rozkład potencjalny, metodę aproksymacji stochastycznej, czy zastosowanie sieci neuronowych.  5) metody probabilistyczne, są oparte o informacje o charakterze statystycznym, w samej metodzie przyjmując prawdopodobieństwa jako dane, w praktyce należy je jednak wcześniej przygotować, na przykład poprzez ich estymację z ciągu uczącego. 6) metody syntaktyczne, to metody, których stworzenie zostało spowodowane zbyt wielką złożonością obrazów. W metodach tych obraz rozkładany jest wielokrotnie na mniejsze podobrazy, których wzajemne relacje są wyodrębniane. Każdy z podobrazów jest następnie przetwarzany jako samodzielny obraz. 7) metody  ciągowe, oparte o opis obrazu w specjalnych językach opisu obrazów. 8) metody drzewowe skonstruowane na bazie teorii języków drzewowych i automatów drzewowych, oraz 9) metody grafowe, rzadko stosowane ze względu na trudność analizy syntaktycznej gramatyk grafowych. Autor zilustrował opisane zagadnienia przy pomocy przejrzystych obrazów, pozwalających na lepsze zrozumienie tematu. Czytelników zainteresowanych informatyką zainteresuje kod źródłowy programów implementujących opisane metody. Wadą tej publikacji jest data wydania, ponieważ w dziedzinie tej od tamtego czasu dokonało się wiele zmian. Dlatego warto zwrócić uwagę na inne pozycje, takie jak  CITATION Tad97  1045 (Tadeusiewicz & Korohda, Komputerowa analiza i przetwarzanie obrazów, 1997). Książka ta zawiera wszystkie podstawowe informację służące do budowy sztucznego systemu wizyjnego, którego metody działania mają odpowiadać zdolnościom widzenia człowieka. Widzenie jest procesem składającym się z następujących etapów: akwizycja obrazu, przetwarzanie obrazu (filtracja wstępna, eliminacja zakłóceń, kompresja), analiza obrazu oraz rozpoznanie obrazu i jego semantyczna interpretacja. Cały proces można scharakteryzować jako ciąg działań prowadzących do takiego opisu obrazu, który w skróconej formie informuje o wszystkich istotnych cechach treści obrazu. Autorzy zajmują się w tej publikacji pełnią zagadnień związanych z tym tematem. Znajdziemy tutaj zatem informacje o popularnych urządzeniach do akwizycji obrazu, jak również do przetwarzania obrazów, łącznie z wyjaśnieniem zalet i wad korzystania w tym celu z komputera klasy PC. Odrębny rozdział został poświęcony problematyce metod pozyskiwania i akwizycji obrazów. Zawarto tutaj podstawowe informacje z dziedziny budowy obrazów cyfrowych, od siatki sąsiedztwa zaczynając, a kończąc na modelach przestrzeni koloru. Obszerne zagadnienie przetwarzania obrazów zostało podzielone na kilka podtematów, podziału dokonano według różnych kryteriów, prezentując na przykład algorytmy liniowe i nieliniowe lub kontekstowe i bezkontekstowe przetwarzania obrazów. Możemy tu znaleźć takie tematy, jak przekształcenia geometryczne, przekształcenia oparte o arytmetyczne przeliczanie wartości pojedynczych punktów, w wersjach tradycyjnych oraz z wykorzystaniem tablicy LUT, operacje na histogramie. Opisano także metody filtracji obrazów, w dziedzinie częstotliwościowej, korzystając z transformacji widmowej, jak i za pomocą splotu, filtry konwolucyjne, filtry adaptacyjne, medianowe, podstawowe operacje logiczne na obrazach. Swoje miejsce znalazły także metody przetwarzania obrazów wywodzące się z morfologii matematycznej, takie jak erozja, dylacja, zamknięcie, otwarcie, detekcja ekstremów i inne. Autorzy poświęcili również sporo miejsca zagadnieniu analizy obrazów, czyli ekstrakcji cech charakterystycznych z obrazu, będących dużo bardziej podatnych na metody rozpoznawania obrazów. Opisano tutaj takie operacje jak segmentacja obrazów, pomiary obiektów znajdujących się na obrazie, a także obliczanie współczynników kształtu. Bardziej dogłębną analizę podobnych zagadnień możemy znaleźć w  CITATION Mal02  1045 (Malina, Ablameyko, & Pawlak, 2002). Publikacja prezentuje wybrane metody i problemy cyfrowego przetwarzania obrazów, dziedziny będącej jedną z podstaw widzenia komputerowego, rozpoznawania obrazów i wzorców czy obróbki fotograficznej. Autorzy podzielili zagadnienia według sposobu dokonywania przemian w obrazie. Mamy zatem opisane operacje na pikselach obrazu, histogramy, progowanie obrazów, sporo miejsca zostało poświęcone filtrom, liniowym i nieliniowym, służącym do wykrywania krawędzi, usuwania szumu i tak dalej. Swoje miejsce znalazły tuta także metody szkieletyzacji. Ciekawym zagadnieniem są opisane w książce operacje morfologiczne, wywodzące się z morfologii matematycznej. Bezpośrednio związana z tematem generacji obrazów panoramicznych są przedstawione w publikacji zagadnienia transformaty Hougha oraz wyznaczania charakterystyk obrazu. Operacje te mogą zostać wykorzystane w procesie dopasowywania nakładających się obszarów obrazów do siebie. Transformata Hougha to podstawowa operacja służąca do wykrywania prostych struktur geometrycznych, takich jak linie proste, łuki czy koła. W książce opisane także zostały takie charakterystyki obrazów jak smukłość czy centryczność obiektów, momenty geometryczne czy długość krawędzi obrazów. Inną ciekawą pozycją z tej tematyki może być  CITATION Cho05  1045 (Choraś, 2005). Książka zajmuje się tematyką komputerowej wizji, będącą złożeniem przetwarzania i rozpoznawania obrazów. Jest to proces analogiczny do procesów zachodzących w ludzkim oku i nerwie wzrokowym razem z procesami zachodzącymi w mózgu. Autor opisuje poszczególne zagadnienia tego tematu porównując je do odpowiadającym im mechanizmom działającym w ciele człowieka. Opisano zatem procesy akwizycji obrazu, zajmując się zarówno przetwornikami optyczno-elektrycznymi jak i reprezentacją cyfrową stworzoną przez nie. Poruszono zagadnienia związane ze wstępnym przetwarzaniem obrazu, czyli modyfikacje histogramu, transformacje i filtrację obraz a także jego segmentację. Sporo miejsca poświęcił autor na analizę obrazu. Jest to bardzo szeroka tematyka, zostały opisane metody rozpoznawania poszczególnych elementów i konturów obiektu jak również metody ekstrakcji cech czy operacje morfologiczne. Z punktu widzenia generacji obrazów panoramicznych w lekturze tej znajduje się bardzo wiele ciekawych informacji na temat metod pozwalających pomóc w dopasowywaniu do siebie dwóch obrazów. Przykładem mogą być algorytmy detekcji punktów charakterystycznych, transformata Hougha, momenty geometryczne czy klasyfikatory odległościowe. Jeszcze ciekawszą i obszerniejszą propozycją, zawierającą również mnóstwo informacji praktycznych na temat implementacji danych metod jest  CITATION Son08  1045 (Sonka, Hlavac, & Boyle, 2008). Książka ta obejmuje praktycznie wszystkie zagadnienia związane z komputerową wizją. Począwszy na reprezentacji i opisie obrazów w pamięci komputera, poprzez analizę i morfologię matematyczną oraz zagadnienia związane z teksturami a skończywszy na interpretacji obrazów i budowie świata 3D. Bardzo wiele przydatnych przy tworzeniu obrazów panoramicznych algorytmów opisanych jest w sposób ułatwiający ich implementację, tak jak na przykład algorytm RANSAC czy detektor narożników Harrisa. Zapoznając się z zawartymi tam informacjami możemy zauważyć, że podawane są one chronologicznie, co pozwala poznać również historię tej dziedziny nauki. Oprócz przedstawionych w poprzednich pracach metod, narzędziem służącym do rozpoznawania obrazów może być również sieć neuronowa. Jej zastosowanie w tej dziedzinie zostało opisane w  CITATION Kar  1045 (Karkanis, Magoulas, & Theofanous). Odpowiednio zaprojektowany, inteligentny system komputerowy może stanowić doskonałe wsparcie dla pracownika zajmującego się interpretacją zdjęć, w przypadkach, gdy wynik potrzebny jest szybko, podając dokładną diagnozę w czasie rzeczywistym. W niniejszym dokumencie, w ramach systemów inteligentnych prosty schemat działania zaimplementowany został w praktyce, jako przykład aplikacji używającej systemów inteligentnych opisanego wyżej rodzaju – do klasyfikacji zdjęć kolonoskopowych, jako regionów normalnych bądź z rakiem. Wstępne wyniki testów pokazują, że opisany w artykule schemat zdolny jest wykrywać odchylenia od norm z wysoką trafnością. System może również zostać zmodyfikowany do detekcji odchyleń od norm w innego rodzaju obrazach, wystarczy tylko dostosować kryteria doboru, a następnie uruchomić uczenie sieci neuronowej podając jej jako przykłady odpowiednie zdjęcia. Tematykę rekonstrukcji sceny trójwymiarowej na podstawie dwuwymiarowych obrazów wejściowych, trochę bardziej związaną z tworzeniem obrazów panoramicznych poruszono w  CITATION Har03  1045 (Hartley & Zisserman, 2003). Techniki służące do rozwiązania tych problemów bazują na teorii geometrii i fotogrametrii. Autorzy opisują podstawy geometryczne i ich algebraiczne reprezentacje pod kątem opisu poprzez macierze transformacji kamery, macierze świata i tensory. Teoria i metody obliczeniowe z nią związane zostały opisane z użyciem przykładów wziętych z życia, aby ułatwić czytelnikowi zrozumienie sprawy. Oprócz tego wiele algorytmów zostało opisanych krok po kroku, aby ułatwić ich implementację. Zawarto także materiały wyjaśniające niezbędne podstawy teoretyczne, wymagane, aby w pełni zrozumieć treść. Książka podzielona jest na 6 części, z których każda opisuje inne relacje geometryczne. Znajdziemy tutaj zatem część ogólną, o generalnych ideach związanych z geometrią dwu- i trzywymiarową, następnie opis macierzy kamery dla pojedynczego widoku, opis macierzy świata tworzonej z dwóch widoków, metody wyznaczania odpowiednich tensorów dla trzech i czterech widoków. Każdy z rozdziałów zawiera szczegółowe informacje o danej relacji, jej właściwości i zastosowanie. Możemy również znaleźć informacje o budowie algorytmów pozwalających na estymację danej relacji z obrazów, poczynając od najprostszych i najbardziej prymitywnych, a kończąc na optymalnych algorytmach uznawanych za wiodące w chwili wydania książki. W aneksie do książki znajdziemy wszystkie podstawowe informacje, takie jak opis notacji tensorowej czy metody dekompozycji macierzy. Oprócz tego na końcu każdego rozdziału autorzy proponują ćwiczenia do samodzielnego wykonania przez czytelnika, których pomyślna realizacja pozwala mieć pewność o prawidłowym zrozumieniu tematu. W związku z tak pełnym opisem poruszanych tematów pozycja ta jest bardzo przydatna dla czytelników zajmujących się widzeniem komputerowym, i wszelkimi zagadnieniami związanymi z opisem świata trójwymiarowego na ekranie komputera. W kontekście generowania obrazów panoramicznych informacje zawarte w tej publikacji będą przydatne podczas opracowywania algorytmów mających na celu przekształcenie obrazu w taki sposób, aby nakładające się obszary pasowały do siebie, leżąc na jednej płaszczyźnie rzutowania. <br />Istnieje również duża ilość publikacji dotyczących wyłącznie tworzenia obrazów panoramicznych poprzez łączenie pojedynczych klatek. Najbardziej obszerną pozycją poruszająca większość zagadnień związanych z tym tematem jest  CITATION Sze06  1045 (Szeliski, 2006). Prezentuje przegląd informacji o konkretnych rozwiązaniach, algorytmach, które potrafią znaleźć zależności między obrazami o różnym stopniu pokrycia. Autor opisuje poszczególne metody biorąc pod uwagę możliwość ich praktycznego zastosowania w takich zagadnieniach jak stabilizacja video, łączenie klatek czy tworzenie obrazów panoramicznych. Opisane zostały także algorytmy, które po znalezieniu położenia konkretnych obrazów względem siebie połączą je odpowiednio wygładzając miejsca łączenia tak, aby nie były one widoczne. Autor bierze pod uwagę trudności wynikające ze zjawiska paralaksy czy ruchu w fotografowanej scenie, podając rozwiązania pozwalające uniknąć występowania rozmytych czy ‘pół-przezroczystych’ obiektów w obrazie wyjściowym. W książce zaprezentowane są podstawowe modele przekształceń obrazów, z którymi można spotkać się stosując zaprezentowane algorytmy pozycjonowania względem siebie i łączenia obrazów, opisane są zarówno bezpośrednie algorytmy dopasowywania obrazów jak również bazujące na ekstrakcji punktów szczególnych. Metody bezpośrednie, polegające na porównywaniu wartości poszczególnych pikseli, zostały opisane wraz z uwzględnieniem rozmaitych metryk mierzących różnice pomiędzy wartościami tych pikseli.<br />Metody bazujące na ekstrakcji punktów szczególnych to bardzo obszerne zagadnienie, ponieważ metod takich istnieje obecnie bardzo dużo. Jedną z pierwszych tego typu metod był detektor narożników zaprezentowany w  CITATION Har88  1045 (Harris & Stephens, 1988). W artykule tym przedstawiono metodę wykrywania narożników, niewrażliwą na obroty i translacje obrazów. Detektor ten bazuje na założeniu, że w punkcie narożnika jasność będzie zmieniać się znacznie w wielu kierunkach. Obliczana jest macierz autokorelacji dla danego punktu, z wykorzystaniem funkcji ważącej Gaussa. Dzięki tej macierzy możemy wyliczyć stosunek krzywizn w danym punkcie, co pozwoli na sprawdzenie, czy dany punkt spełnia podstawowe założenie dla narożnika. Do wyliczenia stosunku krzywizn potrzebne byłoby wyznaczenie wartości własnych tej macierzy, co jest dość kosztowne obliczeniowo. W artykule zaprezentowano efektywną metodę wyliczania stosunku krzywizn bez potrzeby wyznaczania wartości własnych macierzy, opierając się o ślad oraz wyznacznik tej macierzy, co znacznie zmniejsza ilość obliczeń. Metoda ta ma bardzo duże znaczenie historyczne, będąc często używana przy rozpoznawaniu obiektów na scenie trójwymiarowej.<br />W artykule  CITATION Mik04  1045 (Mikołajczyk & Schmid, Scale & affine invariant interest point detectors, 2004) zaprezentowano kolejną metodę wykrywania punktów kluczowych, będącą niezmienniczą wobec skalowania oraz przekształceń afinicznych. Takie właściwości zaprojektowanego detektora osiągnięto dzięki wcześniejszym badaniom, które wykazały, że punkty kluczowe wyznaczone za pomocą detektora Harrisa mogą zostać poddane przekształceniom afinicznym zachowując swoje właściwości i dając powtarzalne, geometrycznie stabilne wyniki. Detektor opiera się także o fakt, że skala charakterystyk struktury lokalnej jest określona poprzez lokalne ekstremum z zestawu znormalizowanych pochodnych, czyli Laplasjanu. Wykorzystane zostały także właściwości afinicznego otoczenia punktu, które może zostać wyestymowane za pomocą macierzy momentu drugiego rzędu. A zatem niewrażliwy na skalowanie detektor oblicza reprezentację detektora punktów kluczowych Harris dla wielu różnych skali, wybierając następnie punkty, w których lokalna wartość Laplasjanu jest maksimum we wszystkich skalach. To prowadzi do zestawu unikanych punktów będących inwariantnymi względem skali, obrotów, translacji jak również względem zmian w naświetleniu i ograniczonych zmian punktu widzenia. Skala charakterystyk określa niezmienniczy region dla każdego punktu. Autorzy proponują także rozszerzenie niezmienniczości detektora do niezmienniczości afinicznej, a zatem niezmienniczości względem przekształceń niezmieniających równoległości dwóch linii. Dokonano tego poprzez zdefiniowanie afinicznego sąsiedztwa każdego punktu kluczowego. Iteracyjny algorytm modyfikuje lokalizację, skalę i sąsiedztwo każdego punktu, dążąc do afinicznej niezmienniczości punktów. Ta metoda może sobie poradzić ze przekształceniami o dużej skali. Składając skalę charakterystyk i kształt afinicznego sąsiedztwa określamy afinicznie niezmienniczy region dla każdego punktu. W artykule zaprezentowano porównanie działania rozmaitych detektorów udowadniając, że opisany algorytm zapewnia znacznie lepsze wyniki, niż wcześniejsze metody. Jakość działania zaprezentowanego algorytmu jest poparta również znakomitymi efektami w dopasowywaniu dzięki opisaniu obrazu poprzez zestaw wyliczonych niewrażliwych na skalowanie i przekształcenia afiniczne deskryptorów danego regionu, skojarzonych z danym punktem kluczowym.<br />Ciekawą metodę ekstrakcji punktów szczególnych opisano w  CITATION Kad04  1045 (Kadir, Zisserman, & Brady, 2004). Detektor, który tego dokonuje działa za pomocą uogólnionych poprzez afiniczną niezmienność metod osądzających charakterystyczność danego regionu badając jego nieprzewidywalność zarówno pod względem przestrzennym jak i atrybutów. Detektor ten znacząco różni się od operatorów opartych o metody splotowe. Badane są trzy aspekty jego zachowania: niezmienniczość wobec zmiany punktu widzenia, wrażliwość na zmiany w obrazie a także powtarzalność wyników osiąganych mimo zmian wewnątrz badanych klas. Podczas gdy inne artykuły na ten temat skupiają się na osiągnięciu niezależności od zmiany punktu widzenia, ten poświęcony został badaniami nad projektem testu jakości działania by wspomóc rozwijanie dwóch pozostałych aspektów. Autorzy proponują porównanie detektora cech szczególnych do innych standartowych detektorów, uwzględniając afinicznie niezmienniczy detektor punktów kluczowych. Dzięki tym testom zostało dowiedzione, że zaproponowany detektor cech szczególnych wykazuje się porównywalną do innych detektorów niezmienniczością wobec zmiany punktu widzenia, natomiast znacznie mniejszą wrażliwością na perturbacje wewnątrz obrazu i zmiany wewnętrzne obrazów badanej klasy obiektów. Zaprezentowany przez autorów algorytm został dodatkowo zoptymalizowany stosując operacje lokalne. Zaprojektowany zestaw testów badający tego typu algorytmy pozwala dobrać odpowiedni dla danych warunków algorytm, a dzięki rozszerzonemu polu jego działania może stanowić wsparcie także dla dziedzin, w których nowe aspekty są ważne, takich jak rozpoznawanie obiektów poprzez wykrywanie części. <br />Prostym, ale dającym dobre wyniki jest detektor punktów kluczowych przedstawiony w  CITATION Edw  1045 (Rosten & Drummond, Machine learning for high-speed corner detection) zwany FAST. Detektor ten rozpatruje piksele leżące na obwodzie okręgu o promieniu trzech pikseli wokół badanego punktu.  Punkt oznacza się jako szczególny, jeśli na obwodzie znajduje się określona ilość sąsiadujących ze sobą pikseli o jasności różniącej się co najmniej o ustaloną wartość od badanego piksela. W związku z tym, że okrąg taki ma obwód o długości szesnastu pikseli, autorzy proponują, aby punkt szczególny miał takich pikseli pomiędzy 9 a 15. Artykuł ten wart jest szczególnej uwagi, ponieważ metoda wykazuje się bardzo dobrą powtarzalnością, będąc niezmienniczą wobec przekształceń afinicznych jak również pewnych zmian w naświetleniu. Zaprezentowano również efektywną metodę implementacji algorytmu, opartą o generację kodu na podstawie stworzonego wcześniej drzewa decyzyjnego.<br />Innym dobrym przykładem takiej metody może być metoda zaprezentowana w  CITATION Low04  1045 (Lowe, Distinctive Image Features from Scale-Invariant Keypoints, 2004). Przedstawiona tam metoda wyszukiwania cech charakterystycznych obrazu, niewrażliwych na rozmaite przekształcenia, które można wykorzystać do dopasowania tych samych obiektów przedstawionych w różny sposób. Algorytm zaprojektowany przez autora, zwany powszechnie SIFT, czyli Scale Invariant Feature Transform, potrafi znaleźć punkty kluczowe zachowujące swoje właściwości pomimo obrotu lub przeskalowania obrazu, a także występowania szumów, zakłóceń, zmian w jasności obrazu czy przekształceń trójwymiarowych. Takie punkty kluczowe są również wysoce unikalne, dzięki czemu można z wysokim prawdopodobieństwem dopasować te same cechy występujące w dwóch różnych obrazach a nawet w całej bazie danych obrazów. Opisane zostały także metody wykorzystania opisanego algorytmu do rozpoznawania obiektów, poprzez dopasowanie danych punktów kluczowych do stworzonej wcześniej bazy punktów kluczowych występujących w znanych obiektach, za pomocą metody najbliższych sąsiadów. Autor opisuje także zastosowanie transformaty Hougha do przyporządkowania punktów kluczowych do danego obiektu. Dzięki zamieszczonym przykładom działania algorytmu można łatwo zorientować się w ogólnym jego działaniu.<br />O popularności algorytmu SIFT świadczy wykorzystywanie go w wielu dziedzinach nauki. Jednym z przykładów może być  CITATION Paw  1045 (Pawlik & Mikrut), gdzie opisano metodę dopasowywania fotogrametrycznych zdjęć lotniczych do tworzenia map cyfrowych lub cyfrowych modeli terenu. Autorzy zdecydowali, że najlepsza do ich celów będzie właśnie SIFT, ponieważ jest ona niewrażliwa na obroty i skalowanie obrazów. W dokumencie został przedstawiony opis algorytmu, oraz wyniki, jakie daje jego wersja zaimplementowana przez autorów metody. Autorzy porównują efekty dla różnych parametrów wejściowych podczas testowania algorytmu, znajdując optymalne ich wartości. W artykule brakuje jednak porównania działania z innymi algorytmami a także testu algorytmu w implementacji własnej autorów. Kolejnym przykładem zastosowania tej metody jest  CITATION Ost  1045 (Ostiak), opisujący implementację algorytmu do tworzenia obrazów panoramicznych typu HDR, czyli o zwiększonym zakresie jasności. Tego typu obrazy pozwalają przedstawić dużo większą liczbę szczegółów niż obrazy tradycyjne. Autor przedstawia rozmaite rozwiązania wybierając odpowiednie dla tego zagadnienia. Tutaj również najodpowiedniejszy okazał się algorytm SIFT, pozwalający dopasować obrazy do siebie, będąc nieczułym na podstawowe przekształcenia obrazów, takie jak skala, obrót czy zmiana iluminacji. W artykule przedstawiono również modyfikacje, których trzeba dokonać w tradycyjnej wersji algorytmu, aby był on odpowiedni dla obrazów o zwiększonym zakresie jasności. Został zaproponowany model transformacji perspektywicznej oraz sposób wygładzania połączeń między obrazami pozwalający stworzyć panoramę bez widocznych szwów. Autor ilustruje rozwiązania konkretnymi przykładami fotografii, pokazując w szczegółach korzyści ze stosowania obrazów o zwiększonym zakresie jasności. Rezultaty zastosowania zaimplementowanego algorytmu także zostały przedstawione i omówione. <br />Ten sam algorytm wykorzystywany jest w pomyśle zaprezentowanym w  CITATION Low03  1045  (Lowe & Brown, Recognising Panoramas, 2003). Jest to nowatorskie zagadnienie w pełni automatycznego rozpoznawania panoram. Zastosowanie zaproponowanego rozwiązania znacznie ułatwia użytkownikowi tworzenie panoram, skanując wszystkie wykonane zdjęcia z danej puli, szukając tych pasujących do siebie, a następnie tworząc z nich obrazy panoramiczne. Rozwiązanie to eliminuje występujące w tradycyjnych podejściach potrzeby manualnego wybrania obrazów do połączenia i wypozycjonowania ich przez użytkownika. Autorzy proponują metody dopasowywania niewrażliwe na obroty, skalowanie czy zmienne naświetlenie obrazów. Z powodu selektywnego dopasowywania obrazów do siebie, zaproponowany w dokumencie algorytm potrafi także usunąć z puli obrazów przypadkowe, nienależące do panoramy obrazy. Jest to zrealizowane na podstawie probabilistycznego modelu sprawdzającego przynależność do danego zestawu zdjęć. Zaprezentowane przykłady pokazują skuteczność algorytmu, dając jednocześnie pojęcie o przydatności praktycznej zaimplementowanego algorytmu.<br />Ciekawym rozwiązaniem jest, przedstawiona w  CITATION KeY  1045 (Ke & Sukthankar), modyfikacja algorytmu SIFT. Autorzy artykułu poddali testom i ulepszyli deskryptor obrazu używany w algorytmie SIFT. Zaproponowana przez nich modyfikacja tego algorytmu również opiera się o ekstrakcję najważniejszych właściwości gradientu w sąsiedztwie danego punktu kluczowego, jednak w odróżnieniu od tradycyjnego algorytmu SIFT opisana zmodyfikowana jego wersja korzysta z analizy najważniejszych komponentów PCA w obrębie znormalizowanego fragmentu gradientu, zamiast z wygładzonego, ważonego histogramu. Przeprowadzone przez autorów artykułu eksperymenty dowodzą, że zastosowanie PCA do opisu cech kluczowych nadaje im jeszcze bardziej unikalny charakter, zapewniając zwiększoną niezmienniczość wobec deformacji obrazu, a także sprawia, że deskryptor jest bardziej skondensowany. Zamieszczone rezultaty badań jasno pokazują, że zastosowanie przedstawionego algorytmu w aplikacjach służących do wydobywania obrazów z baz danych zwiększa dokładność jednocześnie przyspieszając dopasowywanie, dzięki bardziej skondensowanej budowie. Algorytm testowany i porównywany był przy pomocy sztucznie przekształconych obrazów, jak i naturalnie różniących się obrazów, dając zauważalnie lepsze efekty od tradycyjnej wersji algorytmu SIFT, wykonując takie zadania jak dopasowanie wzorców w czasie około 1/3 czasu wykonania algorytmu SIFT. <br />Algorytmy zajmujące się ekstrakcją punktów szczególnych z obrazów są ważnym zagadnieniem z dziedziny widzenia komputerowego, dlatego doczekały się wielu artykułów przedstawiających ich porównanie. Dzięki  CITATION Mik05  1045 (Mikołajczyk, i inni, 2005) możemy uzyskać pogląd na wiodące obecnie metody wyszukiwania kowariantnych regionów w obrazach, porównując jakość ich działania na zestawie testowych obrazów pod rozmaitymi warunkami. Uwzględniono sześć rodzajów detektorów: bazujące na afinicznej normalizacji wokół punktów Harrisa oraz Hesjanu, detektory maksymalnie stabilnych regionów ekstremów, detektor regionów oparty o wyszukiwanie krawędzi, detektor bazujący na ekstremum intensywności oraz detektor wyróżniających się regionów. Jakość działania była porównywana testując wymienione algorytmy na obrazach poddanych przekształceniom takim jak zmiana punktu widzenia, skalowanie, zmiana naświetlenia, zmiana ostrości czy kompresji obrazu. Testowanie odbywało się poprzez zadanie algorytmowi znalezienia na obrazie przekształconym określonego regionu z obrazu wejściowego. Trafność znalezionego wyniku oceniana była na podstawie procenta powierzchni obszaru zadanego, który zawierał się w wyniku. Praca pozwala osobie znającej pobieżnie temat zapoznać się z całą gamą algorytmów i bez problemu wybrać odpowiedni do konkretnej potrzeby. W innym artykule tych samych autorów  CITATION Mik  1045 (Mikolajczyk & Schmid) porównano jakość działania deskryptorów, opisujących znalezione punkty szczególne. Deskryptory punktów szczególnych używane są do identyfikacji odpowiadających sobie par punktów, dzięki czemu możemy wyznaczyć opis ruchu kamery pomiędzy dwoma obrazami. W związku z tym wartość deskryptora powinna być unikalna a jednocześnie niewrażliwa na zmiany punktu widzenia, jak również odporna na pewne błędy w wykrywaniu punktów szczególnych. W celu porównania jakości działania deskryptorów zastosowano kryterium powtarzalności z uwzględnieniem precyzji, dla różnych przekształceń dokonanych na obrazach. Kolejne metody opisu punktu kluczowego porównywano dla punktów kluczowych znalezionych rozmaitymi metodami. Badania te wykazały, że działanie deskryptora tylko w niewielkim stopniu zależy od metody użytej do znalezienia punktów kluczowych, oraz że deskryptor punktów kluczowych SIFT, zaproponowany w  CITATION Low04  1045 (Lowe, Distinctive Image Features from Scale-Invariant Keypoints, 2004) okazuje się być najlepszym deskryptorem. <br />Przykładem zastosowania tego typu algorytmów w trochę innym kontekście przedstawiono w  CITATION Mik01  1045 (Mikołajczyk & Schmid, Indexing based on scale invariant interest points, 2001). Autorzy zaprezentowali metodę wykrywania punktów charakterystycznych w obrazie, zachowujących się niezmienniczo w stosunku do skalowania, do celów indeksowania obrazów. Zaprezentowana metoda bazuje na dwóch podstawowych zasadach dotyczących tego przekształcenia: 1) punkty szczególne mogą być dostosowane do skali a ich wykrywanie daje powtarzalne, stałe rezultaty. 2) Ekstrema lokalne z grupy znormalizowanych pochodnych wskazują na obecność charakterystycznych struktur lokalnych. Opierając się na tych właściwościach zaproponowana przez autorów metoda korzysta na początku z wieloskalowego detektora punktów kluczowych Harrisa. Następnie wybierany jest punkt, dla którego wartość Laplasjana jest maksymalna dla wszystkich skali. Pozwala to na wybór unikalnych punktów, dla których znana jest skala charakterystyczna, będących jednocześnie niezmienniczymi względem zmiany skali, obrotów, translacji, jak również niewrażliwymi na zmiany iluminacji i ograniczone zmiany punktu widzenia. Jeśli chodzi o indeksację, obraz jest charakteryzowany poprzez grupę punktów niewrażliwych na skalowanie, skala skojarzona z każdym z punktów pozwala na wyliczenie niewrażliwego na skalowanie deskryptora. Deskryptory zaproponowane przez autorów są dodatkowo inwariantne wobec obrotów, afinicznych zmian naświetlenia a także niewielkich zmian w perspektywie. Zamieszczone wyniki testowania algorytmu dowodzą świetnych osiągów nawet dla baz obrazów zawierających więcej niż 5000 obiektów. Podobne algorytmy zastosowano w ciekawej pracy  CITATION Mik03  1045 (Mikołajczyk, Zissermann, & Schmid, Shape recognition with edge-based features, 2003). Dokument opisuje sposób rozpoznawania obiektów słabo teksturowanych, dopuszczając zawieranie dziur i kształtów walcowatych. Obiekty mogą być umieszczone na nieuporządkowanej scenie, w dowolnych warunkach widoczności. Zaprojektowany został zestaw nowatorskich komponentów. Po pierwsze, autorzy dokumentu zaproponowali nowy detektor cech szczególnych oparty o znalezienie punktów znajdujących się na krawędziach, nie wrażliwy na przekształcenia zachowujące podobieństwo. Sąsiedztwo tych punktów estymowane jest w sposób niewrażliwy na skalowanie. Drugą ważną właściwością zaproponowanego rozwiązania jest niewrażliwość deskryptora sąsiedztwa obliczonego dla cech znajdujących się na pierwszym planie na dowolnie złożone tło, nawet, jeśli dany punkt kluczowy znajduje się na krawędzi obiektu. Trzecim wartym wspomnienia szczegółem jest fakt, że opisany deskryptor jest uogólnioną do działania dla krawędzi wersją znanego algorytmu SIFT. Obiekty będący modelem jest tworzony na podstawie jednego zdjęcia treningowego. Następnie obiekt ten może zostać rozpoznany na nowych obrazach w serii kroków narzucających progresywnie ciaśniejsze ograniczenia geometryczne. Końcowym celem autorów była możliwość rozpoznania obiektów z dopuszczalną granicą elastyczności w reprezentacji geometrycznej, co pozwala na efektywne wyszukiwanie obiektów należących do tej samej klasy czy kategorii. <br />Posiadając obrazy wraz z wykrytymi punktami specjalnymi niezmienniczymi względem przekształceń dokonanych na polu widzenia pomiędzy kolejnymi zdjęciami, jesteśmy w stanie wyliczyć parametry przekształcenia, któremu trzeba poddać obrazy wejściowe, aby pasowały do siebie. Algorytm zdolny do tego został przedstawiony w  CITATION Fis81  1045 (Fischler & Bolles, 1981). Algorytm ten, służący do dopasowywania danych eksperymentalnych do wzorca, nazywany Random Sample Consensus – RANSAC. Model ten zdolny jest do interpretacji i wygładzania danych zawierających nawet znaczący procent błędnych pomiarów, w związku z czym jest idealny do stosowania w komputerowym rozpoznawaniu obrazów, gdzie analiza jest przeprowadzana na danych zarejestrowanych przez matryce obarczone pewnym współczynnikiem błędu. Algorytm w działaniu zachowuje się odmiennie niż większość znanych podejść – zamiast estymować rozwiązanie na podstawie maksymalnej liczby danych, RANSAC oblicza rozwiązanie bazując na jak najmniejszej liczbie danych, próbując następnie dopasować pozostałe dane do rozwiązania, lub odrzucić, jeśli dopasowanie jest niemożliwe. Spora część artykułu została poświęcona zastosowaniu algorytmu RANSAC do rozwiązania problemu określenia lokalizacji – Location Determination Probem (LDP), który polega na estymowaniu pozycji kamery na podstawie zrobionych przez nią zdjęć, znając pozycję przedstawionych na zdjęciach obiektów. W związku z zastosowaniem tego algorytmu wyznaczono również minimalną liczbę znanych punktów, potrzebnych do jego prawidłowego działania, zaprezentowano również algorytmy pozwalające w prosty sposób wyznaczyć rozwiązanie problemu na podstawie tej minimalnej liczby punktów.  Metody rozwiązania tego problemu stanowią bazę dla systemu potrafiącego automatycznie rozwiązywać problem LDP pomimo słabej jakości obrazów i różnorodnych warunków analitycznych. Autorzy zamieścili również detale dotyczące implementacji podobnego systemu, co podnosi atrakcyjność artykułu. Możemy również znaleźć przykłady obliczeniowe. Zaprezentowany algorytm RANSAC jest bardzo często wykorzystywany w podobnych rozwiązaniach. Jego zmodyfikowaną wersję przestawiono w  CITATION Chu02  1045 (Chum & Matas, 2002). Autorzy proponują modyfikację poprzez zróżnicowanie kroku hipotetycznej ewaluacji. Jak wynika z zaprezentowanych w artykule danych, w sporym zakresie występujących warunków poprawiło to działanie algorytmu. Opisany w artykule, zróżnicowany algorytm RANSAC, nazwany R-RANSAC, charakteryzuje się również większą oszczędnością, operując tylko na części danych z modeli zawierających błędy. Autorzy zaimplementowali algorytm w procedurze dwukrokowej. Wprowadzono także klasę testów statystycznie, wstępnie sprawdzających próbki testowe. Dla zaproponowanych testów wyznaczono przybliżone relacje opisujące optymalne ustawienie każdego parametru. Zastosowanie tych testów sprawdzono na danych laboratoryjnych, stworzonych sztucznie, jak i na danych rzeczywistych, co wykazało znaczne przyspieszenie wykonywania algorytmu.<br />Innym podejściem do ustalenia pozycji obrazów wejściowych w końcowej panoramie może być zastosowanie transformaty Hougha, opisane w  CITATION Chi06  1045 (Chitsobhuk, Chunhavittayatera, & Tongprasert, 2006). Metoda zakłada dopasowywanie obrazów poprzez kombinację transformaty Hougha i korelacji fazowej w dziedzinie Fouriera do estymacji parametrów obrotu i translacji obrazów. Parametry te są następnie wykorzystywane do nakładania obrazów i połączenia ich w płynny sposób w wyjściowy obraz zawierający wszystkie detale obrazów wejściowych. Pierwszy krok oparty jest o jednowymiarową korelację fazową, dzięki której jesteśmy w stanie wyliczyć translację kąta do przestrzeni Hougha, poprzez transformatę Hougha. Parametr obrotu uzyskany w ten sposób pozwala na obrócenie obrazów wejściowych w odpowiedni sposób. W drugim kroku poprzez dwuwymiarową korelację fazową wyliczane są parametry translacji wzdłuż osi x i y, której musimy poddać obrazy wejściowe. Zamieszczone w artykule wyniki przeprowadzonych badań pokazują dokładność zaproponowanej metody w znajdowaniu odpowiedniego dopasowania obrazów o różnych obrotach, wielkości i o różnej ilości szczegółów. Większy rozmiar i większa ilość szczegółów sprzyjają lepszemu dopasowaniu, co sprawia, że metoda ta jest atrakcyjna przy przetwarzaniu zdjęć. Autorzy opisują metodę jako prostą w implementacji i nieskomplikowaną obliczeniowo, dzięki wysokiej wydajności szybkiej transformaty Fouriera. Podobna metoda została zaprezentowana w  CITATION Bhu05  1045 (Bhuttichai Summar, 2005), jednak oprócz technik korelacji fazowej w dziedzinie Fouriera i transformaty Hougha  korzysta ona z transformaty falkowej o różnych rozdzielczościach. Jest to rozwinięcie omawianej w innych artykułach metody, mające na celu przyspieszenie przetwarzania. Przed nałożeniem obrazów, poddawane są one transformacie falkowej. Przekształcenia kątowe mogą następnie zostać wyestymowane poprzez zastosowanie transformaty Hougha a później korelacji fazowej. Zastosowanie korelacji fazowej dwuwymiarowej jest następnie stosowane do znalezienia parametrów translacji względem osi X i Y. Stosowanie transformaty falkowej w tej metodzie podyktowane jest skróceniem czasu obliczeń, można także wykorzystać jej współczynniki jako informacje o krawędziach, zamiast stosować do tego inne narzędzia. Dzięki zastosowaniu transformaty falkowej o różnych rozdzielczościach możemy znacznie zredukować czas obliczeń. Obrazy są przekształcane zgodnie z uzyskanymi parametrami przekształceń. Następnie obrazy są komponowane i wygładzane w jednym, wyjściowym obrazie większym od wejściowych, zawierającym wszystkie detale obrazów wejściowych. Z przeprowadzonych praktycznych eksperymentów wynika, że algorytm działa z powodzeniem, osiągając wyniki lepsze niż wiele podobnych metod. Autorzy dokumentu poradzili sobie także z błędami akumulującymi się podczas kolejnych przekształceń, poprzez odpowiedni dobór parametrów dopasowania obrazów.<br />Ciekawe podejście do tworzenia obrazów panoramicznych z pojedynczych fotografii zaprezentowane zostało w  CITATION Shu  1045  (Shum & Szeliski, Construction and refinement of panoramic mosaics with global and local alignment, 1998). Polega ono na przypisaniu każdemu obrazowi macierzy rotacji i ewentualnie długości ogniskowej soczewki, a nie jak w innych podejściach na jawnym rzutowaniu kolejnych obrazów na wspólną powierzchnię, taką jak płaszczyzna czy walec. Pomysł autorów artykułu wiąże się z koniecznością radzenia sobie z nagromadzonymi błędami pochodzącymi z rejestracji, aby je zredukować zastosowano globalne, blokowe dopasowanie wszystkich obrazów wejściowych, co sprawia, że otrzymujemy optymalną mozaikę obrazów w sensie najmniejszych kwadratów. Natomiast do redukcji małych niedopasowań poszczególnych obrazów, spowodowanych efektem paralaksy związanym z przesunięciem kamery czy innymi niezamodelowanymi przekształceniami, zastosowano dodatkowo lokalne dopasowanie obrazów, które pozwala na połączenie każdej pary obrazów bazując na technikach nakładania. Takie złożenie globalnego i lokalnego modelu dopasowywania obrazów skutkuje wyraźną poprawą jakości obrazów wyjściowych, co według autorów pozwala na efektywne generowanie obrazów panoramicznych o szerokim kącie widzenia. Atrakcyjność zaprezentowanego podejścia skłania do rozważenia opłacalności jego implementacji pod względem kosztów obliczeniowych. <br />W  CITATION Ede  1045 (Eden, Uyttendaele, & Szeliski) zaprezentowano techniki automatycznego łączenia wielu obrazów różniących się pod względem naświetlenia i orientacji. Łączenie ma skutkować zwiększeniem zakresu jasności obrazu, czyli konstrukcją obrazu HDR, zachowując rozpiętość kątową. Ogromną zaletą przedstawionej metody jest to, że pozwala ona zachować duże różnice w ekspozycji, radzi sobie z dużymi zmianami pomiędzy poszczególnym klatkami wywołanymi ruchem na fotografowanej scenie, i nie wymaga dodatkowego sprzętu. Aby algorytm działał przy takich założeniach zaprojektowano dwustopniową metodę, w której najpierw ustala się pozycję ruchomych obiektów, a następnie wykorzystywana jest cała dostępna skala jasności obrazów wejściowych. Autorzy wprowadzają pojęcie kosztu opisujące korzyść wykorzystania danego piksela w obrazie wyjściowym, a także kosztu łączenia obrazów, którego minimalizacja zapewnia gładkie przejścia między obrazami. Minimalizacja tych wartości realizowana jest za pomocą metody zaproponowanej w dokumencie i zapewnia wybór właściwego dopasowania. Zamieszczone przykłady działania algorytmu ukazują różnice pomiędzy tradycyjnymi algorytmami a prezentowanym algorytmem konstrukcji obrazów o zwiększonym zakresie jasności HDR, a zachwalana przez autorów łatwość implementacji sprawia, że pozycja ta jest interesująca.  Tematykę zwiększania jakości łączenia obrazów panoramicznych porusza także  CITATION Zom06  1045 (Zomet, Levin, Peleg, & Weiss, 2006). W związku z potrzebą wykorzystania łączenia zdjęć na potrzeby różnego rodzaju operacji, takich jak składanie mozaik, potrzebne są dobre algorytmy wygładzające krawędzie między łączonymi zdjęciami. Jakość szwu między zdjęciami jest określana wizualne na podstawie podobieństwa między złączonym obrazem a każdym z wejściowych obrazów z osobna, oraz poprzez widoczność miejsca złączenia, tak zwanego szwu. Aby odpowiednio zdefiniować i znaleźć najlepszy sposób złączenia dwóch obrazów autorzy artykułu proponują zbiór formalnych funkcji kosztu, do pomiaru jakości złączenia. W funkcjach tych podobieństwo obrazów wejściowych oraz widoczność szwu są zdefiniowane w dziedzinie gradientu, minimalizując zakłócenia wzdłuż szwu. Właściwe złączenie zoptymalizuje funkcje kosztu, jednocześnie eliminując nieciągłości fotometryczne a także geometryczne niedopasowania pomiędzy złączonymi obrazami. W artykule zaprezentowano kilka rodzajów funkcji kosztu, porównując ich działanie dla różnych przykładów, w teorii i w praktyce. Wyniki przeprowadzonych badań zaprezentowano na rozmaitych przykładach, takich jak generacja obrazów panoramicznych, wygładzanie obiektów czy usuwanie pozostałości kompresji. Porównanie z istniejącymi metodami pozwala poznać zalety optymalizacji pomiarów w dziedzinie gradientu. Zamieszczone ilustracje wyraźnie pokazują poprawę jakości złączeń w wypadku zastosowania proponowanego rozwiązania. Warto zauważyć, że zaprezentowany algorytm jest tylko modyfikacją, która po wprowadzeniu do istniejących wcześniej rozwiązań znacznie poprawia ich efekt, jednak bardzo wydłuża czas działania. Ciekawą pozycją na ten temat jest również  CITATION Zom98  1045 (Zomet & Peleg, Applying super-resoultion to panoramic mosaics, 1998). W artykule autorzy opisują jeden ze sposobów wykorzystania danych zawartych w sekwencji video do poprawy jakości odbioru obrazu. Mozaikowanie to proces prezentowania informacji zawartych w wielu klatkach w jednym obrazie, natomiast tzw. ‘super-resolution’ to proces poprawy jakości obrazu poprzez redukcję szumu i zwiększenie rozdzielczości wykorzystując informacje o regionach z wielu klatek sekwencji video. Obie operacje wykorzystują łączenie obrazów. Autorzy opisują metodę pozwalającą na połączenie zalet obu operacji, co dotychczas było kłopotliwe, ponieważ przekształcenie obrazów związane z ich dopasowaniem nie pozwala osiągnięcie jednakowej dokładności w całym regionie wymaganej do podniesienia jakości. Skonstruowany algorytm jest dwustopniowy: najpierw generowany jest gotowy obraz panoramiczny, a następnie niewielkie fragmenty z sekwencji video są dopasowywane do obrazu panoramicznego podnosząc jego jakość. Dzięki tym zabiegom produktem wyjściowym jest wysokiej jakości obraz panoramiczny. Dodatkowo, poprawianie jakości powoduje wygładzenie miejsc, w których łączone były klatki obrazu panoramicznego. W artykule  CITATION Jia03  1045 (Jia & Tang, 2003) zaprezentowano metodę nakładania obrazów opartą na globalnym i lokalnym dopasowaniu luminancji. Metoda polega na bezpośrednim estymowaniu funkcji wymieniającej, poprzez redukcję skomplikowanego problemu estymacji do dwuwymiarowego wyboru tensorowego w odpowiedniej przestrzeni wyboru. Żaden model funkcji wymieniającej nie jest domniemany. Dane o luminancji obrazu są najpierw kodowane do postaci dwuwymiarowych tensorów. Poprzez propagację warunku gładkości korzystając z napiętego pola tensorowego, wybierana jest funkcja wymieniająca, biorąc pod uwagę tylko monotoniczne ograniczenia. Zaprezentowana metoda skutecznie wypełnia brakujące fragmenty krzywej i odrzuca błędne pomiary bez uproszczonego ani zbyt skomplikowanego modelu krzywej. Wybrane funkcje wymieniające są wykorzystane w zaproponowanym przez autorów iteracyjnym algorytmie dopasowującym w celu obliczenia najwłaściwszej macierzy przekształcenia. Metoda ta wygładza miejsce połączenia obrazów mimo dużych różnic w naświetleniu, także w przypadku, gdy nakładające się obrazy wymagają sporych przekształceń. Zaprezentowane przykłady ukazują skuteczność opisanej metody w trudnych zadaniach wymagających zmian naświetlenia czy eliminacji pozostałości kompresji, znacznie poprawiając dopasowanie obrazów. Przedstawione w publikacji wiadomości warte są przemyślenia, ponieważ prezentują odrębne od większości podejście. Na koniec zagadnienia poprawy jakości złączeń między obrazami warto spojrzeć do  CITATION Has  1045 (Hasler & Süsstrunk). Autorzy artykułu skupili się na rzadko poruszanym temacie obróbki kolorów podczas generowania obrazów panoramicznych. Zainteresowanie tym tematem wynika z faktu, że istniejące algorytmy dopasowywania obrazów potrafią skutecznie znaleźć sposób połączenia obrazów, jednak różnice kolorów w połączonych obrazach często są dość znaczne, natomiast dobrej jakości obraz panoramiczny powinien mieć kolory dopasowane. Zwykle problem ten był maskowany stosując gładkie przejście między kolorami w obrazach. W dokumencie opisano metodę jednoczesnego wyliczania położenia obrazów względem siebie i sposobu transformacji kolorów pomiędzy obrazami. Poprzez estymację kolorów ze sceny do pikseli, opisana metoda radzi sobie z dopasowywaniem kolorów w miejscu łączenia obrazów, nawet w przypadku, gdy różnica jest znaczna. Zamieszczono także szczegółowe analizy problemów występujących podczas łączenia obrazów, takich jak winiety czy różnica balansu bieli. Zaprezentowana metoda prowadzi do wygenerowania panoramicznego obrazu wysokiej jakości. Potwierdzają to zamieszczone w artykule wyniki eksperymentów, przeprowadzonych dla obrazów o ustalonych parametrach rejestracji, a także dla obrazów zarejestrowanych aparatem cyfrowym o nieznanych parametrach przesłony, balansu bieli i czasu naświetlania. Dokument przedstawia ciekawy, rzadko poruszany problem, dlatego wart jest uwagi.<br />Trudnym zagadnieniem, na którego temat istnieje wiele prac, jest tworzenie obrazów panoramicznych obejmujących kąt widzenia równy 360°. W  CITATION Shu1  1045  (Shum & Szeliski, Creating full view panoramic image mosaics and enviroment maps, 1997) zaprezentowano nowatorskie podejście do tworzenia panoramicznych obrazów o zakresie pełnych 360° z sekwencji obrazów. Stosując tradycyjne metody, używane do łączenia obrazów w panoramy, w przypadku, gdy obraz pokrywał 360° błędy nagromadzone podczas przetwarzania sprawiały, że zamknięcie okręgu nie było możliwe. Autorzy zachwalając swój algorytm, zapewniają, że rozwiązali ten problem, nie wymagając od fotografa obracania aparatu idealnie poziomo, ponieważ zaproponowany algorytm radzi sobie z łączeniem obrazów zrobionych zwykłym aparatem bez statywu, o ile nie występuje zbyt duże przesunięcie aparatu ani obiektów na scenie. W zaproponowanym podejściu mozaika obrazów reprezentowana jest poprzez zestaw przekształceń, gdzie nie występują problemy związane z zastosowaniem cylindrycznej bądź sferycznej przestrzeni. Zastosowano metodę bezpośredniej estymacji trójwymiarowych obrotów, rezygnując z ośmioparametrowego przekształcenia rzutowania perspektywicznego. Autorzy opisują także algorytmy obliczające ogniskową soczewki, a także algorytm ekstrakcji mapy otoczenia z obrazu panoramicznego, dzięki czemu podczas oglądania efektów obraz może być rzutowany na wielościan charakteryzujący otoczenie. Takie podejście pozwala oglądać wirtualne otoczenie prezentowane za pomocą obrazu panoramicznego za pomocą programów odtwarzających grafikę 3D, bez użycia specjalistycznych aplikacji do oglądania panoram. Ciekawą pracą poruszającą tą samą tematykę jest  CITATION Cap01  1045 (Capel, 2001). Autor pracy przeprowadził badania nad problemem wykorzystania danych zawartych w wielu nakładających się zdjęciach tej samej sceny, w celu stworzenia obrazu wysokiej jakości. Dzięki składaniu wielu obrazów w jeden możemy usunąć szum, zwiększyć pole widzenia, usunąć poruszające się obiekty, zmniejszyć rozmycie a także zwiększyć skalę jasności. Opisane zostały dokładnie poszczególne kroki prowadzące do stworzenia obrazu wyjściowego. Zaczynając od rejestracji obrazów, autor zaproponował efektywny algorytm mapujący jeden obraz na drugim, bazując tylko na informacjach z w nich zawartych, aby uzyskać informacje na temat przekształceń, których należy dokonać na obrazach, aby dopasować je do siebie. Przedstawione zostały osiągnięte wyniki. Kolejnym krokiem jest łączenie obrazów. Autor prezentuje dwa podejścia: pierwsze z nich, zwane ‘układaniem mozaiki’ polega na ułożeniu wielu obrazów w kompozycję, będącą reprezentacją pewnej sceny trójwymiarowej. Drugie podeście, nazwane przez autora ‘wysoka jakość’, prowadzi do polepszenia jakości sekwencji video poprzez usunięcie z nich zakłóceń pochodzących z procesu tworzenia sekwencji. Zaprezentowano model rejestracji sekwencji video, dzięki któremu stworzono algorytm wyszukujący najbardziej prawdopodobną estymatę obrazu pochodzącego z modelu. Zaprezentowano wyniki działania algorytmu, porównując je to istniejących wcześniej tego typu rozwiązań, dających znakomite efekty. Opisany algorytm okazuje się dawać porównywalne lub lepsze efekty, mając przy tym znacząco mniejszą złożoność obliczeniową. Jakość działania była testowana na prawdziwych zdjęciach, przedstawiających skomplikowane sceny, takie jak tekst czy twarze ludzkie, w operacjach tak złożonych jak tworzenie panoram o rozpiętości 360° czy wydobywanie informacji z sekwencji video niskiej jakości. Dodatkowo, w pracy przedstawiono nową metodę prezentacji stworzonego obrazu panoramicznego, która potrafi adaptacyjnie wybrać optymalny sposób rzutowania obrazu, odpowiedni dla danego przypadku. Również w  CITATION Xio98  1045 (Xiong & Turkowski, 1998) przedstawiono system służący do generowania pełnych, obejmujących 360° panoram z prostokątnych obrazów zarejestrowanych z tego samego punktu. Rozwiązanie podzielono na trzy kroki, pierwszy z nich to nałożenie zachodzących obrazów na siebie, stosując do tego przekształcenie projekcji. Autorzy zaproponowali kombinację opartej na gradiencie metody optymalizacji i liniowego wyszukiwania opartego na korelacji. Taka metoda daje odpowiednie dopasowanie obrazów do siebie, nawet przy drastycznych różnicach naświetlenia dwóch obrazów i niewielkim zjawisku paralaksy. W drugim kroku, biorąc macierze opisujące projekcję oraz ich skojarzone macierze Hesjanu, jako argumenty wejściowe, wyliczane są wewnętrzne i zewnętrzne parametry każdego obrazu poprzez globalną optymalizację. Celem jest tutaj zminimalizowanie ogólnych rozbieżności obrazów w całym regionie, w którym obrazy na siebie zachodzą, jednocześnie konwertując macierze opisujące projekcję na parametry związane z aparatem, takie jak długość ogniskowej soczewki, format zdjęcia, jego środek, orientacja w trzech wymiarach itp. Osiągane jest to poprzez minimalizację odpowiedniej funkcji celu. Trzeci krok polega na złożeniu wszystkich obrazów w panoramę stosując piramidę opartą o Laplasjan. Taki zabieg pozwala wygładzić krawędzie złączeń obrazów oraz wyeliminować niewielkie pozostałości niedopasowań spowodowane efektem paralaksy lub niedokładnego ustawienia pary obrazów. Maski służące do wygładzania przejść między obrazami są generowane automatycznie dzięki odpowiedniej transformacie. Dodatkowo, autorzy opisali konstrukcję interfejsu użytkownika, w którym może on dokonać niezbędnych operacji, takich jak inicjalizacja, czy ustawienia własne. Artykuł jest przydatnym źródłem doprecyzowującym wiele niedomówień w innych źródłach. Ciekawa, nowatorska metoda została zaprezentowana w  CITATION Yoo  1045 (Yoon & Ryoo). Autorzy proponują mapowanie otoczenia, z którego pobrane zostały obrazy na powierzchnię dwóch przecinających się prostopadle walców, nazwanych Orthogonal Cross Cylinder (OCC). Powierzchnia taka powstaje poprzez przecięcie cylindra osi Y z cylindrem osi Z. Dzięki zastosowaniu tej metody możemy pozbyć się dziwnych zachowań występujących w tradycyjnych metodach. Dodatkowo, każda jednostka powierzchni teksturowanej zajmuje w tym wypadku jednakową powierzchnię, nie będąc rozciągniętą. Tak reprezentowane otoczenie może być również oszczędniej przechowywane, dzięki bardziej dokładnemu dopasowaniu próbkowania. Autorzy piszą także, że w zaproponowanym przez nich podejściu renderowanie sceny mapowanej na OCC jest szybsze, dlatego polecają wykorzystanie tego modelu w systemach nawigacyjnych. Jest to ciekawe rozwiązanie, jednak trudne do wykorzystania w praktycznym systemie do tworzenia obrazów panoramicznych, ponieważ obrazy te wymagałyby specjalnej przeglądarki, sprawdzające się w przypadku gdy możemy zastosować dedykowaną aplikację do odtwarzania obrazów. <br />Warto zapoznać się z metodą tworzenia obrazów panoramicznych wspomaganych odpowiednim, specjalistycznym sprzętem fotograficznym. W  CITATION Bak  1045  (Bakstein & Pajdla, 2002) zaprezentowano technikę pozwalającą tworzyć obrazy panoramiczne obejmujące pole widzenia o rozpiętości 360° x 360° z użyciem soczewki o bardzo szerokim kącie widzenia typu ‘fish eye’. Został opisany sposób kalibracji aparatu rozszerzony o kalibrację aparatu z obiektywem szerokokątnym, o kącie widzenia szerszym niż 180°. Kalibrację zaprezentowano na praktycznym przykładzie, stosując obiektyw typu ‘fish eye’ firmy Nikon, będący przykładem niedrogiej soczewki wysokiej jakości, posiadającej kąt widzenia o rozpiętości aż 183°! Zastosowanie obiektywu zaprezentowano w użyciu w aplikacji, tworzącej mozaikę 360x360, o kącie widzenia do 360° w obu kierunkach! Artykuł ten jest dobrym przykładem kontrastującym z podejściem, prezentowanym w większości prac. Pokazuje, że obrazy panoramiczne można skutecznie tworzyć dzięki odpowiedniemu sprzętowi, a nie tylko w procesie obróbki i łączenia zdjęć. Programowe tworzenie panoram jest zatem tylko symulacją, usiłującą naśladować opisane w artykule podejście, zatem efekty uzyskane w sposób opisany w artykule mogą być celem, do którego dążyć powinny programy łączące obrazy w panoramy.<br />W związku z tym, że obrazy panoramiczne tworzone są zwykle ze zdjęć, zrobionych aparatem cyfrowym i zapisanych w formacie JPEG, warto zastanowić się nad zaprezentowaną w  CITATION Jac06  1045 (Jachimski & Mikrut, 2006) analizą wpływu kompresji JPEG na automatyczne wykrywanie cech szczególny w obrazach cyfrowych. Autorzy badali takie cechy obrazu jak krawędzie obiektów czy punkty przecięcia się krawędzi. Następnie dokonano analitycznej oceny degradacji tych cech, poprzez miary oparte na statystyce, skupiając się na informacjach dotyczących geometrii obrazu. Wpływ kompresji badano na podstawie takich miar straty jakości jak na przykład średni błąd położenia punktu w obrazie skompresowanym w stosunku do obrazu bez kompresji, czy korelacja między obrazami. Autorzy oparli badania na rzeczywistych obrazach satelitarnych posiadających cztery kanały spektralne: R, G, B oraz IR. Z przedstawionych badań wynika, że najmniej wrażliwy na degradację pod wpływem kompresji jest kanał R. Warto też zauważyć, że przy stopniu kompresji 10:1 średni błąd położenia piksela nie przekracza wartości 0.5 piksela.<br />Projekt aplikacji<br />Aplikacja stworzona w ramach niniejszej pracy powinna dawać możliwość porównania działania algorytmów nie tylko na podstawie subiektywnej oceny wizualnego efektu działania, ale również na podstawie porównania określonych deterministycznych współczynników. Gotowa aplikacja musi zostać tak skonstruowana, aby użytkownik miał możliwość łatwego wyboru algorytmów, które mają zostać zastosowane do połączenia obrazów. W związku z łatwością użycia jak i dobrą szybkością działania postanowiono zaprojektować program pod wykonanie go w języku Java 1.6, implementując go w graficznym środowisku programistycznym Netbeans 6.0 ze względu na łatwość budowy graficznych interfejsów użytkownika, do których postanowiono wykorzystać dostępne biblioteki Swing oraz AWT. Dodatkowo, postanowiono zwrócić uwagę na możliwość łatwego rozwijania aplikacji poprzez dodawanie nowych funkcjonalności. Projektowanie aplikacji zostało podzielone na abstrakcyjny projekt ogólny opisujący schemat działania, oraz na projekt szczegółowy opisujący technologie wykorzystane w każdym z kroków, przedstawiony w następnym rozdziale.<br />Rysunek  SEQ Rysunek  ARABIC 2: Schemat działania aplikacjiWybór i rozmieszczenie obrazówWybór algorytmów i ustawienie ich parametrówWykonanie algorytmów i zapis obrazów wynikowychSchemat działania aplikacji został sprowadzony do trzech kroków: wybór i rozmieszczenie obrazów, wybór algorytmów i ustawienie ich parametrów oraz wykonanie algorytmów na obrazach i zapis obrazów wynikowych ( REF _Ref202864216  Rysunek 2).<br />Główne okno aplikacji będzie zawierać panel z trzema zakładkami, odpowiadającymi powyższym krokom. Korzystanie z aplikacji odbywać się będzie według schematu użycia przedstawionego na Rysunku 3. <br />Rysunek  SEQ Rysunek  ARABIC 3: Schemat UML użycia zaimplementowanej aplikacji<br />W kroku pierwszym użytkownik będzie wybierał z dysku obrazy, które będzie chciał połączyć w panoramę. Obrazy będą wczytywane a następnie wyświetlane na ekranie. Użytkownik będzie określał położenie obrazów względem siebie poprzez przeciąganie ich przy pomocy wskaźnika myszy w odpowiednie miejsca. W związku z tym, że wykorzystywane biblioteki graficzne nie udostępniają komponentów udostępniających taką funkcję, postanowiono zbudować odpowiedni komponent rozszerzając klasę java.awt.Canvas. Jest to klasa komponentu pozwalającego na rysowanie na nim obrazów i kształtów; poprzez dołączenie do niej odpowiednich metod można zbudować z niej komponent odpowiadający postawionym wymaganiom. Struktura danych zawierająca obrazy wejściowe a także wektor opisujący położenie każdego z nich będą wykorzystywane w trzecim kroku w celu wyznaczenia kolejności przetwarzania obrazów.<br />Kolejnym krokiem jest wybór algorytmów oraz ustawienie ich parametrów. Również w tym przypadku z bogatej oferty komponentów dostępnych w bibliotekach Swing oraz AWT nie znalazło się nic, co pozwalałoby na efektywną prezentację na ekranie dostępnych algorytmów umożliwiając zmianę ich parametrów oraz łatwe dodanie każdego z nich do puli algorytmów, które mają zostać wykonane na obrazach. W związku z tym postanowiono rozwinąć istniejący komponent javax.swing.JTabbedPane o dodatkowy element Checkbox umieszczony na zakładce odpowiadającej danemu algorytmowi.<br />Aby umożliwić łatwe rozwijanie aplikacji o nową funkcjonalność zaplanowano użyć technologii pozwalającej na dynamiczne wczytywanie skompilowanych klas. Technologia ta zostanie wykorzystana na przykład do wczytywania klas implementujących algorytmy łączące obrazy w panoramy. Wykorzystanie jej oznacza, że aplikacja nie wymaga ponownej kompilacji w momencie dodania nowego algorytmu, wystarczy jedynie umieścić skompilowaną klasę algorytmu implementującą udostępniony interfejs w odpowiednim pakiecie, a będzie on widoczny i wykorzystywany w aplikacji. Klasa taka musi zawierać również metodę budującą graficzny interfejs pozwalający na sterowanie algorytmem. Ta sama technologia zostanie wykorzystana do ładowania funkcji wygładzających oraz do funkcji liczących różnicę między pikselami.<br />Ostatnim krokiem będzie uruchomienie działania algorytmów. Efektem są obrazy panoramiczne wykonane przez poszczególne algorytmy. Przetwarzanie obrazów będzie odbywało się w kolejności określonej podczas ustawiania obrazów wejściowych, od lewej do prawej. Rozważono dwie możliwe metody dopasowywania obrazów względem siebie. Jeśli będziemy wyliczać pozycję lewego obrazu względem nieruchomego prawego zyskujemy możliwość stworzenia prostej rekursywnej funkcji przyjmującej jako lewy obraz wynik poprzedniego wykonania funkcji, który będzie rósł wraz z każdym jej wykonaniem o kolejno dodawane nowe prawe obrazy. Zastosowanie takiej metody ma jednak bardzo ujemną właściwość akumulacji błędów aproksymacji, spowodowaną koniecznością wielokrotnego przekształcania powiększającego się lewego obrazu. Drugim z podejść jest dopasowanie pozycji obrazu prawego względem nieruchomego obrazu lewego. Aby uniknąć akumulacji błędów należy najpierw dopasowywać obrazy parami, a ostatecznie podczas rysowania kolejnego obrazu prawego dodać przekształcenia, którym poddano obraz leżący po jego lewej stronie. Do implementacji wybrano drugie podejście.<br /> Aby umożliwić wizualne porównanie wyników obrazy prezentowane będą w oddzielnych zakładkach. Porównanie deterministycznych wartości odpowiadających każdemu algorytmowi umożliwione będzie dzięki prezentacji w tabeli wyliczonych wartości, przesłanych przez kolejne algorytmy poprzez odpowiedni mechanizm do klasy odpowiedzialnej za uzupełnianie tabeli. Aby przyspieszyć działanie programu, planuje się zastosowanie przetwarzania wielowątkowego, umożliwiając tworzenie obrazów wyjściowych wieloma algorytmami jednocześnie. Zapis wybranych obrazów wynikowych będzie obsługiwany poprzez przycisk umieszczony w zakładce zawierającej dany obraz.<br />Budowa aplikacji będzie odbywała się według zasady „od ogółu do szczegółu”. Na początku zostaną stworzone ramy aplikacji, graficzny interfejs użytkownika, narzędzia wykorzystywane podczas tworzenia obrazów panoramicznych oraz moduły służące do obsługi plików wejściowych i wyjściowych. Następnie dodawane będą kolejne algorytmy, spajając całość procesu tworzenia obrazów wyjściowych. W końcowym etapie należy zająć się dopracowaniem szczegółów i usunięciem pojawiających się błędów. Diagram klas UML widoczny jest w załącznikach. Aplikacja skonstruowana według powyższego projektu pozwoli nie tylko na łatwe tworzenie obrazów panoramicznych, ale również na efektywne i dokładne porównanie między sobą różnych algorytmów.<br />Wykorzystane algorytmy i metody<br />Rozdział przedstawia szczegółowy opis wykorzystanych w tworzonej aplikacji algorytmów i metod służących stworzeniu obrazów panoramicznych.<br />Algorytmy ustawiające obrazy<br />Mając dane dwa obrazy będące składowymi obrazu panoramicznego, musimy wyznaczyć metodę opisującą ruch kamery pomiędzy zarejestrowaniem tych obrazów. Dzięki temu będziemy mogli ustawić obrazy względem siebie w odpowiedni sposób  CITATION Sze06  1045 (Szeliski, 2006). Algorytmy te dzielimy na dwie grupy: algorytmami bezpośrednimi nazywamy algorytmy bazujące na dopasowaniu obrazów piksel po pikselu, natomiast algorytmami bazującymi na punktach kluczowych nazywamy te, które dopasowują między sobą punkty kluczowe znalezione w poszczególnych obrazach.<br />Algorytmy bezpośrednie<br />Używanie algorytmów bezpośrednich wymaga w pierwszym kroku określenia metryki błędu do porównania obrazów. Następnie należy zaproponować metodę poszukiwania najlepszej pozycji obrazów względem siebie. Najprostszą metodą jest sprawdzenie wszystkich możliwych pozycji, jednak w praktyce może się to okazać zbyt kosztowne, dlatego możemy zastosować metodę wyszukiwania hierarchicznego. Techniki te opisano poniżej.<br />Metryka błędu<br />Najprostszą metodą określenia położenia dwóch obrazów względem siebie jest przesunięcie jednego z obrazów względem drugiego  CITATION Sze06  1045 (Szeliski, 2006). Mając dany obraz wzorcowy I0(x) opisany poprzez dyskretne wartości pikseli xi=(xi,yi) chcemy znaleźć jego położenie wewnątrz obrazu I1(x).  Rozwiązanie bazujące na metodzie najmniejszych kwadratów polega na znalezieniu minimum sumy kwadratów różnic (sum of squared differences, SSD) danej wzorem <br />ESSD=iI1xi+u-I0xi2=iei2 MACROBUTTON NumberReference  MERGEFORMAT (1)<br />gdzie u=(u, v) to przesunięcie, natomiast ei=I1xi+u-I0(xi) nazywane jest błędem residualnym. W związku z tym, że w przypadku obrazów panoramicznych tylko niewielka część obrazów wejściowych zachodzi na siebie, wartość wyliczona powyższym wzorem byłaby zależna od ilości nakładających się pikseli. Należy zatem obliczoną sumę podzielić przez ilość pikseli dla których była liczona, otrzymując tym samym średnią różnicę dla piksela. Obrazy kolorowe można przetwarzać poprzez sumowanie różnicy dla trzech kolorów. <br />Powyższa formuła może zostać zmodyfikowana tak, aby była mniej wrażliwa na szum poprzez zamianę błędu kwadratowego na odpowiednio odporną funkcję, która rosłaby wolniej niż kwadratowa funkcja kary skojarzona z metodą najmniejszych kwadratów. Przykładem takiej funkcji może być suma różnic bezwzględnych (sum of absolute differences, SAD) używana przy estymacji ruchu w kodowaniu sekwencji video z powodu małej złożoności obliczeniowej:<br />ESAD=iI1xi+u-I0(xi)=iei. MACROBUTTON NumberReference  MERGEFORMAT (2)<br />Inną korzystną funkcją, zachowującą się jak kwadratowa dla małych wartości, ale rosnąca wolniej z dala od początku układu może być funkcja Gemana-McClure’a  CITATION Sze06  1045 (Szeliski, 2006):<br />EGM=iI1xi+u-I0(xi)21+I1xi+u-I0(xi)2/a2, MACROBUTTON NumberReference  MERGEFORMAT (3)<br />gdzie a jest stałą, uważaną za wartość odcięcia dla wyjątków, a jej wartość można wyznaczyć na przykład poprzez obliczenie mediany różnic bezwzględnych i pomnożenie przez 1.4. <br />Poszukiwanie optymalnego rozmieszczenia obrazów<br />Najprostszym podejściem przy poszukiwaniu optymalnego rozmieszczenia obrazów jest obliczenie opisanej wyżej wartości błędu pomiędzy pikselami dla wszystkich możliwych pozycji a następnie wybranie tej, dla której wartość błędu jest najmniejsza. Biorąc jednak po uwagę fakt, że transformacja związana z ruchem kamery musi zostać skompensowana co najmniej obrotem i translacją obrazu, przy nawet niewielkiej rozdzielczości skutkuje to ogromnymi ilościami działań do wykonania. W związku z tym bardzo użyteczny okazuje się algorytm wyszukiwania hierarchicznego  CITATION Sze06  1045 (Szeliski, 2006): najpierw konstruowana jest piramida zawierająca obraz wejściowy przeskalowany do mniejszej rozdzielczości, a następnie poszukiwane jest położenie obrazów względem siebie dla najmniejszej rozdzielczości. Znaleziona pozycja na niższym poziomie szczegółów jest pozycją startową do wyszukiwania dokładniejszej pozycji w małym jej sąsiedztwie na wyższym poziomie. Algorytm ten nie gwarantuje uzyskania identycznego wyniku jak przy sprawdzeniu wszystkich możliwych pozycji, ale wynik powinien być zadowalający przy znacznie krótszym czasie działania. W celu opisu formalnego, zdefiniujmy<br />Ikl(xj)←Ikl-1(2xj) MACROBUTTON NumberReference  MERGEFORMAT (4)<br />jako obraz na poziomie l piramidy skonstruowany poprzez zmniejszenie rozdzielczości obrazu na poziomie l-1 o połowę. Na najwyższym poziomie szukamy pozycji u(l) , która minimalizuje różnicę pomiędzy obrazami I0(l) oraz I1(l). Zwykle jest to wykonywane poprzez przeszukanie wszystkich możliwych pozycji (w zadanym zakresie) u(l)ϵ 2-l-S,S2, gdzie S to zadany zakres na poziomie o oryginalnej rozdzielczości.<br />Kiedy właściwy wektor przemieszczenia zostanie wybrany, jest on wykorzystywany do wyznaczenia prawdopodobnego wektora przemieszczenia<br />u(l-1)←2u(l) MACROBUTTON NumberReference  MERGEFORMAT (5)<br />na poziomie o większej ilości szczegółów. Poszukiwanie optymalnego wektora przemieszczenia jest następnie powtarzane w niewielkim sąsiedztwie wokół wartości wyznaczonych w poprzednim kroku, na przykład u(l-1)±1. W ostatnim kroku możemy wyszukać optymalne parametry wektora przemieszczenia nie tylko pośród liczb całkowitych, ale również wśród ich ułamków. Wartości dla ułamkowych pozycji pikseli muszą zostać interpolowane przy pomocy odpowiedniej techniki.<br />Aby zautomatyzować proces tworzenia obrazów panoramicznych przy pomocy opisywanego algorytmu warto zastanowić się nad formułą pozwalającą na wyznaczenie optymalnej liczby poziomów piramidy, która będzie zastosowana w wyszukiwaniu hierarchicznym. Liczba poziomów musi być możliwie duża, ale ograniczona tak, aby ilość szczegółów na najniższym poziomie była wystarczająca do znalezienia właściwej pozycji obrazów względem siebie. W związku z tym, że wymiary obrazu będą zmniejszane o połowę, co poziom piramidy, ilość poziomów może być obliczona ze wzoru:<br />n=log2wt+1, MACROBUTTON NumberReference  MERGEFORMAT (6)<br />gdzie: w – długość jednego z boków obrazu,<br />t- minimalna długość tego boku, pozwalająca na właściwe dopasowanie.<br />Metodą prób i błędów ustalono, że optymalnym ograniczeniem dla dłuższego boku obrazu jest 16 pikseli.<br />Algorytmy bazujące na punktach kluczowych<br />Algorytmy bazujące na cechach w pierwszym kroku zajmują się znalezieniem punktów szczególnych w danych obrazach. Następnie te punkty szczególne są dopasowywane parami, i na podstawie ich położenia wyliczany jest wektor przemieszczenia. Jakość algorytmu w ogromnym stopniu zależy od jakości znalezionych punktów szczególnych i ich opisu. Algorytm powinien znajdować te punkty w odpowiednich miejscach niezależnie od zmian w naświetleniu, położeniu, orientacji obrazu a także w pewnym stopniu od zmian punktu widzenia czy skali.<br />SIFT:  Scale Invariant Feature Transform<br />Algorytm ten jest obecnie najpowszechniej stosowanym algorytmem przy tworzeniu obrazów panoramicznych, ze względu na jego bardzo dobre wyniki w porównaniu do innych tego typu algorytmów  CITATION Mik  1045 (Mikolajczyk & Schmid). Operuje na obrazach w skali szarości.<br />Wykrywanie ekstremów w przestrzeni skali<br />Punkty mogące być kluczowymi identyfikowane są za pomocą wydajnego algorytmu, a następnie dalej sprawdzane pod względem ich niezależności od przekształceń  CITATION Low04  1045 (Lowe, Distinctive Image Features from Scale-Invariant Keypoints, 2004). W pierwszym kroku punkty te są lokalizowane w obrazie oraz w konkretnej skali w taki sposób, aby mogły one być identycznie zlokalizowane w innym widoku tego samego obiektu. Następnie znajdowane są punkty niewrażliwe na zmianę skali poprzez wyszukiwanie cech stabilnych we wszystkich możliwych skalach, korzystając z ciągłej przestrzeni skali.<br />Przestrzeń skali obrazu zdefiniowana jest jako funkcja L(x,y,σ) będąca splotem funkcji Gaussa o różnych skalach G(x,y,σ) z obrazem wejściowym Ix,y:<br />Lx,y,σ=Gx,y,σ*Ix,y, MACROBUTTON NumberReference  MERGEFORMAT (7)<br />Gdzie * jest operatorem splotu oraz<br />Gx,y,σ=12πσ2e-(x2+y2)/2σ2 MACROBUTTON NumberReference  MERGEFORMAT (8)<br />Aby znalezione punkty kluczowe były stabilne w przestrzeni skali, stosuje się wyszukiwanie ekstremów tej przestrzeni stworzonej poprzez splot różnic funkcji Gaussa  (Difference-of-Gaussian) z obrazem, D(x,y,σ), która może zostać obliczona poprzez różnicę dwóch sąsiadujących skali z uwzględnieniem stałego mnożnika k:<br />Dx,y,σ=Gx,y,kσ-Gx,y,σ*Ix,y=Lx,y,kσ-Lx,y,σ. MACROBUTTON NumberReference  MERGEFORMAT (9)<br />Funkcja ta wykorzystywana jest z powodu łatwości w obliczeniu, ponieważ wygładzony obraz L musi zostać  wyznaczony w każdym przypadku opisu cech w przestrzeni skali, a D jest obliczana przez proste odjęcie obrazów  CITATION Low04  1045 (Lowe, Distinctive Image Features from Scale-Invariant Keypoints, 2004).<br />Oprócz tego udowodniono, że różnica funkcji Gaussa, zwana DoG, jest bliską aproksymacją znormalizowanego Laplasjanu z funkcji Gaussa σ2∇2G, którego to ekstrema według  CITATION Mik02  1045 (Mikolajczyk K. , 2002) są najbardziej stabilnymi punktami kluczowymi w obrazach, w porównaniu do wielu innych dostępnych funkcji.<br />Zależność pomiędzy D a σ2∇2G może zostać wyprowadzona ze wzoru na dyfuzję ciepła:<br />∂G∂σ=σ∇2G. MACROBUTTON NumberReference  MERGEFORMAT (10)<br />Wynika stąd, że ∇2G może zostać wyliczone ze skończonej aproksymacji ∂G∂σ korzystając z różnicy pomiędzy sąsiadującymi skalami kσ oraz σ:<br />σ∇2G= ∂G∂σ≈Gx,y,kσ-G(x,y,σ)kσ-σ, MACROBUTTON NumberReference  MERGEFORMAT (11)<br />a zatem:<br />Gx,y,kσ-Gx,y,σ≈k-1σ2∇2G. MACROBUTTON NumberReference  MERGEFORMAT (12)<br />To pokazuje, że jeśli funkcja DoG posiada skale różniące się o stałą wartość, automatycznie uwzględnia wtedy normalizację skali σ2 wymaganą przez Laplasjan niezależny od skali. Współczynnik (k – 1) w równaniu jest stały dla wszystkich skali i nie wpływa na położenie ekstremów. Błąd aproksymacji zbliża się do zera wraz ze zbliżaniem się k do 1, jednak w praktyce okazało się  CITATION Low04  1045 (Lowe, Distinctive Image Features from Scale-Invariant Keypoints, 2004), że aproksymacja ma znikomy wpływ na stabilność wykrywania ekstremów i ich lokalizacji, nawet dla stosunkowo dużych różnic między skalami, jak k=2.<br />Rysunek  SEQ Rysunek  ARABIC 4: Dla każdej oktawy przestrzeni skali obraz jest poddawany splotowi z funkcją Gaussa, dając w wyniku zestaw obrazów w lewej kolumnie. Sąsiadujące obrazy są odejmowane od siebie tworząc różnice w prawej kolumnie. Po każdej oktawie obraz rozmyty jest zmniejszany dwukrotnie.<br />Na  REF _Ref200952173  Rysunku 4. została zaprezentowana wydajna metoda konstrukcji D(x,y,σ). Obraz wejściowy jest przyrostowo splatany z funkcją Gaussa, aby dawać w wyniku obrazy oddzielone w przestrzeni skali stałą wartością współczynnika k, zaprezentowana w lewej kolumnie. Każda oktawa w przestrzeni skali (odpowiadająca podwajaniu σ) została podzielona na stałą ilość interwałów s, takich, że k=21s. Należy stworzyć s + 3 obrazy rozmyte dla każdej oktawy, tak, aby końcowe wykrywanie ekstremów obejmowało pełną oktawę. Sąsiadujące obrazy są od siebie odejmowane, aby stworzyć obrazy różnicowe DoG, pokazane po prawej stronie. Po przetworzeniu pełnej oktawy obraz rozmyty funkcją Gaussa o σ równej dwukrotności początkowej jej wartości (obraz ten będzie trzecim obrazem od początku stosu obrazów) jest skalowany poprzez wzięcie co drugiego piksela z każdej kolumny i każdego wiersza. Jakość próbkowania zależna od σ nie różni się od tej na początku poprzedniej oktawy, podczas gdy ilość obliczeń jest mocno zredukowana. <br />Rysunek  SEQ Rysunek  ARABIC 5: przykład piramidy rozmytych obrazów oraz piramidy DoG. Źródło:  CITATION Ost  1045 (Ostiak).<br />W celu wykrycia ekstremów w D(x,y,σ) każdy piksel porównywany jest z jego ośmioma sąsiadami w danym obrazie oraz z dziewięcioma w skali ponad i poniżej, tak jak na  REF _Ref200956711  Rysunku 6. Piksel oznaczany jest jako ekstremum tylko gdy jest większy bądź mniejszy od wszystkich jego sąsiadów. Koszt takiego sprawdzenia jest dość stosunkowo niski, ze względu na fakt, że większość sprawdzanych punktów jest odrzucana podczas kilku pierwszych porównań.<br />Ważnym zagadnieniem jest ustalenie częstotliwości próbkowania przestrzeni obrazu i skali koniecznej do wiarygodnego znalezienia ekstremów. Niestety okazuje się, że nie istnieje określona minimalna odległość pomiędzy dwoma ekstremami, jako że mogą one leżeć bardzo blisko siebie. Można to zauważyć rozważając przypadek białego koła na czarnym tle, które będzie miało pojedyncze maksimum w przestrzeni skali w miejscu, gdzie pozytywny region centralny funkcji DoG dopasuje się do rozmiaru i położenia okręgu. Dla bardzo wydłużonej elipsy znajdziemy dwa ekstrema położone blisko jej końców, ale skoro położenie maksimów jest ciągłą funkcją obrazu, dla elipsy o umiarkowanym wydłużeniu znajdziemy się pomiędzy powyższymi przypadkami, z dwoma maksimami leżącymi bardzo blisko siebie. Z tego powodu należy znaleźć złoty środek pomiędzy wydajnością a dokładnością.  W praktyce jednak okazuje się  CITATION Low04  1045 (Lowe, Distinctive Image Features from Scale-Invariant Keypoints, 2004), że ekstrema leżące blisko siebie są dość niestabilne nawet przy niewielkich zmianach w obrazie. Najlepsze wartości znajdowane są eksperymentalnie poprzez przestudiowanie wyników dla różnych częstotliwości próbkowania i wybranie tych dających najbardziej rzetelne rezultaty w warunkach symulacyjnych.<br />Rysunek  SEQ Rysunek  ARABIC 6: Ekstrema funkcji DoG są wykrywane poprzez porównanie piksela (oznaczonego jako X) z jego 26 sąsiadami (oznaczone kołami) w obszarze 3x3 w obrazie oraz jego dwóch sąsiednich skalach.<br />Częstotliwość próbkowania w dziedzinie skali została wyznaczona na podstawie badania 32 naturalnych obrazów o różnej tematyce.  Każdy z obrazów został poddany różnym transformacjom, takim jak obrót, skalowanie, rozciąganie, zmiana kontrastu czy zaszumienie. Zmian dokonano syntetycznie, a zatem możliwe było precyzyjne określenie gdzie powinien znajdować się każdy punkt kluczowy znaleziony przed transformacją, co pozwoliło na pomiar powtarzalności i dokładności metod. Eksperyment wyraźnie wykazał, że największa powtarzalność osiągana jest przy 3 skalach na oktawę. Wynika to z faktu, że większa ilość skali na oktawę powoduje wykrycie znacznie większej ilości ekstremów lokalnych, które okazują się być mało stabilne i nie są znajdowane w obrazach po przekształceniu. Dzięki tak małej częstotliwości wykrywanie ekstremów jest mało kosztowne obliczeniowo.<br />Po określeniu częstotliwości próbkowania w dziedzinie skali należało określić częstotliwość próbkowania w przestrzeni zależną od skali wygładzania. Również w tym przypadku istnieje zależność pomiędzy częstotliwością a jakością wykrywania ekstremów, wynikająca z możliwej małej odległości pomiędzy ekstremami. Eksperymenty wykazały bardzo dobrą powtarzalność przy zastosowaniu σ=1,6 do wygładzania przed zbudowaniem oktawy skali.  Oczywiście wygładzanie takie powoduje efektywną stratę dużej ilości informacji o wysokiej częstotliwości. Z tego powodu zdecydowano się na rozszerzenie obrazu, aby otrzymać większą ilość punktów kluczowych. Rozmiar obrazu jest zwiększany dwukrotnie przed zbudowaniem pierwszego poziomu piramidy, używając interpolacji liniowej. Zakładając, że obraz wejściowy charakteryzuje się rozmyciem o co najmniej σ=0,5 (jest to minimum, wymagane aby uniknąć efektu aliasingu), stąd obraz o dwukrotnie większym rozmiarze rozmyty jest z σ=1,0. Oznacza to, że potrzebne jest jedynie niewielkie dodatkowe rozmycie otrzymanego obrazu przed rozpoczęciem tworzenia oktawy skali. Działanie takie zwiększa liczbę stabilnych punktów kluczowych prawie czterokrotnie, jednak nie zauważono żadnych innych pozytywnych skutków dalszego rozszerzania obrazu  CITATION Low04  1045 (Lowe, Distinctive Image Features from Scale-Invariant Keypoints, 2004).<br />Wyznaczanie dokładnego położenia punktów kluczowych<br />Po znalezieniu punktów mogących być kluczowymi, poprzez porównanie ich z sąsiednimi, następnym krokiem jest dokładne przeanalizowanie posiadanych danych na temat ich lokalizacji, skali oraz stosunku krzywizn w sąsiedztwie. Pozwala to na odrzucenie punktów o słabym kontraście (a tym samym wrażliwych na szum) lub źle zlokalizowanych na krawędzi.<br />Dzięki opracowaniu metody  CITATION Low04  1045 (Lowe, Distinctive Image Features from Scale-Invariant Keypoints, 2004) dopasowania trójwymiarowej funkcji kwadratowej do lokalnych punktów próbkowych w celu określenia interpolowanej lokalizacji ekstremum udało się znacznie polepszyć dopasowanie i stabilność punktów kluczowych znalezionych jako piksele. Dokonuje się tego używając rozszerzenie Taylora do funkcji przestrzeni skali, D(x,y,σ), przesuniętej tak, że początek układu współrzędnych znajduje się w punkcie próbkowania:<br />Dx=D+∂DT∂xx+12xT∂2D∂x2x MACROBUTTON NumberReference  MERGEFORMAT (13)<br />gdzie D i jego pochodne przetwarzane są w punkcie próbkowania oraz x=(x,y,σ)T jest przesunięciem względem tego punktu. Położenie ekstremum, x, wyznaczane jest poprzez przyrównanie różniczki powyższej funkcji względem x do zera, co daje<br />x=-∂2D-1∂x2 ∂D∂x. MACROBUTTON NumberReference  MERGEFORMAT (14)<br />Hesjan oraz pochodna D są aproksymowane korzystając z różnic sąsiednich punktów. Jeśli przesunięcie x jest większe niż 0,5 w którymkolwiek z kierunków, oznacza to, że ekstremum leży bliżej innego piksela. W takim przypadku próbkowany punkt jest zmieniany i interpolacja odbywa się na tym punkcie. Wynikowe przesunięcie x jest dodawane do położenia tego punktu aby otrzymać interpolowane położenie tego ekstremum.<br />Obliczenie wartości funkcji w ekstremum, D(x), jest przydatne przy odrzucaniu niestabilnych punktów kluczowych o niskim kontraście.  Wartość tej funkcji można obliczyć ze wzoru<br />Dx=D+12∂DT∂xx. MACROBUTTON NumberReference  MERGEFORMAT (15)<br />Usuwanie wpływu krawędzi<br />Ze względów stabilności usuwanie punktów kluczowych o niskim kontraście nie jest konieczne, natomiast funkcja DoG daje wysoką wartość wzdłuż krawędzi nawet, jeśli zlokalizowanie tam punktu kluczowego nie jest silnie uzasadnione  CITATION Low04  1045 (Lowe, Distinctive Image Features from Scale-Invariant Keypoints, 2004). Skutkuje to brakiem stabilności na niewielki szum. Maksimum funkcji DoG niewiele wyróżniające się ponad otaczające je wartości będzie charakteryzowało się wysoką wartością krzywizny poprzecznej do krawędzi, natomiast niską wzdłuż krawędzi. Krzywizny mogą zostać wyliczone z macierzy Hesjanu 2x2, H, wyznaczonej dla miejsca i skali związanej z punktem kluczowym:<br />H= DxxDxyDxyDyy MACROBUTTON NumberReference  MERGEFORMAT (16)<br />Wartości pochodnych wyliczane są poprzez różnice sąsiednich pikseli.<br />Wartości własne macierzy H są proporcjonalne do krzywizn D. W związku z tym, że interesują nas nie same wartości własne, ale ich stosunek, możemy wprowadzić α jako większą z wartości własnych oraz β jako mniejszą. Sumę tych wartości możemy obliczyć jako ślad H, natomiast iloczyn jako wyznacznik:<br />TrH= Dxx+Dyy=α+β, MACROBUTTON NumberReference  MERGEFORMAT (17)DetH= DxxDyy-(Dxy)2=αβ. MACROBUTTON NumberReference  MERGEFORMAT (18)<br />W przypadku, w którym wyznacznik jest ujemny wartości krzywizn są różnych znaków, oznacza to, że punkt nie jest ekstremum i jest odrzucany. Niech r będzie stosunkiem większej wartości własnej do mniejszej, tak, że α=rβ. Wówczas<br />Tr(H)2Det(H)=(α+β)2αβ=(rβ+β)2rβ2=(r+1)2r, MACROBUTTON NumberReference  MERGEFORMAT (19)<br />jest zależne jedynie od stosunku wartości własnych, a nie ich wartości. Wyniki powyższego równania jest minimalny, jeśli wartości własne są sobie równe, a rośnie wraz ze wzrostem r. A zatem chcąc sprawdzić czy stosunek wartości własnych jest większy od jakiejś wartości, r, musimy jedynie sprawdzić<br />Tr(H)2Det(H)<(r+1)2r. MACROBUTTON NumberReference  MERGEFORMAT (20)<br />Sprawdzenie tej nierówności jest bardzo wydajne obliczeniowo, zajmując zwykle mniej niż 20 operacji zmiennoprzecinkowych dla każdego punktu kluczowego. <br />Przypisanie orientacji<br />Poprzez przypisanie orientacji do każdego znalezionego punktu kluczowego deskryptor tego punktu będzie stworzony relatywnie do jego orientacji przez co będzie niezależny od orientacji. Pomimo kilku wad, takich jak ograniczenie możliwości wykorzystania deskryptorów do tych niebazujących na spójności orientacji, metoda ta okazała się najbardziej stabilna  CITATION Low04  1045 (Lowe, Distinctive Image Features from Scale-Invariant Keypoints, 2004). Skala punktu kluczowego wykorzystywana jest do wybrania obrazu L spleconego z funkcją Gaussa o najbliższej skali, dzięki czemu wszystkie obliczenia dokonywane są niezależnie od skali. Dla każdej próbki L(x,y) w danej skali obliczany jest kierunek θx,y i wielkość m(x,y) gradientu. Wartości te obliczane są na podstawie różnic pomiędzy pikselami:<br />mx,y=Lx+1,y-L(x-1,y)2+Lx,y+1-L(x,y-1)2 MACROBUTTON NumberReference  MERGEFORMAT (21)θx,y=tan-1Lx,y+1-L(x,y-1)/Lx+1,y)-L(x-1,y) MACROBUTTON NumberReference  MERGEFORMAT (22)<br />Histogram orientacji jest tworzony na podstawie orientacji gradientów w sąsiedztwie wokół danego punktu. Histogram ten ma 36 przedziałów pokrywających 360 stopni. Każda wartość dodawana do histogramu jest ważona wielkością gradientu oraz oknem gaussowskim o σ równym 1,5 razy skala danego punktu kluczowego.<br />Maksima histogramu orientacji odpowiadają dominującym kierunkom lokalnego gradientu. Wybierany jest najwyższy wierzchołek, i jeśli w histogramie istnieje inne maksimum o wielkości co najmniej 80% najwyższego, tworzony jest kolejny punkt kluczowy z tą orientacją. Oznacza to, że w punktach, dla których w histogramie istnieje wiele wierzchołków o podobnej wielkości zostanie stworzonych wiele punktów kluczowych o tej samej lokalizacji, ale różnych orientacjach. Zwykle około 15% punktów posiada wiele orientacji, ale wpływa to znacząco na stabilność dopasowania punktów kluczowych  CITATION Low04  1045 (Lowe, Distinctive Image Features from Scale-Invariant Keypoints, 2004). Na koniec trzy wartości histogramu najbliższe każdego wierzchołka interpolowane są parabolą, aby lepiej wyznaczyć położenie wierzchołka.<br />Przykład zastosowania algorytmu SIFT można zobaczyć na  REF _Ref201402919  Rysunku 11A.<br />Lokalny deskryptor obrazu<br />Opisane powyżej operacje przyporządkowały każdemu punktowi kluczowemu lokalizację, skalę oraz orientację. Parametry te zostały wyliczone z powtarzalnością zapewniającą niezmienniczość względem nich. Następnym krokiem jest zatem stworzenie deskryptora obszaru obrazu będącego bardzo indywidualnym a jednocześnie możliwie niezmienniczym względem pozostałych przekształceń, takich jak zmiana naświetlenia czy punktu widzenia. Autor algorytmu po wielu badaniach  CITATION Low04  1045 (Lowe, Distinctive Image Features from Scale-Invariant Keypoints, 2004) zdecydował się na zastosowanie podejścia bazującego na biologicznym modelu widzenia jako funkcji neuronów w korze mózgowej.<br /> REF _Ref200992342  Rysunek 6. przedstawia sposób tworzenia deskryptora. W pierwszym kroku wyznaczane są wielkość i kierunek gradientu w punktach wokół punktu kluczowego, używając skali punktu kluczowego jako poziomu rozmycia gaussowskiego obrazu. Dla osiągnięcia niezmienniczości względem obrotu współrzędne deskryptora oraz kierunki gradientów obracane są relatywnie do orientacji punktu kluczowego. Ze względów wydajności gradienty są wyliczane zawczasu dla wszystkich poziomów piramidy. Widoczne są one jako małe strzałki po lewej stronie  REF _Ref200992342  Rysunku 6.<br />Kierunki i wartości gradientuDeskryptor punktu kluczowego<br />Rysunek  SEQ Rysunek  ARABIC 6: Deskryptor punktu kluczowego tworzony jest poprzez obliczenie wartości i kierunku gradientów w każdym punkcie w danym sąsiedztwie, widoczne po lewej stronie. Wartości gradientów ważone są za pomocą okna gaussowskiego, oznaczonego zielonym okręgiem. Wartości te są następnie akumulowane w histogramach obejmujących podobszary 4x4, widoczne po prawej stronie.<br />Gaussowska funkcja ważąca o σ równym połowie wielkości okna deskryptora stosowana jest do wyliczenia wielkości gradientu w każdym punkcie. Taki zabieg stosuje się aby zapobiec nagłym zmianom w deskryptorze przy niewielkich zmianach w pozycji okna, oraz aby nadać mniejsze znaczenie gradientom leżącym daleko od środka deskryptora, ponieważ są one bardziej narażone na błędy.<br />Deskryptor punktu kluczowego pokazany jest po prawej stronie Rysunku 6. Pozwala on na znaczne zmiany w położeniu gradientów dzięki zastosowaniu podobszarów o wielkości 4x4 pola. Na rysunku widocznych jest osiem kierunków dla każdego histogramu, z długościami strzałek odpowiadającymi wielkościom gradientów. Próbka gradientu po lewej stronie może przemieścić się aż o 4 pozycje próbkowania dając wciąż ten sam histogram po prawej stronie.<br />Ważne jest, aby zapobiec wszelkim efektom wynikającym z granicznego przejścia danej próbki z jednego histogramu do drugiego lub z jednego kierunku gradientu w inny. W związku z tym używana jest trójliniowa interpolacja przy przyporządkowywaniu danej wartości do odpowiedniego przedziału histogramu.  Innymi słowy, każda wartość mnożona jest przez wagę równą 1 – d dla każdego wymiaru, gdzie d równe jest odległości próbki od środko
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...
Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...

Weitere ähnliche Inhalte

Was ist angesagt?

ChatGPT: Table of Contents for Debate
ChatGPT: Table of Contents for DebateChatGPT: Table of Contents for Debate
ChatGPT: Table of Contents for DebateAron Brand
 
Management Performance Tools for cooperatives
Management Performance Tools for cooperativesManagement Performance Tools for cooperatives
Management Performance Tools for cooperativesjo bitonio
 
chat bots are the future of communication.pptx
chat bots are the future of communication.pptxchat bots are the future of communication.pptx
chat bots are the future of communication.pptxJIMSVKII
 
Planning Checklist and Selected Guidelines for Cooperative Operation and Mana...
Planning Checklist and Selected Guidelines for Cooperative Operation and Mana...Planning Checklist and Selected Guidelines for Cooperative Operation and Mana...
Planning Checklist and Selected Guidelines for Cooperative Operation and Mana...jo bitonio
 
Clever data: building a chatbot from your database
Clever data: building a chatbot from your databaseClever data: building a chatbot from your database
Clever data: building a chatbot from your databaseLuis Beltran
 
How will sidelink bring a new level of 5G versatility.pdf
How will sidelink bring a new level of 5G versatility.pdfHow will sidelink bring a new level of 5G versatility.pdf
How will sidelink bring a new level of 5G versatility.pdfQualcomm Research
 
Take a holistic view of your product with Service Blueprints, at UXSEA Summit...
Take a holistic view of your product with Service Blueprints, at UXSEA Summit...Take a holistic view of your product with Service Blueprints, at UXSEA Summit...
Take a holistic view of your product with Service Blueprints, at UXSEA Summit...Kuldeep Kulshreshtha
 
A.I. Explore: Prompt Fundamentals, Book 1
A.I. Explore: Prompt Fundamentals, Book 1A.I. Explore: Prompt Fundamentals, Book 1
A.I. Explore: Prompt Fundamentals, Book 1Brian Sykes
 
iBwave Certification - Level 1
iBwave Certification - Level 1iBwave Certification - Level 1
iBwave Certification - Level 1Karim Awad
 
Why and what you need to know about 6G in 2022
Why and what you need to know about 6G in 2022Why and what you need to know about 6G in 2022
Why and what you need to know about 6G in 2022Qualcomm Research
 
The Credit Surety Fund Cooperative Act of 2015
The Credit Surety Fund Cooperative Act of 2015The Credit Surety Fund Cooperative Act of 2015
The Credit Surety Fund Cooperative Act of 2015jo bitonio
 
Building a Testing Playbook by Andrew Richardson
Building a Testing Playbook by Andrew RichardsonBuilding a Testing Playbook by Andrew Richardson
Building a Testing Playbook by Andrew RichardsonDelphic Digital
 
GPT3 API vs. Reality
GPT3 API vs. RealityGPT3 API vs. Reality
GPT3 API vs. RealityTim Spalding
 
Getting Started with ChatGPT.pdf
Getting Started with ChatGPT.pdfGetting Started with ChatGPT.pdf
Getting Started with ChatGPT.pdfManish Chopra
 

Was ist angesagt? (16)

ChatGPT: Table of Contents for Debate
ChatGPT: Table of Contents for DebateChatGPT: Table of Contents for Debate
ChatGPT: Table of Contents for Debate
 
Management Performance Tools for cooperatives
Management Performance Tools for cooperativesManagement Performance Tools for cooperatives
Management Performance Tools for cooperatives
 
chat bots are the future of communication.pptx
chat bots are the future of communication.pptxchat bots are the future of communication.pptx
chat bots are the future of communication.pptx
 
Planning Checklist and Selected Guidelines for Cooperative Operation and Mana...
Planning Checklist and Selected Guidelines for Cooperative Operation and Mana...Planning Checklist and Selected Guidelines for Cooperative Operation and Mana...
Planning Checklist and Selected Guidelines for Cooperative Operation and Mana...
 
Clever data: building a chatbot from your database
Clever data: building a chatbot from your databaseClever data: building a chatbot from your database
Clever data: building a chatbot from your database
 
How will sidelink bring a new level of 5G versatility.pdf
How will sidelink bring a new level of 5G versatility.pdfHow will sidelink bring a new level of 5G versatility.pdf
How will sidelink bring a new level of 5G versatility.pdf
 
Take a holistic view of your product with Service Blueprints, at UXSEA Summit...
Take a holistic view of your product with Service Blueprints, at UXSEA Summit...Take a holistic view of your product with Service Blueprints, at UXSEA Summit...
Take a holistic view of your product with Service Blueprints, at UXSEA Summit...
 
Future of conversational AI
Future of conversational AIFuture of conversational AI
Future of conversational AI
 
A.I. Explore: Prompt Fundamentals, Book 1
A.I. Explore: Prompt Fundamentals, Book 1A.I. Explore: Prompt Fundamentals, Book 1
A.I. Explore: Prompt Fundamentals, Book 1
 
iBwave Certification - Level 1
iBwave Certification - Level 1iBwave Certification - Level 1
iBwave Certification - Level 1
 
Why and what you need to know about 6G in 2022
Why and what you need to know about 6G in 2022Why and what you need to know about 6G in 2022
Why and what you need to know about 6G in 2022
 
The Credit Surety Fund Cooperative Act of 2015
The Credit Surety Fund Cooperative Act of 2015The Credit Surety Fund Cooperative Act of 2015
The Credit Surety Fund Cooperative Act of 2015
 
Building a Testing Playbook by Andrew Richardson
Building a Testing Playbook by Andrew RichardsonBuilding a Testing Playbook by Andrew Richardson
Building a Testing Playbook by Andrew Richardson
 
GPT3 API vs. Reality
GPT3 API vs. RealityGPT3 API vs. Reality
GPT3 API vs. Reality
 
Mobile number portability
Mobile number portabilityMobile number portability
Mobile number portability
 
Getting Started with ChatGPT.pdf
Getting Started with ChatGPT.pdfGetting Started with ChatGPT.pdf
Getting Started with ChatGPT.pdf
 

Andere mochten auch

Znieczulenie Ogolne Wu
Znieczulenie Ogolne WuZnieczulenie Ogolne Wu
Znieczulenie Ogolne WuPolanest
 
Organizacja, Wyposazenie I Zadania Intensywnej Terapii
Organizacja, Wyposazenie I Zadania Intensywnej TerapiiOrganizacja, Wyposazenie I Zadania Intensywnej Terapii
Organizacja, Wyposazenie I Zadania Intensywnej TerapiiPolanest
 
Sytuacje krytyczne
Sytuacje krytyczneSytuacje krytyczne
Sytuacje krytycznePolanest
 
Usmierzanie bolu ostrego lodz_2015_02_18
Usmierzanie bolu ostrego lodz_2015_02_18Usmierzanie bolu ostrego lodz_2015_02_18
Usmierzanie bolu ostrego lodz_2015_02_18Polanest
 
Bezpieczeństwo znieczulenia. Powikłania znieczulenia.
Bezpieczeństwo znieczulenia. Powikłania znieczulenia.Bezpieczeństwo znieczulenia. Powikłania znieczulenia.
Bezpieczeństwo znieczulenia. Powikłania znieczulenia.Polanest
 
Podstawy wentylacji mechanicznej
Podstawy wentylacji mechanicznejPodstawy wentylacji mechanicznej
Podstawy wentylacji mechanicznejPolanest
 

Andere mochten auch (6)

Znieczulenie Ogolne Wu
Znieczulenie Ogolne WuZnieczulenie Ogolne Wu
Znieczulenie Ogolne Wu
 
Organizacja, Wyposazenie I Zadania Intensywnej Terapii
Organizacja, Wyposazenie I Zadania Intensywnej TerapiiOrganizacja, Wyposazenie I Zadania Intensywnej Terapii
Organizacja, Wyposazenie I Zadania Intensywnej Terapii
 
Sytuacje krytyczne
Sytuacje krytyczneSytuacje krytyczne
Sytuacje krytyczne
 
Usmierzanie bolu ostrego lodz_2015_02_18
Usmierzanie bolu ostrego lodz_2015_02_18Usmierzanie bolu ostrego lodz_2015_02_18
Usmierzanie bolu ostrego lodz_2015_02_18
 
Bezpieczeństwo znieczulenia. Powikłania znieczulenia.
Bezpieczeństwo znieczulenia. Powikłania znieczulenia.Bezpieczeństwo znieczulenia. Powikłania znieczulenia.
Bezpieczeństwo znieczulenia. Powikłania znieczulenia.
 
Podstawy wentylacji mechanicznej
Podstawy wentylacji mechanicznejPodstawy wentylacji mechanicznej
Podstawy wentylacji mechanicznej
 

Ähnlich wie Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...

38. Montowanie i testowanie połączeń układów automatyki
38. Montowanie i testowanie połączeń układów automatyki38. Montowanie i testowanie połączeń układów automatyki
38. Montowanie i testowanie połączeń układów automatykiLukas Pobocha
 
Struktury danych i techniki obiektowe na przykładzie Javy 5.0
Struktury danych i techniki obiektowe na przykładzie Javy 5.0Struktury danych i techniki obiektowe na przykładzie Javy 5.0
Struktury danych i techniki obiektowe na przykładzie Javy 5.0Wydawnictwo Helion
 
e2e frameworks - czyli kij ma dwa końce
e2e frameworks - czyli kij ma dwa końcee2e frameworks - czyli kij ma dwa końce
e2e frameworks - czyli kij ma dwa końceThe Software House
 
Java. Aplikacje bazodanowe. Najlepsze rozwiązania
Java. Aplikacje bazodanowe. Najlepsze rozwiązaniaJava. Aplikacje bazodanowe. Najlepsze rozwiązania
Java. Aplikacje bazodanowe. Najlepsze rozwiązaniaWydawnictwo Helion
 
J2EE. Podstawy programowania aplikacji korporacyjnych
J2EE. Podstawy programowania aplikacji korporacyjnychJ2EE. Podstawy programowania aplikacji korporacyjnych
J2EE. Podstawy programowania aplikacji korporacyjnychWydawnictwo Helion
 
Grill It Krakow - Usability Lab, monitoring www
Grill It Krakow - Usability Lab, monitoring wwwGrill It Krakow - Usability Lab, monitoring www
Grill It Krakow - Usability Lab, monitoring wwwDmitrij Żatuchin
 
Technik.mechatronik 311[50] z2.03_u
Technik.mechatronik 311[50] z2.03_uTechnik.mechatronik 311[50] z2.03_u
Technik.mechatronik 311[50] z2.03_uKubaSroka
 
ASP.NET 3.5 dla programistów PHP
ASP.NET 3.5 dla programistów PHPASP.NET 3.5 dla programistów PHP
ASP.NET 3.5 dla programistów PHPWydawnictwo Helion
 
Quality and usability of WWW - user tracks
Quality and usability of WWW - user tracksQuality and usability of WWW - user tracks
Quality and usability of WWW - user tracksDmitrij Żatuchin
 
Architektura aplikacji android
Architektura aplikacji androidArchitektura aplikacji android
Architektura aplikacji androidSages
 
Divante - Mała książeczka sukcesów
Divante - Mała książeczka sukcesówDivante - Mała książeczka sukcesów
Divante - Mała książeczka sukcesówDivante
 
Technik.mechatronik 311[50] z4.02_u
Technik.mechatronik 311[50] z4.02_uTechnik.mechatronik 311[50] z4.02_u
Technik.mechatronik 311[50] z4.02_uKubaSroka
 

Ähnlich wie Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ... (20)

Ajax w akcji
Ajax w akcjiAjax w akcji
Ajax w akcji
 
38. Montowanie i testowanie połączeń układów automatyki
38. Montowanie i testowanie połączeń układów automatyki38. Montowanie i testowanie połączeń układów automatyki
38. Montowanie i testowanie połączeń układów automatyki
 
Struktury danych i techniki obiektowe na przykładzie Javy 5.0
Struktury danych i techniki obiektowe na przykładzie Javy 5.0Struktury danych i techniki obiektowe na przykładzie Javy 5.0
Struktury danych i techniki obiektowe na przykładzie Javy 5.0
 
e2e frameworks - czyli kij ma dwa końce
e2e frameworks - czyli kij ma dwa końcee2e frameworks - czyli kij ma dwa końce
e2e frameworks - czyli kij ma dwa końce
 
Java. Aplikacje bazodanowe. Najlepsze rozwiązania
Java. Aplikacje bazodanowe. Najlepsze rozwiązaniaJava. Aplikacje bazodanowe. Najlepsze rozwiązania
Java. Aplikacje bazodanowe. Najlepsze rozwiązania
 
18
1818
18
 
Technik.elektryk 311[08] z2.04_u
Technik.elektryk 311[08] z2.04_uTechnik.elektryk 311[08] z2.04_u
Technik.elektryk 311[08] z2.04_u
 
Z2.04
Z2.04Z2.04
Z2.04
 
Z2.03
Z2.03Z2.03
Z2.03
 
J2EE. Podstawy programowania aplikacji korporacyjnych
J2EE. Podstawy programowania aplikacji korporacyjnychJ2EE. Podstawy programowania aplikacji korporacyjnych
J2EE. Podstawy programowania aplikacji korporacyjnych
 
Grill It Krakow - Usability Lab, monitoring www
Grill It Krakow - Usability Lab, monitoring wwwGrill It Krakow - Usability Lab, monitoring www
Grill It Krakow - Usability Lab, monitoring www
 
Technik.mechatronik 311[50] z2.03_u
Technik.mechatronik 311[50] z2.03_uTechnik.mechatronik 311[50] z2.03_u
Technik.mechatronik 311[50] z2.03_u
 
TECHNIK FOTOGRAFII I MULTIMEDIÓW
TECHNIK FOTOGRAFII I MULTIMEDIÓWTECHNIK FOTOGRAFII I MULTIMEDIÓW
TECHNIK FOTOGRAFII I MULTIMEDIÓW
 
ASP.NET 3.5 dla programistów PHP
ASP.NET 3.5 dla programistów PHPASP.NET 3.5 dla programistów PHP
ASP.NET 3.5 dla programistów PHP
 
Quality and usability of WWW - user tracks
Quality and usability of WWW - user tracksQuality and usability of WWW - user tracks
Quality and usability of WWW - user tracks
 
Spring. Zapiski programisty
Spring. Zapiski programistySpring. Zapiski programisty
Spring. Zapiski programisty
 
Architektura aplikacji android
Architektura aplikacji androidArchitektura aplikacji android
Architektura aplikacji android
 
Jaki framework wybrać
Jaki framework wybraćJaki framework wybrać
Jaki framework wybrać
 
Divante - Mała książeczka sukcesów
Divante - Mała książeczka sukcesówDivante - Mała książeczka sukcesów
Divante - Mała książeczka sukcesów
 
Technik.mechatronik 311[50] z4.02_u
Technik.mechatronik 311[50] z4.02_uTechnik.mechatronik 311[50] z4.02_u
Technik.mechatronik 311[50] z4.02_u
 

Mehr von butest

EL MODELO DE NEGOCIO DE YOUTUBE
EL MODELO DE NEGOCIO DE YOUTUBEEL MODELO DE NEGOCIO DE YOUTUBE
EL MODELO DE NEGOCIO DE YOUTUBEbutest
 
1. MPEG I.B.P frame之不同
1. MPEG I.B.P frame之不同1. MPEG I.B.P frame之不同
1. MPEG I.B.P frame之不同butest
 
LESSONS FROM THE MICHAEL JACKSON TRIAL
LESSONS FROM THE MICHAEL JACKSON TRIALLESSONS FROM THE MICHAEL JACKSON TRIAL
LESSONS FROM THE MICHAEL JACKSON TRIALbutest
 
Timeline: The Life of Michael Jackson
Timeline: The Life of Michael JacksonTimeline: The Life of Michael Jackson
Timeline: The Life of Michael Jacksonbutest
 
Popular Reading Last Updated April 1, 2010 Adams, Lorraine The ...
Popular Reading Last Updated April 1, 2010 Adams, Lorraine The ...Popular Reading Last Updated April 1, 2010 Adams, Lorraine The ...
Popular Reading Last Updated April 1, 2010 Adams, Lorraine The ...butest
 
LESSONS FROM THE MICHAEL JACKSON TRIAL
LESSONS FROM THE MICHAEL JACKSON TRIALLESSONS FROM THE MICHAEL JACKSON TRIAL
LESSONS FROM THE MICHAEL JACKSON TRIALbutest
 
Com 380, Summer II
Com 380, Summer IICom 380, Summer II
Com 380, Summer IIbutest
 
The MYnstrel Free Press Volume 2: Economic Struggles, Meet Jazz
The MYnstrel Free Press Volume 2: Economic Struggles, Meet JazzThe MYnstrel Free Press Volume 2: Economic Struggles, Meet Jazz
The MYnstrel Free Press Volume 2: Economic Struggles, Meet Jazzbutest
 
MICHAEL JACKSON.doc
MICHAEL JACKSON.docMICHAEL JACKSON.doc
MICHAEL JACKSON.docbutest
 
Social Networks: Twitter Facebook SL - Slide 1
Social Networks: Twitter Facebook SL - Slide 1Social Networks: Twitter Facebook SL - Slide 1
Social Networks: Twitter Facebook SL - Slide 1butest
 
Facebook
Facebook Facebook
Facebook butest
 
Executive Summary Hare Chevrolet is a General Motors dealership ...
Executive Summary Hare Chevrolet is a General Motors dealership ...Executive Summary Hare Chevrolet is a General Motors dealership ...
Executive Summary Hare Chevrolet is a General Motors dealership ...butest
 
Welcome to the Dougherty County Public Library's Facebook and ...
Welcome to the Dougherty County Public Library's Facebook and ...Welcome to the Dougherty County Public Library's Facebook and ...
Welcome to the Dougherty County Public Library's Facebook and ...butest
 
NEWS ANNOUNCEMENT
NEWS ANNOUNCEMENTNEWS ANNOUNCEMENT
NEWS ANNOUNCEMENTbutest
 
C-2100 Ultra Zoom.doc
C-2100 Ultra Zoom.docC-2100 Ultra Zoom.doc
C-2100 Ultra Zoom.docbutest
 
MAC Printing on ITS Printers.doc.doc
MAC Printing on ITS Printers.doc.docMAC Printing on ITS Printers.doc.doc
MAC Printing on ITS Printers.doc.docbutest
 
Mac OS X Guide.doc
Mac OS X Guide.docMac OS X Guide.doc
Mac OS X Guide.docbutest
 
WEB DESIGN!
WEB DESIGN!WEB DESIGN!
WEB DESIGN!butest
 

Mehr von butest (20)

EL MODELO DE NEGOCIO DE YOUTUBE
EL MODELO DE NEGOCIO DE YOUTUBEEL MODELO DE NEGOCIO DE YOUTUBE
EL MODELO DE NEGOCIO DE YOUTUBE
 
1. MPEG I.B.P frame之不同
1. MPEG I.B.P frame之不同1. MPEG I.B.P frame之不同
1. MPEG I.B.P frame之不同
 
LESSONS FROM THE MICHAEL JACKSON TRIAL
LESSONS FROM THE MICHAEL JACKSON TRIALLESSONS FROM THE MICHAEL JACKSON TRIAL
LESSONS FROM THE MICHAEL JACKSON TRIAL
 
Timeline: The Life of Michael Jackson
Timeline: The Life of Michael JacksonTimeline: The Life of Michael Jackson
Timeline: The Life of Michael Jackson
 
Popular Reading Last Updated April 1, 2010 Adams, Lorraine The ...
Popular Reading Last Updated April 1, 2010 Adams, Lorraine The ...Popular Reading Last Updated April 1, 2010 Adams, Lorraine The ...
Popular Reading Last Updated April 1, 2010 Adams, Lorraine The ...
 
LESSONS FROM THE MICHAEL JACKSON TRIAL
LESSONS FROM THE MICHAEL JACKSON TRIALLESSONS FROM THE MICHAEL JACKSON TRIAL
LESSONS FROM THE MICHAEL JACKSON TRIAL
 
Com 380, Summer II
Com 380, Summer IICom 380, Summer II
Com 380, Summer II
 
PPT
PPTPPT
PPT
 
The MYnstrel Free Press Volume 2: Economic Struggles, Meet Jazz
The MYnstrel Free Press Volume 2: Economic Struggles, Meet JazzThe MYnstrel Free Press Volume 2: Economic Struggles, Meet Jazz
The MYnstrel Free Press Volume 2: Economic Struggles, Meet Jazz
 
MICHAEL JACKSON.doc
MICHAEL JACKSON.docMICHAEL JACKSON.doc
MICHAEL JACKSON.doc
 
Social Networks: Twitter Facebook SL - Slide 1
Social Networks: Twitter Facebook SL - Slide 1Social Networks: Twitter Facebook SL - Slide 1
Social Networks: Twitter Facebook SL - Slide 1
 
Facebook
Facebook Facebook
Facebook
 
Executive Summary Hare Chevrolet is a General Motors dealership ...
Executive Summary Hare Chevrolet is a General Motors dealership ...Executive Summary Hare Chevrolet is a General Motors dealership ...
Executive Summary Hare Chevrolet is a General Motors dealership ...
 
Welcome to the Dougherty County Public Library's Facebook and ...
Welcome to the Dougherty County Public Library's Facebook and ...Welcome to the Dougherty County Public Library's Facebook and ...
Welcome to the Dougherty County Public Library's Facebook and ...
 
NEWS ANNOUNCEMENT
NEWS ANNOUNCEMENTNEWS ANNOUNCEMENT
NEWS ANNOUNCEMENT
 
C-2100 Ultra Zoom.doc
C-2100 Ultra Zoom.docC-2100 Ultra Zoom.doc
C-2100 Ultra Zoom.doc
 
MAC Printing on ITS Printers.doc.doc
MAC Printing on ITS Printers.doc.docMAC Printing on ITS Printers.doc.doc
MAC Printing on ITS Printers.doc.doc
 
Mac OS X Guide.doc
Mac OS X Guide.docMac OS X Guide.doc
Mac OS X Guide.doc
 
hier
hierhier
hier
 
WEB DESIGN!
WEB DESIGN!WEB DESIGN!
WEB DESIGN!
 

Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji ...

  • 1. <br />Spis treści TOC quot; 1-5quot; 1Wstęp PAGEREF _Toc208215386 42Przegląd literatury PAGEREF _Toc208215387 63Projekt aplikacji PAGEREF _Toc208215388 234Wykorzystane algorytmy i metody PAGEREF _Toc208215389 274.1Algorytmy ustawiające obrazy PAGEREF _Toc208215390 274.1.1Algorytmy bezpośrednie PAGEREF _Toc208215391 274.1.1.1Metryka błędu PAGEREF _Toc208215392 274.1.1.2Poszukiwanie optymalnego rozmieszczenia obrazów PAGEREF _Toc208215393 284.1.2Algorytmy bazujące na punktach kluczowych PAGEREF _Toc208215394 294.1.2.1SIFT: Scale Invariant Feature Transform PAGEREF _Toc208215395 294.1.2.1.1Wykrywanie ekstremów w przestrzeni skali PAGEREF _Toc208215396 294.1.2.1.2Wyznaczanie dokładnego położenia punktów kluczowych PAGEREF _Toc208215397 344.1.2.1.3Usuwanie wpływu krawędzi PAGEREF _Toc208215398 344.1.2.1.4Przypisanie orientacji PAGEREF _Toc208215399 354.1.2.1.5Lokalny deskryptor obrazu PAGEREF _Toc208215400 364.1.2.1.6Dopasowanie punktów kluczowych PAGEREF _Toc208215401 384.1.2.1.7Wyznaczanie parametrów przekształcenia afinicznego PAGEREF _Toc208215402 394.1.2.2FAST: Features from Accelerated Segment Test PAGEREF _Toc208215403 424.1.2.2.1Podstawy algorytmu PAGEREF _Toc208215404 424.1.2.2.2Implementacja detektora punktów kluczowych przy pomocy uczenia maszynowego PAGEREF _Toc208215405 434.1.2.2.3Wytłumienie punktów niemaksymalnych PAGEREF _Toc208215406 444.1.2.2.4Deskryptor punktów kluczowych i ich dopasowanie PAGEREF _Toc208215407 454.1.2.3Detektor narożników Harrisa PAGEREF _Toc208215408 454.1.2.3.1Podstawy algorytmu PAGEREF _Toc208215409 454.1.2.3.2Funkcja odpowiedzi narożnika PAGEREF _Toc208215410 484.1.2.3.3Metoda implementacji algorytmu PAGEREF _Toc208215411 484.1.2.3.4Deskryptor narożników i ich dopasowanie PAGEREF _Toc208215412 494.2Zniekształcenie soczewki PAGEREF _Toc208215413 504.3Algorytmy wygładzające połączenia między obrazami PAGEREF _Toc208215414 534.3.1Uśrednianie PAGEREF _Toc208215415 534.3.2Płynne wygładzanie PAGEREF _Toc208215416 534.3.3Najbliższy środek PAGEREF _Toc208215417 534.4Korekcja fotometryczna PAGEREF _Toc208215418 544.4.1Wyznaczanie parametrów korekcji PAGEREF _Toc208215419 554.5Obiektywna miara jakości dopasowania obrazów PAGEREF _Toc208215420 585Implementacja aplikacji PAGEREF _Toc208215421 595.1Szczegóły implementacji PAGEREF _Toc208215422 595.1.1Dynamiczne wczytywanie algorytmów PAGEREF _Toc208215423 595.1.2Wybór i ustawienie obrazów PAGEREF _Toc208215424 595.1.3Wybór algorytmów PAGEREF _Toc208215425 605.1.3.1Algorytm bezpośredni PAGEREF _Toc208215426 625.1.3.2SIFT PAGEREF _Toc208215427 635.1.3.3FAST PAGEREF _Toc208215428 645.1.3.4Detektor narożników Harrisa PAGEREF _Toc208215429 655.1.3.5Dopasowanie manualne PAGEREF _Toc208215430 665.1.4Przeglądanie wyników PAGEREF _Toc208215431 675.2Możliwości dalszego rozwoju PAGEREF _Toc208215432 686Testy algorytmów PAGEREF _Toc208215433 706.1Badanie korzyści zastosowania wyszukiwania hierarchicznego dla algorytmu bezpośredniego PAGEREF _Toc208215434 706.2Porównanie działania poszczególnych algorytmów PAGEREF _Toc208215435 736.3Badanie zależności jakości dopasowania obrazów od rozmiarów obrazu PAGEREF _Toc208215436 786.4Badanie zależności czasu wykonywania algorytmów od rozmiarów obrazu PAGEREF _Toc208215437 807Podsumowanie PAGEREF _Toc208215438 828Bibliografia PAGEREF _Toc208215439 849Spis ilustracji PAGEREF _Toc208215440 8710Załączniki PAGEREF _Toc208215441 90<br />Wstęp<br />Obrazy panoramiczne mają na celu oddanie złudzenia głębi przestrzennej, pokazując rozległy krajobraz pod szerokim kątem. Taka prezentacja terenu powoduje, że nie jest on zniekształcony, przez co obraz oddaje większy realizm. W malarstwie stosowane są one od wielu wieków, natomiast w fotografii istnieją praktycznie od jej początku, a zatem od pierwszej połowy XIX wieku. W czasach fotografii analogowej wymyślono wiele rozmaitych sprzętowych sposobów tworzenia panoram, począwszy od przesuwanych dagerotypów o dużych rozmiarach, poprzez obrotowe soczewki, kończąc na szerokokątnych obiektywach. W latach pięćdziesiątych XIX zauważono, że obrazy panoramiczne można również tworzyć poprzez sklejanie pojedynczych, zachodzących na siebie fotografii. Od tamtego czasu próbowano zabierać się do tego na różne sposoby, jednak sztuka była zbyt trudna, stosowano zatem droższe rozwiązania sprzętowe. Po wynalezieniu komputerów okazały się one doskonałym narzędziem mogącym służyć dopasowywaniu do siebie fotografii, tak, aby w rezultacie powstał obraz panoramiczny. Dziś jest to najpowszechniejsza metoda ich tworzenia. Tematyka fotografii panoramicznych staje się coraz popularniejsza, w związku z łatwością ich tworzenia jednym z istniejących komercyjnych rozwiązań oraz ogromnymi korzyściami wynikającymi ze wzrostu realizmu oddawanego przez takie fotografie. Istniejące aplikacje, służące do konstrukcji obrazów panoramicznych charakteryzują się wykorzystaniem jednego z algorytmów, bez większych możliwości ręcznego sterowania ich parametrami wejściowymi i obiektywnej oceny jakości końcowego obrazu.<br />Rysunek SEQ Rysunek ARABIC 1: Fotografia panoramiczna widoku San Francisco z Rincon Hill, zrobiona przez Martina Behrmana w 1851r. techniką dagerotypu. Źródło: Library of Congress Prints and Photographs Division, Washington, USA.<br />Wśród literatury dotyczącej tworzenia obrazów panoramicznych możemy znaleźć pozycje opisujące poszczególne algorytmy. Istnieją także prace, w których porównywane są algorytmy wyszukujące punkty szczególne w obrazach, ale porównania te odbywają się głównie w odniesieniu do rozpoznawania obrazów lub identyfikacji obiektów, a nie tworzenia obrazów panoramicznych. Oprócz tego, porównania takie pomijają algorytmy bezpośrednie. Nie istnieją również żadne aplikacje komputerowe pozwalające zarówno na proste tworzenie obrazów panoramicznych wybranym algorytmem i jednocześnie łatwe porównanie działania każdego z nich.<br />Celem niniejszej pracy jest zaprojektowanie, implementacja oraz przetestowanie aplikacji pozwalającej na tworzenie obrazów panoramicznych, umożliwiając obiektywne i subiektywne porównanie działania różnych algorytmów. Główną częścią jej tworzenia była własnoręczna budowa kompletnej, w pełni działającej i bezawaryjnej aplikacji według stworzonego projektu, przyjaznej użytkownikowi a jednocześnie umożliwiającej dalszy rozwój, gotowej do wykorzystania podczas badań lub pracy ze studentami.<br />Pracę otwiera przegląd literatury związanej z zagadnieniami podstaw przetwarzania obrazów, niezbędnych w zrozumieniu pracy, a także prac dotyczących tworzenia obrazów panoramicznych i wykorzystywanych w tym celu mechanizmów, zarysowując obraz istniejących w tej dziedzinie rozwiązań.<br />W trzecim rozdziale przedstawiono opis projektu aplikacji. Przedstawiono tam schemat działania aplikacji, projekt stworzenia jego interfejsu, a także rozwiązania problemów programistycznych, które występują podczas tworzenia tego typu aplikacji.<br />Czwarty rozdział zawiera szczegółowy opis wykorzystanych w aplikacji mechanizmów i algorytmów. Są tam zatem wyjaśnione szczegóły działania najważniejszych algorytmów aplikacji, czyli odpowiadających za prawidłowe ustawienie obrazów względem siebie, ale także tych poprawiających jakość wizualną końcowego efektu, czyli wygładzających połączenia między obrazami oraz korygujących zniekształcenie soczewki.<br />Następny, piąty rozdział obejmuje opis gotowej aplikacji, umożliwiającej tworzenie obrazów panoramicznych przy pomocy wielu algorytmów, pozwalając na ich porównanie. Zawiera szczegóły implementacji przedstawionych w poprzednim rozdziale algorytmów przy pomocy pseudokodu oraz mechanizmów wykorzystanych w aplikacji. Opisany jest tutaj także sposób obsługi programu i możliwości dalszego jego rozwijania.<br />W rozdziale szóstym opisano przebieg i wyniki testów przeprowadzonych przy pomocy stworzonej aplikacji na przedstawionych i zaimplementowanych wcześniej algorytmach. Wyniki tych testów dają pogląd na jakość działania każdego z algorytmów, pozwalając porównać je ze sobą i skojarzyć poszczególne algorytmy z obszarami ich zastosowania.<br />Mimo, że dziedzina, którą zajmuje się niniejsza praca nie jest nowa, wciąż jest w fazie rozwoju. Wynika to z ogromnej popularności, jaką cieszą się fotografie panoramiczne. Można się zatem spodziewać kolejnych odkryć i modyfikacji istniejących rozwiązań, dlatego stworzona aplikacja pozwala na łatwy dalszy rozwój z wykorzystaniem zaprogramowanych już mechanizmów. Intencją napisania pracy było umożliwienie poznania zaimplementowanych algorytmów, zarówno od strony teoretycznej jak i praktycznej, pozwalając porównać ich działanie przy pomocy jednego programu.<br />Przegląd literatury<br />Zajmując się tworzeniem obrazów panoramicznych należy zapoznać się z podstawowymi metodami rozpoznawania, przetwarzania obrazów i widzenia komputerowego, które bardzo często znajdują zastosowanie przy tworzeniu obrazów panoramicznych. Obszernym kompendium wiedzy na ten temat może być CITATION Tad91 1045 (Tadeusiewicz & Flasiński, Rozpoznawanie obrazów, 1991). Poruszono w niej cały wachlarz zagadnień, poczynając od teoretycznej interpretacji zadania rozpoznawania obrazów, poprzez klasyfikację poszczególnych metod do tego służących, kończąc na ich szczegółowym opisie. Zajmując się metodami rozpoznawania obrazów autor wyróżnia tutaj następujące typy: 1) metody minimalno odległościowe, w których zadany wzorzec należy do klasy, która znajduje się od niego w najmniejszej odległości, obliczonej według założonej metryki. W tym przypadku wybór metryki jest zatem kluczowy. Metody te są chętnie stosowane ze względu na prostotę rozumowania, jednak wymagają dużych nakładów obliczeniowych. 2) metody wzorców, są to metody, w których zawieranie się obiektu w obszarze wzorca danej klasy określane jest poprzez funkcję przynależności. 3) metody aproksymacyjne to takie, w których funkcje przynależności rozwinięto w szereg względem danej rodziny funkcji, co pozwala, po pewnych transformacjach, na stwierdzenie, że do określenia wszystkich funkcji przynależności wystarczy wyznaczenie występujących w szeregach współczynników, i tylko te współczynniki będą wymagały zapamiętania. 4) za metody specjalne autor uznaje modyfikacje poprzednich metod, na przykład metody potencjalne, które bazują na rozpisaniu funkcji przynależności na superpozycję funkcji przypominających rozkład potencjalny, metodę aproksymacji stochastycznej, czy zastosowanie sieci neuronowych. 5) metody probabilistyczne, są oparte o informacje o charakterze statystycznym, w samej metodzie przyjmując prawdopodobieństwa jako dane, w praktyce należy je jednak wcześniej przygotować, na przykład poprzez ich estymację z ciągu uczącego. 6) metody syntaktyczne, to metody, których stworzenie zostało spowodowane zbyt wielką złożonością obrazów. W metodach tych obraz rozkładany jest wielokrotnie na mniejsze podobrazy, których wzajemne relacje są wyodrębniane. Każdy z podobrazów jest następnie przetwarzany jako samodzielny obraz. 7) metody ciągowe, oparte o opis obrazu w specjalnych językach opisu obrazów. 8) metody drzewowe skonstruowane na bazie teorii języków drzewowych i automatów drzewowych, oraz 9) metody grafowe, rzadko stosowane ze względu na trudność analizy syntaktycznej gramatyk grafowych. Autor zilustrował opisane zagadnienia przy pomocy przejrzystych obrazów, pozwalających na lepsze zrozumienie tematu. Czytelników zainteresowanych informatyką zainteresuje kod źródłowy programów implementujących opisane metody. Wadą tej publikacji jest data wydania, ponieważ w dziedzinie tej od tamtego czasu dokonało się wiele zmian. Dlatego warto zwrócić uwagę na inne pozycje, takie jak CITATION Tad97 1045 (Tadeusiewicz & Korohda, Komputerowa analiza i przetwarzanie obrazów, 1997). Książka ta zawiera wszystkie podstawowe informację służące do budowy sztucznego systemu wizyjnego, którego metody działania mają odpowiadać zdolnościom widzenia człowieka. Widzenie jest procesem składającym się z następujących etapów: akwizycja obrazu, przetwarzanie obrazu (filtracja wstępna, eliminacja zakłóceń, kompresja), analiza obrazu oraz rozpoznanie obrazu i jego semantyczna interpretacja. Cały proces można scharakteryzować jako ciąg działań prowadzących do takiego opisu obrazu, który w skróconej formie informuje o wszystkich istotnych cechach treści obrazu. Autorzy zajmują się w tej publikacji pełnią zagadnień związanych z tym tematem. Znajdziemy tutaj zatem informacje o popularnych urządzeniach do akwizycji obrazu, jak również do przetwarzania obrazów, łącznie z wyjaśnieniem zalet i wad korzystania w tym celu z komputera klasy PC. Odrębny rozdział został poświęcony problematyce metod pozyskiwania i akwizycji obrazów. Zawarto tutaj podstawowe informacje z dziedziny budowy obrazów cyfrowych, od siatki sąsiedztwa zaczynając, a kończąc na modelach przestrzeni koloru. Obszerne zagadnienie przetwarzania obrazów zostało podzielone na kilka podtematów, podziału dokonano według różnych kryteriów, prezentując na przykład algorytmy liniowe i nieliniowe lub kontekstowe i bezkontekstowe przetwarzania obrazów. Możemy tu znaleźć takie tematy, jak przekształcenia geometryczne, przekształcenia oparte o arytmetyczne przeliczanie wartości pojedynczych punktów, w wersjach tradycyjnych oraz z wykorzystaniem tablicy LUT, operacje na histogramie. Opisano także metody filtracji obrazów, w dziedzinie częstotliwościowej, korzystając z transformacji widmowej, jak i za pomocą splotu, filtry konwolucyjne, filtry adaptacyjne, medianowe, podstawowe operacje logiczne na obrazach. Swoje miejsce znalazły także metody przetwarzania obrazów wywodzące się z morfologii matematycznej, takie jak erozja, dylacja, zamknięcie, otwarcie, detekcja ekstremów i inne. Autorzy poświęcili również sporo miejsca zagadnieniu analizy obrazów, czyli ekstrakcji cech charakterystycznych z obrazu, będących dużo bardziej podatnych na metody rozpoznawania obrazów. Opisano tutaj takie operacje jak segmentacja obrazów, pomiary obiektów znajdujących się na obrazie, a także obliczanie współczynników kształtu. Bardziej dogłębną analizę podobnych zagadnień możemy znaleźć w CITATION Mal02 1045 (Malina, Ablameyko, & Pawlak, 2002). Publikacja prezentuje wybrane metody i problemy cyfrowego przetwarzania obrazów, dziedziny będącej jedną z podstaw widzenia komputerowego, rozpoznawania obrazów i wzorców czy obróbki fotograficznej. Autorzy podzielili zagadnienia według sposobu dokonywania przemian w obrazie. Mamy zatem opisane operacje na pikselach obrazu, histogramy, progowanie obrazów, sporo miejsca zostało poświęcone filtrom, liniowym i nieliniowym, służącym do wykrywania krawędzi, usuwania szumu i tak dalej. Swoje miejsce znalazły tuta także metody szkieletyzacji. Ciekawym zagadnieniem są opisane w książce operacje morfologiczne, wywodzące się z morfologii matematycznej. Bezpośrednio związana z tematem generacji obrazów panoramicznych są przedstawione w publikacji zagadnienia transformaty Hougha oraz wyznaczania charakterystyk obrazu. Operacje te mogą zostać wykorzystane w procesie dopasowywania nakładających się obszarów obrazów do siebie. Transformata Hougha to podstawowa operacja służąca do wykrywania prostych struktur geometrycznych, takich jak linie proste, łuki czy koła. W książce opisane także zostały takie charakterystyki obrazów jak smukłość czy centryczność obiektów, momenty geometryczne czy długość krawędzi obrazów. Inną ciekawą pozycją z tej tematyki może być CITATION Cho05 1045 (Choraś, 2005). Książka zajmuje się tematyką komputerowej wizji, będącą złożeniem przetwarzania i rozpoznawania obrazów. Jest to proces analogiczny do procesów zachodzących w ludzkim oku i nerwie wzrokowym razem z procesami zachodzącymi w mózgu. Autor opisuje poszczególne zagadnienia tego tematu porównując je do odpowiadającym im mechanizmom działającym w ciele człowieka. Opisano zatem procesy akwizycji obrazu, zajmując się zarówno przetwornikami optyczno-elektrycznymi jak i reprezentacją cyfrową stworzoną przez nie. Poruszono zagadnienia związane ze wstępnym przetwarzaniem obrazu, czyli modyfikacje histogramu, transformacje i filtrację obraz a także jego segmentację. Sporo miejsca poświęcił autor na analizę obrazu. Jest to bardzo szeroka tematyka, zostały opisane metody rozpoznawania poszczególnych elementów i konturów obiektu jak również metody ekstrakcji cech czy operacje morfologiczne. Z punktu widzenia generacji obrazów panoramicznych w lekturze tej znajduje się bardzo wiele ciekawych informacji na temat metod pozwalających pomóc w dopasowywaniu do siebie dwóch obrazów. Przykładem mogą być algorytmy detekcji punktów charakterystycznych, transformata Hougha, momenty geometryczne czy klasyfikatory odległościowe. Jeszcze ciekawszą i obszerniejszą propozycją, zawierającą również mnóstwo informacji praktycznych na temat implementacji danych metod jest CITATION Son08 1045 (Sonka, Hlavac, & Boyle, 2008). Książka ta obejmuje praktycznie wszystkie zagadnienia związane z komputerową wizją. Począwszy na reprezentacji i opisie obrazów w pamięci komputera, poprzez analizę i morfologię matematyczną oraz zagadnienia związane z teksturami a skończywszy na interpretacji obrazów i budowie świata 3D. Bardzo wiele przydatnych przy tworzeniu obrazów panoramicznych algorytmów opisanych jest w sposób ułatwiający ich implementację, tak jak na przykład algorytm RANSAC czy detektor narożników Harrisa. Zapoznając się z zawartymi tam informacjami możemy zauważyć, że podawane są one chronologicznie, co pozwala poznać również historię tej dziedziny nauki. Oprócz przedstawionych w poprzednich pracach metod, narzędziem służącym do rozpoznawania obrazów może być również sieć neuronowa. Jej zastosowanie w tej dziedzinie zostało opisane w CITATION Kar 1045 (Karkanis, Magoulas, & Theofanous). Odpowiednio zaprojektowany, inteligentny system komputerowy może stanowić doskonałe wsparcie dla pracownika zajmującego się interpretacją zdjęć, w przypadkach, gdy wynik potrzebny jest szybko, podając dokładną diagnozę w czasie rzeczywistym. W niniejszym dokumencie, w ramach systemów inteligentnych prosty schemat działania zaimplementowany został w praktyce, jako przykład aplikacji używającej systemów inteligentnych opisanego wyżej rodzaju – do klasyfikacji zdjęć kolonoskopowych, jako regionów normalnych bądź z rakiem. Wstępne wyniki testów pokazują, że opisany w artykule schemat zdolny jest wykrywać odchylenia od norm z wysoką trafnością. System może również zostać zmodyfikowany do detekcji odchyleń od norm w innego rodzaju obrazach, wystarczy tylko dostosować kryteria doboru, a następnie uruchomić uczenie sieci neuronowej podając jej jako przykłady odpowiednie zdjęcia. Tematykę rekonstrukcji sceny trójwymiarowej na podstawie dwuwymiarowych obrazów wejściowych, trochę bardziej związaną z tworzeniem obrazów panoramicznych poruszono w CITATION Har03 1045 (Hartley & Zisserman, 2003). Techniki służące do rozwiązania tych problemów bazują na teorii geometrii i fotogrametrii. Autorzy opisują podstawy geometryczne i ich algebraiczne reprezentacje pod kątem opisu poprzez macierze transformacji kamery, macierze świata i tensory. Teoria i metody obliczeniowe z nią związane zostały opisane z użyciem przykładów wziętych z życia, aby ułatwić czytelnikowi zrozumienie sprawy. Oprócz tego wiele algorytmów zostało opisanych krok po kroku, aby ułatwić ich implementację. Zawarto także materiały wyjaśniające niezbędne podstawy teoretyczne, wymagane, aby w pełni zrozumieć treść. Książka podzielona jest na 6 części, z których każda opisuje inne relacje geometryczne. Znajdziemy tutaj zatem część ogólną, o generalnych ideach związanych z geometrią dwu- i trzywymiarową, następnie opis macierzy kamery dla pojedynczego widoku, opis macierzy świata tworzonej z dwóch widoków, metody wyznaczania odpowiednich tensorów dla trzech i czterech widoków. Każdy z rozdziałów zawiera szczegółowe informacje o danej relacji, jej właściwości i zastosowanie. Możemy również znaleźć informacje o budowie algorytmów pozwalających na estymację danej relacji z obrazów, poczynając od najprostszych i najbardziej prymitywnych, a kończąc na optymalnych algorytmach uznawanych za wiodące w chwili wydania książki. W aneksie do książki znajdziemy wszystkie podstawowe informacje, takie jak opis notacji tensorowej czy metody dekompozycji macierzy. Oprócz tego na końcu każdego rozdziału autorzy proponują ćwiczenia do samodzielnego wykonania przez czytelnika, których pomyślna realizacja pozwala mieć pewność o prawidłowym zrozumieniu tematu. W związku z tak pełnym opisem poruszanych tematów pozycja ta jest bardzo przydatna dla czytelników zajmujących się widzeniem komputerowym, i wszelkimi zagadnieniami związanymi z opisem świata trójwymiarowego na ekranie komputera. W kontekście generowania obrazów panoramicznych informacje zawarte w tej publikacji będą przydatne podczas opracowywania algorytmów mających na celu przekształcenie obrazu w taki sposób, aby nakładające się obszary pasowały do siebie, leżąc na jednej płaszczyźnie rzutowania. <br />Istnieje również duża ilość publikacji dotyczących wyłącznie tworzenia obrazów panoramicznych poprzez łączenie pojedynczych klatek. Najbardziej obszerną pozycją poruszająca większość zagadnień związanych z tym tematem jest CITATION Sze06 1045 (Szeliski, 2006). Prezentuje przegląd informacji o konkretnych rozwiązaniach, algorytmach, które potrafią znaleźć zależności między obrazami o różnym stopniu pokrycia. Autor opisuje poszczególne metody biorąc pod uwagę możliwość ich praktycznego zastosowania w takich zagadnieniach jak stabilizacja video, łączenie klatek czy tworzenie obrazów panoramicznych. Opisane zostały także algorytmy, które po znalezieniu położenia konkretnych obrazów względem siebie połączą je odpowiednio wygładzając miejsca łączenia tak, aby nie były one widoczne. Autor bierze pod uwagę trudności wynikające ze zjawiska paralaksy czy ruchu w fotografowanej scenie, podając rozwiązania pozwalające uniknąć występowania rozmytych czy ‘pół-przezroczystych’ obiektów w obrazie wyjściowym. W książce zaprezentowane są podstawowe modele przekształceń obrazów, z którymi można spotkać się stosując zaprezentowane algorytmy pozycjonowania względem siebie i łączenia obrazów, opisane są zarówno bezpośrednie algorytmy dopasowywania obrazów jak również bazujące na ekstrakcji punktów szczególnych. Metody bezpośrednie, polegające na porównywaniu wartości poszczególnych pikseli, zostały opisane wraz z uwzględnieniem rozmaitych metryk mierzących różnice pomiędzy wartościami tych pikseli.<br />Metody bazujące na ekstrakcji punktów szczególnych to bardzo obszerne zagadnienie, ponieważ metod takich istnieje obecnie bardzo dużo. Jedną z pierwszych tego typu metod był detektor narożników zaprezentowany w CITATION Har88 1045 (Harris & Stephens, 1988). W artykule tym przedstawiono metodę wykrywania narożników, niewrażliwą na obroty i translacje obrazów. Detektor ten bazuje na założeniu, że w punkcie narożnika jasność będzie zmieniać się znacznie w wielu kierunkach. Obliczana jest macierz autokorelacji dla danego punktu, z wykorzystaniem funkcji ważącej Gaussa. Dzięki tej macierzy możemy wyliczyć stosunek krzywizn w danym punkcie, co pozwoli na sprawdzenie, czy dany punkt spełnia podstawowe założenie dla narożnika. Do wyliczenia stosunku krzywizn potrzebne byłoby wyznaczenie wartości własnych tej macierzy, co jest dość kosztowne obliczeniowo. W artykule zaprezentowano efektywną metodę wyliczania stosunku krzywizn bez potrzeby wyznaczania wartości własnych macierzy, opierając się o ślad oraz wyznacznik tej macierzy, co znacznie zmniejsza ilość obliczeń. Metoda ta ma bardzo duże znaczenie historyczne, będąc często używana przy rozpoznawaniu obiektów na scenie trójwymiarowej.<br />W artykule CITATION Mik04 1045 (Mikołajczyk & Schmid, Scale & affine invariant interest point detectors, 2004) zaprezentowano kolejną metodę wykrywania punktów kluczowych, będącą niezmienniczą wobec skalowania oraz przekształceń afinicznych. Takie właściwości zaprojektowanego detektora osiągnięto dzięki wcześniejszym badaniom, które wykazały, że punkty kluczowe wyznaczone za pomocą detektora Harrisa mogą zostać poddane przekształceniom afinicznym zachowując swoje właściwości i dając powtarzalne, geometrycznie stabilne wyniki. Detektor opiera się także o fakt, że skala charakterystyk struktury lokalnej jest określona poprzez lokalne ekstremum z zestawu znormalizowanych pochodnych, czyli Laplasjanu. Wykorzystane zostały także właściwości afinicznego otoczenia punktu, które może zostać wyestymowane za pomocą macierzy momentu drugiego rzędu. A zatem niewrażliwy na skalowanie detektor oblicza reprezentację detektora punktów kluczowych Harris dla wielu różnych skali, wybierając następnie punkty, w których lokalna wartość Laplasjanu jest maksimum we wszystkich skalach. To prowadzi do zestawu unikanych punktów będących inwariantnymi względem skali, obrotów, translacji jak również względem zmian w naświetleniu i ograniczonych zmian punktu widzenia. Skala charakterystyk określa niezmienniczy region dla każdego punktu. Autorzy proponują także rozszerzenie niezmienniczości detektora do niezmienniczości afinicznej, a zatem niezmienniczości względem przekształceń niezmieniających równoległości dwóch linii. Dokonano tego poprzez zdefiniowanie afinicznego sąsiedztwa każdego punktu kluczowego. Iteracyjny algorytm modyfikuje lokalizację, skalę i sąsiedztwo każdego punktu, dążąc do afinicznej niezmienniczości punktów. Ta metoda może sobie poradzić ze przekształceniami o dużej skali. Składając skalę charakterystyk i kształt afinicznego sąsiedztwa określamy afinicznie niezmienniczy region dla każdego punktu. W artykule zaprezentowano porównanie działania rozmaitych detektorów udowadniając, że opisany algorytm zapewnia znacznie lepsze wyniki, niż wcześniejsze metody. Jakość działania zaprezentowanego algorytmu jest poparta również znakomitymi efektami w dopasowywaniu dzięki opisaniu obrazu poprzez zestaw wyliczonych niewrażliwych na skalowanie i przekształcenia afiniczne deskryptorów danego regionu, skojarzonych z danym punktem kluczowym.<br />Ciekawą metodę ekstrakcji punktów szczególnych opisano w CITATION Kad04 1045 (Kadir, Zisserman, & Brady, 2004). Detektor, który tego dokonuje działa za pomocą uogólnionych poprzez afiniczną niezmienność metod osądzających charakterystyczność danego regionu badając jego nieprzewidywalność zarówno pod względem przestrzennym jak i atrybutów. Detektor ten znacząco różni się od operatorów opartych o metody splotowe. Badane są trzy aspekty jego zachowania: niezmienniczość wobec zmiany punktu widzenia, wrażliwość na zmiany w obrazie a także powtarzalność wyników osiąganych mimo zmian wewnątrz badanych klas. Podczas gdy inne artykuły na ten temat skupiają się na osiągnięciu niezależności od zmiany punktu widzenia, ten poświęcony został badaniami nad projektem testu jakości działania by wspomóc rozwijanie dwóch pozostałych aspektów. Autorzy proponują porównanie detektora cech szczególnych do innych standartowych detektorów, uwzględniając afinicznie niezmienniczy detektor punktów kluczowych. Dzięki tym testom zostało dowiedzione, że zaproponowany detektor cech szczególnych wykazuje się porównywalną do innych detektorów niezmienniczością wobec zmiany punktu widzenia, natomiast znacznie mniejszą wrażliwością na perturbacje wewnątrz obrazu i zmiany wewnętrzne obrazów badanej klasy obiektów. Zaprezentowany przez autorów algorytm został dodatkowo zoptymalizowany stosując operacje lokalne. Zaprojektowany zestaw testów badający tego typu algorytmy pozwala dobrać odpowiedni dla danych warunków algorytm, a dzięki rozszerzonemu polu jego działania może stanowić wsparcie także dla dziedzin, w których nowe aspekty są ważne, takich jak rozpoznawanie obiektów poprzez wykrywanie części. <br />Prostym, ale dającym dobre wyniki jest detektor punktów kluczowych przedstawiony w CITATION Edw 1045 (Rosten & Drummond, Machine learning for high-speed corner detection) zwany FAST. Detektor ten rozpatruje piksele leżące na obwodzie okręgu o promieniu trzech pikseli wokół badanego punktu. Punkt oznacza się jako szczególny, jeśli na obwodzie znajduje się określona ilość sąsiadujących ze sobą pikseli o jasności różniącej się co najmniej o ustaloną wartość od badanego piksela. W związku z tym, że okrąg taki ma obwód o długości szesnastu pikseli, autorzy proponują, aby punkt szczególny miał takich pikseli pomiędzy 9 a 15. Artykuł ten wart jest szczególnej uwagi, ponieważ metoda wykazuje się bardzo dobrą powtarzalnością, będąc niezmienniczą wobec przekształceń afinicznych jak również pewnych zmian w naświetleniu. Zaprezentowano również efektywną metodę implementacji algorytmu, opartą o generację kodu na podstawie stworzonego wcześniej drzewa decyzyjnego.<br />Innym dobrym przykładem takiej metody może być metoda zaprezentowana w CITATION Low04 1045 (Lowe, Distinctive Image Features from Scale-Invariant Keypoints, 2004). Przedstawiona tam metoda wyszukiwania cech charakterystycznych obrazu, niewrażliwych na rozmaite przekształcenia, które można wykorzystać do dopasowania tych samych obiektów przedstawionych w różny sposób. Algorytm zaprojektowany przez autora, zwany powszechnie SIFT, czyli Scale Invariant Feature Transform, potrafi znaleźć punkty kluczowe zachowujące swoje właściwości pomimo obrotu lub przeskalowania obrazu, a także występowania szumów, zakłóceń, zmian w jasności obrazu czy przekształceń trójwymiarowych. Takie punkty kluczowe są również wysoce unikalne, dzięki czemu można z wysokim prawdopodobieństwem dopasować te same cechy występujące w dwóch różnych obrazach a nawet w całej bazie danych obrazów. Opisane zostały także metody wykorzystania opisanego algorytmu do rozpoznawania obiektów, poprzez dopasowanie danych punktów kluczowych do stworzonej wcześniej bazy punktów kluczowych występujących w znanych obiektach, za pomocą metody najbliższych sąsiadów. Autor opisuje także zastosowanie transformaty Hougha do przyporządkowania punktów kluczowych do danego obiektu. Dzięki zamieszczonym przykładom działania algorytmu można łatwo zorientować się w ogólnym jego działaniu.<br />O popularności algorytmu SIFT świadczy wykorzystywanie go w wielu dziedzinach nauki. Jednym z przykładów może być CITATION Paw 1045 (Pawlik & Mikrut), gdzie opisano metodę dopasowywania fotogrametrycznych zdjęć lotniczych do tworzenia map cyfrowych lub cyfrowych modeli terenu. Autorzy zdecydowali, że najlepsza do ich celów będzie właśnie SIFT, ponieważ jest ona niewrażliwa na obroty i skalowanie obrazów. W dokumencie został przedstawiony opis algorytmu, oraz wyniki, jakie daje jego wersja zaimplementowana przez autorów metody. Autorzy porównują efekty dla różnych parametrów wejściowych podczas testowania algorytmu, znajdując optymalne ich wartości. W artykule brakuje jednak porównania działania z innymi algorytmami a także testu algorytmu w implementacji własnej autorów. Kolejnym przykładem zastosowania tej metody jest CITATION Ost 1045 (Ostiak), opisujący implementację algorytmu do tworzenia obrazów panoramicznych typu HDR, czyli o zwiększonym zakresie jasności. Tego typu obrazy pozwalają przedstawić dużo większą liczbę szczegółów niż obrazy tradycyjne. Autor przedstawia rozmaite rozwiązania wybierając odpowiednie dla tego zagadnienia. Tutaj również najodpowiedniejszy okazał się algorytm SIFT, pozwalający dopasować obrazy do siebie, będąc nieczułym na podstawowe przekształcenia obrazów, takie jak skala, obrót czy zmiana iluminacji. W artykule przedstawiono również modyfikacje, których trzeba dokonać w tradycyjnej wersji algorytmu, aby był on odpowiedni dla obrazów o zwiększonym zakresie jasności. Został zaproponowany model transformacji perspektywicznej oraz sposób wygładzania połączeń między obrazami pozwalający stworzyć panoramę bez widocznych szwów. Autor ilustruje rozwiązania konkretnymi przykładami fotografii, pokazując w szczegółach korzyści ze stosowania obrazów o zwiększonym zakresie jasności. Rezultaty zastosowania zaimplementowanego algorytmu także zostały przedstawione i omówione. <br />Ten sam algorytm wykorzystywany jest w pomyśle zaprezentowanym w CITATION Low03 1045 (Lowe & Brown, Recognising Panoramas, 2003). Jest to nowatorskie zagadnienie w pełni automatycznego rozpoznawania panoram. Zastosowanie zaproponowanego rozwiązania znacznie ułatwia użytkownikowi tworzenie panoram, skanując wszystkie wykonane zdjęcia z danej puli, szukając tych pasujących do siebie, a następnie tworząc z nich obrazy panoramiczne. Rozwiązanie to eliminuje występujące w tradycyjnych podejściach potrzeby manualnego wybrania obrazów do połączenia i wypozycjonowania ich przez użytkownika. Autorzy proponują metody dopasowywania niewrażliwe na obroty, skalowanie czy zmienne naświetlenie obrazów. Z powodu selektywnego dopasowywania obrazów do siebie, zaproponowany w dokumencie algorytm potrafi także usunąć z puli obrazów przypadkowe, nienależące do panoramy obrazy. Jest to zrealizowane na podstawie probabilistycznego modelu sprawdzającego przynależność do danego zestawu zdjęć. Zaprezentowane przykłady pokazują skuteczność algorytmu, dając jednocześnie pojęcie o przydatności praktycznej zaimplementowanego algorytmu.<br />Ciekawym rozwiązaniem jest, przedstawiona w CITATION KeY 1045 (Ke & Sukthankar), modyfikacja algorytmu SIFT. Autorzy artykułu poddali testom i ulepszyli deskryptor obrazu używany w algorytmie SIFT. Zaproponowana przez nich modyfikacja tego algorytmu również opiera się o ekstrakcję najważniejszych właściwości gradientu w sąsiedztwie danego punktu kluczowego, jednak w odróżnieniu od tradycyjnego algorytmu SIFT opisana zmodyfikowana jego wersja korzysta z analizy najważniejszych komponentów PCA w obrębie znormalizowanego fragmentu gradientu, zamiast z wygładzonego, ważonego histogramu. Przeprowadzone przez autorów artykułu eksperymenty dowodzą, że zastosowanie PCA do opisu cech kluczowych nadaje im jeszcze bardziej unikalny charakter, zapewniając zwiększoną niezmienniczość wobec deformacji obrazu, a także sprawia, że deskryptor jest bardziej skondensowany. Zamieszczone rezultaty badań jasno pokazują, że zastosowanie przedstawionego algorytmu w aplikacjach służących do wydobywania obrazów z baz danych zwiększa dokładność jednocześnie przyspieszając dopasowywanie, dzięki bardziej skondensowanej budowie. Algorytm testowany i porównywany był przy pomocy sztucznie przekształconych obrazów, jak i naturalnie różniących się obrazów, dając zauważalnie lepsze efekty od tradycyjnej wersji algorytmu SIFT, wykonując takie zadania jak dopasowanie wzorców w czasie około 1/3 czasu wykonania algorytmu SIFT. <br />Algorytmy zajmujące się ekstrakcją punktów szczególnych z obrazów są ważnym zagadnieniem z dziedziny widzenia komputerowego, dlatego doczekały się wielu artykułów przedstawiających ich porównanie. Dzięki CITATION Mik05 1045 (Mikołajczyk, i inni, 2005) możemy uzyskać pogląd na wiodące obecnie metody wyszukiwania kowariantnych regionów w obrazach, porównując jakość ich działania na zestawie testowych obrazów pod rozmaitymi warunkami. Uwzględniono sześć rodzajów detektorów: bazujące na afinicznej normalizacji wokół punktów Harrisa oraz Hesjanu, detektory maksymalnie stabilnych regionów ekstremów, detektor regionów oparty o wyszukiwanie krawędzi, detektor bazujący na ekstremum intensywności oraz detektor wyróżniających się regionów. Jakość działania była porównywana testując wymienione algorytmy na obrazach poddanych przekształceniom takim jak zmiana punktu widzenia, skalowanie, zmiana naświetlenia, zmiana ostrości czy kompresji obrazu. Testowanie odbywało się poprzez zadanie algorytmowi znalezienia na obrazie przekształconym określonego regionu z obrazu wejściowego. Trafność znalezionego wyniku oceniana była na podstawie procenta powierzchni obszaru zadanego, który zawierał się w wyniku. Praca pozwala osobie znającej pobieżnie temat zapoznać się z całą gamą algorytmów i bez problemu wybrać odpowiedni do konkretnej potrzeby. W innym artykule tych samych autorów CITATION Mik 1045 (Mikolajczyk & Schmid) porównano jakość działania deskryptorów, opisujących znalezione punkty szczególne. Deskryptory punktów szczególnych używane są do identyfikacji odpowiadających sobie par punktów, dzięki czemu możemy wyznaczyć opis ruchu kamery pomiędzy dwoma obrazami. W związku z tym wartość deskryptora powinna być unikalna a jednocześnie niewrażliwa na zmiany punktu widzenia, jak również odporna na pewne błędy w wykrywaniu punktów szczególnych. W celu porównania jakości działania deskryptorów zastosowano kryterium powtarzalności z uwzględnieniem precyzji, dla różnych przekształceń dokonanych na obrazach. Kolejne metody opisu punktu kluczowego porównywano dla punktów kluczowych znalezionych rozmaitymi metodami. Badania te wykazały, że działanie deskryptora tylko w niewielkim stopniu zależy od metody użytej do znalezienia punktów kluczowych, oraz że deskryptor punktów kluczowych SIFT, zaproponowany w CITATION Low04 1045 (Lowe, Distinctive Image Features from Scale-Invariant Keypoints, 2004) okazuje się być najlepszym deskryptorem. <br />Przykładem zastosowania tego typu algorytmów w trochę innym kontekście przedstawiono w CITATION Mik01 1045 (Mikołajczyk & Schmid, Indexing based on scale invariant interest points, 2001). Autorzy zaprezentowali metodę wykrywania punktów charakterystycznych w obrazie, zachowujących się niezmienniczo w stosunku do skalowania, do celów indeksowania obrazów. Zaprezentowana metoda bazuje na dwóch podstawowych zasadach dotyczących tego przekształcenia: 1) punkty szczególne mogą być dostosowane do skali a ich wykrywanie daje powtarzalne, stałe rezultaty. 2) Ekstrema lokalne z grupy znormalizowanych pochodnych wskazują na obecność charakterystycznych struktur lokalnych. Opierając się na tych właściwościach zaproponowana przez autorów metoda korzysta na początku z wieloskalowego detektora punktów kluczowych Harrisa. Następnie wybierany jest punkt, dla którego wartość Laplasjana jest maksymalna dla wszystkich skali. Pozwala to na wybór unikalnych punktów, dla których znana jest skala charakterystyczna, będących jednocześnie niezmienniczymi względem zmiany skali, obrotów, translacji, jak również niewrażliwymi na zmiany iluminacji i ograniczone zmiany punktu widzenia. Jeśli chodzi o indeksację, obraz jest charakteryzowany poprzez grupę punktów niewrażliwych na skalowanie, skala skojarzona z każdym z punktów pozwala na wyliczenie niewrażliwego na skalowanie deskryptora. Deskryptory zaproponowane przez autorów są dodatkowo inwariantne wobec obrotów, afinicznych zmian naświetlenia a także niewielkich zmian w perspektywie. Zamieszczone wyniki testowania algorytmu dowodzą świetnych osiągów nawet dla baz obrazów zawierających więcej niż 5000 obiektów. Podobne algorytmy zastosowano w ciekawej pracy CITATION Mik03 1045 (Mikołajczyk, Zissermann, & Schmid, Shape recognition with edge-based features, 2003). Dokument opisuje sposób rozpoznawania obiektów słabo teksturowanych, dopuszczając zawieranie dziur i kształtów walcowatych. Obiekty mogą być umieszczone na nieuporządkowanej scenie, w dowolnych warunkach widoczności. Zaprojektowany został zestaw nowatorskich komponentów. Po pierwsze, autorzy dokumentu zaproponowali nowy detektor cech szczególnych oparty o znalezienie punktów znajdujących się na krawędziach, nie wrażliwy na przekształcenia zachowujące podobieństwo. Sąsiedztwo tych punktów estymowane jest w sposób niewrażliwy na skalowanie. Drugą ważną właściwością zaproponowanego rozwiązania jest niewrażliwość deskryptora sąsiedztwa obliczonego dla cech znajdujących się na pierwszym planie na dowolnie złożone tło, nawet, jeśli dany punkt kluczowy znajduje się na krawędzi obiektu. Trzecim wartym wspomnienia szczegółem jest fakt, że opisany deskryptor jest uogólnioną do działania dla krawędzi wersją znanego algorytmu SIFT. Obiekty będący modelem jest tworzony na podstawie jednego zdjęcia treningowego. Następnie obiekt ten może zostać rozpoznany na nowych obrazach w serii kroków narzucających progresywnie ciaśniejsze ograniczenia geometryczne. Końcowym celem autorów była możliwość rozpoznania obiektów z dopuszczalną granicą elastyczności w reprezentacji geometrycznej, co pozwala na efektywne wyszukiwanie obiektów należących do tej samej klasy czy kategorii. <br />Posiadając obrazy wraz z wykrytymi punktami specjalnymi niezmienniczymi względem przekształceń dokonanych na polu widzenia pomiędzy kolejnymi zdjęciami, jesteśmy w stanie wyliczyć parametry przekształcenia, któremu trzeba poddać obrazy wejściowe, aby pasowały do siebie. Algorytm zdolny do tego został przedstawiony w CITATION Fis81 1045 (Fischler & Bolles, 1981). Algorytm ten, służący do dopasowywania danych eksperymentalnych do wzorca, nazywany Random Sample Consensus – RANSAC. Model ten zdolny jest do interpretacji i wygładzania danych zawierających nawet znaczący procent błędnych pomiarów, w związku z czym jest idealny do stosowania w komputerowym rozpoznawaniu obrazów, gdzie analiza jest przeprowadzana na danych zarejestrowanych przez matryce obarczone pewnym współczynnikiem błędu. Algorytm w działaniu zachowuje się odmiennie niż większość znanych podejść – zamiast estymować rozwiązanie na podstawie maksymalnej liczby danych, RANSAC oblicza rozwiązanie bazując na jak najmniejszej liczbie danych, próbując następnie dopasować pozostałe dane do rozwiązania, lub odrzucić, jeśli dopasowanie jest niemożliwe. Spora część artykułu została poświęcona zastosowaniu algorytmu RANSAC do rozwiązania problemu określenia lokalizacji – Location Determination Probem (LDP), który polega na estymowaniu pozycji kamery na podstawie zrobionych przez nią zdjęć, znając pozycję przedstawionych na zdjęciach obiektów. W związku z zastosowaniem tego algorytmu wyznaczono również minimalną liczbę znanych punktów, potrzebnych do jego prawidłowego działania, zaprezentowano również algorytmy pozwalające w prosty sposób wyznaczyć rozwiązanie problemu na podstawie tej minimalnej liczby punktów. Metody rozwiązania tego problemu stanowią bazę dla systemu potrafiącego automatycznie rozwiązywać problem LDP pomimo słabej jakości obrazów i różnorodnych warunków analitycznych. Autorzy zamieścili również detale dotyczące implementacji podobnego systemu, co podnosi atrakcyjność artykułu. Możemy również znaleźć przykłady obliczeniowe. Zaprezentowany algorytm RANSAC jest bardzo często wykorzystywany w podobnych rozwiązaniach. Jego zmodyfikowaną wersję przestawiono w CITATION Chu02 1045 (Chum & Matas, 2002). Autorzy proponują modyfikację poprzez zróżnicowanie kroku hipotetycznej ewaluacji. Jak wynika z zaprezentowanych w artykule danych, w sporym zakresie występujących warunków poprawiło to działanie algorytmu. Opisany w artykule, zróżnicowany algorytm RANSAC, nazwany R-RANSAC, charakteryzuje się również większą oszczędnością, operując tylko na części danych z modeli zawierających błędy. Autorzy zaimplementowali algorytm w procedurze dwukrokowej. Wprowadzono także klasę testów statystycznie, wstępnie sprawdzających próbki testowe. Dla zaproponowanych testów wyznaczono przybliżone relacje opisujące optymalne ustawienie każdego parametru. Zastosowanie tych testów sprawdzono na danych laboratoryjnych, stworzonych sztucznie, jak i na danych rzeczywistych, co wykazało znaczne przyspieszenie wykonywania algorytmu.<br />Innym podejściem do ustalenia pozycji obrazów wejściowych w końcowej panoramie może być zastosowanie transformaty Hougha, opisane w CITATION Chi06 1045 (Chitsobhuk, Chunhavittayatera, & Tongprasert, 2006). Metoda zakłada dopasowywanie obrazów poprzez kombinację transformaty Hougha i korelacji fazowej w dziedzinie Fouriera do estymacji parametrów obrotu i translacji obrazów. Parametry te są następnie wykorzystywane do nakładania obrazów i połączenia ich w płynny sposób w wyjściowy obraz zawierający wszystkie detale obrazów wejściowych. Pierwszy krok oparty jest o jednowymiarową korelację fazową, dzięki której jesteśmy w stanie wyliczyć translację kąta do przestrzeni Hougha, poprzez transformatę Hougha. Parametr obrotu uzyskany w ten sposób pozwala na obrócenie obrazów wejściowych w odpowiedni sposób. W drugim kroku poprzez dwuwymiarową korelację fazową wyliczane są parametry translacji wzdłuż osi x i y, której musimy poddać obrazy wejściowe. Zamieszczone w artykule wyniki przeprowadzonych badań pokazują dokładność zaproponowanej metody w znajdowaniu odpowiedniego dopasowania obrazów o różnych obrotach, wielkości i o różnej ilości szczegółów. Większy rozmiar i większa ilość szczegółów sprzyjają lepszemu dopasowaniu, co sprawia, że metoda ta jest atrakcyjna przy przetwarzaniu zdjęć. Autorzy opisują metodę jako prostą w implementacji i nieskomplikowaną obliczeniowo, dzięki wysokiej wydajności szybkiej transformaty Fouriera. Podobna metoda została zaprezentowana w CITATION Bhu05 1045 (Bhuttichai Summar, 2005), jednak oprócz technik korelacji fazowej w dziedzinie Fouriera i transformaty Hougha korzysta ona z transformaty falkowej o różnych rozdzielczościach. Jest to rozwinięcie omawianej w innych artykułach metody, mające na celu przyspieszenie przetwarzania. Przed nałożeniem obrazów, poddawane są one transformacie falkowej. Przekształcenia kątowe mogą następnie zostać wyestymowane poprzez zastosowanie transformaty Hougha a później korelacji fazowej. Zastosowanie korelacji fazowej dwuwymiarowej jest następnie stosowane do znalezienia parametrów translacji względem osi X i Y. Stosowanie transformaty falkowej w tej metodzie podyktowane jest skróceniem czasu obliczeń, można także wykorzystać jej współczynniki jako informacje o krawędziach, zamiast stosować do tego inne narzędzia. Dzięki zastosowaniu transformaty falkowej o różnych rozdzielczościach możemy znacznie zredukować czas obliczeń. Obrazy są przekształcane zgodnie z uzyskanymi parametrami przekształceń. Następnie obrazy są komponowane i wygładzane w jednym, wyjściowym obrazie większym od wejściowych, zawierającym wszystkie detale obrazów wejściowych. Z przeprowadzonych praktycznych eksperymentów wynika, że algorytm działa z powodzeniem, osiągając wyniki lepsze niż wiele podobnych metod. Autorzy dokumentu poradzili sobie także z błędami akumulującymi się podczas kolejnych przekształceń, poprzez odpowiedni dobór parametrów dopasowania obrazów.<br />Ciekawe podejście do tworzenia obrazów panoramicznych z pojedynczych fotografii zaprezentowane zostało w CITATION Shu 1045 (Shum & Szeliski, Construction and refinement of panoramic mosaics with global and local alignment, 1998). Polega ono na przypisaniu każdemu obrazowi macierzy rotacji i ewentualnie długości ogniskowej soczewki, a nie jak w innych podejściach na jawnym rzutowaniu kolejnych obrazów na wspólną powierzchnię, taką jak płaszczyzna czy walec. Pomysł autorów artykułu wiąże się z koniecznością radzenia sobie z nagromadzonymi błędami pochodzącymi z rejestracji, aby je zredukować zastosowano globalne, blokowe dopasowanie wszystkich obrazów wejściowych, co sprawia, że otrzymujemy optymalną mozaikę obrazów w sensie najmniejszych kwadratów. Natomiast do redukcji małych niedopasowań poszczególnych obrazów, spowodowanych efektem paralaksy związanym z przesunięciem kamery czy innymi niezamodelowanymi przekształceniami, zastosowano dodatkowo lokalne dopasowanie obrazów, które pozwala na połączenie każdej pary obrazów bazując na technikach nakładania. Takie złożenie globalnego i lokalnego modelu dopasowywania obrazów skutkuje wyraźną poprawą jakości obrazów wyjściowych, co według autorów pozwala na efektywne generowanie obrazów panoramicznych o szerokim kącie widzenia. Atrakcyjność zaprezentowanego podejścia skłania do rozważenia opłacalności jego implementacji pod względem kosztów obliczeniowych. <br />W CITATION Ede 1045 (Eden, Uyttendaele, & Szeliski) zaprezentowano techniki automatycznego łączenia wielu obrazów różniących się pod względem naświetlenia i orientacji. Łączenie ma skutkować zwiększeniem zakresu jasności obrazu, czyli konstrukcją obrazu HDR, zachowując rozpiętość kątową. Ogromną zaletą przedstawionej metody jest to, że pozwala ona zachować duże różnice w ekspozycji, radzi sobie z dużymi zmianami pomiędzy poszczególnym klatkami wywołanymi ruchem na fotografowanej scenie, i nie wymaga dodatkowego sprzętu. Aby algorytm działał przy takich założeniach zaprojektowano dwustopniową metodę, w której najpierw ustala się pozycję ruchomych obiektów, a następnie wykorzystywana jest cała dostępna skala jasności obrazów wejściowych. Autorzy wprowadzają pojęcie kosztu opisujące korzyść wykorzystania danego piksela w obrazie wyjściowym, a także kosztu łączenia obrazów, którego minimalizacja zapewnia gładkie przejścia między obrazami. Minimalizacja tych wartości realizowana jest za pomocą metody zaproponowanej w dokumencie i zapewnia wybór właściwego dopasowania. Zamieszczone przykłady działania algorytmu ukazują różnice pomiędzy tradycyjnymi algorytmami a prezentowanym algorytmem konstrukcji obrazów o zwiększonym zakresie jasności HDR, a zachwalana przez autorów łatwość implementacji sprawia, że pozycja ta jest interesująca. Tematykę zwiększania jakości łączenia obrazów panoramicznych porusza także CITATION Zom06 1045 (Zomet, Levin, Peleg, & Weiss, 2006). W związku z potrzebą wykorzystania łączenia zdjęć na potrzeby różnego rodzaju operacji, takich jak składanie mozaik, potrzebne są dobre algorytmy wygładzające krawędzie między łączonymi zdjęciami. Jakość szwu między zdjęciami jest określana wizualne na podstawie podobieństwa między złączonym obrazem a każdym z wejściowych obrazów z osobna, oraz poprzez widoczność miejsca złączenia, tak zwanego szwu. Aby odpowiednio zdefiniować i znaleźć najlepszy sposób złączenia dwóch obrazów autorzy artykułu proponują zbiór formalnych funkcji kosztu, do pomiaru jakości złączenia. W funkcjach tych podobieństwo obrazów wejściowych oraz widoczność szwu są zdefiniowane w dziedzinie gradientu, minimalizując zakłócenia wzdłuż szwu. Właściwe złączenie zoptymalizuje funkcje kosztu, jednocześnie eliminując nieciągłości fotometryczne a także geometryczne niedopasowania pomiędzy złączonymi obrazami. W artykule zaprezentowano kilka rodzajów funkcji kosztu, porównując ich działanie dla różnych przykładów, w teorii i w praktyce. Wyniki przeprowadzonych badań zaprezentowano na rozmaitych przykładach, takich jak generacja obrazów panoramicznych, wygładzanie obiektów czy usuwanie pozostałości kompresji. Porównanie z istniejącymi metodami pozwala poznać zalety optymalizacji pomiarów w dziedzinie gradientu. Zamieszczone ilustracje wyraźnie pokazują poprawę jakości złączeń w wypadku zastosowania proponowanego rozwiązania. Warto zauważyć, że zaprezentowany algorytm jest tylko modyfikacją, która po wprowadzeniu do istniejących wcześniej rozwiązań znacznie poprawia ich efekt, jednak bardzo wydłuża czas działania. Ciekawą pozycją na ten temat jest również CITATION Zom98 1045 (Zomet & Peleg, Applying super-resoultion to panoramic mosaics, 1998). W artykule autorzy opisują jeden ze sposobów wykorzystania danych zawartych w sekwencji video do poprawy jakości odbioru obrazu. Mozaikowanie to proces prezentowania informacji zawartych w wielu klatkach w jednym obrazie, natomiast tzw. ‘super-resolution’ to proces poprawy jakości obrazu poprzez redukcję szumu i zwiększenie rozdzielczości wykorzystując informacje o regionach z wielu klatek sekwencji video. Obie operacje wykorzystują łączenie obrazów. Autorzy opisują metodę pozwalającą na połączenie zalet obu operacji, co dotychczas było kłopotliwe, ponieważ przekształcenie obrazów związane z ich dopasowaniem nie pozwala osiągnięcie jednakowej dokładności w całym regionie wymaganej do podniesienia jakości. Skonstruowany algorytm jest dwustopniowy: najpierw generowany jest gotowy obraz panoramiczny, a następnie niewielkie fragmenty z sekwencji video są dopasowywane do obrazu panoramicznego podnosząc jego jakość. Dzięki tym zabiegom produktem wyjściowym jest wysokiej jakości obraz panoramiczny. Dodatkowo, poprawianie jakości powoduje wygładzenie miejsc, w których łączone były klatki obrazu panoramicznego. W artykule CITATION Jia03 1045 (Jia & Tang, 2003) zaprezentowano metodę nakładania obrazów opartą na globalnym i lokalnym dopasowaniu luminancji. Metoda polega na bezpośrednim estymowaniu funkcji wymieniającej, poprzez redukcję skomplikowanego problemu estymacji do dwuwymiarowego wyboru tensorowego w odpowiedniej przestrzeni wyboru. Żaden model funkcji wymieniającej nie jest domniemany. Dane o luminancji obrazu są najpierw kodowane do postaci dwuwymiarowych tensorów. Poprzez propagację warunku gładkości korzystając z napiętego pola tensorowego, wybierana jest funkcja wymieniająca, biorąc pod uwagę tylko monotoniczne ograniczenia. Zaprezentowana metoda skutecznie wypełnia brakujące fragmenty krzywej i odrzuca błędne pomiary bez uproszczonego ani zbyt skomplikowanego modelu krzywej. Wybrane funkcje wymieniające są wykorzystane w zaproponowanym przez autorów iteracyjnym algorytmie dopasowującym w celu obliczenia najwłaściwszej macierzy przekształcenia. Metoda ta wygładza miejsce połączenia obrazów mimo dużych różnic w naświetleniu, także w przypadku, gdy nakładające się obrazy wymagają sporych przekształceń. Zaprezentowane przykłady ukazują skuteczność opisanej metody w trudnych zadaniach wymagających zmian naświetlenia czy eliminacji pozostałości kompresji, znacznie poprawiając dopasowanie obrazów. Przedstawione w publikacji wiadomości warte są przemyślenia, ponieważ prezentują odrębne od większości podejście. Na koniec zagadnienia poprawy jakości złączeń między obrazami warto spojrzeć do CITATION Has 1045 (Hasler & Süsstrunk). Autorzy artykułu skupili się na rzadko poruszanym temacie obróbki kolorów podczas generowania obrazów panoramicznych. Zainteresowanie tym tematem wynika z faktu, że istniejące algorytmy dopasowywania obrazów potrafią skutecznie znaleźć sposób połączenia obrazów, jednak różnice kolorów w połączonych obrazach często są dość znaczne, natomiast dobrej jakości obraz panoramiczny powinien mieć kolory dopasowane. Zwykle problem ten był maskowany stosując gładkie przejście między kolorami w obrazach. W dokumencie opisano metodę jednoczesnego wyliczania położenia obrazów względem siebie i sposobu transformacji kolorów pomiędzy obrazami. Poprzez estymację kolorów ze sceny do pikseli, opisana metoda radzi sobie z dopasowywaniem kolorów w miejscu łączenia obrazów, nawet w przypadku, gdy różnica jest znaczna. Zamieszczono także szczegółowe analizy problemów występujących podczas łączenia obrazów, takich jak winiety czy różnica balansu bieli. Zaprezentowana metoda prowadzi do wygenerowania panoramicznego obrazu wysokiej jakości. Potwierdzają to zamieszczone w artykule wyniki eksperymentów, przeprowadzonych dla obrazów o ustalonych parametrach rejestracji, a także dla obrazów zarejestrowanych aparatem cyfrowym o nieznanych parametrach przesłony, balansu bieli i czasu naświetlania. Dokument przedstawia ciekawy, rzadko poruszany problem, dlatego wart jest uwagi.<br />Trudnym zagadnieniem, na którego temat istnieje wiele prac, jest tworzenie obrazów panoramicznych obejmujących kąt widzenia równy 360°. W CITATION Shu1 1045 (Shum & Szeliski, Creating full view panoramic image mosaics and enviroment maps, 1997) zaprezentowano nowatorskie podejście do tworzenia panoramicznych obrazów o zakresie pełnych 360° z sekwencji obrazów. Stosując tradycyjne metody, używane do łączenia obrazów w panoramy, w przypadku, gdy obraz pokrywał 360° błędy nagromadzone podczas przetwarzania sprawiały, że zamknięcie okręgu nie było możliwe. Autorzy zachwalając swój algorytm, zapewniają, że rozwiązali ten problem, nie wymagając od fotografa obracania aparatu idealnie poziomo, ponieważ zaproponowany algorytm radzi sobie z łączeniem obrazów zrobionych zwykłym aparatem bez statywu, o ile nie występuje zbyt duże przesunięcie aparatu ani obiektów na scenie. W zaproponowanym podejściu mozaika obrazów reprezentowana jest poprzez zestaw przekształceń, gdzie nie występują problemy związane z zastosowaniem cylindrycznej bądź sferycznej przestrzeni. Zastosowano metodę bezpośredniej estymacji trójwymiarowych obrotów, rezygnując z ośmioparametrowego przekształcenia rzutowania perspektywicznego. Autorzy opisują także algorytmy obliczające ogniskową soczewki, a także algorytm ekstrakcji mapy otoczenia z obrazu panoramicznego, dzięki czemu podczas oglądania efektów obraz może być rzutowany na wielościan charakteryzujący otoczenie. Takie podejście pozwala oglądać wirtualne otoczenie prezentowane za pomocą obrazu panoramicznego za pomocą programów odtwarzających grafikę 3D, bez użycia specjalistycznych aplikacji do oglądania panoram. Ciekawą pracą poruszającą tą samą tematykę jest CITATION Cap01 1045 (Capel, 2001). Autor pracy przeprowadził badania nad problemem wykorzystania danych zawartych w wielu nakładających się zdjęciach tej samej sceny, w celu stworzenia obrazu wysokiej jakości. Dzięki składaniu wielu obrazów w jeden możemy usunąć szum, zwiększyć pole widzenia, usunąć poruszające się obiekty, zmniejszyć rozmycie a także zwiększyć skalę jasności. Opisane zostały dokładnie poszczególne kroki prowadzące do stworzenia obrazu wyjściowego. Zaczynając od rejestracji obrazów, autor zaproponował efektywny algorytm mapujący jeden obraz na drugim, bazując tylko na informacjach z w nich zawartych, aby uzyskać informacje na temat przekształceń, których należy dokonać na obrazach, aby dopasować je do siebie. Przedstawione zostały osiągnięte wyniki. Kolejnym krokiem jest łączenie obrazów. Autor prezentuje dwa podejścia: pierwsze z nich, zwane ‘układaniem mozaiki’ polega na ułożeniu wielu obrazów w kompozycję, będącą reprezentacją pewnej sceny trójwymiarowej. Drugie podeście, nazwane przez autora ‘wysoka jakość’, prowadzi do polepszenia jakości sekwencji video poprzez usunięcie z nich zakłóceń pochodzących z procesu tworzenia sekwencji. Zaprezentowano model rejestracji sekwencji video, dzięki któremu stworzono algorytm wyszukujący najbardziej prawdopodobną estymatę obrazu pochodzącego z modelu. Zaprezentowano wyniki działania algorytmu, porównując je to istniejących wcześniej tego typu rozwiązań, dających znakomite efekty. Opisany algorytm okazuje się dawać porównywalne lub lepsze efekty, mając przy tym znacząco mniejszą złożoność obliczeniową. Jakość działania była testowana na prawdziwych zdjęciach, przedstawiających skomplikowane sceny, takie jak tekst czy twarze ludzkie, w operacjach tak złożonych jak tworzenie panoram o rozpiętości 360° czy wydobywanie informacji z sekwencji video niskiej jakości. Dodatkowo, w pracy przedstawiono nową metodę prezentacji stworzonego obrazu panoramicznego, która potrafi adaptacyjnie wybrać optymalny sposób rzutowania obrazu, odpowiedni dla danego przypadku. Również w CITATION Xio98 1045 (Xiong & Turkowski, 1998) przedstawiono system służący do generowania pełnych, obejmujących 360° panoram z prostokątnych obrazów zarejestrowanych z tego samego punktu. Rozwiązanie podzielono na trzy kroki, pierwszy z nich to nałożenie zachodzących obrazów na siebie, stosując do tego przekształcenie projekcji. Autorzy zaproponowali kombinację opartej na gradiencie metody optymalizacji i liniowego wyszukiwania opartego na korelacji. Taka metoda daje odpowiednie dopasowanie obrazów do siebie, nawet przy drastycznych różnicach naświetlenia dwóch obrazów i niewielkim zjawisku paralaksy. W drugim kroku, biorąc macierze opisujące projekcję oraz ich skojarzone macierze Hesjanu, jako argumenty wejściowe, wyliczane są wewnętrzne i zewnętrzne parametry każdego obrazu poprzez globalną optymalizację. Celem jest tutaj zminimalizowanie ogólnych rozbieżności obrazów w całym regionie, w którym obrazy na siebie zachodzą, jednocześnie konwertując macierze opisujące projekcję na parametry związane z aparatem, takie jak długość ogniskowej soczewki, format zdjęcia, jego środek, orientacja w trzech wymiarach itp. Osiągane jest to poprzez minimalizację odpowiedniej funkcji celu. Trzeci krok polega na złożeniu wszystkich obrazów w panoramę stosując piramidę opartą o Laplasjan. Taki zabieg pozwala wygładzić krawędzie złączeń obrazów oraz wyeliminować niewielkie pozostałości niedopasowań spowodowane efektem paralaksy lub niedokładnego ustawienia pary obrazów. Maski służące do wygładzania przejść między obrazami są generowane automatycznie dzięki odpowiedniej transformacie. Dodatkowo, autorzy opisali konstrukcję interfejsu użytkownika, w którym może on dokonać niezbędnych operacji, takich jak inicjalizacja, czy ustawienia własne. Artykuł jest przydatnym źródłem doprecyzowującym wiele niedomówień w innych źródłach. Ciekawa, nowatorska metoda została zaprezentowana w CITATION Yoo 1045 (Yoon & Ryoo). Autorzy proponują mapowanie otoczenia, z którego pobrane zostały obrazy na powierzchnię dwóch przecinających się prostopadle walców, nazwanych Orthogonal Cross Cylinder (OCC). Powierzchnia taka powstaje poprzez przecięcie cylindra osi Y z cylindrem osi Z. Dzięki zastosowaniu tej metody możemy pozbyć się dziwnych zachowań występujących w tradycyjnych metodach. Dodatkowo, każda jednostka powierzchni teksturowanej zajmuje w tym wypadku jednakową powierzchnię, nie będąc rozciągniętą. Tak reprezentowane otoczenie może być również oszczędniej przechowywane, dzięki bardziej dokładnemu dopasowaniu próbkowania. Autorzy piszą także, że w zaproponowanym przez nich podejściu renderowanie sceny mapowanej na OCC jest szybsze, dlatego polecają wykorzystanie tego modelu w systemach nawigacyjnych. Jest to ciekawe rozwiązanie, jednak trudne do wykorzystania w praktycznym systemie do tworzenia obrazów panoramicznych, ponieważ obrazy te wymagałyby specjalnej przeglądarki, sprawdzające się w przypadku gdy możemy zastosować dedykowaną aplikację do odtwarzania obrazów. <br />Warto zapoznać się z metodą tworzenia obrazów panoramicznych wspomaganych odpowiednim, specjalistycznym sprzętem fotograficznym. W CITATION Bak 1045 (Bakstein & Pajdla, 2002) zaprezentowano technikę pozwalającą tworzyć obrazy panoramiczne obejmujące pole widzenia o rozpiętości 360° x 360° z użyciem soczewki o bardzo szerokim kącie widzenia typu ‘fish eye’. Został opisany sposób kalibracji aparatu rozszerzony o kalibrację aparatu z obiektywem szerokokątnym, o kącie widzenia szerszym niż 180°. Kalibrację zaprezentowano na praktycznym przykładzie, stosując obiektyw typu ‘fish eye’ firmy Nikon, będący przykładem niedrogiej soczewki wysokiej jakości, posiadającej kąt widzenia o rozpiętości aż 183°! Zastosowanie obiektywu zaprezentowano w użyciu w aplikacji, tworzącej mozaikę 360x360, o kącie widzenia do 360° w obu kierunkach! Artykuł ten jest dobrym przykładem kontrastującym z podejściem, prezentowanym w większości prac. Pokazuje, że obrazy panoramiczne można skutecznie tworzyć dzięki odpowiedniemu sprzętowi, a nie tylko w procesie obróbki i łączenia zdjęć. Programowe tworzenie panoram jest zatem tylko symulacją, usiłującą naśladować opisane w artykule podejście, zatem efekty uzyskane w sposób opisany w artykule mogą być celem, do którego dążyć powinny programy łączące obrazy w panoramy.<br />W związku z tym, że obrazy panoramiczne tworzone są zwykle ze zdjęć, zrobionych aparatem cyfrowym i zapisanych w formacie JPEG, warto zastanowić się nad zaprezentowaną w CITATION Jac06 1045 (Jachimski & Mikrut, 2006) analizą wpływu kompresji JPEG na automatyczne wykrywanie cech szczególny w obrazach cyfrowych. Autorzy badali takie cechy obrazu jak krawędzie obiektów czy punkty przecięcia się krawędzi. Następnie dokonano analitycznej oceny degradacji tych cech, poprzez miary oparte na statystyce, skupiając się na informacjach dotyczących geometrii obrazu. Wpływ kompresji badano na podstawie takich miar straty jakości jak na przykład średni błąd położenia punktu w obrazie skompresowanym w stosunku do obrazu bez kompresji, czy korelacja między obrazami. Autorzy oparli badania na rzeczywistych obrazach satelitarnych posiadających cztery kanały spektralne: R, G, B oraz IR. Z przedstawionych badań wynika, że najmniej wrażliwy na degradację pod wpływem kompresji jest kanał R. Warto też zauważyć, że przy stopniu kompresji 10:1 średni błąd położenia piksela nie przekracza wartości 0.5 piksela.<br />Projekt aplikacji<br />Aplikacja stworzona w ramach niniejszej pracy powinna dawać możliwość porównania działania algorytmów nie tylko na podstawie subiektywnej oceny wizualnego efektu działania, ale również na podstawie porównania określonych deterministycznych współczynników. Gotowa aplikacja musi zostać tak skonstruowana, aby użytkownik miał możliwość łatwego wyboru algorytmów, które mają zostać zastosowane do połączenia obrazów. W związku z łatwością użycia jak i dobrą szybkością działania postanowiono zaprojektować program pod wykonanie go w języku Java 1.6, implementując go w graficznym środowisku programistycznym Netbeans 6.0 ze względu na łatwość budowy graficznych interfejsów użytkownika, do których postanowiono wykorzystać dostępne biblioteki Swing oraz AWT. Dodatkowo, postanowiono zwrócić uwagę na możliwość łatwego rozwijania aplikacji poprzez dodawanie nowych funkcjonalności. Projektowanie aplikacji zostało podzielone na abstrakcyjny projekt ogólny opisujący schemat działania, oraz na projekt szczegółowy opisujący technologie wykorzystane w każdym z kroków, przedstawiony w następnym rozdziale.<br />Rysunek SEQ Rysunek ARABIC 2: Schemat działania aplikacjiWybór i rozmieszczenie obrazówWybór algorytmów i ustawienie ich parametrówWykonanie algorytmów i zapis obrazów wynikowychSchemat działania aplikacji został sprowadzony do trzech kroków: wybór i rozmieszczenie obrazów, wybór algorytmów i ustawienie ich parametrów oraz wykonanie algorytmów na obrazach i zapis obrazów wynikowych ( REF _Ref202864216 Rysunek 2).<br />Główne okno aplikacji będzie zawierać panel z trzema zakładkami, odpowiadającymi powyższym krokom. Korzystanie z aplikacji odbywać się będzie według schematu użycia przedstawionego na Rysunku 3. <br />Rysunek SEQ Rysunek ARABIC 3: Schemat UML użycia zaimplementowanej aplikacji<br />W kroku pierwszym użytkownik będzie wybierał z dysku obrazy, które będzie chciał połączyć w panoramę. Obrazy będą wczytywane a następnie wyświetlane na ekranie. Użytkownik będzie określał położenie obrazów względem siebie poprzez przeciąganie ich przy pomocy wskaźnika myszy w odpowiednie miejsca. W związku z tym, że wykorzystywane biblioteki graficzne nie udostępniają komponentów udostępniających taką funkcję, postanowiono zbudować odpowiedni komponent rozszerzając klasę java.awt.Canvas. Jest to klasa komponentu pozwalającego na rysowanie na nim obrazów i kształtów; poprzez dołączenie do niej odpowiednich metod można zbudować z niej komponent odpowiadający postawionym wymaganiom. Struktura danych zawierająca obrazy wejściowe a także wektor opisujący położenie każdego z nich będą wykorzystywane w trzecim kroku w celu wyznaczenia kolejności przetwarzania obrazów.<br />Kolejnym krokiem jest wybór algorytmów oraz ustawienie ich parametrów. Również w tym przypadku z bogatej oferty komponentów dostępnych w bibliotekach Swing oraz AWT nie znalazło się nic, co pozwalałoby na efektywną prezentację na ekranie dostępnych algorytmów umożliwiając zmianę ich parametrów oraz łatwe dodanie każdego z nich do puli algorytmów, które mają zostać wykonane na obrazach. W związku z tym postanowiono rozwinąć istniejący komponent javax.swing.JTabbedPane o dodatkowy element Checkbox umieszczony na zakładce odpowiadającej danemu algorytmowi.<br />Aby umożliwić łatwe rozwijanie aplikacji o nową funkcjonalność zaplanowano użyć technologii pozwalającej na dynamiczne wczytywanie skompilowanych klas. Technologia ta zostanie wykorzystana na przykład do wczytywania klas implementujących algorytmy łączące obrazy w panoramy. Wykorzystanie jej oznacza, że aplikacja nie wymaga ponownej kompilacji w momencie dodania nowego algorytmu, wystarczy jedynie umieścić skompilowaną klasę algorytmu implementującą udostępniony interfejs w odpowiednim pakiecie, a będzie on widoczny i wykorzystywany w aplikacji. Klasa taka musi zawierać również metodę budującą graficzny interfejs pozwalający na sterowanie algorytmem. Ta sama technologia zostanie wykorzystana do ładowania funkcji wygładzających oraz do funkcji liczących różnicę między pikselami.<br />Ostatnim krokiem będzie uruchomienie działania algorytmów. Efektem są obrazy panoramiczne wykonane przez poszczególne algorytmy. Przetwarzanie obrazów będzie odbywało się w kolejności określonej podczas ustawiania obrazów wejściowych, od lewej do prawej. Rozważono dwie możliwe metody dopasowywania obrazów względem siebie. Jeśli będziemy wyliczać pozycję lewego obrazu względem nieruchomego prawego zyskujemy możliwość stworzenia prostej rekursywnej funkcji przyjmującej jako lewy obraz wynik poprzedniego wykonania funkcji, który będzie rósł wraz z każdym jej wykonaniem o kolejno dodawane nowe prawe obrazy. Zastosowanie takiej metody ma jednak bardzo ujemną właściwość akumulacji błędów aproksymacji, spowodowaną koniecznością wielokrotnego przekształcania powiększającego się lewego obrazu. Drugim z podejść jest dopasowanie pozycji obrazu prawego względem nieruchomego obrazu lewego. Aby uniknąć akumulacji błędów należy najpierw dopasowywać obrazy parami, a ostatecznie podczas rysowania kolejnego obrazu prawego dodać przekształcenia, którym poddano obraz leżący po jego lewej stronie. Do implementacji wybrano drugie podejście.<br /> Aby umożliwić wizualne porównanie wyników obrazy prezentowane będą w oddzielnych zakładkach. Porównanie deterministycznych wartości odpowiadających każdemu algorytmowi umożliwione będzie dzięki prezentacji w tabeli wyliczonych wartości, przesłanych przez kolejne algorytmy poprzez odpowiedni mechanizm do klasy odpowiedzialnej za uzupełnianie tabeli. Aby przyspieszyć działanie programu, planuje się zastosowanie przetwarzania wielowątkowego, umożliwiając tworzenie obrazów wyjściowych wieloma algorytmami jednocześnie. Zapis wybranych obrazów wynikowych będzie obsługiwany poprzez przycisk umieszczony w zakładce zawierającej dany obraz.<br />Budowa aplikacji będzie odbywała się według zasady „od ogółu do szczegółu”. Na początku zostaną stworzone ramy aplikacji, graficzny interfejs użytkownika, narzędzia wykorzystywane podczas tworzenia obrazów panoramicznych oraz moduły służące do obsługi plików wejściowych i wyjściowych. Następnie dodawane będą kolejne algorytmy, spajając całość procesu tworzenia obrazów wyjściowych. W końcowym etapie należy zająć się dopracowaniem szczegółów i usunięciem pojawiających się błędów. Diagram klas UML widoczny jest w załącznikach. Aplikacja skonstruowana według powyższego projektu pozwoli nie tylko na łatwe tworzenie obrazów panoramicznych, ale również na efektywne i dokładne porównanie między sobą różnych algorytmów.<br />Wykorzystane algorytmy i metody<br />Rozdział przedstawia szczegółowy opis wykorzystanych w tworzonej aplikacji algorytmów i metod służących stworzeniu obrazów panoramicznych.<br />Algorytmy ustawiające obrazy<br />Mając dane dwa obrazy będące składowymi obrazu panoramicznego, musimy wyznaczyć metodę opisującą ruch kamery pomiędzy zarejestrowaniem tych obrazów. Dzięki temu będziemy mogli ustawić obrazy względem siebie w odpowiedni sposób CITATION Sze06 1045 (Szeliski, 2006). Algorytmy te dzielimy na dwie grupy: algorytmami bezpośrednimi nazywamy algorytmy bazujące na dopasowaniu obrazów piksel po pikselu, natomiast algorytmami bazującymi na punktach kluczowych nazywamy te, które dopasowują między sobą punkty kluczowe znalezione w poszczególnych obrazach.<br />Algorytmy bezpośrednie<br />Używanie algorytmów bezpośrednich wymaga w pierwszym kroku określenia metryki błędu do porównania obrazów. Następnie należy zaproponować metodę poszukiwania najlepszej pozycji obrazów względem siebie. Najprostszą metodą jest sprawdzenie wszystkich możliwych pozycji, jednak w praktyce może się to okazać zbyt kosztowne, dlatego możemy zastosować metodę wyszukiwania hierarchicznego. Techniki te opisano poniżej.<br />Metryka błędu<br />Najprostszą metodą określenia położenia dwóch obrazów względem siebie jest przesunięcie jednego z obrazów względem drugiego CITATION Sze06 1045 (Szeliski, 2006). Mając dany obraz wzorcowy I0(x) opisany poprzez dyskretne wartości pikseli xi=(xi,yi) chcemy znaleźć jego położenie wewnątrz obrazu I1(x). Rozwiązanie bazujące na metodzie najmniejszych kwadratów polega na znalezieniu minimum sumy kwadratów różnic (sum of squared differences, SSD) danej wzorem <br />ESSD=iI1xi+u-I0xi2=iei2 MACROBUTTON NumberReference MERGEFORMAT (1)<br />gdzie u=(u, v) to przesunięcie, natomiast ei=I1xi+u-I0(xi) nazywane jest błędem residualnym. W związku z tym, że w przypadku obrazów panoramicznych tylko niewielka część obrazów wejściowych zachodzi na siebie, wartość wyliczona powyższym wzorem byłaby zależna od ilości nakładających się pikseli. Należy zatem obliczoną sumę podzielić przez ilość pikseli dla których była liczona, otrzymując tym samym średnią różnicę dla piksela. Obrazy kolorowe można przetwarzać poprzez sumowanie różnicy dla trzech kolorów. <br />Powyższa formuła może zostać zmodyfikowana tak, aby była mniej wrażliwa na szum poprzez zamianę błędu kwadratowego na odpowiednio odporną funkcję, która rosłaby wolniej niż kwadratowa funkcja kary skojarzona z metodą najmniejszych kwadratów. Przykładem takiej funkcji może być suma różnic bezwzględnych (sum of absolute differences, SAD) używana przy estymacji ruchu w kodowaniu sekwencji video z powodu małej złożoności obliczeniowej:<br />ESAD=iI1xi+u-I0(xi)=iei. MACROBUTTON NumberReference MERGEFORMAT (2)<br />Inną korzystną funkcją, zachowującą się jak kwadratowa dla małych wartości, ale rosnąca wolniej z dala od początku układu może być funkcja Gemana-McClure’a CITATION Sze06 1045 (Szeliski, 2006):<br />EGM=iI1xi+u-I0(xi)21+I1xi+u-I0(xi)2/a2, MACROBUTTON NumberReference MERGEFORMAT (3)<br />gdzie a jest stałą, uważaną za wartość odcięcia dla wyjątków, a jej wartość można wyznaczyć na przykład poprzez obliczenie mediany różnic bezwzględnych i pomnożenie przez 1.4. <br />Poszukiwanie optymalnego rozmieszczenia obrazów<br />Najprostszym podejściem przy poszukiwaniu optymalnego rozmieszczenia obrazów jest obliczenie opisanej wyżej wartości błędu pomiędzy pikselami dla wszystkich możliwych pozycji a następnie wybranie tej, dla której wartość błędu jest najmniejsza. Biorąc jednak po uwagę fakt, że transformacja związana z ruchem kamery musi zostać skompensowana co najmniej obrotem i translacją obrazu, przy nawet niewielkiej rozdzielczości skutkuje to ogromnymi ilościami działań do wykonania. W związku z tym bardzo użyteczny okazuje się algorytm wyszukiwania hierarchicznego CITATION Sze06 1045 (Szeliski, 2006): najpierw konstruowana jest piramida zawierająca obraz wejściowy przeskalowany do mniejszej rozdzielczości, a następnie poszukiwane jest położenie obrazów względem siebie dla najmniejszej rozdzielczości. Znaleziona pozycja na niższym poziomie szczegółów jest pozycją startową do wyszukiwania dokładniejszej pozycji w małym jej sąsiedztwie na wyższym poziomie. Algorytm ten nie gwarantuje uzyskania identycznego wyniku jak przy sprawdzeniu wszystkich możliwych pozycji, ale wynik powinien być zadowalający przy znacznie krótszym czasie działania. W celu opisu formalnego, zdefiniujmy<br />Ikl(xj)←Ikl-1(2xj) MACROBUTTON NumberReference MERGEFORMAT (4)<br />jako obraz na poziomie l piramidy skonstruowany poprzez zmniejszenie rozdzielczości obrazu na poziomie l-1 o połowę. Na najwyższym poziomie szukamy pozycji u(l) , która minimalizuje różnicę pomiędzy obrazami I0(l) oraz I1(l). Zwykle jest to wykonywane poprzez przeszukanie wszystkich możliwych pozycji (w zadanym zakresie) u(l)ϵ 2-l-S,S2, gdzie S to zadany zakres na poziomie o oryginalnej rozdzielczości.<br />Kiedy właściwy wektor przemieszczenia zostanie wybrany, jest on wykorzystywany do wyznaczenia prawdopodobnego wektora przemieszczenia<br />u(l-1)←2u(l) MACROBUTTON NumberReference MERGEFORMAT (5)<br />na poziomie o większej ilości szczegółów. Poszukiwanie optymalnego wektora przemieszczenia jest następnie powtarzane w niewielkim sąsiedztwie wokół wartości wyznaczonych w poprzednim kroku, na przykład u(l-1)±1. W ostatnim kroku możemy wyszukać optymalne parametry wektora przemieszczenia nie tylko pośród liczb całkowitych, ale również wśród ich ułamków. Wartości dla ułamkowych pozycji pikseli muszą zostać interpolowane przy pomocy odpowiedniej techniki.<br />Aby zautomatyzować proces tworzenia obrazów panoramicznych przy pomocy opisywanego algorytmu warto zastanowić się nad formułą pozwalającą na wyznaczenie optymalnej liczby poziomów piramidy, która będzie zastosowana w wyszukiwaniu hierarchicznym. Liczba poziomów musi być możliwie duża, ale ograniczona tak, aby ilość szczegółów na najniższym poziomie była wystarczająca do znalezienia właściwej pozycji obrazów względem siebie. W związku z tym, że wymiary obrazu będą zmniejszane o połowę, co poziom piramidy, ilość poziomów może być obliczona ze wzoru:<br />n=log2wt+1, MACROBUTTON NumberReference MERGEFORMAT (6)<br />gdzie: w – długość jednego z boków obrazu,<br />t- minimalna długość tego boku, pozwalająca na właściwe dopasowanie.<br />Metodą prób i błędów ustalono, że optymalnym ograniczeniem dla dłuższego boku obrazu jest 16 pikseli.<br />Algorytmy bazujące na punktach kluczowych<br />Algorytmy bazujące na cechach w pierwszym kroku zajmują się znalezieniem punktów szczególnych w danych obrazach. Następnie te punkty szczególne są dopasowywane parami, i na podstawie ich położenia wyliczany jest wektor przemieszczenia. Jakość algorytmu w ogromnym stopniu zależy od jakości znalezionych punktów szczególnych i ich opisu. Algorytm powinien znajdować te punkty w odpowiednich miejscach niezależnie od zmian w naświetleniu, położeniu, orientacji obrazu a także w pewnym stopniu od zmian punktu widzenia czy skali.<br />SIFT: Scale Invariant Feature Transform<br />Algorytm ten jest obecnie najpowszechniej stosowanym algorytmem przy tworzeniu obrazów panoramicznych, ze względu na jego bardzo dobre wyniki w porównaniu do innych tego typu algorytmów CITATION Mik 1045 (Mikolajczyk & Schmid). Operuje na obrazach w skali szarości.<br />Wykrywanie ekstremów w przestrzeni skali<br />Punkty mogące być kluczowymi identyfikowane są za pomocą wydajnego algorytmu, a następnie dalej sprawdzane pod względem ich niezależności od przekształceń CITATION Low04 1045 (Lowe, Distinctive Image Features from Scale-Invariant Keypoints, 2004). W pierwszym kroku punkty te są lokalizowane w obrazie oraz w konkretnej skali w taki sposób, aby mogły one być identycznie zlokalizowane w innym widoku tego samego obiektu. Następnie znajdowane są punkty niewrażliwe na zmianę skali poprzez wyszukiwanie cech stabilnych we wszystkich możliwych skalach, korzystając z ciągłej przestrzeni skali.<br />Przestrzeń skali obrazu zdefiniowana jest jako funkcja L(x,y,σ) będąca splotem funkcji Gaussa o różnych skalach G(x,y,σ) z obrazem wejściowym Ix,y:<br />Lx,y,σ=Gx,y,σ*Ix,y, MACROBUTTON NumberReference MERGEFORMAT (7)<br />Gdzie * jest operatorem splotu oraz<br />Gx,y,σ=12πσ2e-(x2+y2)/2σ2 MACROBUTTON NumberReference MERGEFORMAT (8)<br />Aby znalezione punkty kluczowe były stabilne w przestrzeni skali, stosuje się wyszukiwanie ekstremów tej przestrzeni stworzonej poprzez splot różnic funkcji Gaussa (Difference-of-Gaussian) z obrazem, D(x,y,σ), która może zostać obliczona poprzez różnicę dwóch sąsiadujących skali z uwzględnieniem stałego mnożnika k:<br />Dx,y,σ=Gx,y,kσ-Gx,y,σ*Ix,y=Lx,y,kσ-Lx,y,σ. MACROBUTTON NumberReference MERGEFORMAT (9)<br />Funkcja ta wykorzystywana jest z powodu łatwości w obliczeniu, ponieważ wygładzony obraz L musi zostać wyznaczony w każdym przypadku opisu cech w przestrzeni skali, a D jest obliczana przez proste odjęcie obrazów CITATION Low04 1045 (Lowe, Distinctive Image Features from Scale-Invariant Keypoints, 2004).<br />Oprócz tego udowodniono, że różnica funkcji Gaussa, zwana DoG, jest bliską aproksymacją znormalizowanego Laplasjanu z funkcji Gaussa σ2∇2G, którego to ekstrema według CITATION Mik02 1045 (Mikolajczyk K. , 2002) są najbardziej stabilnymi punktami kluczowymi w obrazach, w porównaniu do wielu innych dostępnych funkcji.<br />Zależność pomiędzy D a σ2∇2G może zostać wyprowadzona ze wzoru na dyfuzję ciepła:<br />∂G∂σ=σ∇2G. MACROBUTTON NumberReference MERGEFORMAT (10)<br />Wynika stąd, że ∇2G może zostać wyliczone ze skończonej aproksymacji ∂G∂σ korzystając z różnicy pomiędzy sąsiadującymi skalami kσ oraz σ:<br />σ∇2G= ∂G∂σ≈Gx,y,kσ-G(x,y,σ)kσ-σ, MACROBUTTON NumberReference MERGEFORMAT (11)<br />a zatem:<br />Gx,y,kσ-Gx,y,σ≈k-1σ2∇2G. MACROBUTTON NumberReference MERGEFORMAT (12)<br />To pokazuje, że jeśli funkcja DoG posiada skale różniące się o stałą wartość, automatycznie uwzględnia wtedy normalizację skali σ2 wymaganą przez Laplasjan niezależny od skali. Współczynnik (k – 1) w równaniu jest stały dla wszystkich skali i nie wpływa na położenie ekstremów. Błąd aproksymacji zbliża się do zera wraz ze zbliżaniem się k do 1, jednak w praktyce okazało się CITATION Low04 1045 (Lowe, Distinctive Image Features from Scale-Invariant Keypoints, 2004), że aproksymacja ma znikomy wpływ na stabilność wykrywania ekstremów i ich lokalizacji, nawet dla stosunkowo dużych różnic między skalami, jak k=2.<br />Rysunek SEQ Rysunek ARABIC 4: Dla każdej oktawy przestrzeni skali obraz jest poddawany splotowi z funkcją Gaussa, dając w wyniku zestaw obrazów w lewej kolumnie. Sąsiadujące obrazy są odejmowane od siebie tworząc różnice w prawej kolumnie. Po każdej oktawie obraz rozmyty jest zmniejszany dwukrotnie.<br />Na REF _Ref200952173 Rysunku 4. została zaprezentowana wydajna metoda konstrukcji D(x,y,σ). Obraz wejściowy jest przyrostowo splatany z funkcją Gaussa, aby dawać w wyniku obrazy oddzielone w przestrzeni skali stałą wartością współczynnika k, zaprezentowana w lewej kolumnie. Każda oktawa w przestrzeni skali (odpowiadająca podwajaniu σ) została podzielona na stałą ilość interwałów s, takich, że k=21s. Należy stworzyć s + 3 obrazy rozmyte dla każdej oktawy, tak, aby końcowe wykrywanie ekstremów obejmowało pełną oktawę. Sąsiadujące obrazy są od siebie odejmowane, aby stworzyć obrazy różnicowe DoG, pokazane po prawej stronie. Po przetworzeniu pełnej oktawy obraz rozmyty funkcją Gaussa o σ równej dwukrotności początkowej jej wartości (obraz ten będzie trzecim obrazem od początku stosu obrazów) jest skalowany poprzez wzięcie co drugiego piksela z każdej kolumny i każdego wiersza. Jakość próbkowania zależna od σ nie różni się od tej na początku poprzedniej oktawy, podczas gdy ilość obliczeń jest mocno zredukowana. <br />Rysunek SEQ Rysunek ARABIC 5: przykład piramidy rozmytych obrazów oraz piramidy DoG. Źródło: CITATION Ost 1045 (Ostiak).<br />W celu wykrycia ekstremów w D(x,y,σ) każdy piksel porównywany jest z jego ośmioma sąsiadami w danym obrazie oraz z dziewięcioma w skali ponad i poniżej, tak jak na REF _Ref200956711 Rysunku 6. Piksel oznaczany jest jako ekstremum tylko gdy jest większy bądź mniejszy od wszystkich jego sąsiadów. Koszt takiego sprawdzenia jest dość stosunkowo niski, ze względu na fakt, że większość sprawdzanych punktów jest odrzucana podczas kilku pierwszych porównań.<br />Ważnym zagadnieniem jest ustalenie częstotliwości próbkowania przestrzeni obrazu i skali koniecznej do wiarygodnego znalezienia ekstremów. Niestety okazuje się, że nie istnieje określona minimalna odległość pomiędzy dwoma ekstremami, jako że mogą one leżeć bardzo blisko siebie. Można to zauważyć rozważając przypadek białego koła na czarnym tle, które będzie miało pojedyncze maksimum w przestrzeni skali w miejscu, gdzie pozytywny region centralny funkcji DoG dopasuje się do rozmiaru i położenia okręgu. Dla bardzo wydłużonej elipsy znajdziemy dwa ekstrema położone blisko jej końców, ale skoro położenie maksimów jest ciągłą funkcją obrazu, dla elipsy o umiarkowanym wydłużeniu znajdziemy się pomiędzy powyższymi przypadkami, z dwoma maksimami leżącymi bardzo blisko siebie. Z tego powodu należy znaleźć złoty środek pomiędzy wydajnością a dokładnością. W praktyce jednak okazuje się CITATION Low04 1045 (Lowe, Distinctive Image Features from Scale-Invariant Keypoints, 2004), że ekstrema leżące blisko siebie są dość niestabilne nawet przy niewielkich zmianach w obrazie. Najlepsze wartości znajdowane są eksperymentalnie poprzez przestudiowanie wyników dla różnych częstotliwości próbkowania i wybranie tych dających najbardziej rzetelne rezultaty w warunkach symulacyjnych.<br />Rysunek SEQ Rysunek ARABIC 6: Ekstrema funkcji DoG są wykrywane poprzez porównanie piksela (oznaczonego jako X) z jego 26 sąsiadami (oznaczone kołami) w obszarze 3x3 w obrazie oraz jego dwóch sąsiednich skalach.<br />Częstotliwość próbkowania w dziedzinie skali została wyznaczona na podstawie badania 32 naturalnych obrazów o różnej tematyce. Każdy z obrazów został poddany różnym transformacjom, takim jak obrót, skalowanie, rozciąganie, zmiana kontrastu czy zaszumienie. Zmian dokonano syntetycznie, a zatem możliwe było precyzyjne określenie gdzie powinien znajdować się każdy punkt kluczowy znaleziony przed transformacją, co pozwoliło na pomiar powtarzalności i dokładności metod. Eksperyment wyraźnie wykazał, że największa powtarzalność osiągana jest przy 3 skalach na oktawę. Wynika to z faktu, że większa ilość skali na oktawę powoduje wykrycie znacznie większej ilości ekstremów lokalnych, które okazują się być mało stabilne i nie są znajdowane w obrazach po przekształceniu. Dzięki tak małej częstotliwości wykrywanie ekstremów jest mało kosztowne obliczeniowo.<br />Po określeniu częstotliwości próbkowania w dziedzinie skali należało określić częstotliwość próbkowania w przestrzeni zależną od skali wygładzania. Również w tym przypadku istnieje zależność pomiędzy częstotliwością a jakością wykrywania ekstremów, wynikająca z możliwej małej odległości pomiędzy ekstremami. Eksperymenty wykazały bardzo dobrą powtarzalność przy zastosowaniu σ=1,6 do wygładzania przed zbudowaniem oktawy skali. Oczywiście wygładzanie takie powoduje efektywną stratę dużej ilości informacji o wysokiej częstotliwości. Z tego powodu zdecydowano się na rozszerzenie obrazu, aby otrzymać większą ilość punktów kluczowych. Rozmiar obrazu jest zwiększany dwukrotnie przed zbudowaniem pierwszego poziomu piramidy, używając interpolacji liniowej. Zakładając, że obraz wejściowy charakteryzuje się rozmyciem o co najmniej σ=0,5 (jest to minimum, wymagane aby uniknąć efektu aliasingu), stąd obraz o dwukrotnie większym rozmiarze rozmyty jest z σ=1,0. Oznacza to, że potrzebne jest jedynie niewielkie dodatkowe rozmycie otrzymanego obrazu przed rozpoczęciem tworzenia oktawy skali. Działanie takie zwiększa liczbę stabilnych punktów kluczowych prawie czterokrotnie, jednak nie zauważono żadnych innych pozytywnych skutków dalszego rozszerzania obrazu CITATION Low04 1045 (Lowe, Distinctive Image Features from Scale-Invariant Keypoints, 2004).<br />Wyznaczanie dokładnego położenia punktów kluczowych<br />Po znalezieniu punktów mogących być kluczowymi, poprzez porównanie ich z sąsiednimi, następnym krokiem jest dokładne przeanalizowanie posiadanych danych na temat ich lokalizacji, skali oraz stosunku krzywizn w sąsiedztwie. Pozwala to na odrzucenie punktów o słabym kontraście (a tym samym wrażliwych na szum) lub źle zlokalizowanych na krawędzi.<br />Dzięki opracowaniu metody CITATION Low04 1045 (Lowe, Distinctive Image Features from Scale-Invariant Keypoints, 2004) dopasowania trójwymiarowej funkcji kwadratowej do lokalnych punktów próbkowych w celu określenia interpolowanej lokalizacji ekstremum udało się znacznie polepszyć dopasowanie i stabilność punktów kluczowych znalezionych jako piksele. Dokonuje się tego używając rozszerzenie Taylora do funkcji przestrzeni skali, D(x,y,σ), przesuniętej tak, że początek układu współrzędnych znajduje się w punkcie próbkowania:<br />Dx=D+∂DT∂xx+12xT∂2D∂x2x MACROBUTTON NumberReference MERGEFORMAT (13)<br />gdzie D i jego pochodne przetwarzane są w punkcie próbkowania oraz x=(x,y,σ)T jest przesunięciem względem tego punktu. Położenie ekstremum, x, wyznaczane jest poprzez przyrównanie różniczki powyższej funkcji względem x do zera, co daje<br />x=-∂2D-1∂x2 ∂D∂x. MACROBUTTON NumberReference MERGEFORMAT (14)<br />Hesjan oraz pochodna D są aproksymowane korzystając z różnic sąsiednich punktów. Jeśli przesunięcie x jest większe niż 0,5 w którymkolwiek z kierunków, oznacza to, że ekstremum leży bliżej innego piksela. W takim przypadku próbkowany punkt jest zmieniany i interpolacja odbywa się na tym punkcie. Wynikowe przesunięcie x jest dodawane do położenia tego punktu aby otrzymać interpolowane położenie tego ekstremum.<br />Obliczenie wartości funkcji w ekstremum, D(x), jest przydatne przy odrzucaniu niestabilnych punktów kluczowych o niskim kontraście. Wartość tej funkcji można obliczyć ze wzoru<br />Dx=D+12∂DT∂xx. MACROBUTTON NumberReference MERGEFORMAT (15)<br />Usuwanie wpływu krawędzi<br />Ze względów stabilności usuwanie punktów kluczowych o niskim kontraście nie jest konieczne, natomiast funkcja DoG daje wysoką wartość wzdłuż krawędzi nawet, jeśli zlokalizowanie tam punktu kluczowego nie jest silnie uzasadnione CITATION Low04 1045 (Lowe, Distinctive Image Features from Scale-Invariant Keypoints, 2004). Skutkuje to brakiem stabilności na niewielki szum. Maksimum funkcji DoG niewiele wyróżniające się ponad otaczające je wartości będzie charakteryzowało się wysoką wartością krzywizny poprzecznej do krawędzi, natomiast niską wzdłuż krawędzi. Krzywizny mogą zostać wyliczone z macierzy Hesjanu 2x2, H, wyznaczonej dla miejsca i skali związanej z punktem kluczowym:<br />H= DxxDxyDxyDyy MACROBUTTON NumberReference MERGEFORMAT (16)<br />Wartości pochodnych wyliczane są poprzez różnice sąsiednich pikseli.<br />Wartości własne macierzy H są proporcjonalne do krzywizn D. W związku z tym, że interesują nas nie same wartości własne, ale ich stosunek, możemy wprowadzić α jako większą z wartości własnych oraz β jako mniejszą. Sumę tych wartości możemy obliczyć jako ślad H, natomiast iloczyn jako wyznacznik:<br />TrH= Dxx+Dyy=α+β, MACROBUTTON NumberReference MERGEFORMAT (17)DetH= DxxDyy-(Dxy)2=αβ. MACROBUTTON NumberReference MERGEFORMAT (18)<br />W przypadku, w którym wyznacznik jest ujemny wartości krzywizn są różnych znaków, oznacza to, że punkt nie jest ekstremum i jest odrzucany. Niech r będzie stosunkiem większej wartości własnej do mniejszej, tak, że α=rβ. Wówczas<br />Tr(H)2Det(H)=(α+β)2αβ=(rβ+β)2rβ2=(r+1)2r, MACROBUTTON NumberReference MERGEFORMAT (19)<br />jest zależne jedynie od stosunku wartości własnych, a nie ich wartości. Wyniki powyższego równania jest minimalny, jeśli wartości własne są sobie równe, a rośnie wraz ze wzrostem r. A zatem chcąc sprawdzić czy stosunek wartości własnych jest większy od jakiejś wartości, r, musimy jedynie sprawdzić<br />Tr(H)2Det(H)<(r+1)2r. MACROBUTTON NumberReference MERGEFORMAT (20)<br />Sprawdzenie tej nierówności jest bardzo wydajne obliczeniowo, zajmując zwykle mniej niż 20 operacji zmiennoprzecinkowych dla każdego punktu kluczowego. <br />Przypisanie orientacji<br />Poprzez przypisanie orientacji do każdego znalezionego punktu kluczowego deskryptor tego punktu będzie stworzony relatywnie do jego orientacji przez co będzie niezależny od orientacji. Pomimo kilku wad, takich jak ograniczenie możliwości wykorzystania deskryptorów do tych niebazujących na spójności orientacji, metoda ta okazała się najbardziej stabilna CITATION Low04 1045 (Lowe, Distinctive Image Features from Scale-Invariant Keypoints, 2004). Skala punktu kluczowego wykorzystywana jest do wybrania obrazu L spleconego z funkcją Gaussa o najbliższej skali, dzięki czemu wszystkie obliczenia dokonywane są niezależnie od skali. Dla każdej próbki L(x,y) w danej skali obliczany jest kierunek θx,y i wielkość m(x,y) gradientu. Wartości te obliczane są na podstawie różnic pomiędzy pikselami:<br />mx,y=Lx+1,y-L(x-1,y)2+Lx,y+1-L(x,y-1)2 MACROBUTTON NumberReference MERGEFORMAT (21)θx,y=tan-1Lx,y+1-L(x,y-1)/Lx+1,y)-L(x-1,y) MACROBUTTON NumberReference MERGEFORMAT (22)<br />Histogram orientacji jest tworzony na podstawie orientacji gradientów w sąsiedztwie wokół danego punktu. Histogram ten ma 36 przedziałów pokrywających 360 stopni. Każda wartość dodawana do histogramu jest ważona wielkością gradientu oraz oknem gaussowskim o σ równym 1,5 razy skala danego punktu kluczowego.<br />Maksima histogramu orientacji odpowiadają dominującym kierunkom lokalnego gradientu. Wybierany jest najwyższy wierzchołek, i jeśli w histogramie istnieje inne maksimum o wielkości co najmniej 80% najwyższego, tworzony jest kolejny punkt kluczowy z tą orientacją. Oznacza to, że w punktach, dla których w histogramie istnieje wiele wierzchołków o podobnej wielkości zostanie stworzonych wiele punktów kluczowych o tej samej lokalizacji, ale różnych orientacjach. Zwykle około 15% punktów posiada wiele orientacji, ale wpływa to znacząco na stabilność dopasowania punktów kluczowych CITATION Low04 1045 (Lowe, Distinctive Image Features from Scale-Invariant Keypoints, 2004). Na koniec trzy wartości histogramu najbliższe każdego wierzchołka interpolowane są parabolą, aby lepiej wyznaczyć położenie wierzchołka.<br />Przykład zastosowania algorytmu SIFT można zobaczyć na REF _Ref201402919 Rysunku 11A.<br />Lokalny deskryptor obrazu<br />Opisane powyżej operacje przyporządkowały każdemu punktowi kluczowemu lokalizację, skalę oraz orientację. Parametry te zostały wyliczone z powtarzalnością zapewniającą niezmienniczość względem nich. Następnym krokiem jest zatem stworzenie deskryptora obszaru obrazu będącego bardzo indywidualnym a jednocześnie możliwie niezmienniczym względem pozostałych przekształceń, takich jak zmiana naświetlenia czy punktu widzenia. Autor algorytmu po wielu badaniach CITATION Low04 1045 (Lowe, Distinctive Image Features from Scale-Invariant Keypoints, 2004) zdecydował się na zastosowanie podejścia bazującego na biologicznym modelu widzenia jako funkcji neuronów w korze mózgowej.<br /> REF _Ref200992342 Rysunek 6. przedstawia sposób tworzenia deskryptora. W pierwszym kroku wyznaczane są wielkość i kierunek gradientu w punktach wokół punktu kluczowego, używając skali punktu kluczowego jako poziomu rozmycia gaussowskiego obrazu. Dla osiągnięcia niezmienniczości względem obrotu współrzędne deskryptora oraz kierunki gradientów obracane są relatywnie do orientacji punktu kluczowego. Ze względów wydajności gradienty są wyliczane zawczasu dla wszystkich poziomów piramidy. Widoczne są one jako małe strzałki po lewej stronie REF _Ref200992342 Rysunku 6.<br />Kierunki i wartości gradientuDeskryptor punktu kluczowego<br />Rysunek SEQ Rysunek ARABIC 6: Deskryptor punktu kluczowego tworzony jest poprzez obliczenie wartości i kierunku gradientów w każdym punkcie w danym sąsiedztwie, widoczne po lewej stronie. Wartości gradientów ważone są za pomocą okna gaussowskiego, oznaczonego zielonym okręgiem. Wartości te są następnie akumulowane w histogramach obejmujących podobszary 4x4, widoczne po prawej stronie.<br />Gaussowska funkcja ważąca o σ równym połowie wielkości okna deskryptora stosowana jest do wyliczenia wielkości gradientu w każdym punkcie. Taki zabieg stosuje się aby zapobiec nagłym zmianom w deskryptorze przy niewielkich zmianach w pozycji okna, oraz aby nadać mniejsze znaczenie gradientom leżącym daleko od środka deskryptora, ponieważ są one bardziej narażone na błędy.<br />Deskryptor punktu kluczowego pokazany jest po prawej stronie Rysunku 6. Pozwala on na znaczne zmiany w położeniu gradientów dzięki zastosowaniu podobszarów o wielkości 4x4 pola. Na rysunku widocznych jest osiem kierunków dla każdego histogramu, z długościami strzałek odpowiadającymi wielkościom gradientów. Próbka gradientu po lewej stronie może przemieścić się aż o 4 pozycje próbkowania dając wciąż ten sam histogram po prawej stronie.<br />Ważne jest, aby zapobiec wszelkim efektom wynikającym z granicznego przejścia danej próbki z jednego histogramu do drugiego lub z jednego kierunku gradientu w inny. W związku z tym używana jest trójliniowa interpolacja przy przyporządkowywaniu danej wartości do odpowiedniego przedziału histogramu. Innymi słowy, każda wartość mnożona jest przez wagę równą 1 – d dla każdego wymiaru, gdzie d równe jest odległości próbki od środko