2012-10-01 40 views
0

有沒有任何建議(代碼段)可以幫助我理解如何比較兩個不同圖像文件的概念,無論它們是否相同?java.util.zip.CRC32比較圖像文件

在此先感謝。

編輯: 我的意思是,例如,我應該檢查CRC32(我不知道該怎麼做)與文件的大小檢查。那麼這意味着他們是相同的圖片...

編輯2:當我說圖像是相同的,我的意思是圖像看起來完全一樣的用戶。

+2

如果你有損壓縮,你需要定義你的意思是「相同」兩個想象可以有效地與人眼相同,但一個可以是另一個的一半大小。 –

+0

是的,圖像文件的CRC只會告訴你該文件是否可能與同一文件的另一個副本相同。它不會告訴你內部的圖像是否可能是相同的,哪些文件是單獨創建的。 –

+0

@Peter請參閱編輯的問題 – Javatar

回答

1

您可以使用CRC32來合計任何文件。但是如果你想知道兩幅圖像是否相同,你必須決定看起來相同的兩幅圖像是否相同。例如以下圖像都有不同的大小,更不用說不同的CRC32數字。

enter image description here enter image description here enter image description here enter image description here

+0

感謝彼得,我一開始就給出了這個細節;簡而言之,哪張圖片對於最終用戶來說看起來是一樣的,對我來說也是一樣的!所以你提供的這些圖像對我來說是一樣的:)因此,我所理解的是CRC32是不夠的?那麼你的建議是否適合我的需求呢?謝謝。 – Javatar

+0

您需要將它們轉換爲通用格式(通常是未壓縮的位圖)並比較像素以查看它們是否相似。例如當這個數字是0時,你使用'sqrt(sum(x1 - x2))'這個顏色的距離,他們確實是一樣的。如果這個數字非常小(並且你必須決定它是什麼),它們是相同的,當數字很大時,它們不是。將有一個灰色的地區,很難分類。您可能還需要對圖像進行轉換,例如縮放和裁剪,例如如果圖像有一個額外的空白行,即使它的大小不一樣,它也是一樣的。;) –

+0

要比較圖像以查看它們是否「看起來」相同,則必須使用相對複雜的信號處理技術。 http://dsp.stackexchange.com/會是你要求進一步問題的地方。 –

1

爲ZIP條目校驗的含義:在不同的文件是不同的。

CRC32類允許您自己計算字節的校驗和。

爲了有效檢查兩幅圖像是否爲幾乎與相等,有很多means,就像製作一個小的8x8圖像並比較顏色值的差異。