图像去雾pycharm代码
时间: 2024-03-07 11:45:38 浏览: 100
图像去雾源代码
当涉及图像去雾时,Pycharm是一个常用的Python集成开发环境,可以用于编写和运行图像去雾的代码。以下是一个简单的图像去雾代码示例:
```python
import cv2
import numpy as np
def dehaze(image, t=0.1, w=0.95):
# 估计大气光
dark_channel = get_dark_channel(image)
A = estimate_atmospheric_light(image, dark_channel)
# 估计透射率
transmission = estimate_transmission(image, A, t)
# 优化透射率
refined_transmission = refine_transmission(image, transmission, w)
# 恢复原始图像
recovered_image = recover_image(image, refined_transmission, A)
return recovered_image
def get_dark_channel(image, patch_size=15):
min_channel = np.min(image, axis=2)
dark_channel = cv2.erode(min_channel, np.ones((patch_size, patch_size)))
return dark_channel
def estimate_atmospheric_light(image, dark_channel, top_percentage=0.001):
flat_dark_channel = dark_channel.flatten()
num_pixels = flat_dark_channel.size
num_top_pixels = int(num_pixels * top_percentage)
indices = np.argpartition(flat_dark_channel, -num_top_pixels)[-num_top_pixels:]
top_pixels = image.reshape(-1, 3)[indices]
A = np.max(top_pixels, axis=0)
return A
def estimate_transmission(image, A, t):
transmission = 1 - t * get_dark_channel(image / A)
return transmission
def refine_transmission(image, transmission, w):
guided_filter = cv2.ximgproc.createGuidedFilter(image.astype(np.float32), w, 1e-3)
refined_transmission = guided_filter.filter(transmission)
return refined_transmission
def recover_image(image, transmission, A, t0=0.1):
transmission_clipped = np.clip(transmission, t0, 1)
recovered_image = (image - A) / transmission_clipped + A
recovered_image = np.clip(recovered_image, 0, 255).astype(np.uint8)
return recovered_image
# 读取图像
image = cv2.imread('input.jpg')
# 图像去雾
recovered_image = dehaze(image)
# 显示结果
cv2.imshow('Input', image)
cv2.imshow('Dehazed', recovered_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
这段代码使用了暗通道先验原理进行图像去雾。它包括以下几个步骤:
1. 估计大气光:通过计算图像的暗通道来估计图像中的大气光。
2. 估计透射率:根据估计的大气光和暗通道,计算图像的透射率。
3. 优化透射率:使用引导滤波器对透射率进行优化,以减少估计误差。
4. 恢复原始图像:根据优化后的透射率和估计的大气光,恢复原始图像。
你可以将需要去雾的图像保存为`input.jpg`,然后运行上述代码即可得到去雾后的图像。
阅读全文