改进的基于均值滤波的单幅图像去雾算法研究

吴延海,张婧,陈康
西安科技大学 学报, 2016

本文是在《基于单幅图像的快速去雾》基础上进行改进。主要改进有以下几点:

  • 对《基于单幅图像的快速去雾》求出的L进行直方图修正。(也就是T的修正)
  • 采用四叉树分裂算法求A,避免图中局部高亮雾图对A的影响。
  • 对恢复的图像进行后处理。

1.投射图T

与《基于单幅图像的快速去雾》一样,求出:
V(x)=min⁡(min⁡(emav,0.9)Mave(x),M(x))V(x)=\min \left(\min \left(e m_{\mathrm{av}}, 0.9\right) M_{\mathrm{ave}}(x), M(x)\right) V(x)=min(min(emav​,0.9)Mave​(x),M(x))
此处V(x)=A(1−t(x))V(x)=A(1-t(x))V(x)=A(1−t(x))。

此后对V进行修正。这里修正的原因是:

由于天空或明亮区域不满足暗原色先验规律,故造成大面积的色彩失真,均值滤波对天空区域或明亮区域的大气散射函数去雾力度过大,导致本来相差几个像素值被放大到几倍或几十倍,特别是当R,G,B三通道方向不一致时,所有的落差得到叠加,这就形成了天空或明亮区域的色彩失真。

ps:这里故事讲的有问题,其实原文基于均值滤波,并没有任何地方关系到暗通道先验,所以修正的理由有问题,问题提的有问题。

于是,作者经过大量实验(没有详细描述、证明)发现天空区域或者明亮区域的归一化直方图有以下特点:

  • 天空区域的亮度值高于非天空区域,并且几乎不会交接;(天空区域亮度高,且近似空间连续)
  • 天空区域在直方图右端分布较集中,表现为一个显著的尖峰。(天空区域在直方图的右端,即灰度值明显高区其他区域)

故本文提出一个天空区域的保护因子Thr(其实就是一个阈值),避免天空失真。(其实去雾中天空色彩失真的大部分原因是A值评估的不准确)。本文修正方法如下:

  • 对V(x)做归一化直方图R(x),取R(x)最大值点对应的灰度值为a。(如上图a=190,目测结果)。
  • 利用大津法对R(x)进行阈值分割,即为b(上图b=100)。
  • 在a、b之间找到直方图的最小极值点c(上图为c=140)。故Thrr=c=140.
  • 实验中得出一个先验模式:R(Thr)&lt;0.0015R(Thr)&lt;0.0015R(Thr)<0.0015,则认为存在天空区域,此时Thr=A−ThrrThr = A-ThrrThr=A−Thrr,即直方图中尖峰宽度([140,190]);否则不存在天空区域,设定Thr=0.1。(感觉这里比较没有说服力,天空判断过于粗糙,难以应对复杂场景)。

至此,重新修正V得:
V(x)=min⁡(abs(I−A)Thr,1)⋅ω⋅min⁡(min⁡(emav,0.9)Mave(x),M(x))\begin{array}{c}{V(x)=\min \left(\frac{a b s(I-A)}{T h r}, 1\right) \cdot \omega \cdot \min (\min }{\left(e m_{\mathrm{av}}, 0.9\right) M_{\mathrm{ave}}(x), M(x) )}\end{array} V(x)=min(Thrabs(I−A)​,1)⋅ω⋅min(min(emav​,0.9)Mave​(x),M(x))​
其中ω=0.95\omega=0.95ω=0.95,表示去雾程度,与DCP论文一样。I为雾图。

2.大气光A

通常选择雾天退化图像中雾浓度最大的像素点的值作为大气光A的强度。但是实际场景往往是比较复杂,特别是存在明亮区域或白色物体时,大气光的估计会出现较大的偏差。而DCP论文采用按通道图最大的前0.1%像素点的最亮点作为A。但这种方法慢,而且途中存在白色物体时不准确。

本文采用四叉树分裂算法求A(该方法出自下文)。

