【问题标题】:How can we differentiate between images having same histogram?我们如何区分具有相同直方图的图像?
【发布时间】:2013-02-13 13:51:33
【问题描述】:

我使用 OpenCV 计算了一系列图像的直方图,但在某些时候,即使图像具有不同的外观,它们的直方图也是相同的,因此熵和直方图的差异也是相同的。

在这里如何区分这些类型的图像?

请帮忙!

【问题讨论】:

  • 显而易见的答案是你不应该通过直方图比较图像。当仅依赖直方图时,这是一个已知问题。还有许多其他方法可以比较图像,如果您包含一些您尝试比较的示例图像,则可能会出现更相关的建议/答案。
  • 比较图片怎么样?
  • 直方图通常查看图像,因为它是黑白的。您可以尝试各个通道的直方图,以便获得红色直方图、绿色直方图和蓝色直方图并进行比较。另一种技术是从另一个图像中减去一个图像,然后对结果图像进行直方图。此直方图将测量图像的差异。
  • @FredF 这根本没有意义。您是说给定任何图像,直方图通常只会显示两个箱吗?一个是黑色的,一个是白色的?这仅适用于二值图像。然后按照您的建议使用 RGB 直方图,但是如果输入图像是灰度图像呢?这没什么区别。现在,在您从另一个图像中减去一个图像以执行进一步分析后,您会失去直方图提供的好处:它是图像的一个简短(且微不足道)的签名,不依赖于任何其他图像。
  • 当他说黑白时,我认为他的意思是灰度。这是 255 种灰色,而不仅仅是黑色和白色。

标签: opencv image-processing histogram


【解决方案1】:

如果输入图像是灰度的,那么只有1个通道,现在大多数图像都是彩色的。如果文件是灰度文件,则只有 1 个通道。

这里有一些很容易尝试的东西。对于灰度,您可以对每一行像素进行平均以获得单个灰度值,然后生成行平均值的直方图,同时对每列值进行平均并制作直方图。

过于简单化结果。如果你有 3 个文件,

左半边黑色,右半边白色。

上黑下白

一个有黑白方格的棋盘。

标准直方图将显示 50% 的黑色像素和 50% 的白色像素。

水平直方图将显示左/右和棋盘具有全部 50% 灰色,而顶部/bot 将具有 50% 黑色和 50% 白色

垂直直方图将显示顶部/机器人和棋盘具有全部 50% 灰色,而左侧/右侧将显示 50% 黑色和 50% 白色。

因此,虽然所有 3 个文件都具有相同的基本直方图,但它们在水平直方图上是唯一的。

水平直方图的分辨率较低,因为它们是平均值,因此您仍然需要完整的直方图来进行主要识别。

当然,除了水平和垂直之外,您还可以得出其他平均值。

【讨论】:

  • 平均行只会导致更多的“直方图冲突”,即不同的图像具有相同的直方图。
  • 当 3 个直方图一起使用时不会。标准直方图仍然是唯一性的主要来源。只有当多幅图像的第一级直方图相似时,才会使用二级直方图进行区分。就像第一个直方图是一个名字,比如“John Smith”,第二个直方图是身高和体重。因此,对于多个 John Smith,其中一个 John smith 身高 5'10" 和 180 磅,而第二个 John Smith 身高 6'1" 和 380 磅。
  • 计算机视觉中的一个标准程序是使用直方图金字塔来保存一些空间信息,否则这些信息会丢失。 Here 是他们使用渐变而不是灰度值的示例。但他的想法应该仍然适用。
猜你喜欢
  • 2014-12-22
  • 2012-10-06
  • 1970-01-01
  • 2019-07-08
  • 1970-01-01
  • 2012-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多