我已经从应用程序渲染了多个图像。以下示例图像说明了两个看起来几乎与眼睛相同的图像。
我尝试将它们与image magick中的以下命令进行比较。
compare -metric AE img1.png img2.png diff.png
6384
这意味着即使图像相似,6384像素也不同。
我做了一些小改动,比如如果一个图案向右移动1个像素,这将给我一个不同像素数量的大错误。有没有一种很好的方法与ImageMagick做这种差异?我已经尝试了fuzz参数,但它确实对我没有帮助。 ImageMagick比较仅适用于比较摄影图像吗?是否有更好的切换到ImageMagick,可以识别移动了一些像素并将其报告为相等的文本?我应该使用其他工具吗?
编辑: 在一个看起来与人类截然不同的图像上添加一个例子,并说明我试图区分的那种差异。在这张图片中,没有多少像素被改变,但可见图案明显改变了。
答案 0 :(得分:0)
由于我不知道您在寻找或期待什么,因此很难给出任何详细的答案。我猜你可能需要某种 Perceptual Hash ,如果你正在寻找人们会认为相似或不相似的图像,或者可能是 Scale / Rotation / Translation Invariant 技术识别相似的图像,与调整大小,移位和旋转无关。
您可以使用ImageMagick查看Perceptual Hash和Image Moments,如下所示:
identify -verbose -features 1 -moments 1.png
Image: 1.png
Format: PNG (Portable Network Graphics)
Mime type: image/png
Class: PseudoClass
Geometry: 103x115+0+0
Resolution: 37.79x37.79
Print size: 2.72559x3.04313
Units: PixelsPerCentimeter
Type: Grayscale
Base type: Grayscale
Endianess: Undefined
Colorspace: Gray
Depth: 8-bit
Channel depth:
gray: 8-bit
Channel statistics:
Pixels: 11845
Gray:
min: 62 (0.243137)
max: 255 (1)
mean: 202.99 (0.79604)
standard deviation: 85.6322 (0.335812)
kurtosis: -0.920271
skewness: -1.0391
entropy: 0.840719
Channel moments:
Gray:
Centroid: 51.6405,57.1281
Ellipse Semi-Major/Minor axis: 66.5375,60.336
Ellipse angle: 0.117192
Ellipse eccentricity: 0.305293
Ellipse intensity: 190.641 (0.747614)
I1: 0.000838838 (0.213904)
I2: 6.69266e-09 (0.00043519)
I3: 3.34956e-15 (5.55403e-08)
I4: 5.38335e-15 (8.92633e-08)
I5: 2.27572e-29 (6.25692e-15)
I6: -4.33202e-19 (-1.83169e-09)
I7: -2.16323e-30 (-5.94763e-16)
I8: 3.96612e-20 (1.67698e-10)
Channel perceptual hash:
Red, Hue:
PH1: 0.669868, 11
PH2: 3.35965, 11
PH3: 7.27735, 11
PH4: 7.05343, 11
PH5: 11, 11
PH6: 8.746, 11
PH7: 11, 11
Green, Chroma:
PH1: 0.669868, 11
PH2: 3.35965, 11
PH3: 7.27735, 11
PH4: 7.05343, 11
PH5: 11, 11
PH6: 8.746, 11
PH7: 11, 11
Blue, Luma:
PH1: 0.669868, 0.669868
PH2: 3.35965, 3.35965
PH3: 7.27735, 7.27735
PH4: 7.05343, 7.05343
PH5: 11, 11
PH6: 8.746, 8.746
PH7: 11, 11
Channel features (horizontal, vertical, left and right diagonals, average):
Gray:
Angular Second Moment:
0.364846, 0.615673, 0.372224, 0.372224, 0.431242
Contrast:
0.544246, 0.0023846, 0.546612, 0.546612, 0.409963
Correlation:
-0.406263, 0.993832, -0.439964, -0.439964, -0.07309
Sum of Squares Variance:
1.19418, 1.1939, 1.19101, 1.19101, 1.19253
Inverse Difference Moment:
0.737681, 1.00758, 0.745356, 0.745356, 0.808993
Sum Average:
1.63274, 0.546074, 1.63983, 1.63983, 1.36462
Sum Variance:
4.43991, 0.938019, 4.46048, 4.46048, 3.57472
Sum Entropy:
0.143792, 0.159713, 0.143388, 0.143388, 0.14757
Entropy:
0.462204, 0.258129, 0.461828, 0.461828, 0.410997
Difference Variance:
0.0645055, 0.189604, 0.0655494, 0.0655494, 0.0963021
Difference Entropy:
0.29837, 0.003471, 0.297282, 0.297282, 0.224101
Information Measure of Correlation 1:
-0.160631, -0.971422, -0.146024, -0.146024, -0.356026
Information Measure of Correlation 2:
0.294281, 0.625514, 0.29546, 0.29546, 0.377679
你也可以去Fred Weinhaus的优秀网站(here)并下载他的名为moments
的脚本,它会计算胡和梅特拉的时刻,看看那些会告诉你什么的你想。基本上,您可以在每个图像上运行脚本,如下所示:
./moments image1.png > 1.txt
./moments image2.png > 2.txt
然后使用您最喜欢的diff
工具查看您要比较的两张图片之间的变化。