2012-04-21 26 views
6

Bir uygulamanın ekran görüntülerini alıyorum ve görüntünün daha önce görülüp görülmediğini tespit etmeye çalışıyorum. Önemsiz değişiklikleri farklı olarak tespit etmeye çalışıyorum - ör. görüntüde metin varsa ve yazım değişiklikleri varsa, bu uyumsuzluk olarak sayılır.Görüntü çok benzer görüntüler için karma

Bilinen görüntülerin bir veritabanında arama yapmak ve daha önce görülüp görülmediğini algılamak için bir ekran görüntüsü görüntüsünün içeriğini bir MD5 hashını başarıyla kullanıyorum.

Şimdi, onu başka bir makineye taşıdım ve yapılandırmalarla tam olarak eşleşme girişimlerine rağmen, eski makineye her zaman biraz farklı görüntüler alıyorum. Farklı dediğimde, değişiklikler dakikadır - eski ve yeni görüntüleri havaya uçurup o zamanlar arasında geçiş yaparsam, tek bir fark göremiyorum! Yine de, ImageMagick'in compare komutu, farklı olan piksellerin smatteringini görebilir.

MD5 karma değerlerim artık eşleşmiyor. Basit bir MD5 karma yerine, bir image hash'a ihtiyacım var.

Araştırmamı yapıyorum, görüntü karmalarının çoğunun oldukça cömert olmaya çalıştıklarını görüyorum - karşılık gelen yanlış pozitif eşleşmelerle yeniden boyutlandırılan, dönüştürülmüş ve filigranlı görüntüleri kabul ediyorlar. Çok daha sıkı bir görüntü karması istiyorum - izin verilen tek değişiklik renkteki dakika değişiklikleridir.

Herhangi bir kişi karma kitaplığı veya algoritması önerebilir mi? (dupdetector gibi bir uygulama değil).

hatırla: My gereksinimleri ben shrinking veya pHash gibi liberal algoritma istemiyoruz birçok benzer sorular farklıdır, ben structural similarity veya ImageMagick's compare gibi bir karşılaştırma aracı istemiyoruz.

Çok benzer resimlerin aynı karma değeri vermesini sağlayan bir karma istem istiyorum. Bu mümkün mü?

+2

Hayır, bu mümkün değil. Neyin atılacağını bilmek için bir yol olmaz. Mümkün olan, benzer iki görüntünün ne olması gerektiği için ayarlanabilir bir eşiğe sahip bir görüntü karşılaştırma aracı geliştirmektir. (Neden imkansız olduğunu görmek için, örneğin, bir oyun için benzer bir şey yapmaya çalışmayı hayal edin.Örneğin, bir oyunda sadece birkaç kelimeyi değiştirdiyse, bu sayı ya her kelimeye bağlı olsun ya da olmasın. Sadece eşitlik için karmaları karşılaştıramazsınız, mesafelerini ölçmeniz gerekir.) –

+0

İlginç. Yüzlerce veya binlerce olası eşleşmeyi karşılaştırmak mümkün değildir. Bu biraz endişe verici. Teşekkür ederim. – Oddthinking

+0

Yüzlerce veya binlerce olası eşleşmeyi karşılaştırmak zorunda değilsiniz. Sadece genel olarak benzer olanları karşılaştırmanız gerekir. Tamamen farklı olan olanlar eşleşemez. –

cevap

1

"Spectral hashing" adlı aşağıdaki makaleye göz atabilirsiniz. Benzer görüntüleri bir araya getirmek için resimlerden karma kodlar üretmek üzere tasarlanmış bir algoritmadır (makalenin sonundaki geri çağırma örneklerine bakın). Bu iyi bir başlangıç ​​noktasıdır.

linki: http://www.cs.huji.ac.il/~yweiss/SpectralHashing/

İlgili konular