Kim J H,Jang W D,Sim J Y,et a1.Optimized contrastenhancement for real-time image and video dehazing [J].Journal of Visual Communication&Image Representation,2013,24(3):410—425.

方法步骤:

  • 首先求出图像的通道最小值
  • 然后将通道最小值图像划分成4个区域,分别计算各区域平均亮度,取区域中均值最大的区域重复划分,直到该区域的大小小于给定阈值,一般设阈值为20×20。
  • 最后根据所标记图像的位置计算原雾图中R,G,B通道中此块的均值作为A值。

附四叉树分裂算法matlab代码:

I = imread('img\example-02-haze.png');
% 1.注意图像size必须是2的n次方
I = imresize(I,[512 512]);
% 2.输入图像必须是单通道图像
I = rgb2gray(I);
S = qtdecomp(I,0.9);% 在途中绘制四分结果
for dim = [512 256 128 64 32 16 8 4 2 1];   numblocks = length(find(S==dim));   if (numblocks > 0)   [values, r, c] = qtgetblk(I, S, dim);%读取S中所有尺寸为dim x dim的block,r和c是所有块的左上角点位置values(1:end,1,:)=0;%直接修改所有block的左、上边界为黑色。注意values是三维矩阵!!values(1,1:end,:)=0;I= qtsetblk(I,S,dim,values);%直接用修改后的block去替换S中的现有blockend
endI(end,1:end) = 0;
I(1:end,end) = 0;figure, imshow(I,[])

3.图像色调调整(去雾结果后处理)

原因是恢复后的图相色调偏暗,所以需进行色调调整。不是重点,不再详细介绍,通常采用伽马校正也可。

4.本文的另一个有意义的地方是客观评价更为科学,采用可见边梯度法对去雾算法做客观评价。该盲评价方法出自下文

Hautiere N , Tarel J P , Aubert D , et al. Blind contrast enhancement assessment by gradient ratioing at visible edges.(Report)[J]. Image Analysis & Stereology, 2011, 27(2):87-95.

吴延海, 张烨, 马孟新. 基于NSCT变换和压缩感知的图像融合[J]. 西安科技大学学报, 2015(04):480-485.

该方法用复原后的新增可见边之比、可见边的规范化梯度均值和时间来评价图像的复原效果。
e=nr−n0n0r=g‾rg‾0\begin{aligned} e &amp;=\frac{n_{\mathrm{r}}-n_{0}}{n_{0}} \\ r &amp;=\frac{\overline{g}_{\mathrm{r}}}{\overline{g}_{0}} \end{aligned} er​=n0​nr​−n0​​=g​0​g​r​​​
n0n_0n0​和nrn_rnr​分别代表原图像和去雾图像中的可见边的数目,则e表示新增可见边的比例。g‾0\overline{g}_{0}g​0​和g‾r\overline{g}_{\mathrm{r}}g​r​分别表示原有图像和去雾图的平均梯度,通常e和r越大表示复原图像的质量越高。

