如何构建二维直方图?

转载于如何构建二维直方图?

在上一篇博客中,我们讨论了一维直方图,其中我们分别分析每个通道。假设我们想要找到图像通道之间的相关性,假设我们有兴趣找到某种颜色在图像中出现的次数。在这种情况下,一维直方图将无法胜任,因为它无法显示两个通道之间确切位置处的强度关系。

为了解决这个问题,我们需要多维直方图,例如 2D 或 3D。借助 2D 直方图,我们可以用2个组合(RG、GB、BR)或3D直方图一起分析通道。

让我们看看什么是二维直方图以及如何使用 OpenCV Python 构建它。

二维直方图对强度组合的出现进行计数。

下图显示了一个2D直方图

这里,Y 和 X 轴对应于红色和绿色通道范围(对于 8 位,[0,255]),直方图中的每个点显示对应于每个 R 和 G 对的频率。频率在这里用颜色编码,否则,将需要另一个维度。

让我们通过一个简单的例子来了解如何构建二维直方图。

假设我们有 4×4、2 位的红色和绿色通道图像(如下所示),并且我们想要绘制它们的二维直方图。

  • 首先,我们分别在 X 轴和 Y 轴上绘制 R 和 G 通道范围(此处为 [0,3])。这将是我们的二维直方图。

  • 然后,循环通道内的每个位置,找到相应的强度对频率并将其绘制在二维直方图中。然后对这些频率进行颜色编码,以便于可视化。

现在,让我们看看如何使用 OpenCV-Python 构建二维直方图

我们使用与一维直方图相同的函数cv2.calcHist()。只需更改以下参数即可,其余相同。

  • 通道:[0,1] 表示(蓝色,绿色),[1,2] 表示(G,R),[0,2] 表示(B,R)。

  • bins:根据您的需要指定每个通道。例如[256,256]。

  • 范围:8 位图像的 [0,256,0,256]。

下面是使用 OpenCV-Python 的示例代码

绘制二维直方图时始终使用最近邻插值。

使用 RGB 通道绘制 2D 直方图不是一个好的选择,因为我们无法仅使用 2 个通道提取颜色信息。尽管如此,这仍然可以用于查找通道之间的相关性、查找削波或强度比例等。

为了提取颜色信息,我们需要一个颜色模型,其中两个分量/通道可以单独表示图像的色度(颜色)。其中一种颜色模型是 HSV,其中 H 和 S 告诉我们光的颜色。因此,首先将图像从 BGR 转换为 HSV,然后应用上面的代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值