【图像处理】基于OpenCV实现图像直方图的原理

图像的直方图是衡量图像像素分布的一种方式,可以通过分析像素分布,使用直方图均衡化对图像进行优化,让图像变的清晰。

opencv官方对图像直方图的定义如下:

直方图是图像中像素强度分布的图形表达方式.

它统计了每一个强度值所具有的像素个数.

一、直方图计算的原理

一副图像实际上就是一个数字矩阵。

3x3的灰度图像由9个像素组成,每个像素都取值0-255中的一个值,0表示黑色,255表示白色,中间值是介于黑色和白色之间的灰度值。

如下以一个高度为3,宽度为3的图片为例说明直方图的计算。

定义一个255大小的数组,用于保存灰度值出现的次数

遍历图像的每一个元素,将像素的灰度值出现的次数统计到对应的灰度次数中

将灰度值次数统计数组进行归一化处理(归一化到0-255范围内,便于绘图使用)

将归一化的灰度次数进行绘图展示

如下图是计算直方图的过程。

【图像处理】基于OpenCV实现图像直方图的原理

 

 

 

二、直方图计算步骤

根据直方图计算的原理,如下我们就开始动手写一个计算图像直方图代码实现。

1. 加载图像

加载图像,并显示

cv::Mat rawImage = cv::imread("demo1/leopard2.png", cv::IMREAD_ANYCOLOR); cv::imshow("rawImage", rawImage);

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwswfz.html