Articles

Úvod do SIFT( Scale Invariant Feature Transform)

Deepanshu Tyagi

Sledovat

Mar 16, 2019 · 7 min číst

SIFT znamená Měřítko-Invariant Feature Transform a byl poprvé představen v roce 2004, D. Lowe, University of British Columbia. SIFT je invariance k měřítku obrazu a rotaci. Tento algoritmus je patentován, takže tento algoritmus je součástí nesvobodného modulu v OpenCV.

Hlavní výhody SIFT jsou

  • Lokalita: funkce jsou lokální, tak robustní, aby okluze a nepořádek (bez předchozí segmentace)
  • Odlišnosti: jednotlivé prvky mohou být uzavřeno do velké databáze objektů
  • Množství: mnoho funkcí, mohou být generovány i pro malé objekty
  • Účinnost: blízko k real-time výkon
  • Rozšiřitelnost: snadno může být rozšířena na širokou škálu různých typů prvků, s každým přidáním odolnost

Toto je část 7-series Funkce Detekce a Odpovídající. Další články součástí

  • Úvod Do Funkce Detekce A Odpovídající
  • Úvod do Harris Corner Detector
  • Úvod do SURFOVÁNÍ (Zrychlený Robustní Funkce)
  • Úvod do RYCHLE (Funkce z Accelerated Segment Test)
  • Úvod do KRÁTKÉ (Binary Robust Independent Elementary Features)
  • Úvod do KOULE (Orientované RYCHLE a Otáčet STRUČNÝ)

SIFT je poměrně komplikovaný algoritmus. V algoritmu SIFT jsou zapojeny hlavně čtyři kroky. Uvidíme je jeden po druhém.

  • měřítko-výběr vrcholu prostoru: Potenciální umístění pro hledání funkcí.
  • lokalizace klíčových bodů: přesné umístění klíčových bodů funkce.
  • přiřazení orientace: přiřazení orientace ke klíčovým bodům.
  • Keypoint deskriptor: popis klíčových bodů jako vysoce dimenzionálního vektoru.
  • Keypoint Odpovídající

Scale-space peak Výběr

Reálný svět objektů jsou smysluplné pouze v určitém měřítku. Můžete vidět kostku cukru dokonale na stole. Ale pokud se podíváme na celou Mléčnou dráhu, pak prostě neexistuje. Tato vícenásobná povaha objektů je v přírodě zcela běžná. A měřítko prostoru se pokouší replikovat tento koncept na digitálních obrázcích.

měřítko prostor obrazu je funkce L(x,y,σ) ten je vyroben z konvoluce Gaussova jádra(Rozmazání) v různých měřítcích s vstupní obraz. Měřítko-prostor je rozdělen na oktávy a počet oktáv a stupnice závisí na velikosti původního obrazu. Takže generujeme několik oktáv původního obrazu. Velikost obrazu každé oktávy je polovina předchozí.

rozmazání

v rámci oktávy se obrázky postupně rozmazávají pomocí gaussovského operátora rozostření. Matematicky se „rozmazání“ označuje jako konvoluce Gaussova operátora a obrazu. Gaussovské rozostření má určitý výraz nebo „operátor“, který se aplikuje na každý pixel. Výsledkem je rozmazaný obraz.

Rozmazané obrázku

G je Gaussian Blur operátora a já je obraz. Zatímco x, y jsou souřadnice polohy a σ je parametr“ měřítko“. Ber to jako množství rozmazání. Větší hodnota, větší rozostření.

Gaussian Blur provozovatel

PES(Rozdíl Gaussova jádra)

Nyní můžeme použít tyto rozmazané snímky generovat další sadu obrázků, na Rozdíl Gaussians (Pes). Tyto obrázky psů jsou skvělé pro zjištění zajímavých klíčových bodů v obraze. Rozdíl Gaussova je získán jako rozdíl Gaussova rozmazání obrazu se dvěma různými σ, nechť je σ a kσ. Tento proces se provádí pro různé oktávy obrazu v Gaussově pyramidě. Je zastoupen v obrázku níže:

Hledání keypoints

Až do teď, jsme vytvořili stupnici prostor a použít měřítko prostoru vypočítat Rozdíl Gaussians. Ty se pak používají k výpočtu Laplaciánu Gaussových aproximací, které jsou invariantní v měřítku.

