İkili sağlam bağımsız temel özellikler (“BRIEF”) anlayışı


14

BRIEF algoritmasındaki tanımlayıcılar birbiriyle nasıl eşleştirilir?

Şablon görüntüsü başka bir resimde nasıl bulunur? Tanımlayıcıları nasıl karşılaştırırız? Bu makaleyi okudum ama nasıl yaptıklarını anlamadım.

Hamming mesafesini kullanarak tanımlayıcıları karşılaştırdıklarını yazdılar, ancak aydınlatma, boyut vb. Değişikliklere karşı değişmezlik nasıl elde edilir?

Yanıtlar:


15

Her şeyden önce, bu makalede 'şablon' diye bir şey yoktur - 'şablon (lar)' kelimesinin Computer Vision'da farklı bir anlamı vardır.

Bu makalede kullanılan yöntem nispeten basittir. Senin için yıkayım. Yerel Özellikleri kullanarak nesne tanıma, görüntü eşleştirme, görüntü dikişi ve benzerleri gibi görevleri yaparken yapmanız gereken üç önemli şey vardır.

İlk önemli şey Tespit; bu adımda, ilgi noktalarını veya anahtar noktaları tespit etmek istiyorsunuz ve bunun anlamı, görüntüde ilginç olduğunu düşündüğünüz yerel noktaları (temel olarak küçük yamalar) seçmek istediğinizdir, bunu yapmanın birçok yolu vardır; bu makale bu alana katkıda bulunmaz. Ancak, SURF özellik dedektörü ve CenSurE tuş noktalarını kullandıkları anlaşılıyor (onlar hakkında daha fazla bilgi edinmek isterseniz onları arayabilirsiniz, degradeler ve benzeri özellikler kullanmaları dışında bu adım hakkında konuşmayacağım, yani bir fotoğrafınız varsa, gökyüzünün ortasındaki bir noktanın bir ilgi noktası olarak seçilmesi olası değildir, çünkü bu noktanın etrafındaki piksellerin hepsi aynı yoğunluklardır, 'meşgul' olan şeyler ilgi noktası olarak seçilme eğilimindedir (örn. masa / bina kenarları / köşeleri)).

Algılama yapıldıktan sonra Özellik Açıklamasıizler. Resimdeki ilginç noktaları biliyorsunuz ve şimdi onları tanımlamak istiyorsunuz (temel olarak ilginç noktaların etrafındaki noktaları / yamayı tanımlamak istiyorsunuz). SIFT popüler bir özellik tanımlayıcıdır. Bu yazıda BRIEF adında yeni bir makale bulmuşlardır. BRIEF karşılaştırmalara dayanmaktadır, bu yüzden diyelim ki bir yama var (50 piksel x 50 piksel), iki nokta seçiyoruz ve iki noktanın yoğunluğunu karşılaştırıyoruz, eğer birinci nokta ikinci noktadan daha büyükse, ' 1 ', başka' 0 ', bunu birkaç çift için yaparız ve bir dizi boolean değerle sonuçlanır. Şimdi büyük soru 'puan çiftini nasıl seçiyorsunuz?', Gazetede 5 yolu açıkladılar, nispeten benzer, ilkini açıklayacağım. Yaptığınız şey eşit olarak (eşit olasılık) -S / 2'den S / 2'ye bir nokta seçmek, Örneğimizde yama boyutunun 50 olduğunu söyledik, bu nedenle -25 ila 25 arasında bir nokta seçiyoruz. 0,0 koordinatının yamanın merkezinde olduğunu varsayarsak. İşte bir örnek;

İlk çifti seçmek istiyoruz, her nokta (X, Y) koordinatlarından oluşuyor, bu yüzden ilk noktanın X koordinatını, ardından ilk noktanın Y koordinatını seçiyoruz, diyelim ki (10, -1) , şimdi ikinci nokta; ikinci nokta için X koordinatını ve ikinci nokta için Y koordinatını eşit olarak seçiyoruz, diyelim ki (-2,20), şimdi her nokta için yoğunluk değerlerini alıyoruz ve hangisinin daha büyük yoğunluk değerlerine sahip olduğunu görüyoruz - ilk büyükse ilk boole değerini '1' olarak atarız, değilse '0' atarız. Bunu birçok çift için yapıyoruz ve bir boolean değerleri vektörü ile sonuçlanıyoruz.

* Çok önemli bir nokta: Bunun işe yarayacağını varsayıyorum, rastgele jeneratörden önce bir tohum değeri belirtmeniz gerekecek. Bunun anlamı, her bir yama için aynı değerleri seçmek istediğinizdir - bu çok önemlidir, çünkü yamaları karşılaştırdığınızda / eşleştirdiğinizde, tam olarak aynı şekilde seçilmezlerse tüm sistem bozulacaktır. - Umarım bu eşleşen adımı okuduğunuzda mantıklı olacaktır.

Bunu, dedektör tarafından tespit edilen her bir ilgi noktası için yapıyoruz. Her bir ilgi noktası için, bir boole değerleri vektörü elde edeceğiz.


Şimdi iki görüntüyü eşleştirmek için ( üçüncü adım; eşleme ), diğer görüntü için aynı şeyi yapıyoruz, tespit ediyoruz, sonra BRIEF'i kullanarak açıklıyoruz. Örneğin, her bir görüntüde 10 ilgi noktamız olduğunu varsayalım (her görüntüde en ilginç 10 noktayı elde edersek bu her zaman işe yarayabilir), her bir yamayı örneğin 50 çift kullanarak tanımlamak için BRIEF kullanırız, böylece her görüntü 50 boolean değerinden 10 vektör.

İki görüntüyü karşılaştırmak için, ilk görüntüden her vektörün en yakın komşusunu ikinci görüntüden birbirine vektör olarak buluruz. Oldukça hızlı olan Hamming mesafesini kullanıyoruz, hamming mesafesi örneği

hammingDistance ((0, 1, 1), (0, 0, 0)) = 2

hammingDistance ((0, 1, 1), (0, 1, 1)) = 0

hammingDistance ((0, 1, 1), (1, 0, 0)) = 3

hammingDistance ((0, 1, 1), (1, 1, 1)) = 1

Temelde kaç yanlış yazışma

umarım yardımcı olur


Çok teşekkür ederim, algoritmayı anlayabiliyordum. Ama hala bazı sorularım var, afinite, perspektif değişiklikleri ve aydınlatma değişiklikleri nasıl? Aydınlatmada veya perspektifte bir değişiklik olması durumunda bit dizesi benzer mi olacak?
maximus

Aydınlatma değişikliği miktarı tüm pikseller için eşitse, evet yine de çalışır, pikselden piksele farklıysa (bazı piksel aydınlatması arttı, diğerleri azaldı), bu bir sorun. Afinite iyi çalışıyor gibi görünüyor (sonuçlarına göre), ama kesinlikle çalışmayı bıraktığı bir noktaya ulaşacak (aslında sonuçlarında (Şekil 3) bunu gösteriyorlar - görüntüleri indirebilir ve Duvar 1'in ne olduğunu görebilirsiniz | 2, Duvar 1 | 3 karşılık gelir). Yöntemleri rotasyon değişmez değildir (bunu görmek o kadar da zor değildir) ve bundan açıkça bahsederler.
Roronoa Zoro

Açıklaman için teşekkürler. BRIEF tanımlayıcısını çok iyi anlıyorum.
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.