我有時會聽到這個詞,想知道它用於什麼嗎?什麼是圖像哈希用於?
回答
散列通常是將大量數據減少到可用於識別該圖像的短(ish)數的有用方法。
它們有時候只是爲了提供一種方便的方式來識別文件而不需要人的干預,特別是在有幾個並行作者的情況下,不能依靠它來增加某些主計數器(JPG001 JPG002)而沒有重疊。
有時哈希值是不可僞造的,所以我可以說 - 如果您生成的圖像哈希值與我發送圖像時所做的哈希值相同,那麼您可以確定它是來自我的(而不是由妖孽調整)。然而,並非所有的哈希都可以做出這樣的保證,每隔幾年這種流行的這種「加密」哈希就顯示出有致命的缺陷。
嗯....要比較圖像(廣義上,圖片,或任何其他二進制文件)速度快,沒有比較整個文件?
那麼,只要你清楚兩幅圖像可能基本相同,或完全相同,甚至僅在元數據上有所不同,那麼是的。 – 2009-06-15 22:14:46
...不同的元數據,但仍然不符合這個「比較」,那麼是的。 – 2009-06-15 22:15:22
實際上,圖像哈希算法很流行,可以在一系列幀或視頻中找到相似的圖像,或者像許多電影工作室現在所做的那樣在各種圖像中嵌入水印(幾乎可以讓人毛骨悚然地回到搏擊俱樂部!)。
雖然通常散列文件散列文件的各個位的數據,但圖像散列在稍高的層次上工作。不同之處在於,對於圖像散列,如果兩張圖片看起來幾乎完全相同,但格式不同或分辨率不同(或者可能由於壓縮導致輕微損壞),則應該散列到相同的數字。儘管他們的數據的實際部分完全不同,但如果他們看起來與人類完全相同,他們會對同一事物進行哈希處理。
這是搜索的一個應用。 TinEye.com允許您上傳圖片並在互聯網上查找其中的很多事件。像谷歌,它有一個網絡爬蟲,爬過網頁,尋找圖像。然後它將這些圖像散列化並將散列和URL存儲在數據庫中。當你上傳圖片時,它只是簡單地計算哈希值並檢索鏈接到數據庫中該哈希值的所有URL。 TinEye的使用範例包括尋找更高分辨率的圖片,或找到某人的公開facebook/myspace /等。從他們的圖片(假定這些配置文件使用相同的照片輪廓。
圖像散列也可以與高速緩存或本地存儲用於防止重複的照片或存儲的重發,分別。
有很多其他包括圖像驗證和在視頻中查找類似幀的可能性(如其他人所提到的)
HashingHashing是一種適用於任意數據並生成固定大小數據(通常爲非常小的數據)的函數。有很多不同類型的哈希,但是如果我們談論圖像哈希,它可以用於:
- 查找重複的速度非常快。幾乎所有的散列函數都可以工作。不要搜索整個圖像,而是尋找圖像的散列。
- 找到類似的圖片,我會解釋後
圖片看起來相同的我們,可以是非常不同的,如果你只是比較原始字節。這可能是由於:
- 調整
- 旋轉
- 略有不同的色彩伽瑪
- 不同格式
- 一些輕微的噪音,水印和文物
即使你會發現一個圖像只會在一個字節中不同,如果你將一個散列函數應用到它上面,結果可能會非常不同(對於散列,如MD5, SHA它最有可能會完全不同)。
所以你需要一個散列函數,它會爲類似的圖像創建一個類似的(甚至相同的)散列。其中一個通用的是locality sensitive hashing。但是我們知道圖像有什麼樣的問題,所以我們可以想出一個more specialized kind of hash。
最公知的算法是:
- a-hash。平均散列是最簡單的算法,它只使用少量轉換。對圖像進行縮放,轉換爲灰度,計算平均值並根據平均值對灰度進行二值化。現在將二進制圖像轉換爲整數。該算法非常簡單,您可以在一個小時內實現它。
- p-hash。知覺散列使用類似的方法,但取而代之的是取決於discrete cosine transformation(信號處理中流行的轉換)。
- d-hash。差異散列使用與散列相同的方法,但不使用有關平均值的信息,而是使用漸變(相鄰像素之間的差異)。
- w-hash。非常類似於p-hash,但它使用wavelet transformation而不是DCT。
順便說一句,如果你使用Python,所有這些哈希值已經在this library實現。
- 1. 什麼是哈希(#)用於圖書館的來源?
- 2. Gravatar:哈希圖像?
- 3. 一致哈希和錐哈希之間的區別是什麼?
- 4. 在Rails中,什麼是壓縮哈希到嵌套哈希
- 5. 什麼是杜鵑哈希中的「新哈希函數」?
- 6. 什麼是用於計算對象的哈希碼
- 7. 什麼是第一個,鹽或哈希?
- 8. cassandra-cli打印什麼是哈希?
- 9. 哈希中的4/16是什麼?
- 10. Enumerations中哈希的含義是什麼?
- 11. 什麼是MongoDB哈希的大小?
- 12. 什麼是選項哈希值?
- 13. 什麼是哈希密碼笨
- 14. 二元哈希 - 它是什麼?
- 15. 爲什麼我的哈希不是undef?
- 16. 我誤解了哈希鹽是什麼?
- 17. Django中的圖像哈希
- 18. 感知圖像哈希
- 19. MD5哈希發佈圖像
- 20. 通用哈希執行比模哈希差,有什麼不對?
- 21. Perl中的哈希和哈希引用有什麼區別?
- 22. Python多哈第一圖像哈希
- 23. .Net圖書館用於通過哈希進行圖像搜索?
- 24. 存在什麼基於哈希/地圖的編程語言?
- 25. 對於SHA-1哈希來說,最快的方式是什麼?
- 26. 哈希映射,哈希集合,哈希字典之間有什麼區別?
- 27. 關於哈希
- 28. 關於哈希
- 29. MD5哈希值不匹配重複ALAssetRepresentation圖像的哈希
- 30. Ruby使用什麼哈希函數?
所以你會使用它,如果你想分配一個獨特的難以猜測的名稱的形象? – seanbrant 2009-06-15 22:24:46
不,不難猜測,它可以直接從圖像本身導出(大概可以通過你不想猜對的人來訪問)。您可能會首先轉換圖像或爲圖像加水印,這將改變圖像,使散列不再起作用,但我不確定您是否剛剛銷燬了散列值。 – 2009-06-15 22:47:18