Điều này hoàn toàn phụ thuộc vào mức độ thông minh mà bạn muốn thuật toán trở nên.
Ví dụ, đây là một số vấn đề:
- hình ảnh đã cắt so với hình ảnh chưa được cắt xén
- hình ảnh có thêm văn bản so với hình ảnh khác không có
- hình ảnh phản chiếu
Thuật toán dễ nhất và đơn giản nhất mà tôi đã thấy cho điều này chỉ là thực hiện các bước sau cho mỗi hình ảnh:
- chia tỷ lệ thành một thứ gì đó nhỏ, như 64x64 hoặc 32x32, bỏ qua tỷ lệ khung hình, sử dụng thuật toán chia tỷ lệ kết hợp thay vì pixel gần nhất
- chia tỷ lệ các dải màu sao cho màu tối nhất là màu đen và màu sáng nhất là màu trắng
- xoay và lật hình ảnh sao cho màu sắc nhất ở trên cùng bên trái, sau đó trên cùng bên phải tối hơn tiếp theo, dưới cùng bên trái tối hơn tiếp theo (tất nhiên là càng xa càng tốt)
Chỉnh sửa A kết hợp thuật toán chia tỷ lệ là một trong đó khi mở rộng quy mô 10 pixel xuống ai sẽ làm điều đó bằng cách sử dụng chức năng mà mất màu sắc của tất cả những người 10 pixel và kết hợp chúng thành một. Có thể được thực hiện với các thuật toán như giá trị trung bình, giá trị trung bình hoặc các thuật toán phức tạp hơn như đường xoắn nhị phân.
Sau đó, tính toán khoảng cách trung bình từng pixel giữa hai hình ảnh.
Để tìm kiếm một kết quả phù hợp có thể có trong cơ sở dữ liệu, hãy lưu trữ màu pixel dưới dạng các cột riêng lẻ trong cơ sở dữ liệu, lập chỉ mục một loạt chúng (nhưng không phải tất cả, trừ khi bạn sử dụng một hình ảnh rất nhỏ) và thực hiện truy vấn sử dụng một phạm vi cho mỗi giá trị pixel, tức là. mọi hình ảnh mà pixel trong hình ảnh nhỏ nằm trong khoảng từ -5 đến +5 của hình ảnh bạn muốn tra cứu.
Điều này rất dễ thực hiện và chạy khá nhanh, nhưng tất nhiên sẽ không xử lý được hầu hết các khác biệt nâng cao. Đối với điều đó, bạn cần các thuật toán nâng cao hơn nhiều.