python数字图像处理笔记14 直方图处理

绘制直方图

表示图像中具有某种灰度级的像素的个数,反映了图像中每种灰度出现的频率。它是图像最基本的统计特征。
横坐标:灰度级;
纵坐标:该灰度级出现的个数。

def hist(img):
    list=np.zeros(256,dtype=np.float)
    if len(img.shape) == 3:
        img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    H, W=img.shape
    for y in range(H):
        for x in range(W):
            temp=img[y,x]
            list[temp]=list[temp]+1
    return  list

在这里插入图片描述

直方图归一化

有时直方图会存在偏差。比如说,数据集中在 处(左侧)的图像全体会偏暗,数据集中在 处(右侧)的图像会偏亮。为了使人能更清楚地看见图片,让直方图归一化、平坦化是十分必要的。

像素点取值范围从【c,d】转换到【a.b】的过程由下式定义。
在这里插入图片描述

def hist_normalization(img, a=0, b=255):
    # get max and min
    c = img.min()
    d = img.max()

    out = img.copy()

    # normalization
    out = (b - a) / (d - c) * (out - c) + a
    out[out < a] = a
    out[out > b] = b
    out = out.astype(np.uint8)

    return out

在这里插入图片描述

直方图均衡化

直方图均衡化是使直方图变得平坦的操作。
在这里插入图片描述

在这里插入图片描述

def hist_equal(img, z_max=255):
    H, W, C = img.shape
    S = H * W * C * 1.

    out = img.copy()

    sum_h = 0.

    for i in range(1, 255):
        ind = np.where(img == i)
        sum_h += len(img[ind])
        z_prime = z_max / S * sum_h
        out[ind] = z_prime

    out = out.astype(np.uint8)

    return out

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值