SIFT (Scale‑Invariant Feature Transform)
SIFT – skrót od Scale‑Invariant Feature Transform – jest to algorytm wykrywania i opisu punktów charakterystycznych (kluczowych) w obrazach cyfrowych. Został opracowany w 1999 r. przez David Lowe i opublikowany w pełnej wersji w 2004 r. Algorytm jest powszechnie stosowany w dziedzinach takich jak wizja maszynowa, rozpoznawanie obrazów oraz robotyka.
Historia
Pierwsze prace nad metodami wykrywania charakterystycznych punktów w obrazach pojawiły się już w latach 80. XX‑wiego wieku, jednak brakowało rozwiązania odpornych na skalowanie i obrót. David Lowe wprowadził koncepcję skalowej niezmienniczości, co umożliwiło wykrywanie tych samych cech w obrazach o różnych rozdzielczościach i orientacjach. W 2004 r. opisane w pracy „Distinctive Image Features from Scale‑Invariant Keypoints” SIFT stało się jednym z najważniejszych narzędzi w przetwarzaniu obrazu.
Zasada działania
Algorytm SIFT składa się z czterech głównych etapów:
- Wykrywanie ekstremów w przestrzeni skali – budowana jest piramida gaussowska i przestrzeń kontrastowa (ang. Difference‑of‑Gaussians, DoG). W tej przestrzeni znajduję się lokalne maksima i minima, które zostają uznane za potencjalne kluczowe punkty.
- Precyzyjna lokalizacja punktów – dla każdego punktu przeprowadzana jest iteracyjna optymalizacja, aby usunąć przycięcia krawędzi i niską stabilność.
- Przypisanie orientacji – obliczana jest dominantna orientacja w otoczeniu punktu na podstawie gradientów, co zapewnia niezmienność względem obrotu.
- Tworzenie deskryptora – w oknie 16×16 pikseli wokół punktu budowany jest histogram gradientów podzielony na 4×4 sekcje, z których każda zawiera 8 binów orientacji. Ostatecznie 128‑elementowy wektor stanowi opis cechy.
Zastosowania
SIFT znalazł szerokie zastosowanie w licznych obszarach technologii i nauki:
- Łączenie (stitching) zdjęć i tworzenie panoram.
- Wykrywanie i śledzenie obiektów w monitoringu wideo.
- Rejestracja medyczna – dopasowywanie skanów w tomografii komputerowej i rezonansie magnetycznym.
- Systemy rozpoznawania twarzy i biometrii.
- Robotyka – nawigacja i mapowanie w SLAM (Simultaneous Localization and Mapping).
Implementacje i dostępność
Algorytm jest dostępny w wielu otwarto‑źródłowych bibliotekach, m.in. w:
- OpenCV – pod nazwą
cv::SIFT. - VLFeat – biblioteka przeznaczona do przetwarzania cech wizyjnych.
- MATLAB – w ramach Computer Vision Toolbox.
Krytyka i ograniczenia
Mimo licznych zalet, SIFT posiada również pewne wady:
- Wysokie zapotrzebowanie na moc obliczeniową, co utrudnia jego zastosowanie w systemach o ograniczonych zasobach.
- Patenty (w niektórych jurysdykcjach) związane z SIFT ograniczały w przeszłości wkładanie algorytmu do niekomercyjnych projektów open source.
- W sytuacjach z bardzo niewielką liczbą cech lub dużym szumem algorytm może generować fałszywe dopasowania.
Rozwinięcia i alternatywy
W odpowiedzi na ograniczenia SIFT opracowano szereg szybszych i/lub mniej kosztownych metod:
- SURF (Speeded‑Up Robust Features) – przyspieszona wersja inspirowana SIFT.
- ORB (Oriented FAST and Rotated BRIEF) – metoda łącząca szybkość FAST z deskryptorem BRIEF.
- AKAZE – algorytm oparty na nieliniowej skali i szybkich deskryptorach.
- Sieci neuronowe typu CNN uczące się cech (np. DeepMatching).
Bibliografia
- Lowe, D. G. „Distinctive Image Features from Scale‑Invariant Keypoints”. International Journal of Computer Vision, 2004.
- Bay, H., Tuytelaars, T., Van Gool, L. „SURF: Speeded Up Robust Features”. Computer Vision – ECCV 2006.
- Rublee, E., Rabaud, V., Konolige, K., Bradski, G. „ORB: an efficient alternative to SIFT or SURF”. ICCV 2011.