相同内容但天气不同时的图像相似度

时间:2018-10-19 19:05:29

标签: image image-processing computer-vision similarity weather

对于两个图像,一个在晴天,另一个在雨天,除了天气外,内容和对象几乎没有区别,是否有度量标准可以说它们非常相似? Rainy image

Normal Image

Vs ...图像显然不太相似。 Not similar image

3 个答案:

答案 0 :(得分:1)

归一化互相关在发现相似性方面似乎非常有效。我只是从Terminal的命令行中使用了 ImageMagick ,但是所有图像处理软件包都应具有提供类似功能的东西。

我们将您的三个图像称为rainy.pngsunny.pngother.png。然后,当图像相同时,NCC为1;当图像相同时,NCC为0。


因此,将rainy.pngsunny.png进行比较,它们的相似度为83%:

convert -metric NCC sunny.png rainy.png -compare -format "%[distortion]" info:
0.831495

现在将rainy.pngother.png进行比较,它们的相似度为21%:

convert -metric NCC rainy.png other.png -compare -format "%[distortion]" info:
0.214111

最后,将sunny.pngother.png进行比较,它们的相似度为22%:

convert -metric NCC sunny.png other.png -compare -format "%[distortion]" info:
0.22060

ImageMagick 还提供其他指标,例如平均绝对误差结构相似度等。要获取选项列表,请使用:

identify -list metric

示例输出

  • AE
  • DSSIM
  • 绒毛
  • MAE
  • MEPP
  • MSE
  • NCC
  • PAE
  • PHASH
  • PSNR
  • RMSE
  • SSIM

并选择所需的一个,如果想要结构相似性而不是归一化互相关,请使用-metric SSIM代替-metric NCC

答案 1 :(得分:1)

当照明不同时,NCC和SSIM可能是最好的两种,这会导致亮度/对比度。其他指标未对亮度/对比度进行任何归一化

SSIM给我的晴天和下雨分别为0.763003和0.236967。这是3.22的分离比率。 NCC分别给我0.831495和0.220601。这是3.77的分离率。好一点。有关这些命令的信息,请参见Mark Setchell的答案。

另一种方法是首先在灰度均衡的图像上进行边缘检测。这样可以减轻亮度/对比度变化甚至色彩偏移。

这是在Imagemagick中使用8向Sobel运算符的方法。

convert bright.png -colorspace gray -equalize \
-define convolve:scale='!' \
-define morphology:compose=Lighten \
-morphology Convolve 'Sobel:>' bright_sobel.png


enter image description here

convert dull.png -colorspace gray -equalize \
-define convolve:scale='!' \
-define morphology:compose=Lighten \
-morphology Convolve 'Sobel:>' dull_sobel.png


enter image description here

convert other.png -colorspace gray -equalize \
-define convolve:scale='!' \
-define morphology:compose=Lighten \
-morphology Convolve 'Sobel:>' other_sobel.png


enter image description here

compare -metric ncc bright_sobel.png dull_sobel.png null:
0.688626

compare -metric ncc bright_sobel.png other_sobel.png null:
0.0756445         


分离率为9.1。好多了。

使用边缘检测,您可以使用其他度量,因为归一化已通过均等和灰度运算完成。但是NCC可能仍然是最好的。

请参见https://imagemagick.org/Usage/convolve/#sobel

添加:

如果将均衡添加到原始图像,则非边缘NCC结果会比这篇文章的顶部要好:

convert bright.png -equalize bright_eq.png

convert dull.png -equalize dull_eq.png

convert other.png -equalize other_eq.png


compare -metric NCC bright_eq.png dull_eq.png null:
0.861087

compare -metric NCC bright_eq.png other_eq.png null:
0.204296


这样得出的分离比为4.21,比上面没有均衡的3.77略好。

ADDITION2:

这是另一种使用我的脚本redist的方法,该方法试图将图像统计信息更改为特定的均值和标准差。 (请参阅http://www.fmwconcepts.com/imagemagick/index.php

我将其应用于具有相同参数的所有图像,以归一化为相同的均值和标准差,然后在进行比较之前进行精明边缘提取。重做器类似于均衡,但使用高斯分布而不是平坦或恒定的分布。 Redist的替代方法是局部直方图均衡(lahe)或对比度受限的自适应直方图均衡(clahe)。参见https://en.wikipedia.org/wiki/Adaptive_histogram_equalization

以下命令中的数字被归一化(范围从0到名义上的100%),并表示平均值,峰左侧的一个西格玛偏移量,峰右侧的一个西格玛偏移量,其中sigma类似于标准偏差。

redist 50,50,50 bright.png bright_rdist.png


enter image description here

redist 50,50,50 dull.png dull_rdist.png


enter image description here

redist 50,50,50 other.png other_rdist.png


enter image description here



convert bright_rdist.png -canny 0x1+10%+30% bright_rdist_canny.png


enter image description here

convert dull_rdist.png -canny 0x1+10%+30% dull_rdist_canny.png


enter image description here

convert other_rdist.png -canny 0x1+10%+30% other_rdist_canny.png


enter image description here


    比较-metric ncc bright_rdist_canny.png dull_rdist_canny.png null:     0.345919

compare -metric ncc bright_rdist_canny.png other_rdist_canny.png null:
0.0323863


分离率为10.68

答案 2 :(得分:0)

过去,我在某些项目中使用过CNN的中间层来进行这种可靠的比较。基本上,您会使用经过训练的CNN来完成某些任务,例如图像分割,然后尝试识别可以为您的匹配提供良好几何/光度特征平衡的图层或图层组合。然后在测试时,将图像传递到CNN中,然后将这些特征与例如欧几里得距离进行比较。我的图像与您的图像相似,并且我需要快速的图像,因此当时Enet对我来说是个不错的选择(嗯,现在有更好的选择)。我最终使用了第21层和第5层的功能组合,最终在实践中运行良好。但是,如果您的图像来自可以利用时间信息的序列,则强烈建议您查看SeqSLAM(很抱歉,找不到非收费版本。很有趣的是,它不需要任何CNN ,是实时的,并且如果有内存,则使用非常简单的基于金字塔强度的比较进行匹配(类似于SPP),例如以及this论文,该论文通过CNN的图层改进了SeqSLAM。