ahe自适应直方图均衡化代码
时间: 2023-05-13 13:02:55 浏览: 115
AHE自适应直方图均衡化是一种非线性图像增强技术,能够在不破坏原始图像细节和对比度的同时,提高图像的清晰度、亮度和对比度。以下是AHE自适应直方图均衡化的Python代码实现:
1. 首先导入必要的库:
```
import cv2
import numpy as np
```
2. 定义AHE函数,实现自适应直方图均衡化:
```
def ahe(img, clipLimit=3, gridSize=(8, 8)):
h, w = img.shape
gridH, gridW = gridSize
clahe = cv2.createCLAHE(clipLimit=clipLimit, tileGridSize=gridSize)
equalized = np.zeros(img.shape, dtype=np.float32)
for i in range(gridH):
for j in range(gridW):
y = i * h // gridH
x = j * w // gridW
h1 = (i + 1) * h // gridH
w1 = (j + 1) * w // gridW
subImg = img[y:h1, x:w1]
hist = cv2.calcHist([subImg], [0], None, [256], [0, 256])
clahe.apply(subImg, subImg)
equalized[y:h1, x:w1] = subImg
return np.uint8(equalized)
```
这个函数的参数包括待处理的图像、对比度裁剪限制数和网格大小。我们首先获取图像的高和宽,然后根据网格大小计算网格的数量。然后我们使用cv2.createCLAHE创建CLAHE对象,它具有裁剪限制和网格大小参数。接着我们创建一个空白的等化图像,然后遍历网格,为每个网格计算直方图并使用CLAHE对象对该网格进行直方图均衡化。最后我们将均衡化的图像部分合并到空白的等化图像中,然后将其强制转换为8位无符号整数。最终返回AHE处理后的图像。
以上是AHE自适应直方图均衡化的Python代码实现方法。
阅读全文