2013-05-21 15 views
15

TinEye, Google ve diğerleri "tersine resim araması" sunuyor - fotoğraf yükleyebilir ve saniyeler içinde benzer fotoğraflar bulabilirsin.Bir veritabanından görsel olarak benzer fotoğraflar bulmak için algoritma?

bu algoritmaların bir açık kaynak sürümü var mı?


ben "ELEMEK" ve "görsel olarak benzer" fotoğrafları bulmak için diğer algoritmalar hakkında bilmek, ama sadece diğerine doğrudan bir fotoğraf karşılaştırmak için çalışıyoruz. Yani, bir fotoğrafa benzer fotoğrafları bulmak için, görsel olarak benzer tüm fotoğrafları bulmak için O(n^2) - her ikisi de oldukça yavaş olan bir O(n) işlemidir.

Ben daha yönetilebilir bir şey ayarlanmış sonucu azaltmak için [ilişkisel] veritabanı tarafından dizine bir özellik tanımlayıcısı gerekir. "Görsel olarak benzer" ile

Ben çok benzer anlamına gelir. Yani, Photoshop'ta hafifçe dokunduğunuz/yeniden fotoğraflanan, hafifçe kırpılmış veya yeniden boyutlandırılan, aynı sahnede hızla çekilen fotoğraflar veya çevrilmiş veya döndürülen resimler. Eğer düşünebilirsiniz

+1

Doğrusal Ayırma Analizinin (LDA)/Temel Bileşenler Analizi (PCA) bakmak mı? Doğru hatırlamıyorsam, bir noktada görüntü işleme/yüz tanıma ve neyi kullandılar?Onların güçlü noktası tam olarak bir şey daha yönetilebilir özellik açıklaması azaltma oluşur :) Bu durumda, piksel bilgisi –

+0

@Arthur: Şu anda "GÖRÜNTÜ HERHANGİ BİR ZAMAN İÇİN BİR GÖRÜNTÜ İMZASI" uygulayarak, ben bir göz atacağım eğer bir tanesi yanmazsa Teşekkürler :-) Yüz tanıma Yine de ihtiyacım yok. – mpen

+0

Birkaç yıl önce görüntü benzerliği motoru oluşturdum. İlişkileri ilişkisel veritabanlarında saklayabilirsiniz ancak önerim, sorgu motorunuz olarak ters çevrilmiş bir dizin kullanmayı düşünmek olacaktır. Verilerinizin sunulması söz konusu olduğunda size daha fazla hız ve esneklik derecesi verir. –

cevap

15

Geçerli yaklaşım Bag-of-Words model olduğunu.

Temelde hedef görüntülerin bir çevrimdışı hesaplama yapabilirsiniz. k-means clustering gibi algoritmalar içeren bir kod defteri oluşturmak için bu görüntülerden bir grup öznitelik çıkartabilirsiniz. En yakın görüntülerin aranması, kod kitabının alanına Nearest neighbor search gibi bir algoritmanın uygulanmasına yol açacaktır. Bu yalnızca bir olasılık olup, gerçeği gerekir Visual similarity search algorithm

: sistemi komşu

sen de bir göz atın Flann

kullanabilirsiniz arama Bu konu gerçekten zor ve litterature, gerçekten büyük.

Sadece bazı referanslar:

+0

En çok ilgilendiğim bölüm, ~ 500 boyutundaki vektörlerle ilişkisel bir veritabanında en yakın komşu araması nasıl gerçekleştiririz? – mpen

+0

Cevabı güncelleştirdim –

+1

FLANN, sorgunun DB bölümüne cevap vermiyor;) Verilerin tümünün bellekte kalması harika olurdu, ancak her seferinde bir milyon kayıt bellekte okuyamıyorum birisi bir arama yapar. İstekler arasında bellekte bulunan tüm verileri saklayamazsam ... imzalarımın ~ 500 bayt olduğunu düşünüyorum, bu yüzden FLANN'in bellek gereksinimlerine bağlı olarak birkaçını saklayabilirim. – mpen

2

bir göz atınLSH algoritmasını ve bir çeşit kd ağacını kullanır. Ayrıca bu görev CBIR veya görüntü çift araması olarak adlandırılır.

İlgili konular