基于 MATLAB 的双边滤波去图像云雾处理
基于 MATLAB 的双边滤波去图像云雾处理可以通过结合暗通道先验和滤波透射来实现。
实现步骤
-
暗通道先验估计
利用暗通道先验理论估计雾霾浓度。暗通道先验指出,在大多数不包含天空的局部区域内,至少存在一个颜色通道的像素值接近于零。 -
估计透射率
通过暗通道先验估计透射率图。透射率公式为:t(x)=1−ω⋅miny∈Ω(x)(minc∈{r,g,b}Ic(y)Ac)t(x) = 1 - \omega \cdot \min_{y \in \Omega(x)} \left( \min_{c \in \{r,g,b\}} \frac{I^c(y)}{A^c} \right)t(x)=1−ω⋅miny∈Ω(x)(minc∈{r,g,b}AcIc(y))
其中,ω\omegaω 是一个控制去雾程度的参数,通常取值为 0.95。
-
双边滤波优化透射率
使用双边滤波对透射率图进行平滑处理,以减少块效应并保留边缘信息。 -
恢复清晰图像
使用估计的透射率和大气光值恢复清晰图像:J(x)=I(x)−Amax(t(x),t0)+AJ(x) = \frac{I(x) - A}{\max(t(x), t_0)} + AJ(x)=max(t(x),t0)I(x)−A+A
其中,t0t_0t0 是一个最小透射率阈值,用于避免除零问题。
代码
function dehazed_image = dehaze(image, omega, t0)% 输入:% image - 有雾图像% omega - 控制去雾程度的参数,默认为 0.95% t0 - 最小透射率阈值,默认为 0.1% 输出:% dehazed_image - 去雾后的图像% 转换为双精度image = double(image) / 255;% 1. 估计暗通道dark_channel = min(image, [], 3); % 暗通道dark_channel = imfilter(dark_channel, fspecial('average', [15, 15]), 'replicate');% 2. 估计大气光[~, idx] = max(dark_channel(:));[rows, cols, ~] = size(image);[r, c] = ind2sub([rows, cols], idx);atmospheric_light = image(r, c, :);% 3. 估计透射率normalized_image = image ./ atmospheric_light;dark_channel = min(normalized_image, [], 3);dark_channel = imfilter(dark_channel, fspecial('average', [15, 15]), 'replicate');transmission = 1 - omega * dark_channel;% 4. 双边滤波优化透射率transmission = bfilter2(transmission, 3, 0.1); % 双边滤波% 5. 恢复清晰图像dehazed_image = zeros(size(image));for i = 1:3dehazed_image(:, :, i) = (image(:, :, i) - atmospheric_light(i)) ./ max(transmission, t0) + atmospheric_light(i);end% 转换回 uint8dehazed_image = uint8(255 * dehazed_image);
end% 辅助函数:双边滤波
function output = bfilter2(input, sigma_s, sigma_r)% 双边滤波output = imguidedfilter(input, 'NeighborhoodSize', 3, 'DegreeOfSmoothing', sigma_r);
end
使用
% 读取有雾图像
image = imread('foggy_image.jpg');% 调用去雾函数
dehazed_image = dehaze(image, 0.95, 0.1);% 显示结果
figure;
subplot(1, 2, 1);
imshow(image);
title('有雾图像');
subplot(1, 2, 2);
imshow(dehazed_image);
title('去雾后图像');
参考代码 基于matlab双边滤波去图像云雾处理,通过暗通道处理和滤波透射来实现 www.youwenfan.com/contentcsh/97833.html。
这种方法结合了暗通道先验和双边滤波的优势,能够在去除雾霾的同时保留图像的细节和边缘信息。