2012-04-21 39 views
6

Tôi đang chụp ảnh màn hình của một ứng dụng và cố gắng phát hiện xem hình ảnh chính xác đã được nhìn thấy chưa. Tôi đang tìm cách phát hiện các thay đổi nhỏ nhặt như khác nhau - ví dụ: nếu có văn bản trong hình ảnh và thay đổi chính tả, được tính là không phù hợp.Hình ảnh băm cho hình ảnh rất giống nhau

Tôi đã sử dụng thành công hàm băm MD5 của nội dung của ảnh chụp màn hình để tra cứu trong cơ sở dữ liệu các hình ảnh đã biết và phát hiện xem nó đã được nhìn thấy chưa.

Bây giờ, tôi đã chuyển nó sang một máy khác, và bất chấp nỗ lực của tôi để khớp chính xác với cấu hình, tôi sẽ nhận được những hình ảnh khác biệt một chút so với máy cũ. Khi tôi nói khác nhau, những thay đổi là phút - nếu tôi thổi lên những hình ảnh cũ và mới và flick giữa sau đó, tôi không thể nhìn thấy một sự khác biệt duy nhất! Tuy nhiên, lệnh compare của ImageMagick có thể thấy một số điểm ảnh khác nhau.

Vì vậy, băm MD5 của tôi không còn khớp nữa. Thay vì một băm MD5 đơn giản, tôi cần một image hash.

Thực hiện nghiên cứu của mình, tôi thấy rằng hầu hết các hình ảnh băm cố gắng khá hào phóng - chúng chấp nhận hình ảnh đã đổi kích thước, được chuyển đổi và watermarked, với một kết quả trùng khớp giả tương ứng. Tôi muốn một băm hình ảnh đó là nghiêm ngặt hơn nhiều - những thay đổi duy nhất được cho phép là những thay đổi trong màu sắc.

Có ai có thể đề xuất thư viện băm hình ảnh hoặc thuật toán không? (Không phải ứng dụng, như dupdetector).

Hãy nhớ rằng: Yêu cầu của tôi khác với nhiều câu hỏi tương tự ở chỗ tôi không muốn có một thuật toán tự do như shrinking hoặc pHash, và tôi không muốn có một công cụ so sánh như structural similarity hoặc ImageMagick's compare.

Tôi muốn một hàm băm tạo ra các hình ảnh rất giống nhau cung cấp cùng một giá trị băm. Điều đó thậm chí có thể?

+2

Không, điều đó là không thể. Sẽ không có cách nào để biết những gì cần loại bỏ. Điều có thể là để phát triển một công cụ so sánh hình ảnh có một ngưỡng có thể điều chỉnh cho hai hình ảnh tương tự như thế nào. (Để xem tại sao điều đó là không thể, hãy tưởng tượng cố gắng làm một điều tương tự cho, ví dụ, phát. Để phát hiện, ví dụ, nếu ai đó vừa thay đổi một vài từ trong một vở kịch. Số này phải phụ thuộc vào từng từ hay không. bạn không thể chỉ so sánh các băm cho sự bình đẳng, bạn phải đo khoảng cách của chúng.) –

+0

Thú vị. So sánh tất cả hàng trăm hoặc hàng nghìn kết quả phù hợp có thể xảy ra. Điều này hơi đáng lo ngại. Cảm ơn bạn. – Oddthinking

+0

Bạn không phải so sánh tất cả hàng trăm hoặc hàng nghìn kết quả phù hợp. Bạn chỉ phải so sánh những cái thường tương tự. Những người khác hoàn toàn không thể nào sánh được. –

Trả lời

1

Bạn có thể xem một bài báo sau có tên "Phổ băm". Nó là một thuật toán được thiết kế để tạo ra mã băm từ hình ảnh để nhóm các hình ảnh tương tự lại với nhau (xem các ví dụ truy xuất ở cuối bài báo). Đó là một điểm khởi đầu tốt.

Liên kết: http://www.cs.huji.ac.il/~yweiss/SpectralHashing/

Các vấn đề liên quan