สิ่งนี้ขึ้นอยู่กับว่าคุณต้องการให้อัลกอริทึมฉลาดแค่ไหน
ตัวอย่างเช่นนี่คือปัญหาบางประการ:
- ภาพที่ครอบตัดกับภาพที่ไม่ได้ตัด
- รูปภาพที่มีการเพิ่มข้อความเทียบกับรูปภาพอื่นที่ไม่มี
- ภาพมิเรอร์
อัลกอริทึมที่ง่ายและง่ายที่สุดที่ฉันเคยเห็นคือทำตามขั้นตอนต่อไปนี้กับแต่ละภาพ:
- ปรับขนาดให้เล็กลงเช่น 64x64 หรือ 32x32 โดยไม่คำนึงถึงอัตราส่วนกว้างยาวใช้อัลกอริทึมการปรับขนาดแบบรวมแทนพิกเซลที่ใกล้ที่สุด
- ปรับขนาดช่วงสีให้มืดที่สุดเป็นสีดำและสีอ่อนที่สุดคือสีขาว
- หมุนและพลิกภาพเพื่อให้สีที่ใหญ่ที่สุดอยู่ด้านซ้ายบนจากนั้นด้านขวาบนจะเข้มขึ้นถัดไปซ้ายล่างจะเข้มขึ้น (เท่าที่จะทำได้)
แก้ไขขั้นตอนวิธีการปรับรวมเป็นหนึ่งว่าเมื่อปรับ 10 พิกเซลลงไปหนึ่งจะทำโดยใช้ฟังก์ชั่นที่ใช้สีของทุกคน 10 พิกเซลและรวมพวกเขาเข้าไปในหนึ่ง สามารถทำได้โดยใช้อัลกอริทึมเช่นการหาค่าเฉลี่ยค่าเฉลี่ยหรือค่าที่ซับซ้อนมากขึ้นเช่นเส้นแบ่งสองขั้ว
จากนั้นคำนวณระยะทางเฉลี่ยพิกเซลต่อพิกเซลระหว่างสองภาพ
หากต้องการค้นหาการจับคู่ที่เป็นไปได้ในฐานข้อมูลให้จัดเก็บสีของพิกเซลเป็นแต่ละคอลัมน์ในฐานข้อมูลจัดทำดัชนีกลุ่มของพวกเขา (แต่ไม่ใช่ทั้งหมดเว้นแต่คุณจะใช้ภาพที่มีขนาดเล็กมาก) และทำแบบสอบถามที่ใช้ช่วงสำหรับแต่ละคอลัมน์ ค่าพิกเซลกล่าวคือ ทุกภาพที่พิกเซลในภาพขนาดเล็กอยู่ระหว่าง -5 ถึง +5 ของภาพที่คุณต้องการค้นหา
วิธีนี้ใช้งานง่ายและทำงานค่อนข้างเร็ว แต่แน่นอนว่าจะไม่รองรับความแตกต่างขั้นสูงสุด สำหรับสิ่งนั้นคุณต้องมีอัลกอริทึมขั้นสูงมากขึ้น