retinex图像增强算法的研究
图像增强方面我共研究了Retinex、暗通道去雾、ACE等算法。其实,它们都是共通的。甚至可以说,Retinex和暗通道去雾就是同一个算法的两个不同视角,而ACE算法又是将Retinex和灰度世界等白平衡理论相结合的产物。下面将依次讨论,每个算法写一个心得,欢迎拍砖。
今天先写Retinex。Retinex理论认为,人眼观测到的图像S是光照图像L和物体反射图像R的乘积。而R才是真实的恒常性的图像,但是怎么从观测图像S中计算R呢?这是个病态问题,根本不可解。研究者就通过加以一定的约束条件,比如光照L具有缓变平滑性、L与S有一定的弱相关性等等,然后估计出光照图像L,进而得到R。
从S中如何估计L,就衍生出了各种各样的实现方式,影响较大的有:中心环绕、随机路径、变分、金字塔迭代等等方法。其中,中心环绕算法无疑是影响最大的retinex实现方式,使用高斯尺度算子来估计光照图像,计算速度快。当然,它也有一些缺点:
1) 在强光阴影过渡区容易出现光晕现象;
主要是由于高斯算子不能在过渡区很好的估计光照所致。
2) 对比较亮的图像处理欠佳,比如雾霾图像。
主要原因有二:retinex不是专门的去雾算法;对数化处理压缩了亮区域的显示范围,导致其细节弱化。
由于L和R是乘积的关系,为了便于处理,一般对观测图像S先进行对数处理,这样就转换成了加性关系。使用对数处理可以极大的提升暗区域的像素值,以增加对比度,但代价是压缩了亮区图像的显示范围,导致其细节模糊甚至丢失。所以个人认为,retinex适用于处理那些光照不足黑不拉几的图像,对于比较亮的图像,不妨先进行反色处理再retinex。
3) 色彩保持能力较弱。
因为对rgb三个颜色通道各自归一化处理的缘故,有论文提到了一些改善方法,但我发现还是不容乐观。
此外,三通道各自归一化处理后,其颜色均值是接近于128的,如果后面再跟一个指数化操作(对数处理的反操作),将导致图像颜色明显偏暗,所以这是一般retinex算法只有对数处理没有指数处理的缘故。
所以,我对中心环绕算法做了一点点改进:
主要如下:
1)使用引导滤波来快速估计光照图像,减少光晕的出现,实验表明,该步骤对色彩保持能力也有一定的提升;
2)在使用多个尺度算子进行合成的时候,不是简单的做均值处理;
3)在完成retinex处理之后,再做一次简单的gamma校正,使其均值接近于128。
下面给实验结果图, 可见色彩保持的还不错哦,对雾霾图像也有较好的效果。
软件EXE下载地址:https://pan.baidu.com/s/1dFGBAP7
程序采用python实现,未经性能优化,exe中打包了python及numpy wxpython opencv等重量级模块,故体积较大,如杀毒软件误报为病毒,请信任运行。








