4.4 直方图局部均衡化(自适应均衡化)

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


前言

前面讲到直方图均衡化,但是讨论的都是全局性的,像素是基于整个图像的灰度分布的变换函数修改的。这种全局性方法适合于整体增强,但当目的是增强图像中几个小区域的细节时,通常就会失败。这是因为在这些小区域中,像素的数量对计算全局变换的影响可以忽略,解决方法是设计基于像素领域的灰度分布的变换函数。
原理和全局直方图均衡化一样,因此这里不再阐述


1. 示例

1.1 示例代码

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

if __name__ == '__main__':

    img = cv.imread('Image/Fig0406.tif',0)

    # 直方图均衡化
    imgHE = cv.equalizeHist(img)

    # 局部直方图均衡化
    kernelSize = 15  # 局部的大小,可以通过这个参数来调整变换效果
    clahe = cv.createCLAHE(clipLimit=0.0, tileGridSize=(kernelSize, kernelSize))  # 创建AHE对象
    imgAHE = clahe.apply(img)  # 对图像进行CLAHE处理

    # 显示图像
    plt.rcParams['font.sans-serif'] = ['SimHei']
    plt.rcParams['font.size'] = 20
    plt.figure(figsize=(25, 9))

    plt.subplot(131)
    plt.imshow(cv.cvtColor(img, cv.COLOR_BGR2RGB))
    plt.axis('off')
    plt.title('Original Image')

    plt.subplot(132)
    plt.imshow(cv.cvtColor(imgHE, cv.COLOR_BGR2RGB))
    plt.axis('off')
    plt.title('全局直方图均衡化')

    plt.subplot(133)
    plt.imshow(cv.cvtColor(imgAHE, cv.COLOR_BGR2RGB))
    plt.axis('off')
    plt.title('局部直方图均衡化')

    plt.tight_layout()
    plt.savefig('Image/Fig0406.png', transparent=True)
    plt.show()

1.2 示例效果图

在这里插入图片描述
不用多说,全局直方图无法显示上图中的细节,而局部直方图却可以

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值