目录
1. 简介
本文介绍了双边滤波图像去雾算法,旨在消除雾霾对图像质量的影响,能够保留边缘信息并去除噪声,有效提高图像的清晰度和对比度。双边滤波(Bilateral Filtering)是一种用于图像处理的非线性滤波方法,它能够在平滑图像的同时保留边缘细节,并结合了空间域和强度域的信息,以避免在平滑噪声的同时模糊图像的边缘。
首先对图像进行频域变换,将原始图像分解为高频成分和低频成分。然后分别对高频成分和低频成分应用双边滤波算法,以去除噪声和增强边缘信息。最后将处理后的高频成分和低频成分进行逆频域变换,得到去雾后的图像。这种滤波技术特别适用于去噪和图像增强。
在频域和空域中同时进行滤波的方法,能够在去除噪声的同时保留边缘信息。其基本原理是利用像素强度相似性的度量来调整权重,将权重与邻域像素的强度值相乘,然后对所有邻域像素的强度值进行加权平均。
由于双边滤波算法考虑了像素的空间信息和灰度信息,该算法具有较好的泛化能力和较高的运行效率,能够保留边缘信息并去除噪声,显著提高图像的清晰度和对比度,因此能够更好地保护图像的细节和边缘,可以为图像处理和计算机视觉领域提供有力支持。
双边滤波器的输出是输入图像中每个像素的加权平均值,这个权重取决于空间距离和像素值差异两个因素。具体公式如下:
2. 步骤
1.选择邻域S:对于每个像素点x,确定一个邻域S,通常是一个正方形或圆形窗口。
2.计算权重:
空间权重():计算邻域内每个像素与中心像素的空间距离,并通过高斯函数转换为权重。
强度权重(I_{input}()-I_{input}(x)):计算邻域内每个像素与中心像素的强度差异,并通过高斯函数转换为权重。
3.加权平均:计算每个像素的加权平均值,得到滤波后的像素值。
4.归一化:使用归一化因子对权重进行归一化,确保输出像素值在合理范围内。
3. 优点
1.能有效去除图像噪声,同时保留图像边缘细节。
2.不会产生明显的边缘模糊现象。
4. 代码
import cv2
import numpy as np
def dehaze(image, w=1, t0=0.4, p=0.8):
# 估计全局大气光照
dark_channel = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
dark_channel = cv2.min(dark_channel, cv2.blur(dark_channel, (15, 15)))
hist = cv2.calcHist([dark_channel], [0], None, [256], [0, 256])
hist_cum = hist.cumsum()
percentile = (1 - w) * hist_cum[-1]
atmospheric_light = 255 - np.argmax(hist_cum > percentile)
# 估计透射率
normalized_image = np.uint8(image / atmospheric_light) # 将数据类型转换为8位无符号整数
dark_channel = cv2.min(cv2.cvtColor(normalized_image, cv2.COLOR_BGR2GRAY), cv2.blur(dark_channel, (15, 15)))
transmission = 1 - t0 * dark_channel
# 双边滤波
guide = cv2.GaussianBlur(image, (0, 0), p)
dehazed_image = np.zeros_like(image)
for i in range(3):
dehazed_image[:, :, i] = (image[:, :, i] - atmospheric_light) / cv2.max(transmission, 0.1) + atmospheric_light
dehazed_image = guide * transmission[:, :, np.newaxis] + dehazed_image * (1 - transmission[:, :, np.newaxis])
return dehazed_image.astype(np.uint8)
# 读取输入图像
image = cv2.imread('xue_foggy.png')
# 进行去雾处理
dehazed_image = dehaze(image)
# 显示结果
cv2.imshow('Input', image)
cv2.imshow('Dehazed', dehazed_image)
cv2.waitKey()
5. 运行结果
图像结果表明,双边滤波去雾算法在去雾过程中能够保留边缘细节,能够显著提高图像的清晰度和对比度,有效消除雾霾对图像质量的影响。但在复杂场景、低光照条件或存在运动模糊时可能产生其它问题。