Ini hanyalah ide-ide yang telah saya pikirkan tentang masalahnya, tidak pernah mencobanya tetapi saya suka memikirkan masalah seperti ini!
Sebelum kamu memulai
Pertimbangkan untuk menormalkan gambar, jika satu resolusi lebih tinggi daripada yang lain, pertimbangkan opsi bahwa salah satunya adalah versi terkompresi dari yang lain, oleh karena itu menurunkan resolusi mungkin memberikan hasil yang lebih akurat.
Pertimbangkan untuk memindai berbagai area prospektif dari gambar yang dapat mewakili bagian yang diperbesar dari gambar dan berbagai posisi dan rotasi. Itu mulai menjadi rumit jika salah satu gambar adalah versi miring dari yang lain, ini adalah semacam batasan Anda harus mengidentifikasi dan kompromi.
Matlab adalah alat yang sangat baik untuk menguji dan mengevaluasi gambar.
Menguji algoritme
Anda harus menguji (minimal) satu set besar data uji manusia yang dianalisis di mana kecocokan diketahui sebelumnya. Jika misalnya dalam data pengujian Anda, Anda memiliki 1.000 gambar di mana 5% dari mereka cocok, Anda sekarang memiliki patokan yang cukup dapat diandalkan. Algoritma yang menemukan 10% positif tidak sebagus yang menemukan 4% positif dalam data pengujian kami. Namun, satu algoritma mungkin menemukan semua kecocokan, tetapi juga memiliki 20% false positive rate yang besar, jadi ada beberapa cara untuk menilai algoritma Anda.
Data uji harus berusaha dirancang untuk mencakup sebanyak mungkin jenis dinamika yang Anda harapkan akan ditemukan di dunia nyata.
Penting untuk dicatat bahwa setiap algoritma yang akan berguna harus berkinerja lebih baik daripada menebak secara acak, jika tidak, itu tidak berguna bagi kita!
Anda kemudian dapat menerapkan perangkat lunak Anda ke dunia nyata dengan cara yang terkontrol dan mulai menganalisis hasil yang dihasilkannya. Ini adalah jenis proyek perangkat lunak yang dapat digunakan untuk infinitum, selalu ada perubahan dan peningkatan yang dapat Anda lakukan, penting untuk diingat bahwa ketika merancang itu karena mudah untuk jatuh ke dalam perangkap proyek yang tidak pernah berakhir.
Ember warna
Dengan dua gambar, pindai setiap piksel dan hitung warnanya. Misalnya, Anda mungkin memiliki 'ember':
white
red
blue
green
black
(Jelas Anda akan memiliki resolusi counter yang lebih tinggi). Setiap kali Anda menemukan piksel 'merah', Anda menambah penghitung merah. Setiap ember dapat mewakili spektrum warna, semakin tinggi resolusi semakin akurat tetapi Anda harus bereksperimen dengan tingkat perbedaan yang dapat diterima.
Setelah Anda memiliki total, bandingkan dengan total untuk gambar kedua. Anda mungkin menemukan bahwa setiap gambar memiliki jejak yang cukup unik, cukup untuk mengidentifikasi kecocokan.
Deteksi tepi
Bagaimana dengan menggunakan Deteksi Tepi .
(sumber: wikimedia.org )
Dengan dua gambar serupa, deteksi tepi akan memberi Anda jejak unik yang dapat digunakan dan cukup andal.
Ambil kedua gambar, dan terapkan deteksi tepi. Mungkin mengukur ketebalan rata-rata tepi dan kemudian menghitung probabilitas gambar bisa diskalakan, dan skala ulang jika perlu. Di bawah ini adalah contoh dari Gabor Filter yang diterapkan (sejenis deteksi tepi) dalam berbagai rotasi.
Bandingkan gambar piksel dengan piksel, hitung kecocokan dan kecocokan. Jika mereka berada dalam ambang kesalahan tertentu, Anda memiliki kecocokan. Jika tidak, Anda dapat mencoba mengurangi resolusi hingga titik tertentu dan melihat apakah kemungkinan kecocokan membaik.
Daerah yang Menarik
Beberapa gambar mungkin memiliki segmen / wilayah tertentu yang menarik. Wilayah ini mungkin sangat kontras dengan gambar lainnya, dan merupakan barang yang bagus untuk dicari di gambar Anda yang lain untuk menemukan kecocokan. Ambil gambar ini misalnya:
(sumber: meetthegimp.org )
Pekerja konstruksi berwarna biru adalah wilayah yang diminati dan dapat digunakan sebagai objek pencarian. Mungkin ada beberapa cara Anda bisa mengekstraksi properti / data dari wilayah yang diminati ini dan menggunakannya untuk mencari set data Anda.
Jika Anda memiliki lebih dari 2 wilayah minat, Anda dapat mengukur jarak di antara mereka. Ambil contoh sederhana ini:
(sumber: per2000.eu )
Kami memiliki 3 bidang minat yang jelas. Jarak antara wilayah 1 dan 2 mungkin 200 piksel, antara 1 dan 3 400 piksel, dan 2 dan 3 200 piksel.
Cari gambar lain untuk bidang minat yang sama, normalkan nilai jarak dan lihat apakah Anda memiliki kecocokan potensial. Teknik ini bisa bekerja dengan baik untuk gambar yang diputar dan diskalakan. Semakin banyak wilayah minat yang Anda miliki, probabilitas kecocokan meningkat karena setiap pengukuran jarak cocok.
Penting untuk memikirkan konteks set data Anda. Jika misalnya kumpulan data Anda adalah seni modern, maka wilayah yang diminati akan bekerja dengan cukup baik, karena wilayah yang diminati mungkin dirancang untuk menjadi bagian mendasar dari gambar akhir. Namun jika Anda berurusan dengan gambar-gambar situs konstruksi, wilayah yang menarik dapat ditafsirkan oleh mesin fotokopi ilegal sebagai jelek dan dapat dipotong / diedit secara bebas. Ingat fitur-fitur umum pada dataset Anda, dan cobalah untuk mengeksploitasi pengetahuan itu.
Perubahan
Mengubah dua gambar adalah proses mengubah satu gambar menjadi yang lain melalui serangkaian langkah:
Catatan, ini berbeda dengan memudar satu gambar ke gambar lain!
Ada banyak paket perangkat lunak yang dapat mengubah gambar. Ini secara tradisional digunakan sebagai efek transisi, dua gambar tidak berubah menjadi sesuatu yang biasanya separuh jalan, satu gambar ekstrem menjadi ekstrem yang lain sebagai hasil akhirnya.
Mengapa ini bisa bermanfaat? Bergantung pada algoritma morphing yang Anda gunakan, mungkin ada hubungan antara kesamaan gambar, dan beberapa parameter dari algoritma morphing.
Dalam contoh yang terlalu sederhana, satu algoritma mungkin mengeksekusi lebih cepat ketika ada sedikit perubahan yang harus dilakukan. Kami kemudian tahu ada kemungkinan lebih tinggi bahwa kedua gambar ini berbagi properti satu sama lain.
Teknik ini dapat bekerja dengan baik untuk memutar, mendistorsi, miring, diperbesar, semua jenis gambar yang disalin. Sekali lagi ini hanya ide yang saya miliki, itu tidak didasarkan pada akademisi yang diteliti sejauh yang saya sadari (saya belum terlihat keras), jadi mungkin banyak pekerjaan untuk Anda dengan hasil terbatas / tanpa hasil.
Zip
Jawaban Ow dalam pertanyaan ini luar biasa, saya ingat pernah membaca tentang teknik belajar AI semacam ini. Ini cukup efektif untuk membandingkan corpus lexicons.
Salah satu optimasi yang menarik ketika membandingkan corpus adalah Anda dapat menghapus kata-kata yang dianggap terlalu umum, misalnya 'The', 'A', 'And' dll. jadi ini bisa dihapus sebelum diproses. Mungkin ada sinyal umum yang serupa dalam gambar yang dapat dilucuti sebelum kompresi? Mungkin layak untuk dilihat.
Rasio kompresi adalah cara yang sangat cepat dan cukup efektif untuk menentukan seberapa mirip dua set data. Membaca tentang bagaimana kompresi bekerja akan memberi Anda ide bagus mengapa ini bisa sangat efektif. Untuk algoritma rilis cepat ini mungkin akan menjadi titik awal yang baik.
Transparansi
Sekali lagi saya tidak yakin bagaimana data transparansi disimpan untuk jenis gambar tertentu, gif png dll, tetapi ini akan diekstraksi dan akan berfungsi sebagai cut out yang disederhanakan secara efektif untuk dibandingkan dengan set data transparansi Anda.
Sinyal Pembalikan
Gambar hanyalah sinyal. Jika Anda memainkan suara dari speaker, dan Anda memainkan suara yang berlawanan di speaker lain dalam sinkronisasi sempurna pada volume yang sama persis, mereka membatalkan satu sama lain.
(sumber: themotorreport.com.au )
Balikkan gambar, dan tambahkan ke gambar Anda yang lain. Skala posisi / loop berulang-ulang sampai Anda menemukan gambar yang dihasilkan di mana cukup banyak piksel putih (atau hitam? Saya akan menyebutnya sebagai kanvas netral) untuk memberi Anda kecocokan positif, atau kecocokan sebagian.
Namun, perhatikan dua gambar yang sama, kecuali salah satu dari mereka memiliki efek mencerahkan yang diterapkan padanya:
(sumber: mcburrz.com )
Membalikkan salah satu dari mereka, lalu menambahkannya ke yang lain tidak akan menghasilkan kanvas netral yang merupakan tujuan kami. Namun, ketika membandingkan piksel dari kedua gambar asli, kita dapat melihat hubungan yang jelas antara keduanya.
Saya belum mempelajari warna selama beberapa tahun sekarang, dan saya tidak yakin apakah spektrum warna dalam skala linier, tetapi jika Anda menentukan faktor rata-rata perbedaan warna antara kedua gambar, Anda dapat menggunakan nilai ini untuk menormalkan data sebelum memproses dengan teknik ini.
Struktur Data Pohon
Pada awalnya ini tampaknya tidak cocok untuk masalah ini, tetapi saya pikir mereka bisa bekerja.
Anda dapat berpikir tentang mengekstraksi properti tertentu dari suatu gambar (misalnya tempat warna) dan menghasilkan pohon huffman atau struktur data serupa. Anda mungkin dapat membandingkan dua pohon untuk kesamaan. Ini tidak akan bekerja dengan baik untuk data fotografi misalnya dengan spektrum warna yang besar, tetapi kartun atau gambar dengan warna yang diperkecil lainnya mungkin berhasil.
Ini mungkin tidak akan berhasil, tapi itu ide. Struktur data trie sangat bagus dalam menyimpan leksikon, misalnya kamus. Ini pohon awalan. Mungkin mungkin untuk membangun gambar yang setara dengan leksikon, (sekali lagi saya hanya bisa memikirkan warna) untuk membangun sebuah trie. Jika Anda mengurangi mengatakan gambar 300x300 ke dalam kotak 5x5, maka dekomposisi setiap kotak 5x5 menjadi urutan warna yang Anda bisa membuat trie dari data yang dihasilkan. Jika kotak 2x2 berisi:
FFFFFF|000000|FDFD44|FFFFFF
Kami memiliki kode trie yang cukup unik yang meluas 24 tingkat, menambah / mengurangi tingkat (IE mengurangi / meningkatkan ukuran sub-persegi kami) dapat menghasilkan hasil yang lebih akurat.
Membandingkan pohon trie harus cukup mudah, dan dapat memungkinkan memberikan hasil yang efektif.
Lebih banyak ide
Saya menemukan sebuah kertas pendek yang menarik tentang klasifikasi citra satelit , yang menguraikan:
Ukuran tekstur yang dipertimbangkan adalah: matriks cooccurrence, perbedaan level abu-abu, analisis tekstur-nada, fitur yang berasal dari spektrum Fourier, dan filter Gabor. Beberapa fitur Fourier dan beberapa filter Gabor ditemukan menjadi pilihan yang baik, khususnya ketika pita frekuensi tunggal digunakan untuk klasifikasi.
Mungkin perlu menyelidiki pengukuran-pengukuran itu secara lebih rinci, meskipun beberapa di antaranya mungkin tidak relevan dengan kumpulan data Anda.
Hal-hal lain yang perlu dipertimbangkan
Mungkin ada banyak makalah tentang hal semacam ini, jadi membaca beberapa di antaranya akan membantu walaupun bisa sangat teknis. Ini adalah bidang yang sangat sulit dalam komputasi, dengan banyak jam kerja sia-sia dihabiskan oleh banyak orang yang berusaha melakukan hal serupa. Tetap sederhana dan membangun ide-ide itu akan menjadi cara terbaik untuk pergi. Seharusnya menjadi tantangan yang cukup sulit untuk membuat algoritma dengan tingkat kecocokan acak yang lebih baik, dan untuk mulai meningkatkan yang benar-benar mulai menjadi sangat sulit untuk dicapai.
Setiap metode mungkin perlu diuji dan diubah secara menyeluruh, jika Anda memiliki informasi tentang jenis gambar yang akan Anda periksa juga, ini akan berguna. Misalnya iklan, banyak dari mereka akan memiliki teks di dalamnya, jadi melakukan pengenalan teks akan menjadi cara yang mudah dan mungkin sangat dapat diandalkan untuk menemukan kecocokan terutama ketika dikombinasikan dengan solusi lain. Seperti disebutkan sebelumnya, cobalah untuk mengeksploitasi properti umum dari kumpulan data Anda.
Menggabungkan pengukuran dan teknik alternatif masing-masing yang dapat memiliki suara terbobot (tergantung pada keefektifannya) akan menjadi salah satu cara Anda dapat menciptakan sistem yang menghasilkan hasil yang lebih akurat.
Jika menggunakan beberapa algoritma, seperti yang disebutkan pada awal jawaban ini, seseorang dapat menemukan semua positif tetapi memiliki tingkat positif palsu sebesar 20%, akan menarik untuk mempelajari sifat / kekuatan / kelemahan dari algoritma lain seperti algoritma lain mungkin efektif dalam menghilangkan positif palsu yang dikembalikan dari yang lain.
Berhati-hatilah untuk tidak mencoba menyelesaikan proyek yang tidak pernah berakhir, semoga berhasil!