查找直方图

查找直方图

本教程将学习如下内容:

学习使用OpenCV和Numpy函数查找直方图

介绍两个关键函数:cv2.calcHist()、np.hostogram()

扩展阅读:

剑桥色彩(Cambridge in Color)

理论基础直方图是什么呢?您可以将直方图视为一个图形或绘图,可以对图像的强度分布有一个总体的了解。

这是一个X轴上像素值(范围从0到255,并不总是如此)和Y轴上图像中相应像素数的图。

这只是理解图像的另一种方式。通过查看图像的直方图,可以直观地了解该图像的对比度、亮度、强度分布等。

几乎所有的图像处理工具都提供直方图功能。

以下是剑桥色彩网站上的图片,建议访问该网站以获取更多详细信息。

可以看到图像及其直方图。(记住,此直方图是为灰度图像绘制的,而不是为彩色图像绘制的)。

直方图的左侧区域显示图像中较暗像素的数量,右侧区域显示较亮像素的数量。

从直方图中可以看到暗区比亮区多,中间色调的数量(中间范围的像素值,比如127左右)非常少。

查找直方图现在我们对直方图有了一个概念,可以研究如何找到它。OpenCV和Numpy都内置了此功能。

在使用这些函数之前,需要了解一些与直方图相关的术语。

BINS:上面的直方图显示了每个像素值的像素数,即从0到255。

即需要256个值来显示上面的直方图。但是如果不需要分别找到所有像素值的像素数,而是需要找到像素值区间内的像素数呢?

例如,需要找到0到15之间的像素数,然后是16到31。。。,240至255。

只需要16个值来表示直方图。这就是OpenCV教程中关于直方图的示例所示。

因此,只需将整个直方图拆分为16个子部分,每个子部分的值就是其中所有像素计数的总和。

每个子部分称为“BIN”。在第一种情况下,仓的数量为256(每个像素一个),而在第二种情况下只有16个。

BINS在OpenCV文档中由术语histSize表示。

DIMS:这是收集数据的参数数量。在这种情况下,只收集关于一件事的数据,即强度值。所以这里是1。

RANGE:这是要测量的强度值的范围。通常,它是[0,256](所有强度值)。

OpenCV 中的直方图计算所以现在使用cv2.calcHist()函数来查找直方图。先熟悉一下函数及其参数:

cv2.calcHist(images, channels, mask, histSize, ranges\[, hist\[,accumulate\]\])

images:它是uint8或float32类型的源图像,应该放在方括号内,即[img]。

channels:它也在方括号中给出,是计算直方图的通道指数。例如,如果输入是灰度图像,则其值为[0]。对于彩色图像,可通过[0]、[1]或[2]分别计算蓝色、绿色或红色通道的直方图。

mask:遮罩图像。为了找到完整图像的直方图,将其设置为“无”。但是,如果想找到图像特定区域的直方图,必须为此创建一个掩模图像,并将其作为掩模。(稍后将展示一个示例。)

histSize:这代表BIN计数。需要放在方括号内。对于全尺寸,需要传递[256]。

ranges:这是范围,通常为[0256]。

那么,让我们从一个示例图像开始。只需在灰度模式下加载图像并找到其完整的直方图。

相关推荐

PS中怎么画弧线:详细步骤与技巧解析
365bet游戏平台

PS中怎么画弧线:详细步骤与技巧解析

📅 06-28 👁️ 2211
7-11 包裹配送多久到?專家完整解析指南
365bet游戏平台

7-11 包裹配送多久到?專家完整解析指南

📅 07-04 👁️ 6376
搬瓦工 IPv6 地址教程:哪些套餐/机房能用 IPv6?怎么使用 IPv6?怎么连接 IPv6?
迈视摄像机怎么样
365bet游戏平台

迈视摄像机怎么样

📅 06-28 👁️ 9307
血液“照一照”,输血更安全【健康昆明进行时】
Bet体育365怎么提款

血液“照一照”,输血更安全【健康昆明进行时】

📅 06-30 👁️ 8732
原神古云有螭遗迹碎片在哪里全攻略
365bet游戏平台

原神古云有螭遗迹碎片在哪里全攻略

📅 07-04 👁️ 4805