提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
前面讲到直方图均衡化,但是讨论的都是全局性的,像素是基于整个图像的灰度分布的变换函数修改的。这种全局性方法适合于整体增强,但当目的是增强图像中几个小区域的细节时,通常就会失败。这是因为在这些小区域中,像素的数量对计算全局变换的影响可以忽略,解决方法是设计基于像素领域的灰度分布的变换函数。
原理和全局直方图均衡化一样,因此这里不再阐述
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 示例效果图

不用多说,全局直方图无法显示上图中的细节,而局部直方图却可以
&spm=1001.2101.3001.5002&articleId=140756940&d=1&t=3&u=12e999a3b1fa4a23a39b975a564a8e3b)
7591

被折叠的 条评论
为什么被折叠?



