基于多尺度视网膜增强图像去雾算法(MSR,Multi-Scale Retinex),Matalb实现

        博主简介: 专注、专一于Matlab图像处理学习、交流,matlab图像代码/项目合作可以联系(QQ:3249726188

        个人主页:Matlab_ImagePro-CSDN博客

        原则:代码均由本人编写完成,非中介,提供有偿Matlab算法代码编程服务,不从事不违反涉及学术原则的事。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

        本次分享的是基于多尺度视网膜增强图像去雾算法(MSR,Multi-Scale Retinex),用matlab实现。(有疑问或者想交流细节的QQ:3249726188

        一、简述一下算法情况

        Retinex理论主要包含了两个方面的内容:物体的颜色是由物体对长波、 中波和短波光线的反射能力决定的,而不是由反射光强度的绝对值决定的;物体的色彩不受光照 非均匀性的影响,具有一致性 。 根据Retinex理论,人眼感知物体的亮度取决于环境的照明和物体表面对照射光的反射,其数学表达式为:

            I(x,y)=L(x,y)*R(x,y)                            (2-1)

  式中: I(x,y)代表被观察或照相机接收到的图像信号;L(x,y)代表环境光的照射分量 ;R(x,y)表示携带图像细节信息的目标物体的反射分量 。

        将(2-1)式两边取对数,则可抛开入射光的性质得到物体的本来面貌,即有关系式 :

            Log[R(x,y)] = Log[I(x,y)]-Log[L(x,y)];                      (2-2)

        把这个技术运用到图像处理上,就是针对我们现在已经获得的一副图像数据I(x,y),计算出对应的R(x,y),则R(x,y)认为是增强后的图像,现在的关键是如何得到L(X,Y)。Retinex理论的提出者指出这个L(x,y)可以通过对图像数据I(x,y)进行高斯模糊而得到。

        因此这个算法的细路就很简单了,具体步骤如下:

        1、输入: 原始图像数据I(x,y),尺度(也就是所谓的模糊的半径)

        2、处理:(1) 计算原始图像按指定尺度进行模糊后的图像 L(x,y);

              (2) 按照2-2式的计算方法计算出 Log[R(x,y)]的值。

              (3) 将 Log[R(x,y)]量化为0到255范围的像素值,作为最终的输出。

        以上算法所实现的过程通常倍称作为SSR(Single Scale Retinex,单尺度视网膜增强)。为了得到更好的效果,开发出所谓的多尺度视网膜增强算法(MSR, Multi-Scale Retinex),最为经典的就是3尺度的,大、中、小,既能实现图像动态范围的压缩,又能保持色感的一致性较好。总的来说,MSR算法流程就是采取不同的尺度进行SSR操作,再进行加权处理即可。

        二、算法流程

       MSR去雾算法流程步骤如下:

        1、读取图像

        2、设置高斯滤波器滤波尺度参数(高斯模糊)

        3、根据高斯滤波参数,对图像RGB图像分别进行SSR(单尺度retinxe)处理,根据不同尺度的SSR,进行加权处理,得到每个图层的MSR结果

        4、去雾滤波后的每个图层合成为去雾后的图像。

        下面看看matlab的实现效了。

        三、Matlab实现效果

        1、读取原图

        2、去雾后的图像

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

专注、专一于Matlab图像处理学习、交流、代做

QQ:3249726188

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/752807.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Flink SQL】Flink SQL 基础概念(四):SQL 的时间属性

《Flink SQL 基础概念》系列,共包含以下 5 篇文章: Flink SQL 基础概念(一):SQL & Table 运行环境、基本概念及常用 APIFlink SQL 基础概念(二):数据类型Flink SQL 基础概念&am…

浅谈C++的模板—— 这一篇就够了

今天我们来谈谈C中有关于模板的知识😊😊😊,对于C模板来说,我们首先得了解以下几个术语 函数模板模板函数模板实例化模板特例化模板的实参推演模板的非类型参数非模板函数类模板模板类选择性实例化 下面,我…

在Visual Studio中调试 .NET源代码

前言 在我们日常开发过程中常常会使用到很多其他封装好的第三方类库(NuGet依赖项)或者是.NET框架中自带的库。如果可以设置断点并在NuGet依赖项或框架本身上使用调试器的所有功能,那么我们的源码调试体验和生产效率会得到大大的提升。今天我…

数据分析 | Matplotlib

Matplotlib 是 Python 中常用的 2D 绘图库,它能轻松地将数据进行可视化,作出精美的图表。 绘制折线图: import matplotlib.pyplot as plt #时间 x[周一,周二,周三,周四,周五,周六,周日] #能量值 y[61,72,66,79,80,88,85] # 用来设置字体样式…

vulnhub ---- Dr4g0n b4ll

文章目录 网段扫描隐藏目录隐写尝试通过ssh连接提权路径劫持 网段扫描 nmap -sn 命令用于执行主机存活扫描,仅检测目标网络中的活动主机,而不进行端口扫描。 ┌──(root㉿kali)-[~/Downloads] └─# nmap -sn 10.10.10.0/24 …

计算机网络——物理层(宽带接入技术)

计算机网络——物理层(宽带接入技术) 什么是宽带有线带宽接入xDSLADSL 技术ADSL 的大部分组成 光纤同轴混合网(HFC 网)机顶盒与电缆调制解调器(set-top box) FTTx 技术光配线网 ODN (Optical Distribution …

nginx 基本使用、借助 nginx 和 mkcert 实现本地 https://localhost 测试。

CSDN 如何将资源设置为免费? 安装和基本使用 进入 nginx 官网 下载 Mainline version 版本 解压到一个你喜欢的位置,比如解压到 C: 目录 不管配不配置环境变量,对 nginx 的所有操作都应该在对应文件夹中 基本命令的使用: cd …

性能测试 事务 -- HPE Virtual User Generator -Web -HTTP/HTML

软件介绍 Virtual User Generator ,记录用户流程并创建一个自动化性能测试脚本 Controller,单一控制点,轻松、有效地控制所有Vuser,执行期间监控场景性能 Analysis,生成性能测试报告,以图表形式呈现。 操…

2024图表分析网页模版大数据可视化大屏电子沙盘合集包含金融行业智慧大厅智慧交通智慧门店智慧物流智慧小区

2024图表分析网页模版大数据可视化大屏电子沙盘合集包含金融行业智慧大厅智慧交通智慧门店智慧物流智慧小区 项目介绍: 图表分析网页模版 大数据可视化大屏电子沙盘合集,项目基于html/css/js,包含行业: 智慧政务 智慧社区 金融行…

mysql 更新时,旧值与新值相同会怎么做?

文章目录 1 问题描述2 验证2.1 验证猜想12.2 验证猜想2 3 结论4 mysql 为什么这么设计呢? 1 问题描述 创建一张表t,插入一行数据 mysql> CREATE TABLE t ( id int(11) NOT NULL primary key auto_increment, a int(11) DEFAULT NULL ) ENGINEInnoDB…

第111讲:Mycat实践指南:固定Hash算法分片下的水平分表详解

文章目录 1.固定Hash算法分片的概念1.1.固定Hash算法的概念1.2.固定Hash算法是如何将数据路由到分片节点的 2.使用固定Hash算法分片对某张表进行水平拆分2.1.在所有的分片节点中创建表结构2.2.配置Mycat实现固定Hash算法分片的水平分表2.2.1.配置Schema配置文件2.2.2.配置Rule分…

unityprotobuf自动生成C#

Release Protocol Buffers v3.19.4 protocolbuffers/protobuf GitHub 导入Source code 里面的 csharp/src/Google.Protobuf 进入Unity 拷贝其他版本的 System.Runtime.CompilerServices.Unsafe进入工程 使用protoc-3.19.4-win32 里面的exe去编译proto文件为C# using Sys…

MybatisPlus-Generator自定义模版生成CRUD、DTO、VO、Convert等

个人博客:无奈何杨(wnhyang) 个人语雀:wnhyang 共享语雀:在线知识共享 Github:wnhyang - Overview 简介 如标题所言,本篇文章介绍如何使用MybatisPlus-Generator自定义模版生成CRUD、DTO、V…

Redis实战——查询缓存缓存穿透、雪崩、击穿

目录 为什么要使用缓存缓存的作用缓存的成本如何使用缓存缓存模型和思路缓存更新策略数据库和缓存不一致解决方案数据库和缓存不一致采用什么方案对比删除缓存与更新缓存如何保证缓存与数据库的操作同时成功/同时失败先操作缓存还是先操作数据库? 实现商铺缓存与数据…

Tensorflow笔记(二):激活函数、优化器等、神经网络模型实现(商品销量预测)

import tensorflow as tf import numpy as np from tqdm import tqdm# ----------------------------- tensor常用函数2 ----------------------------------- a tf.constant([1, 2, 3, 1, 2]) b tf.constant([0, 1, 3, 4, 5]) c tf.where(tf.greater(a, b), a, b) # 若a&g…

Linux下的多线程编程:原理、工具及应用(4)

🎬慕斯主页:修仙—别有洞天 ♈️今日夜电波:Flower of Life—陽花 0:34━━━━━━️💟──────── 4:46 🔄 ◀️ ⏸ ▶️ ☰ …

RuoYi-Vue开源项目2-前端登录验证码生成过程分析

前端登录验证码实现过程 生成过程分析 生成过程分析 验证码的生成过程简单概括为:前端登录页面加载时,向后端发送一个请求,返回验证码图片给前端页面展示 前端页面加载触发代码: import { getCodeImg } from "/api/login&q…

Spring6--基础概念

1. 概述 1.1. Spring是什么 Spring 是一套广泛应用于 Java 企业级应用开发领域的轻量级开源框架,由 Rod Johnson 创立,旨在显著降低 Java 企业应用的复杂性,缩短开发周期,并提升开发效率。Spring 不仅适用于服务器端开发&#x…

三个案例,带你看懂智能时代支撑降本增效的底层逻辑

2003年,“神舟五号”成功登上太空,2007年,乔布斯初代苹果发布会,2016年“天宫二号”与“神州十一号”自动交会对接成功,2022年ChatGPT横空出市。 科技发展速度令人惊叹,一不留神就步入了下一个科技时代&am…

【vue elementUI】el-select和弹出框el-option样式调整,::v-deep失效

组件自带样式: 修改后样式: 注意修改弹出框样式需要修改一个属性: 此属性默认值为true,此时可以看到弹出框是放在外面的,没有在el-select里面。此时设置弹窗样式会不生效,::v-deep无效。 需要将此属性改为f…