Bunlar sadece sorun hakkında düşündüğüm fikirler, hiç denemedim ama böyle problemleri düşünmeyi seviyorum!
Sen başlamadan önce
Resimleri normalleştirmeyi düşünün, biri diğerinden daha yüksek bir çözünürlükse, bunlardan birinin diğerinin sıkıştırılmış bir versiyonu olması seçeneğini göz önünde bulundurun, bu nedenle çözünürlüğü düşürmek daha doğru sonuçlar sağlayabilir.
Görüntünün yakınlaştırılmış bölümlerini ve çeşitli konumlar ve dönüşleri temsil edebilecek çeşitli potansiyel alanları taramayı düşünün. Görüntülerden biri diğerinin çarpık bir versiyonu ise zorlaşmaya başlar, bunlar tanımlamanız ve taviz vermeniz gereken sınırlamalardır.
Matlab görüntüleri test etmek ve değerlendirmek için mükemmel bir araçtır.
Algoritmaları test etme
Eşleşmelerin önceden bilindiği, insan tarafından analiz edilen büyük bir test verisi kümesini test etmelisiniz (en azından). Örneğin, test verilerinizde% 5'inin eşleştiği 1.000 resminiz varsa, artık oldukça güvenilir bir karşılaştırmaya sahipsiniz. % 10 pozitif bulan bir algoritma test verilerimizde pozitif% 4 bulan algoritma kadar iyi değildir. Bununla birlikte, bir algoritma tüm eşleşmeleri bulabilir, ancak aynı zamanda% 20'lik büyük bir yanlış pozitif orana sahiptir, bu nedenle algoritmalarınızı derecelendirmenin birkaç yolu vardır.
Test verileri, gerçek dünyada bulmayı umduğunuz mümkün olduğunca çok dinamiği kapsayacak şekilde tasarlanmaya çalışılmalıdır.
Yararlı olan her algoritmanın rastgele tahminlerden daha iyi performans göstermesi gerektiğini belirtmek önemlidir, aksi takdirde bizim için işe yaramaz!
Daha sonra yazılımınızı gerçek dünyaya kontrollü bir şekilde uygulayabilir ve ürettiği sonuçları analiz etmeye başlayabilirsiniz. Bu, sonsuzluk için devam edebilecek bir tür yazılım projesidir, her zaman yapabileceğiniz ince ayarlar ve iyileştirmeler vardır, asla bitmeyen projenin tuzağına düşmek kolay olduğu için tasarlarken akılda tutulması önemlidir.
Renk Kovaları
İki resim ile, her pikseli tarayın ve renkleri sayın. Örneğin, 'kovalara' sahip olabilirsiniz:
white
red
blue
green
black
(Açıkçası sayaçların daha yüksek bir çözünürlüğüne sahip olacaksınız). 'Kırmızı' piksel her bulduğunuzda kırmızı sayacı artırırsınız. Her kova renk spektrumunu temsil edebilir, daha yüksek çözünürlük daha doğru olur, ancak kabul edilebilir bir fark oranı ile deney yapmalısınız.
Toplamlarınızı elde ettikten sonra, ikinci bir resim için toplamlarla karşılaştırın. Her görüntünün eşleşmeleri tanımlamak için yeterince benzersiz bir ayak izi olduğunu görebilirsiniz.
Kenar algılama
Edge Detection'ı kullanmaya ne dersiniz ?
(kaynak: wikimedia.org )
İki benzer resim ile kenar algılama, kullanılabilir ve oldukça güvenilir bir benzersiz ayak izi sağlamalıdır.
Her iki resmi de çekin ve kenar algılamayı uygulayın. Belki kenarların ortalama kalınlığını ölçün ve ardından görüntünün ölçeklendirilme olasılığını hesaplayın ve gerekirse yeniden ölçeklendirin. Aşağıda, çeşitli rotasyonlarda uygulanan bir Gabor Filtresi (bir tür kenar algılama) örneği verilmiştir .
Piksel için resim pikselini karşılaştırın, eşleşmeleri ve eşleşmeyenleri sayın. Belli bir hata eşiğinin içindeyse, bir eşleşmeniz olur. Aksi takdirde, çözünürlüğü belirli bir noktaya kadar düşürmeyi deneyebilir ve bir eşleşme olasılığının iyileşip iyileşmediğini görebilirsiniz.
İlgi Bölgeleri
Bazı görüntüler, ilgi çekici bölümlere / bölgelere sahip olabilir. Bu bölgeler muhtemelen görüntünün geri kalanıyla büyük ölçüde kontrast oluşturur ve eşleşmeleri bulmak için diğer görüntülerinizde aramak için iyi bir öğedir. Örneğin bu resmi ele alalım:
(kaynak: meetthegimp.org )
Mavi inşaat işçisi ilgi çekici bir bölgedir ve bir arama nesnesi olarak kullanılabilir. İlgilenilen bu bölgedeki özellikleri / verileri ayıklamanın ve bunları veri kümenizi aramak için kullanmanın muhtemelen birkaç yolu vardır.
2'den fazla ilgi alanınız varsa, aralarındaki mesafeleri ölçebilirsiniz. Bu basitleştirilmiş örneği ele alalım:
(kaynak: per2000.eu )
3 açık ilgi alanımız var. Bölge 1 ve 2 arasındaki mesafe 200 piksel, 1-300 piksel ve 2 ile 3200 piksel olabilir.
İlgili benzer bölgeler için diğer görüntüleri arayın, mesafe değerlerini normalleştirin ve potansiyel eşleşmelerinizin olup olmadığını görün. Bu teknik döndürülmüş ve ölçeklendirilmiş görüntüler için iyi çalışabilir. Daha fazla ilgi alanınız varsa, her mesafe ölçümü eşleştikçe bir eşleşme olasılığı artar.
Veri kümenizin bağlamını düşünmek önemlidir. Örneğin, veri kümeniz modern sanatsa, ilgilenilen bölgeler muhtemelen son görüntünün temel bir parçası olacak şekilde tasarlandığından , ilgilenilen bölgeler oldukça iyi çalışır . Bununla birlikte, şantiyelerin görüntüleri ile uğraşıyorsanız, ilgili bölgeler yasadışı fotokopi makinesi tarafından çirkin olarak yorumlanabilir ve liberal olarak kırpılabilir / düzenlenebilir. Veri kümenizin ortak özelliklerini unutmayın ve bu bilgiden yararlanmaya çalışın.
Morphing
Morphing iki resim bir dizi adım yoluyla diğer içine bir görüntü dönüm sürecidir:
Not, bu bir görüntüyü diğerine soldurmaktan farklıdır!
Görüntüleri dönüştürebilen birçok yazılım paketi vardır. Geleneksel olarak bir geçiş efekti olarak kullanılır, iki görüntü genellikle yarım bir şeye dönüşmez, bir aşırı uç diğer sonuç olarak aşırı uçlara dönüşür.
Bu neden faydalı olabilir? Kullandığınız dönüştürme algoritmasına bağlı olarak, görüntülerin benzerliği ile dönüştürme algoritmasının bazı parametreleri arasında bir ilişki olabilir.
Aşırı derecede basitleştirilmiş bir örnekte, yapılacak daha az değişiklik olduğunda bir algoritma daha hızlı çalışabilir. Daha sonra, bu iki görüntünün birbirleriyle özellik paylaşma olasılığının daha yüksek olduğunu biliyoruz.
Bu teknik , döndürülmüş, bozuk, eğri, yakınlaştırılmış, kopyalanan her türlü görüntü için iyi çalışabilir. Yine bu sadece sahip olduğum bir fikir, bildiğim kadarıyla araştırılmış bir akademiye dayanmıyor (zor görünmüyorum), bu yüzden sınırlı / sonuçsuz sizin için çok fazla iş olabilir.
Zipping
Ow'un bu sorudaki cevabı mükemmel, AI'yi inceleyen bu tür teknikler hakkında okuduğumu hatırlıyorum. Corpus sözlüklerinin karşılaştırılmasında oldukça etkilidir.
Cesetleri karşılaştırırken ilginç bir optimizasyon, 'The', 'A', 'Ve' gibi çok yaygın olduğu düşünülen kelimeleri kaldırabilmenizdir. böylece bunlar işlemden önce kaldırılabilir. Belki de görüntülerde sıkıştırmadan önce çıkarılabilecek benzer ortak sinyaller vardır? Bakmaya değer olabilir.
Sıkıştırma oranı, iki veri kümesinin ne kadar benzer olduğunu belirlemenin çok hızlı ve makul derecede etkili bir yoludur. Sıkıştırmanın nasıl çalıştığını okumak, bunun neden bu kadar etkili olabileceği konusunda iyi bir fikir verecektir. Hızlı salım algoritması için bu muhtemelen iyi bir başlangıç noktası olacaktır.
şeffaflık
Yine bazı görüntü türleri, gif png vb için şeffaflık verilerinin nasıl saklandığından emin değilim, ancak bu çıkarılabilir olacak ve veri kümeleri şeffaflığınızla karşılaştırmak için etkili bir basitleştirilmiş bir kesim olarak hizmet edecektir.
Ters Sinyaller
Bir görüntü sadece bir sinyaldir. Bir hoparlörden bir ses çıkarırsanız ve başka bir hoparlördeki karşı gürültüyü tam olarak aynı ses seviyesinde mükemmel senkronizasyonda çalarsanız, birbirlerini iptal ederler.
(kaynak: themotorreport.com.au )
Görüntüleri ters çevirin ve diğer görüntünüze ekleyin. Pozitif bir eşleşme veya kısmi eşleme sağlamak için, piksellerin yeterince beyaz olduğu (veya siyah? Nötr bir tuval olarak adlandıracağım) bir sonuç elde edene kadar bu konumu / döngü konumlarını tekrar tekrar ölçeklendirin.
Bununla birlikte, bunlardan birine parlaklaştırıcı bir efekt uygulanması dışında, eşit olan iki görüntüyü düşünün:
(kaynak: mcburrz.com )
Bunlardan birini ters çevirmek, sonra diğerine eklemek, amaçladığımız şey olan nötr bir tuvalle sonuçlanmaz. Ancak, her iki orijinal görüntüdeki pikselleri karşılaştırırken, ikisi arasında net bir ilişki olduğunu görebiliriz.
Birkaç yıldır renk okumadım ve renk spektrumunun doğrusal bir ölçekte olup olmadığından emin değilim, ancak her iki resim arasındaki ortalama renk farkı faktörünü belirlediyseniz, işlemden önce verileri normalleştirmek için bu değeri kullanabilirsiniz. bu teknik.
Ağaç Veri yapıları
İlk başta bunlar soruna uygun görünmüyor, ancak bence işe yarayabilirler.
Bir görüntünün belirli özelliklerini (örneğin renk kutuları) ayıklamayı düşünebilir ve bir huffman ağacı veya benzer bir veri yapısı oluşturabilirsiniz. Benzerlik için iki ağacı karşılaştırabilirsiniz. Bu, örneğin geniş bir renk spektrumu olan fotoğraf verileri için işe yaramaz, ancak karikatürler veya diğer düşük renk kümesi görüntüleri işe yarayabilir.
Bu muhtemelen işe yaramaz, ama bu bir fikir. Üç boyutlu veri yapısı sözlükleri (örneğin bir sözlük) depolamakta harikadır. Bir önek ağacı. Belki bir üçlü oluşturmak için bir sözlük eşdeğeri eşdeğer bir görüntü oluşturmak mümkündür (yine sadece renkleri düşünebilirim). 300x300 boyutunda bir görüntüyü 5x5 kareye indirgediyseniz, her 5x5 kareyi bir renk dizisine ayırın ve elde edilen verilerden bir renk oluşturabilirsiniz. 2x2 kare içeriyorsa:
FFFFFF|000000|FDFD44|FFFFFF
24 seviyeyi genişleten, seviyeleri artıran / azaltan (IE alt karemizin boyutunu küçülten / artıran) daha benzersiz sonuçlar veren oldukça benzersiz bir trie kodumuz var.
Ağaç ağaçlarını karşılaştırmak oldukça kolay olmalı ve etkili sonuçlar verebilmelidir.
Daha fazla fikir
Uydu görüntülerinin sınıflandırılması hakkında ilginç bir kağıt türüne rastladım , özetliyor:
Dikkate alınan doku ölçütleri şunlardır: eş zamanlılık matrisleri, gri seviye farklılıkları, doku tonu analizi, Fourier spektrumundan türetilen özellikler ve Gabor filtreleri. Bazı Fourier özellikleri ve bazı Gabor filtreleri, özellikle sınıflandırma için tek bir frekans bandı kullanıldığında, iyi seçimler olduğu bulunmuştur.
Bazıları veri kümenizle ilgili olmasa da, bu ölçümleri daha ayrıntılı olarak araştırmaya değer olabilir.
Dikkate alınacak diğer şeyler
Muhtemelen bu tür şeylerle ilgili çok sayıda makale vardır, bu yüzden bazılarının okunması çok teknik olsa da yardımcı olacaktır. Bilgi işlemde son derece zor bir alandır, birçok insanın benzer şeyler yapmaya çalıştığı çok sayıda saatsiz çalışma. Basit tutmak ve bu fikirleri geliştirmek en iyi yol olacaktır. Rastgele eşleme oranından daha iyi bir algoritma oluşturmak ve bunu geliştirmeye başlamak oldukça zor bir iş olmalıdır.
Her yöntemin muhtemelen test edilmesi ve ince ayarlanması gerekecektir, eğer kontrol edeceğiniz resim türü hakkında herhangi bir bilginiz varsa, bu yararlı olacaktır. Örneğin, reklamların çoğunda metin bulunur, bu nedenle metin tanıma yapmak, özellikle diğer çözümlerle birleştirildiğinde eşleşmeleri bulmanın kolay ve muhtemelen çok güvenilir bir yoludur. Daha önce de belirtildiği gibi, veri kümenizin ortak özelliklerinden yararlanmaya çalışın.
Her biri ağırlıklı bir oylamaya sahip olabilecek alternatif ölçümleri ve teknikleri birleştirmek (etkinliklerine bağlı olarak), daha doğru sonuçlar üreten bir sistem oluşturmanın bir yolu olacaktır.
Eğer bu cevabın başlangıcında belirtildiği gibi çoklu algoritmalar kullanılırsa, tüm pozitifler bulunabilir, ancak pozitif pozitif oranı% 20 olabilir, başka bir algoritmanın diğer algoritmaların özelliklerini / güçlü / zayıf yönlerini incelemek ilgi çekici olacaktır. diğerinden dönen yanlış pozitifleri ortadan kaldırmada etkili olmak.
Hiç bitmeyen bir projeyi tamamlamaya çalışmamaya dikkat edin, iyi şanslar!