İki görüntüyü karşılaştırma algoritması


158

İki farklı görüntü dosyası göz önüne alındığında (seçtiğim formatta), birinin diğerinin yasadışı kopyası olma olasılığını tahmin etmek için bir program yazmam gerekiyor. Kopyanın yazarı döndürme, negatif yapma veya önemsiz ayrıntılar ekleme (resmin boyutunu değiştirme gibi) yapabilir.

Bu tür bir işi yapmak için herhangi bir algoritma biliyor musunuz?


12
Hangisinin orijinal olduğunu nasıl belirlersiniz?
jfs

1
Sanırım orijinali var ve yabancı bir dosyanın dönüştürülmüş bir kopya olup olmadığını ve orijinal ile ilgili olmadığını doğrulaması gerekiyor.
unfa

Yanıtlar:


304

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 )alternatif metin

İ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 .

alternatif metin

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:

alternatif metin
(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:

alternatif metin
(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:

alternatif metin

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.

alternatif metin
(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:

alternatif metin
(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!


22
Müthiş yanıt. İyi düşünülmüş ve aydınlatıcı bir cevap için şeref.
Andrew Hubbs

Teşekkür ederim! Yarın daha da büyümeyi umuyorum, düşünmek ve bakmak istediğim bazı fikirlerim var.
Tom Gullen

Merhaba Tom - Java'da herhangi bir açık kaynaklı kenar algılama kitaplığı biliyor musunuz?
Richard H

1
Merhaba Richard, üzgünüm, ama eminim orada bazı şeyler var. Google'da "Java Gabor Filtreleri" veya "Java Kenar Algılama" için arama yapın ve bir veya iki tanesiyle karşılaşacağınızdan eminim.
Tom Gullen

Resmin bağlantısı ( blog.meetthegimp.orgwp-content / uploads / 2009/04 / 97.jpg ) kötüye gitti. Stackoverflow'un artık bir resim barındırma hizmeti olduğunu unutmayın.
ThomasW

36

Makaleyi okuyun: Porikli, Fatih, Öncel Tuzel ve Peter Meer. “Riemann Manifoldlarına Dayalı Model Güncellemesini Kullanarak Kovaryans İzleme”. (2006) IEEE Bilgisayarla Görme ve Örüntü Tanıma.

Bu makalede sunulan tekniği kullanarak bitişik web kameralarından çekilen görüntülerde çakışan bölgeleri başarıyla tespit edebildim. Kovaryans matrisim Sobel, canny ve SUSAN en / boy algılama çıkışlarının yanı sıra orijinal gri tonlamalı piksellerden oluşuyordu.


1
@Satoru Mantık: google arama kağıt üzerinde isabet gösterir: google.com/… .
Nick

34

Bir fikir:

  1. görüntüdeki bazı noktaların (örneğin, SIFT, SURF, GLOH veya LESH) ölçek ve dönüşüm değişmez tanımlayıcılarını bulmak için anahtar nokta dedektörlerini kullanın.
  2. anahtar noktalarını her iki görüntüdeki benzer tanımlayıcılarla hizalamaya çalışın (panorama dikişinde olduğu gibi), gerekirse bazı görüntü dönüşümlerine izin verin (örn. ölçekle ve döndür veya elastik uzatma).
  3. birçok anahtar noktası iyi hizalanırsa (böyle bir dönüşüm varsa, anahtar noktası hizalama hatası düşüktür veya "enerji" dönüşümü düşüktür) muhtemelen benzer görüntülere sahip olursunuz.

Adım 2 önemsiz değildir. Özellikle, diğer görüntüdeki en benzer anahtar noktasını bulmak için akıllı bir algoritma kullanmanız gerekebilir. Nokta tanımlayıcıları genellikle çok yüksek boyutludur (yüz parametre gibi) ve bakılması gereken birçok nokta vardır. kd ağaçları burada yararlı olabilir, hash aramaları iyi çalışmıyor.

Çeşitlemeler:

  • Noktalar yerine kenarları veya diğer özellikleri tespit edin.

2
Bence bu da doğru yaklaşım. Sadece bir detay: SIFT, SURF, GLOH kilit nokta dedektörleri değildir. Bunlar kilit nokta tanımlayıcılarıdır. Ortak anahtar nokta dedektörleri (ölçek değişmez) DoG, Harris veya Eigenvalue dedektörleridir.
Niki

Adım 2 için, tanımlayıcılar arasında öklid mesafesi kullanan en yakın komşuları kullanabilirsiniz
MobileCushion

15

Gerçekten göründüğünden çok daha az basit :-) Nick'in önerisi iyi bir öneridir.

Başlamak için, değerli bir karşılaştırma yönteminin, görüntüleri farklı bir forma dönüştürerek işe yarayacağını unutmayın - benzer özellikleri seçmeyi kolaylaştıran bir form. Genellikle, bu şeyler çok hafif bir okuma için yapmaz ...


Aklıma gelen en basit örneklerden biri, her görüntünün renk uzayını kullanmaktır. İki görüntünün oldukça benzer renk dağılımları varsa, aynı şeyi gösterdiklerinden emin olabilirsiniz. En azından işaretlemek veya daha fazla test yapmak için yeterli kesinliğe sahip olabilirsiniz. Renk uzayındaki görüntüleri karşılaştırmak da döndürme, ölçekleme ve kırpma gibi şeylere direnir. Tabii ki, görüntünün ağır modifikasyonuna veya ağır yeniden renklendirmeye direnmeyecektir (ve basit bir renk değişimi bile biraz zor olacaktır).

http://en.wikipedia.org/wiki/RGB_color_space
http://upvector.com/index.php?section=tutorials&subsection=tutorials/colorspace


Başka bir örnek Hough Dönüşümü olarak adlandırılan bir şeydir. Bu dönüşüm aslında bir görüntüyü bir dizi satıra ayırır. Daha sonra, her görüntüdeki 'en güçlü' satırlardan bazılarını alıp sıralanıp hizalanmadığını görebilirsiniz. Döndürme ve ölçeklendirmeyi de denemek ve telafi etmek için biraz daha fazla iş yapabilirsiniz - ve bu durumda, birkaç satırı karşılaştırmak, tüm görüntüler için aynısını yapmaktan çok daha az hesaplama işi olduğu için - bu çok kötü olmayacaktır.

http://homepages.inf.ed.ac.uk/amos/hough.html
http://rkb.home.cern.ch/rkb/AN16pp/node122.html
http://en.wikipedia.org/wiki/ Hough_transform


8

Sizin tarafınızdan açıklanan formda, sorun zor. Kopyayı, görüntünün bir bölümünü kopya olarak başka bir büyük resme yapıştırmayı düşünüyor musunuz? vb.

Geri adım atarsanız, ana görüntüleri filigranlıyorsanız bu sorunu çözmek daha kolaydır. Görüntüye bir kod gömmek için bir filigran düzeni kullanmanız gerekir. Bazı insanlar tarafından önerilen düşük seviyeli yaklaşımların (kenar tespiti vb.) Aksine, geri adım atmak için bir filigranlama yöntemi üstündür çünkü:

Sinyal işleme saldırılarına karşı dayanıklıdır ► Sinyal geliştirme - keskinleştirme, kontrast, vb. ► Filtreleme - medyan, düşük geçiş, yüksek geçiş vb. ► Ek gürültü - Gauss, üniforma vb. ► Kayıplı sıkıştırma - JPEG, MPEG vb.

Geometrik saldırılara karşı dayanıklıdır ► Afin dönüşümler ► Veri azaltma - kırpma, kırpma vb. ► Rasgele yerel bozulmalar ► Çözgü

Filigran algoritmaları hakkında biraz araştırma yapın ve sorununuzu çözmek için doğru yolda olacaksınız. (Not: STIRMARK veri kümesini kullanarak yönteminizi karşılaştırabilirsiniz . Bu tür bir uygulama için kabul edilen bir standarttır.


5

Bu sadece bir öneri, işe yaramayabilir ve ben buna çağrılmaya hazırım.

Bu yanlış pozitifler üretecek, ancak umarım yanlış negatifler üretmeyecektir.

  1. Her iki görüntüyü de aynı boyutta olacak şekilde yeniden boyutlandırın (genişlik / uzunluk oranlarının her iki görüntüde de aynı olduğunu varsayıyorum).

  2. Kayıpsız bir sıkıştırma algoritması (örn. Gzip) ile her iki görüntünün bir bitmap'ini sıkıştırın.

  3. Benzer dosya boyutlarına sahip dosya çiftlerini bulun. Örneğin, sahip olduğunuz her dosya çiftini dosya boyutlarının ne kadar benzer olduğuna göre sıralayabilir ve en üstteki X'i alabilirsiniz.

Dediğim gibi, bu kesinlikle yanlış pozitifler üretecek, ancak umarım yanlış negatifler üretmeyecektir. Bunu beş dakika içinde uygulayabilirsiniz, oysa Porikil et. ark. muhtemelen kapsamlı bir çalışma gerektirecektir.


Bu çözüm gibi kolay bir sürü uygulamak ve bunu rastgele kimlik oranından daha iyi bir verecektir inanıyoruz
Tom Gullen

Bu bir soru: Kopya farklı bir çözünürlükle kaydedilmişse işe yarıyor mu?
Dr. belisarius

4

Yaklaşımı mümkün olan her yönlendirmeye ve olumsuz sürümlere uygulamak istiyorsanız, görüntü tanımaya iyi bir başlangıç ​​(iyi güvenilirlikle) özyüzler kullanmaktır: http://en.wikipedia.org/wiki/Eigenface

Başka bir fikir, her iki görüntüyü de bileşenlerinin vektörlerine dönüştürmek olacaktır. Bunu yapmanın iyi bir yolu, x * y boyutlarında (x görüntünüzün genişliği ve y yüksekliktir) çalışan ve her boyutun değeri (x, y) piksel değerine uygulanan bir vektör oluşturmaktır. Daha sonra iki kategoride bir K-En Yakın Komşu varyantı çalıştırın: maç ve maç yok. Orijinal görüntüye yeterince yakınsa, maç kategorisine sığacak, eğer değilse.

K En Yakın Komşular (KNN) burada bulunabilir, bunun web üzerinde başka iyi açıklamaları da vardır: http://en.wikipedia.org/wiki/K-nearest_neighbor_algorithm

KNN'nin avantajları, orijinal görüntü ile ne kadar çok varyant karşılaştırırsanız, algoritma o kadar doğru olur. Olumsuz tarafı, önce sistemi eğitmek için bir resim kataloğuna ihtiyacınız var.


1
İyi bir fikir, ancak verilerde yüzler varsa. Ayrıca durumları değil insanları tanımlar. Bu nedenle, birden fazla yayında yer alan profesyonel bir aktör çok sayıda yanlış pozitif üretecektir.
Tom Gullen

Kullanım niyetinizi yanlış
anlamadığım

Aslında algoritmanın konudan bağımsız olarak çalıştığına inanıyorum, bu yüzden ağaçları karşılaştırırsanız da faydalı olacaktır. Klasik olarak Yüz Tanıma ile ilişkili olduğu için Eigenfaces olarak adlandırılır. Aranacak öğe, karşılaştırdığınız öğe ile aynı genel özelliklere sahip olduğu sürece yine de çalışmalıdır.
Nick Udell

Önceki yoruma eklemek için çok uzun: Ayrıca: Özyüzler yalnızca ekrandaki yüzleri değil, tüm görüntüyü karşılaştırır. Vikipedi'deki örnekler sadece kırpılmış yüzleri kullanır, çünkü geleneksel uygulama sadece yüzün yararlı olduğu yüz tanımadır. Aktörünüz farklı pozisyonlarda göründüyse, farklı olarak işaretlenir.
Nick Udell

1
KNN'yi doğrudan ham piksel değerlerine uygulamak da çok yardımcı olacaktır. Küçük çeviriler / döndürmeler, özellikle resim keskin kontrastlar veya ince çizgiler içeriyorsa, genellikle ham piksel değerlerinde büyük farklılıklara yol açar. Dolayısıyla, aynı resmin keyfi olarak dönüştürülmüş sürümleri o alanda birbirine çok yakın değildir (kümelere düşmezler) ve KNN çok iyi çalışmaz. Yine de, görüntü histogramları veya görüntünün başka bir dönüşüm-değişmez temsili üzerinde iyi çalışabilir.
Niki

1

Resimlerinizin yasadışı kopyalarını tespit etmek için tamamen farklı bir yaklaşım düşünmek istiyorsanız, filigran basmayı düşünebilirsiniz . (1.4'ten)

... kalite kaybı olmadan dijital nesneye telif hakkı bilgisi ekler. Dijital bir nesnenin telif hakkı söz konusu olduğunda, bu bilgi hak sahibini tanımlamak için çıkarılır. Orijinal alıcının kimliğini ve izinsiz kopyaların izlenmesine izin veren telif hakkı sahibinin kimliğini kodlamak da mümkündür.

Aynı zamanda karmaşık bir alan olsa da, filigran bilgilerinin brüt görüntü değişikliği ile devam etmesini sağlayan teknikler vardır: (1.9'dan)

... makul güçte herhangi bir sinyal dönüşümü filigranı kaldıramaz. Bu nedenle, filigranı kaldırmak isteyen bir korsan, belgeyi ticari çıkarlar için fazla fazla tartışmadıkça başarılı olmaz.

Tabii ki, SSS bu yaklaşımı uygulamaya çağırır: "... çok zorlayıcı", ancak başarılı olursanız, yüzde olasılıktan ziyade görüntünün bir kopya olup olmadığı konusunda yüksek bir güven elde edersiniz.


Yoğun düzenleme sonrasında filigranlamanın nasıl devam ettiği hakkında daha fazla bilgi var mı? Kulağa çok ilginç geliyor.
Tom Gullen

1

Linux kullanıyorsanız, iki araç öneririm:

hugin-tools paketinden align_image_stack - döndürme, ölçeklendirme ve diğer bozulmaları otomatik olarak düzelten bir komut satırı programıdır (çoğunlukla HDR fotoğrafçılığı birleştirmek için tasarlanmıştır, ancak video çerçeveleri ve diğer belgeler için de çalışır). Daha fazla bilgi: http://hugin.sourceforge.net/docs/manual/Align_image_stack.html

imagemagick paketinden karşılaştırın - iki görüntüdeki farklı piksel miktarını bulan ve sayabilen bir program. İşte düzgün bir öğretici: http://www.imagemagick.org/Usage/compare/ -fuzz N% kullanarak hata toleransını artırabilirsiniz. N ne kadar yüksek olursa, hala iki pikseli aynı saymak için hata toleransı o kadar yüksek olur.

align_image_stack herhangi bir ofseti düzeltmelidir, böylece karşılaştırma komutu aslında aynı pikselleri algılama şansına sahip olacaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.