Ini sepenuhnya bergantung pada seberapa pintar Anda menginginkan algoritme tersebut.
Misalnya, berikut beberapa masalah:
- gambar yang dipotong vs. gambar yang tidak dipotong
- gambar dengan teks ditambahkan vs. gambar lain tanpa
- gambar cermin
Algoritme termudah dan paling sederhana yang pernah saya lihat untuk ini hanyalah melakukan langkah-langkah berikut untuk setiap gambar:
- skala ke sesuatu yang kecil, seperti 64x64 atau 32x32, abaikan rasio aspek, gunakan algoritme penskalaan gabungan, bukan piksel terdekat
- skala rentang warna sehingga yang paling gelap adalah hitam dan yang paling terang adalah putih
- putar dan balikkan gambar sehingga warna terkecil berada di kiri atas, lalu kanan atas lebih gelap berikutnya, kiri bawah lebih gelap berikutnya (sejauh mungkin tentu saja)
Mengedit Sebuah algoritma menggabungkan skala adalah salah satu yang saat scaling 10 pixel ke satu akan melakukannya dengan menggunakan fungsi yang mengambil warna semua 10 piksel dan menggabungkan mereka ke dalam satu. Dapat dilakukan dengan algoritme seperti averaging, mean-value, atau yang lebih kompleks seperti bicubic splines.
Kemudian hitung jarak rata-rata piksel demi piksel antara dua gambar.
Untuk mencari kemungkinan kecocokan dalam database, simpan warna piksel sebagai kolom individual dalam database, indeks banyak dari mereka (tapi tidak semua, kecuali Anda menggunakan gambar yang sangat kecil), dan lakukan kueri yang menggunakan rentang untuk masing-masing nilai piksel, yaitu. setiap gambar di mana piksel pada gambar kecil berada di antara -5 dan +5 dari gambar yang ingin Anda cari.
Ini mudah diterapkan, dan cukup cepat dijalankan, tetapi tentu saja tidak akan menangani perbedaan yang paling lanjut. Untuk itu Anda membutuhkan algoritma yang lebih canggih.