retinex图像增强算法的研究的更多相关文章
- Retinex图像增强算法
前一段时间研究了一下图像增强算法,发现Retinex理论在彩色图像增强.图像去雾.彩色图像恢复方面拥有很好的效果,下面介绍一下我对该算法的理解. Retinex理论 Retinex理论始于Land和M ...
- 关于Retinex图像增强算法的一些新学习。
最近再次看了一下IPOL网站,有一篇最近发表的文章,名字就是Multiscale Retinex,感觉自己对这个已经基本了解了,但还是进去看了看,也有一些收获,于是抽空把他们稍微整理了下,原始文章及其 ...
- Retinex图像增强算法代码
http://www.cnblogs.com/sleepwalker/p/3676600.html?utm_source=tuicool http://blog.csdn.net/carson2005 ...
- 图像增强算法(直方图均衡化、拉普拉斯、Log、伽马变换)
一.图像增强算法原理 图像增强算法常见于对图像的亮度.对比度.饱和度.色调等进行调节,增加其清晰度,减少噪点等.图像增强往往经过多个算法的组合,完成上述功能,比如图像去燥等同于低通滤波器,增加清晰度则 ...
- KMP算法(研究总结,字符串)
KMP算法(研究总结,字符串) 前段时间学习KMP算法,感觉有些复杂,不过好歹是弄懂啦,简单地记录一下,方便以后自己回忆. 引入 首先我们来看一个例子,现在有两个字符串A和B,问你在A中是否有B,有几 ...
- Dinic算法(研究总结,网络流)
Dinic算法(研究总结,网络流) 网络流是信息学竞赛中的常见类型,笔者刚学习了最大流Dinic算法,简单记录一下 网络流基本概念 什么是网络流 在一个有向图上选择一个源点,一个汇点,每一条边上都有一 ...
- 基于MATLAB的人脸识别算法的研究
基于MATLAB的人脸识别算法的研究 作者:lee神 现如今机器视觉越来越盛行,从智能交通系统的车辆识别,车牌识别到交通标牌的识别:从智能手机的人脸识别的性别识别:如今无人驾驶汽车更是应用了大量的机器 ...
- R-Tree空间索引算法的研究历程和最新进展分析
转自原文 R-Tree空间索引算法的研究历程和最新进展分析,2008 摘要:本文介绍了空间索引的概念.R-Tree数据结构和R-Tree空间索引的算法描述,并从R-Tree索引技术的优缺点对R-Tre ...
- Java实现 蓝桥杯VIP 算法提高 研究兔子的土豪
试题 算法提高 研究兔子的土豪 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 某天,HWD老师开始研究兔子,因为他是个土豪 ,所以他居然一下子买了一个可以容纳10^18代兔子的巨大 ...
随机推荐
- Android View体系(三)属性动画
上一篇文章讲了View滑动的六种方法,其中一种是使用动画,这篇文章我们来讲一讲动画的其中一种:属性动画. 1.android视图动画和属性动画 视图动画我们都了解,它提供了AlphaAnimation ...
- JavaScript大杂烩1 - 理解JavaScript的类型系统
随着硬件水平的逐渐提高,浏览器的处理能力越来越强大,本人坚信,客户端会越来越瘦,瘦到只用浏览器就够了,服务端会越来越丰满:虽然很多大型的程序,比如3D软件,客户端仍然会存在,但是未来的主流必将是浏览器 ...
- LeetCode题解之Balanced Binary Tree
1.题目描述 2.问题分析 DFS. 3.代码 bool isBalanced(TreeNode* root) { if (root == NULL) return true; && ...
- The Tomcat connector configured to listen on port 8080 failed to start. The port may already be in use or the connector may be misconfigured
springboot 8080端口被占用报错:The Tomcat connector configured to listen on port 8080 failed to start. The p ...
- python——虚拟环境之virtualenv(windows10,64位)
1 问题 当我们拥有两个甚至多个项目A.B.C......,各个项目正常运行需求的python运行环境都不相同.而默认情况下,不管哪个项目,使用的都是全局的Python环境.上述情况,造成的问题就是, ...
- asp.net core 中使用StyleCop.StyleCopAnalyzers
1.nuget中安装 StyleCop.Analyzers 当前版本1.1.0-beta004 2.在项目根目录新增 stylecop.json文件 { "settings": { ...
- 【BZOJ2820】YY的GCD
[BZOJ2820]YY的GCD Description 神犇YY虐完数论后给傻×kAc出了一题 给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的( ...
- 如何在Windows平台下安装配置Memcached
Memcached是一个自由开源的,高性能,分布式内存对象缓存系统. Memcached是以LiveJournal旗下Danga Interactive公司的Brad Fitzpatric为首开发的一 ...
- Yii2.0页面提示消息
适用情况:比如提交一个表单,提交完成之后在页面展示一条提示消息. 控制器里面这样写: 单条消息: \Yii::$app->getSession()->setFlash('error', ' ...
- mvc:message-converters简单介绍
说说@ResponseBody注解,很明显这个注解就是将方法的返回值作为reponse的body部分.我们进一步分析下这个过程涉及到的内容,首先就是方法返回的类型,可以是字节数组.字符串.对象引用等, ...