图像去雾python代码分段线性变换
时间: 2023-11-09 19:59:43 浏览: 118
用Python代码实现图像增强之线性变换、对数变换、幂律变换、分段线性变换、灰度级分层、直方图均
图像去雾是一个常见的图像处理任务,分段线性变换是其中一种常用的去雾方法。下面是使用Python实现图像去雾的分段线性变换代码:
```python
import cv2
import numpy as np
def dehaze_linear(img, t, A):
# 计算透射率
t = np.clip(t, 0.1, 1) # 将透射率限制在[0.1, 1]范围内
t = cv2.GaussianBlur(t, (15, 15), 0) # 对透射率进行高斯模糊
# 估计大气光
A = np.array(A)
A = A.astype(np.float64) / 255.0
# 分段线性变换
result = np.zeros_like(img, dtype=np.float64)
for i in range(3):
result[:, :, i] = (img[:, :, i].astype(np.float64) - A[i]) / t + A[i]
result = np.clip(result, 0, 255) # 将像素值限制在[0, 255]范围内
result = result.astype(np.uint8)
return result
# 调用示例
image = cv2.imread('input.jpg') # 输入图像
transmission = cv2.imread('transmission.jpg', cv2.IMREAD_GRAYSCALE) # 透射率图像
atmospheric_light = [200, 200, 200] # 大气光估计值
result = dehaze_linear(image, transmission, atmospheric_light)
cv2.imshow('Result', result)
cv2.waitKey(0)
```
这段代码使用OpenCV库实现了图像的去雾过程。其中,`img`是输入图像,`t`是透射率图像,`A`是大气光估计值。函数将返回去雾后的图像。
阅读全文