版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
版权
图像处理专栏收录该内容
4 篇文章2 订阅
订阅专栏

文章目录

灰度图像直方图均衡化

方法理论

灰度直方图反映的是一幅图像中各灰度像素出现的频率。以灰度级为横坐标,纵坐标为灰度级的频率,绘制频率同灰度级的关系就是灰度直方图。它是图像的一个重要特征,反映了图像灰度分布的情况。
使用直方图进行图像变换是一种基本概率论的处理方法,通过改变图像的直方图,修改图像中各像素的灰度值,达到增强图像视觉效果的目的。
相对于灰度变化只针对单独的像素点操作,直方图变化综合考虑了全图的灰度值分布。

灰度直方图均衡化代码示例

# 灰度直方图均衡化import numpyas np import cv2 from matplotlibimport pyplotas plt defgray_Histogram_equalization():'对灰度图像进行直方图均衡化' im= cv2.imread("data/img/lena.jpg") im= cv2.cvtColor(im,cv2.COLOR_BGR2GRAY) cv2.imshow("原始图片",im)# 直方图均衡化 imp_equ= cv2.equalizeHist(im)# 只能处理灰度图像 cv2.imshow("直方图均值化图片",imp_equ)# 绘制直方图# 原始直方图# print("原始直方图") plt.subplot(2,1,1) plt.hist(im.ravel(),#ravel返回一个连续的扁平数组256,[0,256],label="org") plt.legend()# 均衡化处理后的图像 plt.subplot(2,1,2) plt.hist(imp_equ.ravel(),256,[0,256],label="equalize") plt.legend() plt.show() cv2.waitKey() cv2.destroyAllWindows()

结果展示

彩色图像直方图均衡化
对于彩色图像,可以对不同的通道分别统计直方图。

彩色图像直方图均衡化代码示例

'对彩色图像进行直方图均衡化'defcolor_img_Histogram_equalization(): im= cv2.imread("data/img/lena.jpg") cv2.imshow('org',im)# BRG空间转化为YUV空间# YUV:亮度,色彩,饱和度,其中y为亮度通道 yuv= cv2.cvtColor(im,cv2.COLOR_BGR2YUV)print("yuv shape",yuv.shape) yuv[...,0]= cv2.equalizeHist(yuv[...,0])# 取出亮度通道,均衡化并赋回原图像。 equalize_color= cv2.cvtColor(yuv,cv2.COLOR_YUV2BGR) cv2.imshow("equalized color",equalize_color)# 绘制直方图# 原始直方图# print("原始直方图") plt.subplot(2,1,1) plt.hist(im.ravel(),# ravel返回一个连续的扁平数组256,[0,256], label="org") plt.legend()# 均衡化处理后的图像 plt.subplot(2,1,2) plt.hist(equalize_color.ravel(),256,[0,256], label="equalize") plt.legend() plt.show() cv2.waitKey() cv2.destroyAllWindows()if __name__=='__main__': color_img_Histogram_equalization()

代码结果