目 录
1 引言 1
2 图像去雾算法 1
2.1 基于同态滤波的图像去雾算法 2
2.1.1 算法概述 2
2.1.2 同态滤波 3
2.1.3 模型简介 3
2.1.4 偏微分方程求解 4
2.2 基于直方图均衡化的图像去雾算法 7
2.2.1 算法概述 7
2.2.2 直方图修正技术的基础 7
2.2.3 直方图的均衡化 8
2.2.4 直方图均衡化的算法步骤 9
2.3 基于暗通道先验的图像去雾算法 10
2.3.1 算法概述 10
2.3.2 已有雾成像模型 10
2.3.2 暗通道先验 11
2.3.3 暗通道先验去雾算法分析 11
3 数字图像去雾系统的设计 12
3.1 开发工具—MATLAB 12
3.2系统设计 13
3.3 菜单设计 13
3.4 模块设计 14
3.5 界面设计 14
3.5.1 界面设计原则 14
3.5.2 界面设计步骤 14
4 数字图像去雾系统的实现 19
4.1图片打开模块 19
4.2基于同态滤波的图像去雾模块 19
4.2.1 同态滤波及光照分离代码 19
4.2.2 去雾效果图 21
4.2.3 结果分析 21
4.3基于直方图均衡化的图像去雾模块 22
4.3.1 代码 22
4.3.2 去雾效果图 23
4.3.3 结果分析 23
4.4基于暗通道先验的图像去雾模块 24
4.4.1代码 24
4.4.2 去雾效果图 25
4.4.3 结果分析 26
4.5图片保存模块 26
5 系统运行效果 27
5.1 整体界面运行效果 27
5.2 文件打开运行效果 27
5.2 基于同态滤波图像去雾效果图 28
5.3直方图均衡化图像去雾效果图 29
5.4基于暗通道先验的去雾效果图 30
5.5文件保存界面效果图 30
6 结论 31
3 数字图像去雾系统的设计
3.1 开发工具—MATLAB
MATLAB是由美国Mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
Matlab和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。具有以下的特点:[4]
(1)语言简洁紧凑,使用方便灵活,库函数极其丰富。运算符丰富。
(2)MATLAB既具有结构化的控制语句(如for循环,while循环,break语句和 if语句),又有面向对象编程的特性。
(3)程序限制不严格,程序设计自由度大。
(4)MATLAB的图形功能强大。
(5)MATLAB的缺点是,它和其他高级程序相比,程序的执行速度较慢。
(6)由于MATLAB的程序不用编译等预处理,也不生成可执行文件,程序为解释执行,所以速度较慢。
3.2系统设计
本系统实现了图像去雾功能。采用Matlab界面编程方法,设计了一个窗口,窗口中包含了五个个菜单,即文件打开菜单,基于同态滤波的图像去雾菜单,基于直方图均衡化的图像去雾菜单,基于暗通道先验的图像去雾菜单以及文件保存模块。
3.3 菜单设计
菜单包括普通菜单和弹出式菜单,都在菜单编辑器中创建。
PC平台上,默认情况下MATLAB图形窗口有一个顶层菜单,含有七个标准菜单选项:文件(File)、编辑(Edit)、显示(View)、插入(Insert)工具(Tools)、桌面(Desktop)、窗口(Windows)、帮助(Help)。每个菜单项都有下拉菜单,标准菜单受界面‘MenuBar’属性管理,该属性值取none或figure,取none时,图形窗不显示标准菜单及工具条,取figure时,图形窗显示标准菜单条,为了简洁,我们取属性值none,隐去标准菜单。
Matlab提供uimenu命令创建用户定制菜单,其典型调用格式为:
Hm=uimenu(H_parent,‘PropertyName’,Property,…)
其中,Hm为用户菜单句柄;H_parent为其父对象句柄;‘PropertyName’及Property
为二元对,分别为属性名及其属性值。
在用户菜单中,属性Label及Callback是最重要的属性,前者用于识别不同菜单项,后者用于产生相应动作,是菜单项发挥相应作用。
创建程序如下:
h_f=figure(1);
Set(h_f,‘menubar’,‘none’) ; %清除原来窗口的菜单条
h_menuf=unimenu(h_f,‘label’,‘File’); %创建菜单File
h_menuo=unimenu(h_menuf,‘label’,‘Open’); %创建下拉菜单Open
h_menus=unimenu(h_menuf,‘label’,‘Save’); %创建下拉菜单Save
h_menuf=unimenu(h_f,‘label’,‘图像去雾’); %创建菜单图像去雾
每个菜单项都有callback回调函数,本文转载自http://www.biyezuopin.vip/onews.asp?id=6860在创建好的菜单界面中单击“callback”后面的“View”按钮,或在GUI界面中打开M文件编辑器都可以回调函数。[5]
3.4 模块设计
本系统包含五个模块,文件打开模块,基于同态滤波的图像去雾模块,基于直方图均衡化的图像去雾模块,基于暗通道先验的图像去雾模块以及文件保存模块。系统模块结构图如下: