【问题标题】:Finding similar images with different intensities/brightness寻找具有不同强度/亮度的相似图像
【发布时间】:2020-10-23 12:51:56
【问题描述】:

假设我有如下图片:

我有哪些选择来比较两张图片之间的相似度?显然它们是相同的图像,只是亮度不同。我找不到任何可行的方法,目前我最好的选择是训练一个 cnn 或自动编码器并比较输出的特征向量,但这似乎有点矫枉过正。任何提示将不胜感激。

【问题讨论】:

  • 不确定是否有任何现有的解决方案,但总的来说,我认为在 HSL(色相、饱和度、亮度)色彩空间中简单地比较两个图像是个好主意。如果它们只是亮度不同,我会假设 H 和 S 值是相同的,或者至少非常相似。
  • 确实,它们只会在亮度上有所不同。谢谢!
  • 图像标准化可能是一个很好的预处理
  • 您还可以比较图像边缘,根据参数化,即使亮度不同,它们也应该基本相同。

标签: python opencv computer-vision


【解决方案1】:

相当强大的工作解决方案(我测试过)是检查像素之间亮度符号变化的相关性。

即假设图像 A 和 B,循环大量像素:

IF (
  (brightness of pixel 1 from A IS LARGER than brightness of pixel 2 from A)
  AND
  (brightness of pixel 1 from B IS LARGER than brightness of pixel 2 from B)
) {
  COUNTER++;
}

相反的关系反之亦然。 COUNTER 越高,图像越相似。

重要提示:我在(区域间)按比例缩小的图像上测试了该方法,而不是全尺寸图像,因为全尺寸图像可能包含一些压缩伪影。我的直觉表明它无论如何都适用于全尺寸图像,只是具有不同的阈值。如果没有,请按区域调整大小以保持良好的平均亮度值(类似于 OpenCV 中的 INTER_AREA),这样就可以了。

该方法的补充说明在image comparison algorithm部分优化2。

【讨论】:

  • 如果我理解正确,您认为应该循环遍历图像上的所有像素并计算每个图像上 i 和 i+1 像素之间的相关性,如果条件都满足则增加计数器?
  • 是的(以最简单的方法)。可以循环遍历所有像素对,但不是必需的,因为每个图像像素对的数量可能非常大。在一些较大但不太大的像素对数量之后,图像相似的概率会变得更平。随机选择的位置也应该这样做,前提是它们对于两个比较图像是相同的。
猜你喜欢
  • 1970-01-01
  • 2017-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-09
  • 2020-06-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多