直方图均衡化
  LoeQspFvaEjW 2023年11月01日 118 0

1. 图像直方图

图像直方图,是指对整个图像在灰度范围内的像素值(0-255)统计出现频率次数,据此生成的直方图,称为图像直方图或直方图。直方图反映了图像灰度的分布情况,是图像的统计学特征。也可以说,直方图是图像中像素强度分布的图形表达方式,它统计了每一个强度值所具有的像素个数。

2. 直方图均衡化

直方图均衡化是以累计分布函数为核心,将原始图像灰度直方图从比较集中的某个灰度区间,非线性地映射为在全部灰度范围内的较均匀分布,从而增强对比度。

直方图均衡化的数学原理如下:
首先作原始图像灰度的概率直方图, 然后设输入像素灰度值为rk,累计分布函数为

其中ni为图像中灰度值为ri的像素频数,n为图像像素总数。设输出像素灰度值为sk,像素范围为smin-smax。期望输出灰度直方图是均匀分布,即

令C(sk)=C(rk),即得

所以最终直方图均衡化的点算子为

3. 直方图均衡化的Python实现

根据直方图均衡化的数学原理,用Python实现代码如下:

import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt

# 计算累计分布函数
def C(rk):
    # 读取图片灰度直方图
    # bins为直方图直方柱的取值向量,hist为bins各取值区间上的频数取值
    hist, bins = np.histogram(rk, 256, [0, 256])
    # 计算累计分布函数
    return hist.cumsum()

# 计算灰度均衡化映射
def T(rk):
    cdf = C(rk)
    # 均衡化
    cdf = (cdf - cdf.min()) * (255 - 0) / (cdf.max() - cdf.min()) + 0
    #cdf = 255.0 * cdf / cdf[-1]
    return cdf.astype('uint8')

# 读取图片
img = cv.imread('lenna.jpg', 0)
# 将二维数字图像矩阵转变为一维向量
rk = img.flatten()
# 原始图像灰度直方图
plt.hist(rk, 256, [0, 255], color = 'r')
# 直方图均衡化
imgDst = T(rk)[img]     
plt.hist(imgDst.flatten(), 256, [0, 255], color = 'b')
plt.legend(['Before Equalization','Equalization']) 
plt.show()
# 展示前后对比图像
plt.subplot(121), plt.imshow(img, cmap='gray'), plt.title('Original Gray')
plt.subplot(122), plt.imshow(imgDst, cmap='gray'), plt.title('Histogram Equalization')
plt.show()

均衡前后图像灰度直方图如下所示:

直方图均衡化前后的图像对比如下所示:

4. opencv-python中直方图均衡化的应用

opencv-python中使用cv.equalizeHist函数即可实现直方图均衡化,其函数原型如下:

dst=cv.equalizeHist(src[, dst])

注意:输入需是灰度图像。

测试代码如下:

img = cv.imread('lenna.jpg', 0)
dst = cv.equalizeHist(img)
plt.subplot(121), plt.imshow(img, cmap='gray'), plt.title('Original Gray'), plt.axis('off')
plt.subplot(122), plt.imshow(dst, cmap='gray'), plt.title('Histogram Equalization'), plt.axis('off')
plt.show()

效果如下:

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  yCJS27XXARYK   2024年05月17日   63   0   0 AI综合
LoeQspFvaEjW