我正在截取一個應用程序的截圖,並試圖檢測是否以前看過確切的圖像。我正在尋找檢測不同的微小變化 - 例如如果圖像中有文字,並且拼寫發生變化,則稱爲不匹配。圖像哈希非常相似的圖像
我已經成功地使用屏幕截圖圖像內容的MD5散列來查找已知圖像的數據庫,並檢測它是否曾經被看到過。
現在,我已經將它移植到另一臺機器上了,儘管我試圖完全匹配配置,但我仍舊會在舊機器上看到稍微不同的圖像。當我說不同的時候,這些變化是微不足道的 - 如果我炸掉舊的和新的圖像,然後在兩者之間輕彈,我就看不到任何區別!儘管如此,ImageMagick的compare
命令可以看到一些不同的像素。
所以我的MD5散列不再匹配。我需要一個image hash而不是一個簡單的MD5散列。
做了我的研究,我發現大部分圖像哈希值試圖相當大 - 他們接受調整大小,變換和水印圖像,以及相應的假陽性匹配。我想要一個更嚴格的圖像哈希值 - 只允許改變顏色的微小變化。
任何人都可以推薦一個圖像哈希庫或算法? (不是一個應用程序,如dupdetector)。
記住:我的要求是從在許多類似的問題不同,我不希望有一個寬鬆的算法像shrinking或pHash,而我不希望像structural similarity或ImageMagick's compare比較工具。
我想要一個散列,使非常相似的圖像給相同的散列值。這甚至有可能嗎?
不,這是不可能的。沒有辦法知道丟棄什麼。有可能的是開發一個圖像比較工具,該工具對於兩幅圖像的相似程度有一個可調的閾值。 (想知道爲什麼這是不可能的,想象一下爲比賽做類似的事情,比如說,如果有人剛剛在一場比賽中改了幾個單詞,那麼這個數字必須依賴於每一個單詞。你不能僅僅比較哈希的平等性,你必須測量他們的距離。) – 2012-04-21 12:18:39
有趣的。比較所有數百或數千個可能的匹配是不可行的。這有點令人擔憂。謝謝。 – Oddthinking 2012-04-21 12:25:17
您不必比較所有數百或數千個可能的匹配項。你只需要比較一般相似的那些。完全不同的東西不可能匹配。 – 2012-04-21 12:25:56