【无标题】

文章介绍了直方图均衡化的概念,即通过改变灰度直方图的数据分布,使其在全部灰度范围内均匀分布。计算步骤包括计算灰度直方图、累计分布函数和更新灰度值。提供了使用Python和OpenCV库进行直方图均衡化的代码示例。
摘要由CSDN通过智能技术生成

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

数字图像处理——直方图均衡化(Histogram Equalization, HE) Python版本


概念理解

直方图均衡化的目的:直方图均衡技术将原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布。

1、直方图:这里只灰度直方图,就是不同灰度级(0-255)在整个图像中出现的频数,进而绘制的统计直方图。
在这里插入图片描述
2、均衡化:改变灰度直方图的数据分布,使整体的分布更加平滑,均衡

计算步骤

1、计算当前图片的灰度直方图(使用256的一维数组记录不同灰度的频数)
2、计算灰度图像的累计分布函数c(f)
在这里插入图片描述其中Pf(t)为概率分布函数,nt表示所有灰度为t的像素点的数量,n表示所有像素点的总数量。
3、将c(f)乘上灰度级(通常为255),再四舍五入,得到更新后的灰度直方图。
这一步比较难以理解,也是体现均衡化的关键所在。c(f)为一个累计的概率分布函数。随着灰度份数的增加,需要根据原有的权重比例来对新加入的灰度权重重新进行全新权重计算。
理解示例:分别有1岁(灰度频数),2岁,3岁的三个(灰度等级)儿童,来切分一个蛋糕(灰度值为255),吃饭量1岁1份,2岁2份,3岁3份。那么一开始只有2个小朋友的时候,

4、最后将对应像素位置的灰度值用全新的灰度值进行替代。

代码

代码如下(示例):

import cv2
import numpy as np

img = cv2.imread('Histogram_Equalization/source/jetplane.png')#读图
########## Begin ##########
def pix_gray (img):
    h = img.shape[0]   ###获取长和宽
    w = img.shape[1]
    ###新建数组统计灰度值得频数
    gray_level = np.zeros(256)  
    gray_level2 = np.zeros(256)
 
    for i in range (1,h-1):
        for j in range(1,w-1):
            gray_level[img[i,j]] += 1  #统计在图像i,j处的灰度值的个数
    for i in range(1,256):
        gray_level2[i] = gray_level2[i-1] + gray_level[i]  #统计灰度级小于img_gray[i,j]的个数,(公式中的求和部分,频数的求和)
 
    return gray_level2

def hist_gray(img):
    h = img.shape[0]
    w = img.shape[1]
    gray_level2 = pix_gray(img)  ##获取图像的直方小于个数
    lut = np.zeros(256)   ###初始化256灰度的表
    for i in range(256):   ###按照灰度进行遍历
        lut[i] = 255.0/(h*w)*gray_level2[i] #通过均值化得到新的灰度级,p*gray 
    for h1 in range(h):
        for w1 in range(w):
            img[h1,w1] = lut[img[h1,w1]]   ###更新灰度像素值
    return img

out = hist_gray(img)
########## End ##########
cv2.imwrite('Histogram_Equalization/result/out.png', out)
data = pd.read_csv(
    'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值