【学习OpenCV4】直方图计算与均衡化

在这里插入图片描述
本文分享内容来自图书**《学习OpenCV 4:基于Python的算法实战》**,该书内容如下:

1章 OpenCV快速入门;
第2章 图像读写模块imgcodecs;
第3章 核心库模块core;
第4章 图像处理模块imgproc(一);
第5章 图像处理模块imgproc(二);
第6章 可视化模块highgui;
第7章 视频处理模块videoio;
第8章 视频分析模块video;
第9章 照片处理模块photo;
第102D特征模块features2d;
第11章 相机标定与三维重建模块calib3d;
第12章 传统目标检测模块objdetect;
第13章 机器学习模块ml;
第14章 深度神经网络模块dnn

欢迎关注图书《深度学习计算机视觉实战》与《学习OpenCV4:基于Python的算法实战》。

直方图是一种揭示数据分布的统计特性的工具,它是将数据归入到预先定义的不同的组中,并对每个组进行计数,用以表示数据的统计分布信息。在图像处理中,可以使用直方图统计图像中亮度或者像素灰度值,也可以对提取的图像特征进行计数形成直方图,它是计算机视觉中图像特征分析的一种重要工具。

5.7.1 案例57:直方图计算

OpenCV中直方图计算的函数为calcHist,函数定义如下:

hist = calcHist(images, channels, mask, histSize, ranges, hist=None, accumulate=None)

参数说明如下:
images,输入图像;
channels,用于计算直方图的通道列表;
mask,掩模,计算掩模内的直方图;
histSize,直方图分成的区间数;
ranges,统计像素值的区间;
hist,输出的直方图数组(返回值);
accumulate,多图像是否累积计算像素值个数。
本案例使用的输入图像如图3.10所示,直方图计算并绘制的案例代码如下:

import cv2
import numpy as np

img = cv2.imread('src.jpg')
# 计算通道0直方图
hist = cv2.calcHist([img], [0], None, [256], [0,255])
#获取直方图中的最大值和最小值
minVal, maxVal, minLoc, maxLoc = cv2.minMaxLoc(hist)
#创建纯白色图片用于绘制直方图
hist_img = np.zeros([256, 256], np.uint8)
hist_img[:] = 255
#直方图绘制
for i in range(256):
    #将直方图中的像素统计数值归一化到[0, 256]
    norm_value = int(hist[i] * 256 / maxVal)
    #以黑色线绘制每一个像素值的数量
    cv2.line(hist_img, (i, 256), (i, 256 - norm_value), [0, 0, 0])
cv2.imshow("hist_img", hist_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

计算的直方图并绘制的结果如图5.21所示。
在这里插入图片描述

图5.21
对于亮度较暗的图像,直方图数据会比较集中在左侧区域,如图5.22所示。
在这里插入图片描述

图5.22
对于亮度较亮的图像,直方图数据会比较集中在右侧区域,如图5.23所示。
在这里插入图片描述

图5.23

5.7.2 案例58:直方图均衡化

直方图均衡化是一种增强图像对比度的方法,主要思想是让一幅图像的直方图均匀分布于0到255的范围内,从而增强对比度。
OpenCV中提供直方图均衡化的函数为calcHist,函数定义如下:

dst = equalizeHist(src, dst=None)

参数说明如下:
src,输入图像;
dst,均衡化后的输出图像(返回值)。
直方图均衡化的案例代码如下所示:

import cv2

src = cv2.imread('src1.jpg', 0)
#直方图均衡化
equalize_img = cv2.equalizeHist(src)
#图像显示
cv2.imshow("src_img", src)
cv2.imshow("equalize_img", equalize_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

均衡化之后的图像与原图对比结果如图5.24所示。
在这里插入图片描述

图5.24
均衡化之后的图像直方图如图5.25所示,图中像素值均匀分布在0到255之间。
在这里插入图片描述

图5.25

猜你喜欢

转载自blog.csdn.net/lxiao428/article/details/123241271