【问题标题】:How could I judge if two photos are identical with some brightness difference我如何判断两张照片是否相同但有一些亮度差异
【发布时间】:2019-06-18 01:27:36
【问题描述】:

我有一些照片对,其中一些对象的细节不同,而另一些则相同。然而,即使是具有相同物体的照片对,尽管物体的结构和细节是相同的,但在光照或照片质量上也会存在一些差异(由于相机状态不稳定)。

我需要区分具有相同对象的对象和具有更改对象的对象,并且不受光线条件或相机质量的影响。我怎么能这样做?

========

编辑: 这是一对具有相同对象的对象:

这是一对具有不同细节的对象:

即使是第一对也会在光照条件或其他非内容差异方面存在差异,但预计这些不会影响我的结果。请问我该怎么做?

【问题讨论】:

  • 提供有代表性的示例图片可能会有所帮助!
  • @MarkSetchell 我更新了我的问题:)
  • 我认为你需要提取一些对不同光照条件不变的特征才能进行比较。您可以只选择颜色,使用边缘检测(例如 Canny 或仅使用边缘检测内核的卷积),角检测(例如 Harris)...但是您必须考虑如何比较它们以及阈值做什么您过去常常认为两个图像是“相同的”。
  • 要添加到前面的评论,使用 HSV 或 LAB 颜色空间允许您比较颜色:您只需检查特定通道(例如,在 LAB 中的 L 通道上具有更高的阈值,因为这就是存储“亮度”的原因)。

标签: algorithm opencv image-processing computer-vision


【解决方案1】:

您可以使用全局 Lucas-Kanade 算法(原始论文“Lucas-Kanade 20 Years On: A Unifying Framework”)来匹配没有特征的图像。 Richard Szeliski 说它是参数化(全局)运动。 它返回变换矩阵 A:移位、缩放、仿射或单应性。而这个矩阵中的一些值表示图片并不相同:

Scale: A[0][0] != 1 or A[1][1] != 1
Shift horizontal and vertical: A[0][2] != 0 and A[1][2] != 0
Rotation: A[0][1] != 0 and A[1][0] != 0

它们是算法的几种实现 - for example。 补充:opencv_contrib 有reg module 功能相同。

【讨论】:

    【解决方案2】:

    将所有图像标准化为相同的平均亮度。

    【讨论】:

      猜你喜欢
      • 2010-10-23
      • 1970-01-01
      • 2013-11-22
      • 2015-04-16
      • 1970-01-01
      • 1970-01-01
      • 2020-05-04
      • 2018-12-27
      • 2018-05-14
      相关资源
      最近更新 更多