Sadece bir RGB histogramı kullanmaktan uzaklaşmayı düşünmenizi tavsiye ederim.
Görüntünün 2d Haar dalgacıklarını alırsanız (göründüğünden çok daha kolaydır, sadece çok fazla ortalama ve katsayılarınızı ağırlıklandırmak için kullanılan bazı karekökler) ve sadece k en büyük olanını koruduğunuzda görüntünüzün daha iyi bir özeti elde edilebilir dalgacıktaki ağırlıklı katsayıları seyrek bir vektör olarak normalize edin ve boyutunu küçültmek için kaydedin. En azından önceden algısal ağırlıkları kullanarak RG ve B'yi yeniden ölçeklendirmelisiniz veya YIQ'ya (veya niceleme gürültüsünü önlemek için YCoCg'ye) geçmenizi öneririm, böylece krominans bilgisini daha az önemle örnekleyebilirsiniz.
Artık bu seyrek normalleştirilmiş vektörlerden ikisinin iç çarpımını benzerlik ölçüsü olarak kullanabilirsiniz. En büyük nokta ürünlere sahip görüntü çiftleri yapı olarak çok benzer olacaktır. Bu, yeniden boyutlandırmaya, renk değiştirmeye ve filigranlamaya biraz dirençli olma ve gerçekten kolay uygulama ve kompakt olma avantajına sahiptir.
K'yi artırarak veya azaltarak depolama ve doğruluktan vazgeçebilirsiniz.
Tek bir sayısal puana göre sıralama, bu tür bir sınıflandırma problemi için zor olacaktır. Düşünürseniz, görüntülerin yalnızca bir eksen boyunca 'değişebilmesi' gerekir, ancak bunlar yoktur. Bu nedenle bir vektör özniteliklere ihtiyacınız var. Haar dalgacık durumunda, yaklaşık olarak görüntüdeki en keskin süreksizliklerin meydana geldiği yerdir. Görüntüler arasındaki mesafeyi ikili olarak hesaplayabilirsiniz, ancak sahip olduğunuz tek şey bir mesafe ölçüsü olduğundan, doğrusal bir sıralama, eşit derecede uzak olan 3 görüntüden oluşan bir 'üçgeni' ifade etmenin bir yolu yoktur. (yani tamamen yeşil, tamamen kırmızı bir görüntü ve tamamen mavi bir görüntü düşünün.)
Bu, probleminize gerçek bir çözümün sahip olduğunuz görüntü sayısında O (n ^ 2) işlemlerine ihtiyaç duyacağı anlamına gelir. Oysa, ölçüyü doğrusallaştırmak mümkün olsaydı, sadece O (n log n) veya ölçü bir radix sıralama için uygunsa O (n) gerektirebilirdi. Bununla birlikte, O (n ^ 2) harcamanıza gerek yok çünkü pratikte tüm seti gözden geçirmeniz gerekmiyor, sadece bir eşikten daha yakın olan şeyleri bulmanız gerekiyor. Dolayısıyla, seyrek vektör uzayınızı bölümlemek için birkaç teknikten birini uygulayarak, 'belirli bir eşikten daha fazla benzer olan görüntülerin beni bulma' problemi için, her görüntüyü her görüntü ile saf bir şekilde karşılaştırmaktan çok daha hızlı asimptotik elde edebilirsiniz. Muhtemelen ihtiyacınız var ... tam olarak istediğiniz şey değilse.
Her halükarda, bunu birkaç yıl önce, sakladığım farklı dokuların sayısını en aza indirmeye çalışırken kişisel olarak iyi bir etki yaratmak için kullandım, ancak bu alanda etkinliğini gösteren çok fazla araştırma gürültüsü oldu (ve bu durumda daha karmaşık bir histogram sınıflandırması biçimine):
http://www.cs.princeton.edu/cass/papers/spam_ceas07.pdf
Algılamada daha iyi doğruluğa ihtiyacınız varsa, düzenlemeleri daha sağlam bir şekilde ele almak için minHash ve tf-idf algoritmaları Haar dalgacık (veya histogram) ile birlikte kullanılabilir:
http://cmp.felk.cvut.cz/~chum/papers/chum_bmvc08.pdf
Son olarak, Stanford'un bu tür bir yaklaşımın daha egzotik bir varyantına dayalı bir görsel araması var, görüntülerin döndürülmüş veya ölçeklenmiş bölümlerini vb. Bulmak için dalgacıklardan daha fazla özellik çıkarımı yapmaya dayanıyor, ancak bu muhtemelen sizin yaptığınız iş miktarının çok ötesine geçiyor. yapmak isterdim.
http://wang14.ist.psu.edu/cgi-bin/zwang/regionsearch_show.cgi