【论文阅读】改进的基于均值滤波的单幅图像去雾算法研究相关推荐

  1. 导向滤波算法 java_一种基于双通道先验和侧窗导向滤波的单幅图像去雾方法与流程...

    本发明属于计算机图像处理的领域,用于图像或者视频去雾等相关领域:具体涉及一种基于双通道先验和侧窗导向滤波的单幅图像去雾方法. 背景技术: 图像采集过程中,由于雾天的影响,使得景物的能见度大幅降低,再加 ...

  2. 基于暗通道先验的单幅图像去雾算法小结

    在开始之前,先看一组去雾的效果图. 1. 关于去雾的意义及算法 去雾在视频监控.航拍.遥感.自动/辅助驾驶等需要在室外复杂.恶劣天气下运行的视觉系统,都可能需要运用到这一技术. 目前去雾算法主要有两个 ...

  3. 基于Vision Transformer的图像去雾算法研究与实现(附源码)

    基于Vision Transformer的图像去雾算法研究与实现 0. 服务器性能简单监控 \LOG_USE_CPU_MEMORY\文件夹下的use_memory.py文件可以实时输出CPU使用率以及 ...

  4. 【计算机视觉课程设计】基于暗通道先验单幅图像去雾算法的实现(MATLAB)

    声明:原创内容,创作不易,欢迎点赞收藏~ 摘    要 随着信息化时代的到来,计算机视觉得以迅速发展,在社会生活中的各个领域发挥了重要作用.然而,近年来大气污染逐渐加重,雾霾天气出现的频率越来越高,导 ...

  5. 基于暗原色先验的单幅图像去雾——算法复现

    基于暗原色先验的单幅图像去雾--算法复现 MOOC 数字图像处理的大作业学习 暗原色先验理论 暗原色先验是对无雾图像的统计规律,对无雾的图像的研究,发现在绝大多数户外无雾图像的任意局部小块中,总存在一 ...

  6. matlab求图像暗通道图像,基于暗通道先验条件图像去雾算法

    基于暗通道先验条件图像去雾算法 香港大学何凯明博士于2009发表了一篇论文<Single Image Haze Removal Using Dark Channel Prior>.在文章中 ...

  7. 基于暗通道优先的单幅图像去雾算法(Matlab)

    基于暗通道优先的单幅图像去雾算法(Matlab) 每一幅图像的RGB三个颜色通道中,总有一个通道的灰度值很低,几乎趋向于0.基于这个几乎可以视作是定理的先验知识,作者提出暗通道先验的去雾算法. ​ 首 ...

  8. 基于偏振差分成像的图像去雾算法

    Polarization-based vision through haze Yoav Y.Schechner,Srinivasa G.Narasimhan,and Shree K.Nayar Col ...

  9. 基于MATLAB改进暗通道先验的图像去雾算法

    基于MATLAB改进暗通道先验的图像去雾算法 摘要:暗通道先验去雾算法求得的的透射率比较精细,去雾效果优于大多数去雾算法.然而在暗通道求取过程中,最小值滤波的处理会使得暗色向外扩张,导致透射率扩张变大 ...

最新文章

  1. (发现)问题才是推动创新的动力系列:两种类型硬币(均匀和非均匀)能否用第一次得正面朝上的概率推断“第一第二次依次获得正面反面情况”的概率?
  2. pycharm打开报错python已经停止工作
  3. 2020年中国智慧城市发展值得关注的技术
  4. 社会学专业喜欢计算机怎么办,考研困惑我是计算机专业的学生可是我喜欢文学想考河北师范大学的研究 爱问知识人...
  5. Android之Service与IntentService的比较
  6. DECRIBE / EXPLAIN
  7. js优化阿里云图片加载(一)
  8. Qt工作笔记-各种构造函数汇总以及运算符重载(入门必备)
  9. bugzilla使用_如何使用Bugzilla提交错误报告
  10. C++新特性探究(一):nullptr
  11. mp.weixin.php,GitHub - temberature/mp-php-sdk: 微信公众平台第三方授权php开发包, weixin mp developer SDK....
  12. Java web--过滤器
  13. Kali linux 学习笔记(十三)主动信息收集——端口扫描(UDP扫描、TCP扫描) 2020.2.22
  14. java边缘检测_Sobel边缘检测实现
  15. dos 命令检索文件
  16. 恢复Windows默认文件资源管理器(Files设置后,恢复亲测可用)
  17. Java中int和byte的互相转换
  18. P236 练习1 声明另一个类的变量当属性
  19. C语言绘制单项正弦电压波形图,正弦交流电压波形图为例讲解“五点法”画波形图的方法...
  20. s3c2440存储控制器详解

热门文章

  1. 【技术科普】区块链世界也存在多元宇宙
  2. 大学计算机基础教学大纲,大学计算机基础教学大纲
  3. Dom 中 children 与childNodes 的区别
  4. 图片随鼠标滑轮滚动变大变小
  5. 【MySQL】 # MySQL相关面试题
  6. 监控文件变化 (Python—看门狗)
  7. 认识Linux系统结构
  8. 2.k-均值(k-means)聚类算法
  9. MonoRail学习笔记十五:文件上传
  10. vue 点击遮罩层功能区以外的地方关闭遮罩层