Anlaşılması gereken önemli bir nokta, anahtar noktaları çıkardıktan sonra, yalnızca konumları ve bazen görüntüdeki kapsama alanı (genellikle bir daire veya elips ile yaklaşık) hakkında bilgi edinmenizdir . Kilit nokta konumu hakkında bilgi bazen yararlı olabilir, ancak kilit noktaların kendileri hakkında fazla bir şey söylemez.
Özü keypoint için kullanılan algoritma bağlı olarak (SIFT Harris köşeler, Mser), bazı bilecek genel özelliklerini çıkarılan keypoints (ör onlar ... lekeler, kenarlarda, belirgin köşeler etrafında toplanırlar) ama sen ne kadar farklı bilemezsiniz ya da benzer bir anahtar nokta diğerine.
İşte sadece konum ve kilit nokta alanının bize yardımcı olmayacağı iki basit örnek:
A resminiz (beyaz arka plan üzerinde bir ayının) ve başka bir B resminiz varsa, A'nın tam kopyası ancak birkaç piksel için çevrilmişse: çıkarılan anahtar noktaları aynı olacaktır (o ayının aynı kısmında). Bu iki görüntü aynı veya benzer olarak tanınmalıdır.
Ancak, elimizdeki tek bilgi konumuysa ve bu çeviri nedeniyle değiştiyse, görüntüleri karşılaştıramazsınız.
A resminiz (diyelim ki, bu kez bir ördeğin) ve başka bir B resminiz varsa, A'nın iki katı hariç tam olarak aynı ördek: çıkarılan anahtar noktaları aynı olacaktır (ördeğin aynı parçaları). Bunlar aynı (benzer) görüntülerdir.
Ancak tüm boyutları (alanları) farklı olacaktır: B resmindeki tüm önemli noktalar A resminden iki kat daha büyük olacaktır.
İşte, tanımlayıcılar geliyor : onlar anahtar noktaları karşılaştırmanın yoludur. Bunlar, vektör formatında (sabit uzunlukta) anahtar noktalar hakkındaki bazı özellikleri özetlemektedir . Örneğin, en belirgin yönelimleri doğrultusunda yoğunlukları olabilir. Görüntünün, anahtar noktasının referans aldığı alanına sayısal bir açıklama atar.
Tanımlayıcılar için bazı önemli şeyler şunlardır:
kilit nokta konumundan bağımsız olmalılar
Aynı anahtar noktası farklı konumlarda çıkarılırsa (örn. Çeviri nedeniyle) tanımlayıcı aynı olmalıdır.
görüntü dönüşümlerine karşı sağlam olmalılar
Bazı örnekler kontrast değişiklikleri (örneğin güneşli ve bulutlu bir günde aynı yerin görüntüsü) ve perspektif değişiklikleri (bir binanın orta-sağ ve orta-soldan görüntüsü, yine de aynı bina olarak tanımlamak istiyoruz) .
Tabii ki, hiçbir tanımlayıcı tüm dönüşümlere karşı tamamen sağlam değildir (ne de güçlü ise herhangi bir tanesine karşı, örneğin perspektifte büyük değişiklik).
Farklı tanımlayıcılar, bazen bunları hesaplamak için gereken hıza karşı olan farklı dönüşümlere karşı dayanıklı olacak şekilde tasarlanmıştır.
ölçek bağımsız olmalılar
Tanımlayıcılar hesaba katılmalıdır. Bir anahtar noktasının "belirgin" kısmı 10 piksel dikey bir çizgi ise (yarıçapı 8 piksel olan dairesel bir alanın içinde) ve diğerinin belirgin kısmı 5 piksel dikey bir çizgi ise (4 piksel yarıçaplı dairesel bir alanın içinde) - bu anahtar noktalarına benzer tanımlayıcılar atanmalıdır.
Şimdi, tüm tuş noktaları için tanımlayıcıları hesapladığınıza göre, bu tuş noktalarını karşılaştırmanın bir yolu var . Görüntü eşleştirmenin basit bir örneği için (görüntülerin aynı nesnede olduğunu bildiğinizde ve sahnenin aynı bölümünü gösteren veya iki görüntü arasındaki perspektif değişikliğini tanımlamak isteyen farklı görüntülerdeki parçaları tanımlamak istediğinizde) , bir görüntünün her bir anahtar noktası tanımlayıcısını diğer görüntünün her bir anahtar noktası tanımlayıcıyla karşılaştırırsınız. Gibi tanımlayıcıları olan sayıların vektörler, sen Öklid mesafe gibi basit olarak bir şey ile karşılaştırabilirsiniz . Elbette benzerlik ölçüsü olarak kullanılabilecek bazı daha karmaşık mesafeler vardır. Ama sonunda şunu söylerdinkimin tanımlayıcılar aralarında en küçük mesafe var keypoints olan maçlar örneğin aynı "yerler" veya farklı görüntülerde "Nesnelerin parçaları".
İçin daha karmaşık keypoints / tanımlayıcıların kullanımı, sen bakmak gerekir bu soruya - özellikle de "düşük seviyeli yerel bir yaklaşım" benim cevap ve de "Bağ-of-the deyişle" yaklaşımını @Maurits cevap. Ayrıca, bu cevaplarda verilen bağlantılar faydalıdır.