算法原理:
自适应局部中值平滑图像去雾算法基于以下观察:雾气会导致图像中的亮度和对比度降低,因此通过增加图像的亮度和对比度可以一定程度上去除雾气的影响。该算法通过对图像进行局部中值滤波来增加亮度和对比度,并根据图像的局部特征自适应地调整滤波窗口的大小。
算法步骤:
1、将输入的受雾图像转换为灰度图像,以简化处理过程。
2、对灰度图像进行局部中值滤波。首先,选择一个合适的滤波窗口大小,例如3x3或5x5。然后,对图像中的每个像素,
计算其邻域内像素的中值,并将该中值作为当前像素的新值。重复该过程直到处理完所有像素。
3、根据图像的局部特征自适应地调整滤波窗口大小。可以使用图像的梯度或方差等指标来评估图像的局部特征,并根据这些指标动态地调整滤波窗口大小。例如,可以根据图像的梯度大小来决定滤波窗口的大小,梯度越大,窗口越大,从而保留更多的细节信息。
4、对经过自适应局部中值滤波的图像进行亮度和对比度增强。可以使用直方图均衡化等方法来增加图像的亮度和对比度,使得图像更清晰。
5、输出去雾后的图像。
MATLAB源代码:
function dehazed_image = adaptive_local_median_smoothing(image, window_size)
% 转换为灰度图像
gray_image = rgb2gray(image);
% 局部中值滤波
filtered_image = medfilt2(gray_image, [window_size window_size]);
% 自适应调整窗口大小
gradient = imgradient(filtered_image);
adjusted_w