纯c语言实现的改进暗通道去雾算法测试程序(附赠大量测试图像),基于改进暗通道先验算法的图像去雾...
邱清辉
摘要:针对普通暗通道先验算法去雾能力的不足,本文提出了一种改进算法,通过采用高斯平滑将原图像分为基础子图和细节子图,基础子图采用暗通道先验算法,细节子图采用gamma变换方法,再采用图像融合进行融合,结果显示改进的算法,使得去雾后图像颜色效果更好,细节信息更多,能够满足工程上应用要求,具有很好的應用价值。
关键词:暗通道先验; 图像去雾;直方图
中图分类号:TP18 文献标识码:A
文章编号:1009-3044(2019)16-0196-02
开放科学(资源服务)标识码(OSID):
随着视频、图像采集越来越多,尤其在户外中,受天气中雾、霭以及沙尘等影响,采集拍摄的图像往往具有较多的失真,这无论是对拍摄的美感,还是对工程技术领域中目标的探测和识别都有很大影响。若能在户外不良天气下拍摄的失真图像中,采用相应算法最大限度无失真的恢复出原始的图片具有很大的意义[1][2][3][4]。
图像去雾的方法主要分为三大类别:(1)基于统计的图像增强算法包括直方图增强以及后续改进的限制对比度直方图增强等各种算法,这种算法简单有效,但是有可能造成图像细节的丢失,且对于浓雾天气算法会失效。(2)基于反射理论的图像去雾方法,主要是Retinex理论,这种算法往往会造成颜色的失真。(3)基于大气模型的方法,代表算法是HE的暗通道先验法,但是该方法仍然会造成一些细节的丢失。针对这个问题,本文采用高斯模糊的方法将原图分成高频分量和低频分量,采用暗通道先验证的算法增强低频分量再进行重构,从而保存了图像的细节信息。
1 暗通道先验算法
为了能够从大气传输退化的图像中恢复出原始的图像,He等在文献中给出了暗原色先验的方法,是通过对大量户外无雾图像的统计分析提出来的。He指出暗到通先验规律:在无雾户外采集图像中,其每个局部区域都极有可能存在阴影,每个局部区域至少会有一个颜色通道在某些像素上具有很低的灰度值,并且趋近于0。对于户外图像J,其模型为:
其中分母的[to]设置为0.5,用于防止t(x)的数值过小。对于环境光A的估计是取[Jdark]中前0.1非天空区域亮度最大的像素对应的原图中亮度值的平均值。
2 改进的算法
HE提出的暗道通先验算法原理相对简单,相对雾气较薄时可以产生良好的去雾效果,但是若针对雾霭较浓时,其效果就表现一般,需要提高图像的细节化处理,在此,可以对图像进行高频和低频分离处理,低频信息进一步直方图增强,高频信息进行滤波和校正。
采用的具体方法如图1所示的流程图所示。对于暗通道复原后的图像,通过暗道通先验算法进行色彩增强,再通过引导滤波对图像进行滤波、平滑处理,将图像中低频和高频进行分离,低频信息作为基础子图。同时对高频信息再进一步的高斯平滑,暗通道增强后的图像进行相减,获得了细节子图。此时再一次进行滤波和校正,通过Gamma变换调整细节子图的对比度。最后基础子图通过CLAHE算法进行动态范围增强,并对基础子图和细节子图进行图像融合处理,最终获得增强后的红外图像。
3 实验和分析
根据对暗道通先验改进算法进行实验,在雾霭较为严重的情况下,带有雾霭的图像采用普通直方图均衡的暗通道去雾方法与改进算法进行比较,如图2所示,可以发现的改进算法去雾具有更好的颜色效果,且动态范围更好,显示的细节信息更多。
4 结论
通过暗道通先验的分析,其实现比较容易,但当天气恶劣情况下,去雾能力明显不足,针对普通暗通道先验算法在复杂天气情况下去雾能力的不足问题,首先采用高斯平滑将原图像分为基础子图和细节子图,基础子图采用暗通道先验算法直方图增强,细节子图采用gama变换方法,最后采用图像融合进行融合,得出去雾图像颜色效果更好,细节信息更多,具有很好的应用价值。
参考文献:
[1] He K, Sun J, Tang X. Single image haze removal using dark channelprior[C]//IEEE Conference on Computer Vision and Pattern Recognition,2009:1956-1963.
[2] He K, Sun J, Tang X. Guided image filtering[J].IEEE Transactions onPattern Analysis & Machine Intelligence,2013,35(6):1397-1409.
[3] 郭璠,蔡自兴,谢斌,等.图像去雾技术研究综述与展望[J].计算机应用,2010,30(9):2417-2421.
[4] 王浩,张叶,沈宏海,等.图像增强算法综述[J].中国光学,2017,10(4):438-448.
【通联编辑:唐一东】
纯c语言实现的改进暗通道去雾算法测试程序(附赠大量测试图像),基于改进暗通道先验算法的图像去雾...相关推荐
- 服务器四通道内存性能提升,X79平台的内存测试:高频率四通道真的有意义吗?...
拼 命 加 载 中 ... 英特尔Sandy Bridge-E平台的最大特色之一,就是支持四通道内存技术,那么这个特色是否能带来系统性能上的飞跃呢?国外媒体Legit Reviews进行了一个小小的测 ...
- 基于改进Deeplabv3plus的自动驾驶场景分割系统 (源码&教程)
1.研究背景 随着人工智能技术的飞速发展,车辆的自动驾驶离人们的生活越来越近.自动驾驶整个运行流程中首先需要依赖各种车载传感器收集车辆周围的各种环境数据,进而利用各种分析算法分析得到计算机可感知的环境 ...
- 基于改进人工蜂群算法的K均值聚类算法(附MATLAB版源代码)
其实一直以来也没有准备在园子里发这样的文章,相对来说,算法改进放在园子里还是会稍稍显得格格不入.但是最近邮箱收到的几封邮件让我觉得有必要通过我的博客把过去做过的东西分享出去更给更多需要的人.从论文刊登 ...
- 图像去雾算法(二)基于暗通道先验算法学习笔记
在http://write.blog.csdn.net/postedit/78301999中介绍了图像去雾的相关研究方法,发现目前为止在图像去雾方面,何凯明博士基于暗通道先验的算法具有很好的效果,关于 ...
- 用ram实现寄存器堆_纯C语言实现bootloader
之前有用很少一部分汇编实现过bootloader,但经过后来慢慢改进,发现是可以用纯C语言实现嵌入式操作系统的引导. 下面是之前对不能完全使用C语言引导系统的几点说明: 1.C程序中所有的代码都是以函 ...
- 一种基于暗通道先验算法的图像去雾技术研究
目录 一.绪论 二.雾霭图像模型与暗通道先验 三.透射率估计 四.大气光值估计 五.实例分析 参考文献 一.绪论 图像去雾技术,是由何凯明.孙健等人在CVPR2009提出来的,并获得当年CVPR最佳论 ...
- 英汉字典程序C语言,分享纯C语言英汉字典源码
近期深受开源的精神影响,并为之深深感动,想了很久,今天把我代码积累多年的一个"英汉字典"公布. 研一的时候因为无聊或者因为兴趣,做了一个纯C语言的英汉字典.核心算法是KMP快速查找 ...
- 基于暗通道先验的单幅图像去雾算法小结
在开始之前,先看一组去雾的效果图. 1. 关于去雾的意义及算法 去雾在视频监控.航拍.遥感.自动/辅助驾驶等需要在室外复杂.恶劣天气下运行的视觉系统,都可能需要运用到这一技术. 目前去雾算法主要有两个 ...
- 使用纯C语言开始win32 sdk编程
使用纯C语言开始win32 sdk编程 今天开始加强用c语言进行win32 sdk编程的训练,不为别的,只为进一步加强自己对代码的感觉,加强快速写出正确代码的能力.因为c是如些地具有挑战性而灵活的语言 ...
最新文章
- mysql自定义函数实现,自定义oracle中decode方法
- 博主谈:聊聊我们说的网站优化
- 科大星云诗社动态20220110
- C++是不是类型安全的?
- Android Weekly Notes Issue #225
- javaScript执行环境、作用域链与闭包
- Linux C编程一些优秀的博客链接
- Android平台RTMP多实例推送的几种情况探讨
- Docker和容器如何改善eZ的软件开发
- data2vec!统一模态的新里程碑
- 【QT】简单易学的QT安装教程
- 中国研发经费投入逼近2万亿,保持两位数增速,企业成为主要力量
- 2018年最新从PayPal提现美金的方法(实战教程)!
- TikTok干货分享:月入20000美金的操作手法分享
- 01- SA8155P QNX LA/LV 启动(01) - startup
- 富文本wangEditor插件层级问题
- POJ 3384 Feng Shui(半平面交)
- 中兴c300 OLT配置SFU
- 数据存在内存里的格式是什么?
- 最快最好用的数据增强库「albumentations」 一文看懂用法
热门文章
- 微软为.NET程序员带来了最优的跨平台开发体验-WSL
- 初探SQL Server 2017 on Docker@macOS
- .NET Core运行时和基础类库性能提升
- Docker-Compose 一键部署Ningx+.Net Core+Redis集群
- 怎样在Redis通过StackExchange.Redis 存储集合类型List
- .NET 框架兼容性简介
- [转]Python 获取Windows管理员权限
- C语言试题二十九之编写函数int function(int lim,int aa[max])求出小于或等于lim的所有素数并放在aa数组中,该函数返回所求的素数的个数。
- Android之java.lang.OutOfMemoryError: Failed to allocate a ** byte allocation with **free bytes and 2M
- Android之FLAG_ACTIVITY_TASK_ON_HOME