Neden kilit nokta tanımlayıcıları kullanıyoruz?


18

Sadece SURF hakkında çalıştım ve uygulanmasına gidiyorum, ancak neden tanımlayıcıları kullandığımızı hala anlamadım.

Anahtar noktaların ne olduğunu ve amaçlarını anlıyorum, ancak anahtar noktaları çıkardığımızda neden tanımlayıcıları kullanmamız gerekiyor? Tanınmadaki önemi ve rolü nedir?


Hey, özellikle SURF hakkında bilmek ister misiniz, yoksa sorunuz daha genel mi, "neden kilit noktalar için tanımlayıcılara ihtiyacımız var?" (SURF hakkında bilgi edinerek esinlenmiştir)
penelope

@penelope Benim sorum tanımlayıcılar hakkında daha genel
ARG

3
Umarım cevaplamadan önce sorunuzu daha genel hale getirmeme aldırmazsınız.
penelope

Yanıtlar:


22

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.


en iyi cevap ve güzel açıklama, terim özelliğini kullanmak tanımlayıcılarla aynı mı? ikisi de aynı mı yoksa farklı mı? ve sörfte oryantasyon terimi ne anlama geliyor?
ARG

1
"Özellik" terimi "anahtar nokta" ile aynıdır - görüntüde önemli bir noktadır. Tanımlayıcı daha sonra bir "anahtar nokta tanımlayıcısı" veya "özellik tanımlayıcısı" dır. Ne yazık ki, SURF hakkında fazla bir şey bilmiyorum, bu yüzden genel olarak tanımlayıcıları veya özellikle SURF hakkında bilmek isteyip istemediğinizi sordum. SIFT için yönelimin çok önemli olduğunu biliyorum.
penelope

Oryantasyon terimi SURF için kullanılmaz, aynı zamanda SIFT'de de kullanılır, sadece bilmek istiyorum, nedir
ARG

Yerel gradyanı temel alarak anahtar noktasının "ana yönelimini" hesaplarsınız. Ardından, dönme değişmezliğini elde etmek için gradyan hesaplanırken bu yön anahtar noktası için "yukarı" olur. SIFT için wikipedia'da
penelope

:) sorum yönelim nedir? sift ya da surf üzerinde değil
ARG

2

Fikri anlamak için ideal tanımlayıcıyı düşünelim. İdeal bir tanımlayıcı, piksel nesnelerinden başka bir alana kadar bir işlevdir, öyle ki aynı nesneler aynı sonuca sahip olurken, farklı nesneler farklı sonuçlara sahiptir.

Örneğin, aynı nesneye ancak farklı pozlama düzeyine sahip iki görüntü çekerseniz, görüntünün çoğaltılmış halini alırsınız. Pikselleri alıp ortalama ve standart sapma seviyelerine göre normalleştirecek bir tanımlayıcı, bu iki nesnenin aynı olduğunu söyleyerek aynı sonuca sahip olacaktır. Bu iyi, çünkü doğru eşleştirmemize izin veriyor

resim açıklamasını buraya girin resim açıklamasını buraya girin

Bu nedenle, tanımlayıcıya aynı nesneleri doğru şekilde eşleştirmek için ihtiyaç duyulur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.