当前位置: 首页 > news >正文

基于 MATLAB 的双边滤波去图像云雾处理

基于 MATLAB 的双边滤波去图像云雾处理可以通过结合暗通道先验和滤波透射来实现。

实现步骤

  1. 暗通道先验估计
    利用暗通道先验理论估计雾霾浓度。暗通道先验指出,在大多数不包含天空的局部区域内,至少存在一个颜色通道的像素值接近于零。

  2. 估计透射率
    通过暗通道先验估计透射率图。透射率公式为:

    t(x)=1−ω⋅min⁡y∈Ω(x)(min⁡c∈{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。

  3. 双边滤波优化透射率
    使用双边滤波对透射率图进行平滑处理,以减少块效应并保留边缘信息。

  4. 恢复清晰图像
    使用估计的透射率和大气光值恢复清晰图像:

    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。

这种方法结合了暗通道先验和双边滤波的优势,能够在去除雾霾的同时保留图像的细节和边缘信息。

http://www.dtcms.com/a/390844.html

相关文章:

  • 将一台已连接无线网络的 Windows 电脑通过网络线共享网络给另一台电脑
  • 复习1——TCP/IP之常用协议
  • 讲清楚 PagedAttention
  • 多对多依赖;有向无环图l;拓扑排序;DFS回溯输出全路径简述
  • 【序列晋升】37 Spring Data LDAP 跳出传统数据访问框架,掌握目录服务开发新范式
  • Redis三种服务架构
  • GPT-5 高并发文生图视频 API 架构实战指南
  • LLM赋能网络安全:六大应用场景的深度解析与前沿突破
  • 分布式链路追踪-SkyWalking
  • 第五篇:范围-Based for循环:更简洁、更安全地遍历容器
  • 京准科技NTP网络校时服务器实现分布式系统精准协同
  • Node.js 简介与历史演进
  • MMLU:衡量大语言模型多任务理解能力的黄金基准
  • Java NIO/AIO 异步 IO 原理与性能优化实践指南
  • ReactJS + AppSync + DynamoDB 项目结构与组件示例
  • adm显卡下使用gpu尝试
  • dante 安装与使用
  • STL-常用算法
  • 百度网盘SVIP148以内到手
  • Unreal Engine 4.27 + AirSim 无人机仿真环境搭建:澳大利亚农村场景更换教程
  • 【硬件-笔试面试题-101】硬件/电子工程师,笔试面试题(知识点:讲一讲CAN收发器,及如何选型)
  • [硬件电路-263]:电路系统的电源没有一般人认为的,只是提供一个电压那么简单
  • 基于FPGA的多功能电子表(时间显示、日期显示、调整时间、日期设置、世界时间、闹钟设置、倒计时、秒表)
  • 一篇关于MCP协议的介绍以及使用【详细篇】
  • 第三代社保卡 OCR 识别:服务提速的关键入口
  • 打造个性化 Cursor ,提升开发体验:PyCharm 风格的 settings.json 配置分享
  • 工业工程 - 制造与服务系统分析(一)
  • LeetCode hot 100 解题思路记录(二)
  • Redis 三种服务架构详解:从主从复制到集群模式
  • 若依前端vue基本函数介绍