python灰度图指定范围均衡化
时间: 2023-07-04 14:13:24 浏览: 76
灰度图 均衡化
你可以使用 OpenCV 库来实现灰度图像中指定范围的直方图均衡化。以下是一个示例代码:
```python
import cv2
import numpy as np
# 读取灰度图像
img = cv2.imread("gray_image.jpg", cv2.IMREAD_GRAYSCALE)
# 定义要均衡化的范围
lower_range = 0 # 最小值
upper_range = 100 # 最大值
# 创建掩膜
mask = cv2.inRange(img, lower_range, upper_range)
# 对掩膜内的像素进行直方图均衡化
hist, bins = np.histogram(img[mask > 0], 256, [0, 256]) # 计算直方图
cdf = hist.cumsum() # 计算累积分布函数
cdf = (cdf - cdf[0]) / (np.sum(mask) - 1) * 255 # 归一化
result = cv2.LUT(img, np.uint8(cdf)) # 应用 LUT
# 显示结果
cv2.imshow("result", result)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个代码中,我们先读取了一个灰度图像,然后定义了要均衡化的范围,这里是像素值在 0 到 100 之间的像素。接着,我们创建了一个掩膜来标记要均衡化的像素。然后,我们计算掩膜内的像素的直方图,并计算累积分布函数进行归一化。最后,我们应用 LUT(查找表)将输入图像转换为输出图像。你可以根据你的需要调整均衡化的范围和阈值。
阅读全文