SORU
16 Kasım 2010, Salı


Basit ve benzerlik için görüntüleri karşılaştırmak için hızlı yöntem

Basit ve hızlı bir şekilde benzerlik için iki görüntü karşılaştırmak istiyorum. I. e. Eğer aynı şeyi içerdikleri yüksek bir değer almak istiyorum ama biraz daha farklı bazı arka plan var ve bir kaç piksel tarafından yeniden taşınmış olabilir.

(Beton daha fazla, eğer önemli olan: bir resim bir simge ve diğer resim bir ekran görüntüsü bir alt alan olduğunu ve eğer bu alt alan tam olarak simge olup olmadığını bilmek istiyorum.)

VarOpenCVel ama hala değil ben alışkınım.

Şimdiye kadar düşündüm bir ihtimal: o 100 hücrelerin her biri için 10x10 hücreleri ve hem resim, renk histogram karşılaştırma Bölün. Sonra bazı eşik değeri yapılan kurabilirim ve eğer aldığım değer bu eşiğin ise, benzer olduklarını varsayıyorum.

Ama yeterli olur sanırım nasıl çalıştığını henüz hiç denemedim. Resimler (benim durumumda) zaten hemen hemen benzer, oldukça yüksek bir eşik değerini kullanabilirsiniz.

Daha fazla veya daha az (ben sadece gerçekten çok benziyorlar, eğer bir benzerlik tespit etmek istiyorum oldukça basit kendisi görev olarak) çalışacak olan bu diğer olası çözümleri düzinelerce vardır sanırım. PEKİ NE önerirsiniz?


Parmak izi//imza alma konusunda benzer sorular görüntüden çok karma ile ilgili bir kaç / var:

Ayrıca, üzerine bu gibi işlevleri olan bu uygulamalar bir parmak izi elde etmek rastladım:


Biraz offtopic: ses parmak izi oluşturmak için birçok yöntem Vardır. MusicBrainz, şarkılar için parmak izi tabanlı sağlayan web service arama, good overview in their wiki vardır. Şimdi AcoustID kullanıyorlar. Bu tam (ya da çoğunlukla) tam eşleşen bulmak için. Bulma benzer maçlar için (veya sadece bazı parçacıklar veya yüksek gürültü varsa), Echoprint bir göz atın. İlgili bir soru here. Bu ses için çözüldü gibi görünüyor. Tüm bu çözümler işe oldukça iyi.

Genel olarak bulanık arama hakkında biraz daha genel bir soru here. E. g. orada locality-sensitive hashing nearest neighbor search.

CEVAP
17 Kasım 2010, ÇARŞAMBA


Ekran görüntüsü veya simgesine dönüştürdü (ölçeklenmiş, döndürülmüş, çarpık...) olabilir mi? Belki size yardımcı olabilecek başım üstüne birkaç yöntem vardır:

  • Basit Öklid mesafe@carlosdc (dönüştürülmüş görüntüleri ile çalışmıyor ve bir eşik gerekir) tarafından belirtildiği gibi.
  • (Normalized) Cross Correlation- görüntü alanlarının karşılaştırılması için kullanabileceğiniz basit bir metrik. Basit Öklid mesafe daha sağlam ama dönüştürdü resimler işe yaramaz ve yine bir eşik gerekir.
  • Karşılaştırma Histogrameğer normalize histogram kullanırsanız, bu yöntem iyi çalışıyor ve afin dönüşümler etkilenmez. Sorunu düzeltmek eşik belirliyor. Ayrıca renk değişiklikleri (Parlaklık, Kontrast vb.) karşı çok hassastır. Önceki iki ile birleştirebilirsiniz.
  • Belirgin dedektörler/puan alanlar- böyle MSER (Maximally Stable Extremal Regions), SURF SIFT. Bu çok sağlam algoritmalar ve çok basit bir görev için karmaşık olabilir. İyi ki tek bir simge ile tam bir alanı olması gerekmez, bu dedektörler, doğru eşleşme bulmak için yeterince güçlü değiller. Bu yazıda bu yöntemlerin iyi bir değerlendirme: Local invariant feature detectors: a survey.

Bunların çoğu zaten OpenCV uygulanır - örneğin cvMatchTemplate yöntemi (histogram eşleme kullanır): http://dasl.mem.drexel.edu/~noahKuntz/openCVTut6.html. Önemli nokta/alan dedektörleri de mevcuttur - OpenCV Feature Detection bkz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bmarian22

    bmarian22

    22 Aralık 2007
  • Caramella Girls

    Caramella Gi

    19 Mayıs 2008
  • Sergio Lafuente Rubio

    Sergio Lafue

    11 Aralık 2008