我不明白imagequick的compare
腳本是如何工作的。使用imagequick比較圖像
我做
compare -metric A.png B.png C.png
B.png
是完全一樣的圖像A.png
(我做了一個副本)
結果如下。
我在想C.png
會完全變白,但事實並非如此。
我想知道,如果兩個圖像是stricly同文。是否有可能得到一個輸出,告訴我「是的,這兩個圖像是明智的」或「不,這兩個圖像是注意到的」。
我不明白imagequick的compare
腳本是如何工作的。使用imagequick比較圖像
我做
compare -metric A.png B.png C.png
B.png
是完全一樣的圖像A.png
(我做了一個副本)
結果如下。
我在想C.png
會完全變白,但事實並非如此。
我想知道,如果兩個圖像是stricly同文。是否有可能得到一個輸出,告訴我「是的,這兩個圖像是明智的」或「不,這兩個圖像是注意到的」。
以下是一些示例,可幫助您瞭解圖像比較的工作原理。
-metric AE
告訴你絕對誤差,這是不同的像素數 - 所以如果所有像素都相同,它將爲零。
1.比較是確切在彼此的副本每方面
convert -size 128x128 xc:red red.png # Make red image
cp red.png perfectCopy.png # Make perfect copy
compare -metric AE red.png perfectCopy.png result.png # Count differing pixels
0 # There are none - identical
根據標準Unix工具(md5
,diff
,tmp
)兩個圖像文件是二進制相同的,並且md5校驗和完全相同:
md5 red.png perfectCopy.png
MD5 (red.png) = 39236e0e0dfb70da0e9bcbfbcf7b8181
MD5 (perfectCopy.png) = 39236e0e0dfb70da0e9bcbfbcf7b8181
ImageMagick的散列超過像素只(不包括元數據)是相同的:
identify -format "%#:%f\n" red.gif perfectCopy.png
1157038985fec4573888bc7e74a5a728e3aa5cbc49e18253c934295162a9aeea:red.gif
1157038985fec4573888bc7e74a5a728e3aa5cbc49e18253c934295162a9aeea:perfectCopy.png
2.比較具有相同的外觀,但不同的元數據
convert -size 128x128 xc:red red.png # Make red image
sleep 2
convert -size 128x128 xc:red redDifferentDate.png # Make red image with different date
compare -metric AE red.png redDifferentDate.png result.png
0 # No difference
但是兩個圖像,根據標準的Unix工具( diff
,md5
,sum
),文件是不同的 - 因爲日期在那裏。
md5 red.png redDifferentDate.png
MD5 (red.png) = 004088f6d275f431cedb74bc0209bbc5
MD5 (redDifferentDate.png) = d7d36f56e1940251f9804bd795ef4157
但是的ImageMagick知道圖像更好,並且其計算散列(校驗和)在象素數據僅(不包括元數據)是相同的:
identify -format "%#:%f\n" red.gif redDifferentDate.png
1157038985fec4573888bc7e74a5a728e3aa5cbc49e18253c934295162a9aeea:red.gif
1157038985fec4573888bc7e74a5a728e3aa5cbc49e18253c934295162a9aeea:redDifferentDate.png
3。比較兩個圖像具有相同的像素,但完全不同的大小和格式
convert -size 128x128 xc:red red.png # Make red PNG
convert -size 128x128 xc:red red.gif # Make red GIF
compare -metric AE red.png red.gif result.png # Count differing pixels
0 # No difference
但是,文件和MD5哈希不同:
diff red.png red.gif
Binary files red.png and red.gif differ
md5 red.png red.gif
MD5 (red.png) = aed0840c2c99425c25bd782e7b409022
MD5 (red.gif) = 5869df00d7b3cab3495a6c402ba61ec9
再次,ImageMagick的知道更好,在僅像素數據的哈希值(不包括元數據)仍然相同:
identify -format "%#:%f\n" red.gif red.png
1157038985fec4573888bc7e74a5a728e3aa5cbc49e18253c934295162a9aeea:red.gif
1157038985fec4573888bc7e74a5a728e3aa5cbc49e18253c934295162a9aeea:red.png
4.比較兩個不同的嚴重文件
顯然,如果我們創建了兩個非常不同的文件中每個完整的隨機噪聲的,大家都認爲它們是不同的:
convert -size 128x128 xc:gray +noise random random1.png # Make random image
convert -size 128x128 xc:gray +noise random random2.png # Make random image
compare -metric AE random[12].png result.png # Count differing pixels
16384 # Yep, a fair few differ!
有可用的其他指標,如MeanSquared,RootMeanSquared等等 - 你可以使用列出他們:
identify -list metric
輸出
AE
Fuzz
MAE
MEPP
MSE
NCC
PAE
PHASH
PSNR
RMSE
許多人認爲馬克。 -metric AE是我需要的 –
Imagequick?那麼,單個紅色像素(rgb 255,0,0)會保存爲一個GIF,與PNG中的單個紅色像素相同嗎? PNG中的單個紅色像素與1秒後製作的PNG中的單個紅色像素相同,但由於內部日期不同,文件的校驗和不同?這取決於你如何定義*「相同」*。 –
表示所有像素都相同。 imagequick的「比較」能夠比較不校驗和,但像素。 –