Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用imagequick比较图像_Image - Fatal编程技术网

使用imagequick比较图像

使用imagequick比较图像,image,Image,我不明白imagequick的比较脚本是如何工作的 我将图像与同一图像(副本)进行比较 我知道 比较-公制A.png B.png C.png B.png与A.png完全相同(我复制了一张) 结果如下 我原以为C.png将是全白色的,但事实并非如此 我想知道两个图像是否完全相同。是否有可能得到一个输出,它会告诉我“是的,两个图像是相同的”或“否,两个图像是注释相同的”。以下是一些示例,帮助您了解图像比较的工作原理 -度量AE告诉您绝对误差,即不同的像素数-因此,如果所有像素都相同,则绝对误差

我不明白imagequick的
比较
脚本是如何工作的

我将图像与同一图像(副本)进行比较

我知道


比较-公制A.png B.png C.png

B.png
A.png
完全相同(我复制了一张)

结果如下

我原以为
C.png
将是全白色的,但事实并非如此


我想知道两个图像是否完全相同。是否有可能得到一个输出,它会告诉我“是的,两个图像是相同的”或“否,两个图像是注释相同的”。

以下是一些示例,帮助您了解图像比较的工作原理

-度量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
AE
Fuzz
MAE
MEPP
MSE
NCC
PAE
PHASH
PSNR
RMSE
根据标准Unix工具(
md5
diff
tmp
),文件是二进制相同的,md5校验和相同:

md5 red.png perfectCopy.png 
MD5 (red.png) = 39236e0e0dfb70da0e9bcbfbcf7b8181
MD5 (perfectCopy.png) = 39236e0e0dfb70da0e9bcbfbcf7b8181
identify -format "%#:%f\n" red.gif perfectCopy.png 
1157038985fec4573888bc7e74a5a728e3aa5cbc49e18253c934295162a9aeea:red.gif
1157038985fec4573888bc7e74a5a728e3aa5cbc49e18253c934295162a9aeea:perfectCopy.png
ImageMagick仅像素上的散列(不包括元数据)是相同的:

md5 red.png perfectCopy.png 
MD5 (red.png) = 39236e0e0dfb70da0e9bcbfbcf7b8181
MD5 (perfectCopy.png) = 39236e0e0dfb70da0e9bcbfbcf7b8181
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
identify -format "%#:%f\n" red.gif red.png 
1157038985fec4573888bc7e74a5a728e3aa5cbc49e18253c934295162a9aeea:red.gif
1157038985fec4573888bc7e74a5a728e3aa5cbc49e18253c934295162a9aeea:red.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 redDifferentDate.png 
1157038985fec4573888bc7e74a5a728e3aa5cbc49e18253c934295162a9aeea:red.gif
1157038985fec4573888bc7e74a5a728e3aa5cbc49e18253c934295162a9aeea:redDifferentDate.png
identify -format "%#:%f\n" red.gif red.png 
1157038985fec4573888bc7e74a5a728e3aa5cbc49e18253c934295162a9aeea:red.gif
1157038985fec4573888bc7e74a5a728e3aa5cbc49e18253c934295162a9aeea:red.png
4。比较两个完全不同的文件

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
显然,如果我们创建两个完全不同的文件,每个文件都充满随机噪声,那么每个人都同意它们是不同的:

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!

还有其他可用指标,如均方、根均方等-您可以使用以下方法列出它们:

identify -list metric
输出

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
AE
Fuzz
MAE
MEPP
MSE
NCC
PAE
PHASH
PSNR
RMSE

下面是一些示例,帮助您了解图像比较的工作原理

-度量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
AE
Fuzz
MAE
MEPP
MSE
NCC
PAE
PHASH
PSNR
RMSE
根据标准Unix工具(
md5
diff
tmp
),文件是二进制相同的,md5校验和相同:

md5 red.png perfectCopy.png 
MD5 (red.png) = 39236e0e0dfb70da0e9bcbfbcf7b8181
MD5 (perfectCopy.png) = 39236e0e0dfb70da0e9bcbfbcf7b8181
identify -format "%#:%f\n" red.gif perfectCopy.png 
1157038985fec4573888bc7e74a5a728e3aa5cbc49e18253c934295162a9aeea:red.gif
1157038985fec4573888bc7e74a5a728e3aa5cbc49e18253c934295162a9aeea:perfectCopy.png
ImageMagick仅像素上的散列(不包括元数据)是相同的:

md5 red.png perfectCopy.png 
MD5 (red.png) = 39236e0e0dfb70da0e9bcbfbcf7b8181
MD5 (perfectCopy.png) = 39236e0e0dfb70da0e9bcbfbcf7b8181
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
identify -format "%#:%f\n" red.gif red.png 
1157038985fec4573888bc7e74a5a728e3aa5cbc49e18253c934295162a9aeea:red.gif
1157038985fec4573888bc7e74a5a728e3aa5cbc49e18253c934295162a9aeea:red.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 redDifferentDate.png 
1157038985fec4573888bc7e74a5a728e3aa5cbc49e18253c934295162a9aeea:red.gif
1157038985fec4573888bc7e74a5a728e3aa5cbc49e18253c934295162a9aeea:redDifferentDate.png
identify -format "%#:%f\n" red.gif red.png 
1157038985fec4573888bc7e74a5a728e3aa5cbc49e18253c934295162a9aeea:red.gif
1157038985fec4573888bc7e74a5a728e3aa5cbc49e18253c934295162a9aeea:red.png
4。比较两个完全不同的文件

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
显然,如果我们创建两个完全不同的文件,每个文件都充满随机噪声,那么每个人都同意它们是不同的:

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!

还有其他可用指标,如均方、根均方等-您可以使用以下方法列出它们:

identify -list metric
输出

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
AE
Fuzz
MAE
MEPP
MSE
NCC
PAE
PHASH
PSNR
RMSE

快吗?那么,一个红色像素(rgb 255,0,0)保存为GIF与PNG中的一个红色像素相同吗?PNG中的单个红色像素是否与1秒后制作的PNG中的单个红色像素相同,但由于其中的日期不同,因此文件具有不同的校验和?这取决于你如何定义“相同”。这意味着所有的像素都是相同的。imagequick的“比较”功能不是比较校验和,而是比较像素。imagequick?那么,一个红色像素(rgb 255,0,0)保存为GIF与PNG中的一个红色像素相同吗?PNG中的单个红色像素是否与1秒后制作的PNG中的单个红色像素相同,但由于其中的日期不同,因此文件具有不同的校验和?这取决于你如何定义“相同”。这意味着所有的像素都是相同的。imagequick的“比较”功能不是比较校验和,而是比较像素-度量AE是我需要的许多思考标记-这就是我需要的