Jeden pixel v obraze je v porovnání s jeho 8 sousedů, stejně jako 9 pixelů v další škále a 9 bodů v předchozí váhy. Tímto způsobem se provádí celkem 26 kontrol. Pokud se jedná o místní extrémy, je to potenciální klíčový bod. To v podstatě znamená, že keypoint je nejlépe zastoupena v tomto měřítku.

Keypoint Lokalizace

Key0points vytvořené v předchozím kroku produkovat hodně keypoints. Některé z nich leží podél okraje, nebo nemají dostatek kontrastu. V obou případech nejsou tak užitečné jako funkce. Takže se jich zbavíme. Přístup je podobný přístupu použitému v detektoru Harris Corner pro odstranění hran. U nízkých kontrastních funkcí jednoduše zkontrolujeme jejich intenzitu.

použili taylorova řada rozšíření rozsahu prostoru, aby se více přesné umístění extrémy, a v případě, že intenzita v tomto extrémy je menší než prahová hodnota (0.03 jako na papír), je odmítnut. Pes má vyšší odezvu na hrany, takže hrany je také třeba odstranit. Pro výpočet hlavního zakřivení použili hesenskou matici 2×2 (H).

Orientace Zadání

Teď máme legitimní keypoints. Testovali, že jsou stabilní. Už známe měřítko, ve kterém byl detekován klíčový bod (je to stejné jako měřítko rozmazaného obrazu). Takže máme invarianci měřítka. Další věcí je přiřadit orientaci každému klíčovému bodu, aby byl invariance rotace.

okolí je přijato kolem keypoint umístění v závislosti na rozsahu, a gradient velikost a směr se vypočítá v tomto regionu. Vytvoří se orientační histogram s 36 zásobníky pokrývajícími 360 stupňů. Řekněme, že směr gradientu v určitém bodě (v „oblasti sběru orientace“) je 18,759 stupňů, pak půjde do koše 10-19 stupňů. A „množství“, které je přidáno do koše, je úměrné velikosti gradientu v tomto bodě. Jakmile to uděláte pro všechny pixely kolem klíčového bodu, histogram bude mít v určitém okamžiku vrchol.

nejvyšší vrchol histogramu je přijata, a jakýkoli vrchol nad 80% to je také považován za vypočítat orientaci. Vytváří klíčové body se stejným umístěním a měřítkem, ale různými směry. Přispívá ke stabilitě párování.

Keypoint popisovač

V tomto bodě, každý keypoint má umístění, měřítko, orientace. Dále je pro výpočet deskriptorů pro místní image regionu, o jednotlivých keypoint, který je velmi výrazný a invariantní, jak je to možné variace, jako jsou změny v pohledu a osvětlení.

za tímto účelem se pořídí okno 16×16 kolem klíčového bodu. Je rozdělen na 16 dílčích bloků velikosti 4×4.

For each sub-block, 8 bin orientation histogram is created.

So 4 X 4 descriptors over 16 X 16 sample array were used in practice. 4 X 4 X 8 directions give 128 bin values. It is represented as a feature vector to form keypoint descriptor. Tato funkce vektor zavádí několik komplikací. Musíme se jich zbavit, než dokončíme otisk prstu.

  1. závislost na rotaci vektor funkce používá gradientní orientace. Je zřejmé, že pokud otočíte obrázek, vše se změní. Všechny gradientní orientace se také mění. Pro dosažení nezávislosti rotace se od každé orientace odečte rotace klíčového bodu. Každá orientace gradientu je tedy relativní k orientaci klíčového bodu.
  2. závislost osvětlení pokud prahová čísla, která jsou velká, můžeme dosáhnout nezávislosti osvětlení. Takže libovolné číslo (ze 128) větší než 0,2 se změní na 0,2. Tento výsledný vektor funkce je opět normalizován. A nyní máte nezávislý vektor funkcí osvětlení!

Keypoint Odpovídající

Keypoints mezi dvěma obrazy jsou porovnány určením jejich nejbližší sousedé. Ale v některých případech, druhý nejbližší zápas může být velmi blízko k prvnímu. Může se to stát kvůli hluku nebo jiným důvodům. V takovém případě se bere poměr nejbližší vzdálenosti k druhé nejbližší vzdálenosti. Pokud je větší než 0,8, jsou odmítnuty. Eliminuje kolem 90% falešných zápasů, zatímco zahodí pouze 5% správných zápasů, podle papíru.

implementace

byl jsem schopen implementovat sift pomocí OpenCV (3.4). Zde je návod, jak jsem to udělal:

Github odkaz na kód: https://github.com/deepanshut041/feature-detection/tree/master/sift

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *