一种基于卷积神经网络的图像去雾研究-含matlab代码

2023-11-17

一、绪论

雾是一种常见的大气现象,空气中悬浮的水滴、灰尘、细沙或其他颗粒等都会引起成像清晰度的降低。单幅图像去雾是一个病态问题,其关键是如何准确地估计成像过程中的大气透射率。现有的图像去雾方法普遍利用基于观察经验的先验知识来构建去雾模型。近几年,机器学习方法被逐步应用于图像去雾的研究中。

众所周知,人类的大脑可以在无附加信息的条件下从单个自然场景中迅速地识别出有雾区域。近几年,生物启发式的卷积神经网络在高层次视觉任务已取得成功的应用,如:图像分类、人脸识别、物体检测等。基于卷积神经网络的深度学习方法也开始逐步被应用于图像修复等低层次视觉任务。然而,现有的网络结构并不能被直接应用于单幅图像去雾。

二、去雾卷积网络

有雾图像的描述模型为:
I ( x ) = J ( x ) ∙ t ( x ) + A ( 1 − t ( x ) ) I\left( x \right)=J\left( x \right)\bullet t\left( x \right)+A\left( 1-t\left( x \right) \right) I(x)=J(x)t(x)+A(1t(x))
其中,I是实际观测的图像;J是没有雾情况下的理想场景图像,它仅与地物相关;A是大气的光亮度,图像去雾的实质是恢复从单幅图像Ⅰ恢复J和A;t是大气介质透射率,它与大气的厚度紧密相关,因而随像素的位置而变化。大气散射模型指出透射率估计是重构清晰图像的关键。

去雾卷积网络的网络结构由卷积、池化和非线性函数共同组成4个连续的操作层实现透射率估计,分别是:特征提取、多尺度映射、局部极值和非线性回归。其中,包含了3个卷积、1个最大池化、最大输出单元和BReLU激活函数。

2.1 特征提取

为解决图像去雾这一病态问题,传统去雾方法基于先验假设在输入图像中密集地提取与雾相关的特征,如:暗通道(Dark Channel)、色相差异(Hue Disparity)、颜色衰减(Color Attuation)等。注意到,密集的特征提取可等价于线性的卷积操作和独特的非线性映射。因此,受经典先验特征中颜色通道极值的启发, DehazeNet采用独特的激活函数——最大输出(Maxout)单元用于非线性映射与特征降维。Maxout单元是一种简单的前馈非线性激活函数,常用于多层感知机(Multilayer Perceptron,MLP)和卷积神经网络(Convolutional Neural Network, CNN)。当应用于CNN时,Maxout单元将输入特征图的k个通道分为一组,分别对各组执行像素级的最大值操作。基于“卷积+Maxout”, DehazeNet 第一层的特征提取可表示为:

在这里插入图片描述

其中, W 1 {{W}_{1}} W1 B 1 {{B}_{1}} B1分别表示滤波器的权值和偏置,*表示卷积操作。在这里插入图片描述是k ×n1个f1×f1的卷积滤波器,其中3是输入图像的通道数。 Maxout 单元映射 kn1维的卷积结果并输出 n1 维的特征图,取代传统先验特征实现自动化的雾相关特征提取。

2.2 多尺度映射

在前期去雾工作中,多尺度特征被证明在图像修复中的有效性。多尺度特征不仅可刻画不同尺度的物体,还可有效地应对物体的尺度变化。例如, GoogLeNet中的inception结构并联多个不同尺度的滤波器,解决了图片分类中物体的尺度对齐问题,并在 ILSVRC14中取得最好效果。受多尺度特征提取的启发,在第二层结构中并联三组个数相同、尺度不同的卷积操作,滤波器尺度包括3×3、5×5 和7×7。数学形式上,该第二层的多尺度映射可表示为:

F 2 i = W 2 [ i / 3    ] , ( i \ 3 ) ∗ F 1 + B 2 [ i / 3    ] , ( i \ 3 ) F_{2}^{i}=W_{2}^{\left[ {i}/{3}\; \right],(i\backslash 3)}*{{F}_{1}}+B_{2}^{\left[ {i}/{3}\; \right],(i\backslash 3)} F2i=W2[i/3],(i\3)F1+B2[i/3],(i\3)

W 2 {{W}_{2}} W2 B 2 {{B}_{2}} B2分别包含n2个可分解为3组的权值和偏置。其中,n2是第二层网络的输出,i∈[1, n2]是输出特征图的索引,⌈·⌉表示向上取整,\表示取余操作。

2.3 局部均值

为获取空间不变性,视皮层复杂细胞对简单细胞的响应进行非线性的特征整合。Ilan等人提出复杂细胞的空间整合机理可描述为一系列的池化操作。根据CNN的经典结构,邻近像素间的局部最大值操作可增强特征空间变化的鲁棒性。此外,局部极值操作符合透射率的局部一致性假设,此假设被普遍地应用于透射率的估计误差消除。因此,局部极值操作为去雾卷积网络的第三层,表示为:
在这里插入图片描述
其中, Ω (x) 是以 x 为中心的f3×f3邻域,第三层特征的输出维度 n3 = n2。不同于标准卷积网络中最大池化降低特征图的分辨率,局部极值操作是最大值滤波器,其密集地应用于特征图中的每个像素点,因此更好地保持了图像的细节分辨率。

2.4 非线性回归

在深度学习中,常用的非线性激活函数主要包括:Sigmoid 函数和修正线性单元(Rectified Linear Unit, ReLU)。Sigmoid 函数由于两端的响应饱和,容易出现梯度弥散现象,并可能导致网络收敛缓慢或陷入局部最优解。为解决梯度弥散的问题,ReLU提供了稀疏的特征响应。然而,ReLU的提出主要针对图像识别的分类问题,而非图像重构的回归问题。 ReLU 的输出只抑制了小于 0 的值,这可能会导致响应溢出,特别是图像重构问题中 [0, 1] 的有限响应输出。为了解决响应溢出的问题,采用双边修正线性单元(Bilateral Rectified Linear Unit, BReLU),如下图所示:

在这里插入图片描述

图1 修正线性单元(ReLU)和双边修正线性单元(BReLU)

BReLU是一种新的激活函数,既保持双边修正又保证局部线性。基于 BReLU,输出层可定义为:
在这里插入图片描述
其中, W4 ={W4} 包含一个尺度为 n3×f4×f4 的滤波器, B4 = {B4} 是其偏置, tmin;max是BReLU的修正边界(文中tmin=0,tmax=1)。根据上式, BReLU 激活函数的梯度可表示为
在这里插入图片描述

三、实验与分析

基于卷积神经网络的图像去雾结果如下图所示,去雾效果明显。

在这里插入图片描述

四、Matlab代码获取

上述matlab代码可私信博主。


博主简介:擅长智能优化算法信号处理图像处理机器视觉神经网络等领域Matlab仿真以及实验数据分析等,matlab代码问题、商业合作、课题选题与指导等均可私信交流


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一种基于卷积神经网络的图像去雾研究-含matlab代码 的相关文章

  • 在 MATLAB 中模拟 C++ 模板

    我试图找出创建 C 模板或 Java 通用对象的替代方案的最佳方法 出于多种不同的原因 我过去曾多次想这样做 但现在我想做的是为几个相关的类创建 saveobj 和 loadobj 函数 我的想法是 我想要一组通用的例程来创建默认结构 然后
  • MATLAB 编译器与 MATLAB 编码器

    两者有什么区别 据我了解 MATLAB Compiler将MATLAB代码包装成 exe文件 这样就可以在不安装MATLAB的情况下使用它 并且只需要MCR 除此之外 MATLAB Builder NE 还可以用于生成与 Net 框架一起使
  • 以 2 为底的矩阵对数

    Logm 取矩阵对数 并且log2 取矩阵每个元素以 2 为底的对数 我正在尝试计算冯 诺依曼熵 它涉及以 2 为底的矩阵对数 我该怎么做呢 如果将 以 2 为底 的矩阵指数定义为B expm log 2 A 或者如果您类似地通过特征分解直
  • 在matlab中不使用for循环检查数组中的成员资格

    我想简化这段代码 使其无需 for 循环即可工作 for i 1 N for j 1 N if ismember j A PID i i TFP i j PID i i end end end 其中A是一个包含一些标签的矩阵 我之前存储的T
  • 获取向量幂的有效方法

    我编写了一个代码 在数值上使用勒让德多项式直至某个高 n 阶 例如 case 8 p 6435 x 8 12012 x 6 6930 x 4 1260 x 2 35 128 return case 9 如果向量x太长这会变得很慢 我发现说之
  • 将 kinect RGB 和深度值转换为 XYZ 坐标

    我正在寻找一种简单的方法将 kinect RGB 和深度值转换为 XYZ 坐标 使用 MATLAB 我的目标是一个输入为以下内容的函数 每个点的 RGB 和深度值Kinect相机 并输出 每个点的 x y 和 z 值 RGB 深度 RGB
  • matlab 中的动画绘图

    我正在尝试创建一个三角形的动画图 最终结果应该是十个三角形 后面跟着两个更大的三角形 后面跟着一条直线 使用matlab文档 https de mathworks com help matlab ref drawnow html 我最终得到
  • 通过颜色渐变修补圆

    我正在尝试绘制一个颜色渐变 我希望它沿轴均匀 在下图由角度定义的情况下 pi 7 当我使用patch命令 绘图与所需的梯度方向匹配 但沿其方向并不均匀 沿圆的点之间形成各种三角形 这是代码 N 120 theta linspace pi p
  • 绘制布朗运动 matlab

    首先 我只想说我不太习惯使用matlab 但我需要一个作业 我应该创建一个 布朗运动 我的代码目前如下所示 clf hold on prompt Ge ett input size input prompt numParticles inp
  • 氡变换线检测

    我正在尝试检测灰度图像中的线条 为此 我在 MATLAB 中使用 Radon 变换 我的 m 文件的示例如下所示 我可以使用此代码检测多行 我还使用线条的移位和旋转属性来绘制线条 但是 我不明白在获取rho和theta值后如何获取检测线的起
  • Matlab strcat 不返回字符串?

    imgstr 无法识别 strcat 的输出字符串 homedir C Users images for img 01 bmp 02 bmp 03 bmp imgstr strcat homedir img I imread imgstr
  • MATLAB 中的逻辑数组与数值数组

    我正在比较两个二进制数组 我有一个数组 其中值可以是一或零 如果值相同则为 1 如果不同则为零 请注意 我正在做检查之外的其他事情 因此我们不需要进入矢量化或代码的性质 在 MATLAB 中使用数值数组和逻辑数组哪个更有效 Logical
  • Blob 的簇生长

    考虑以下来自 Mathworks 的图像 我已经用标签标记了斑点 L num bwlabel I 如何迭代连接所有斑点 即从一个斑点开始 找到离它最近的一个 考虑最左边的两个斑点 可以从一个斑点的许多点绘制许多条线来连接到另一个斑点blob
  • matlab中优先级队列的实现方法

    matlab中有没有提供minpriorityqueue功能的库 import java util PriorityQueue import java util public class MyQueue Comparator
  • Matlab 中的 3D 堆叠条形图

    我想在一个图中绘制多个堆叠条形图 detached 条形图 例如 准确地想象一下bar http mathworks com help matlab ref bar3 detached png绘图 但堆叠在一起 而不是单一颜色 Set up
  • 在Matlab图例中使用Latex?

    我的 matlab 不接受我的 Latex 例如 如果我使用legend b 6 rightarrow b 7 它没有向我显示箭头 我该如何解决这个问题 尝试使用 Latex 解释器 例如 legend b 6 rightarrow b 7
  • 在 Matlab/Java 中将手部运动建模为 3D 曲线

    我只需要一些关于我遇到的问题 在哪里查看等的指导 我在我的一个项目中使用了运动跟踪手套 它返回每个手指和手掌的 X Y 和 Z 值 我想做的是首先根据这些坐标创建每个手指运动的表示 然后将它们每个附加到手掌的运动 以获得手的表示 一旦我完成
  • 用于读取csv写入数组的c++程序;然后操作并打印到文本文件中(已经用 matlab 编写)

    我想知道是否有人可以帮助我 我正在尝试构建一个程序 从 csv 文件中读取大小未知的浮点数大数据块 我已经在 MATLAB 中编写了此代码 但想要编译和分发此代码 因此转向 C 我只是在学习并尝试阅读本文以开始 7 5 19892 4 23
  • 使用网络计算机进行 Matlab 并行处理

    我熟悉matlabpool and parfor用法 但我仍然需要加快计算速度 我的 1GB 网络中有一台功能更强大的计算机 两台计算机都有 R2010b 并且具有相同的代码和路径 使用两台计算机进行并行计算的最简单方法是什么 我今天使用的
  • Matlab的uicontrol在Octave中的实现?

    我正在尝试在 Octave 中运行我们实验室中使用的图形程序的 m Matlab 代码 Octave 告诉我代码中使用的函数 uicontrol 没有定义 经过一番搜索 我发现 JHandles 包有一个 uicontrol GUI 功能的

随机推荐

  • 快手直播怎么引流?快手直播效果怎么样?每个人对时尚的定义不同

    快手直播怎么引流 快手直播效果怎么样 每个人对时尚的定义不同 快手直播效果怎么样 每个人对时尚的定义不同 对于普通人来说 都会有对美的追求 比如找到适合自己的穿搭 适合自己的美妆 几乎每一种时尚风格在快手平台都能有被老铁认可的机会和其存在的
  • mysql常用的hint(原创)

    转自 http linux chinaunix net techdoc database 2008 07 29 1021449 shtml 对于经常使用Oracle的朋友可能知道 oracle的hint功能种类很多 对于优化sql语句提供了
  • 网络部署运维实验(pat 端口映射含命令)

    作者 小刘在这里 每天分享云计算网络运维课堂笔记 疫情之下 你我素未谋面 但你一定要平平安安 一 起努力 共赴美好人生 夕阳下 是最美的 绽放 愿所有的美好 再疫情结束后如约而至 目录 一 实验简介 二 图纸 三 实验命令 一 实验简介 本
  • 区块链开发团队,公链开发才是主战场

    在区块链技术开发公司不断完善的当下 很多企业都想加入进来 有远见的人永远能嗅到区块链未来市场的发展趋向 以区块链技术开发实体企业应用 在空白的市场里拥有无限开发潜力 而创业者要做的就是快人一步 才能夺得市场先机 我们团队作为一家专业的区块链
  • python统计字符串中,字母的个数、数字的个数、其它字符个数。

    str input 请输入 letter 0 num 0 other 0 for i in str if i isdigit num 1 elif i isalnum letter 1 else other 1 print letter n
  • axios post传递对象_POST 方法的content-type类型

    content type是http请求的响应头和请求头的字段 当作为响应头时 告诉客户端实际返回的内容的内容类型 作为请求头时 post或者put 客户端告诉服务器实际发送的数据类型 在前端开发过程中 通常需要跟后端工程师对接接口的数据格式
  • React 条件渲染最佳实践(7 种方法)

    在 React 中 条件渲染可以通过多种方式 不同的使用方式场景取决于不同的上下文 在本文中 我们将讨论所有可用于为 React 中的条件渲染编写更好的代码的方法 条件渲染在每种编程语言 包括 javascript 中都是的常见功能 在 j
  • 线性dp的题目汇总

    恩 挺多 慢慢看 衔接在此
  • ccrypt 在 Windows上的使用教程

    ccrypt是个加密解密工具包 一般情况下在Linux上使用 这是个windows版的使用教程 请注意 ccrypt是一个 命令行 程序 它只能从DOS提示符或shell中运行 它不是那种双击就能运行的程序 step1 到官网下载对应的安装
  • gvim for verilog简易配置

    目录 前言 一 gvim的主题和字体资源 二 gvim编辑器基本配置 三 gvim针对verilog配置 总结 前言 分别介绍了gvim的主题和字体资源推荐 gvim编辑器基本配置和针对verilog的配置 以下为正文 一 gvim的主题和
  • 递归算法(demo:斐波那契数列的实现,树的遍历,快速排序)

    递归算法 执行代码 并没执行完全的时候调用自己本身 然后等待条件不满足递归的时候 完全执行代码 执行完全后返回上一层 执行未完成的部分 递归算法与for where循环可以相互转换 通过一定的方案达到一样的效果 比如for循环可以通过栈 实
  • MacOS IDEA配置scala

    1 前提 scala已经在mac本地安装 2 新建项目后 点击项目 右键 点击Add Framwork Support 3 找到scala 刚开始时 scala dk 2 11 8 是没有的 需要自己找 所以点击create 再点击Brow
  • 使用DQN训练Grid_word任务

    Tensorflow实战 一书中 强化学习一章里讲到了DQN网络 很有感触 在这里和大家分享一下 DQN网络也是Q learning的升级版 在原有的Q learning中加入了卷积层 由于深度学习需要大量的样本数据 DQN也就引入了Exp
  • 常见的计算机局域网络的拓扑结构是,局域网常见的拓扑结构有哪三种

    大家好 我是时间财富网智能客服时间君 上述问题将由我为大家进行解答 局域网常见的拓扑结构有星型结构 环型结构和总线型结构 1 星型结构 这种结构是目前在局域网中应用得最为普遍的一种 在企业网络中几乎都是采用这一方式 星型网络几乎是Ether
  • 目标检测和语义分割常用的数据增强(代码)

    语义分割 from PIL import Image ImageFont ImageDraw ImageEnhance import matplotlib pyplot as plt import numpy as np import ra
  • xshell5产品秘钥

    xshell5产品秘钥 150105 116578 999990 转载于 https www cnblogs com lxcmyf p 7551610 html
  • 打开VMware虚拟机时提示“内部错误”

    解决方法 输入命令行 services msc打开服务 将上述服务重启 可以正常进入虚拟机
  • 移动Web:媒体查询及手机端PC端识别

    媒体查询 响应式布局的核心 能够检测视口的宽度 然后编写差异化的 css 样式调整网页的布局方式 响应式布局原理 根据 UI 设计稿需求合理设置响应断点 配合媒体查询书写差异化CSS样式 响应断点是指媒体查询所采用的视口的宽度 作用 将屏幕
  • SAR: 1 4 https://www.vulnhub.com/entry/sar-1%2C425/

    SAR 1 About Release Back to the Top Name Sar 1 Date release 15 Feb 2020 Author Love Series Sar Download Back to the Top
  • 一种基于卷积神经网络的图像去雾研究-含matlab代码

    目录 一 绪论 二 去雾卷积网络 2 1 特征提取 2 2 多尺度映射 2 3 局部均值 2 4 非线性回归 三 实验与分析 四 Matlab代码获取 一 绪论 雾是一种常见的大气现象 空气中悬浮的水滴 灰尘 细沙或其他颗粒等都会引起成像清