Tôi cần một cách đơn giản và nhanh chóng để so sánh hai hình ảnh cho giống nhau. Tức là tôi muốn nhận được một giá trị cao nếu chúng chứa chính xác cùng một thứ nhưng có thể có một số nền hơi khác nhau và có thể được di chuyển / thay đổi kích thước bởi một vài pixel.
(Cụ thể hơn, nếu đó là vấn đề: Một hình ảnh là một biểu tượng và hình ảnh kia là một hình ảnh con của ảnh chụp màn hình và tôi muốn biết liệu hình ảnh đó có chính xác là biểu tượng hay không.)
Tôi có OpenCV trong tay nhưng tôi vẫn chưa quen với nó.
Một khả năng tôi nghĩ đến cho đến nay: Chia cả hai hình ảnh thành các ô 10 x 10 và cho mỗi 100 ô đó, hãy so sánh biểu đồ màu. Sau đó, tôi có thể đặt một số giá trị ngưỡng tạo thành và nếu giá trị tôi nhận được vượt quá ngưỡng đó, tôi giả sử rằng chúng tương tự nhau.
Tôi chưa thử nó hoạt động tốt như thế nào nhưng tôi đoán nó sẽ đủ tốt. Các hình ảnh đã khá giống nhau (trong trường hợp sử dụng của tôi), vì vậy tôi có thể sử dụng giá trị ngưỡng khá cao.
Tôi đoán có hàng tá giải pháp khả thi khác cho việc này sẽ hoạt động ít nhiều (vì bản thân nhiệm vụ này khá đơn giản vì tôi chỉ muốn phát hiện sự tương tự nếu chúng thực sự rất giống nhau). Bạn đề nghị điều gì?
Có một vài câu hỏi rất liên quan / tương tự về việc lấy chữ ký / dấu vân tay / hàm băm từ một hình ảnh:
- OpenCV / SURF Làm thế nào để tạo băm hình ảnh / dấu vân tay / chữ ký từ các mô tả?
- Hình ảnh dấu vân tay để so sánh sự giống nhau của nhiều hình ảnh
- Phát hiện hình ảnh gần như trùng lặp
- OpenCV: Hình ảnh dấu vân tay và so sánh với cơ sở dữ liệu .
- hơn , nhiều hơn , nhiều hơn , nhiều hơn , nhiều hơn , nhiều hơn , nhiều hơn
Ngoài ra, tôi tình cờ phát hiện ra những triển khai có chức năng như vậy để lấy dấu vân tay:
- pHash
- imgSeek ( GitHub repo ) (GPL) dựa trên Truy vấn hình ảnh đa biến nhanh
- hình ảnh phù hợp . Rất giống với những gì tôi đang tìm kiếm. Tương tự như pHash, dựa trên chữ ký hình ảnh cho bất kỳ loại hình ảnh nào, Goldberg et al . Sử dụng Python và Elaticsearch.
- iqdb
- ImageHash . hỗ trợ pHash.
- Hình ảnh Ded repeatator (imagededup) . Hỗ trợ CNN, PHash, DHash, WHash, AHash.
Một số thảo luận về băm hình ảnh tri giác: ở đây
Một chút không chính thống: Tồn tại nhiều phương pháp để tạo dấu vân tay âm thanh. MusicBrainz , một dịch vụ web cung cấp tra cứu dựa trên dấu vân tay cho các bài hát, có một cái nhìn tổng quan tốt trong wiki của họ . Họ đang sử dụng AcoustID ngay bây giờ. Điều này là để tìm kết quả chính xác (hoặc chủ yếu là chính xác). Để tìm các kết quả tương tự (hoặc nếu bạn chỉ có một số đoạn hoặc độ ồn cao), hãy xem Echoprint . Một câu hỏi SO liên quan ở đây . Vì vậy, có vẻ như điều này được giải quyết cho âm thanh. Tất cả các giải pháp này hoạt động khá tốt.
Một câu hỏi hơi chung chung hơn về tìm kiếm mờ nói chung là ở đây . Ví dụ băm nhạy cảm địa phương và tìm kiếm hàng xóm gần nhất .