最近再次看了一下IPOL网站,有一篇最近发表的文章,名字就是Multiscale Retinex,感觉自己对这个已经基本了解了,但还是进去看了看,也有一些收获,于是抽空把他们稍微整理了下,原始文章及其配套代码详见:http://www.ipol.im/pub/art/2014/107/

之前在我的 带色彩恢复的多尺度视网膜增强算法(MSRCR)的原理、实现及应用 一文中已经较为详细的描述了Multiscale Retinex的基本原理和应用,这里就不再做过多的说明。为表述方便,还是贴出其基本的计算原理:

    

  上式中,I为原始输入图像,F是滤波函数,一般为高斯函数,N为尺度的数量,W为每个尺度的权重,一般都为1/N, R表示在对数域的图像的输出。

  由于R是对数域的输出,要转换为数字图像,必须将他们量化为[0,255]的数字图像范畴,关于这个量化的算法,有这极为重要的意义,他的好坏直接决定了最终输出的图像的品质。

  目前,结合上述文章中提出的一些过程,有4种方式进行处理:

  第一种,也是最容易想到的就是,直接线性量化,即采用下式进行处理:

       

  这种方式,由于Retinex数据处理后的高动态特性,数据分布很广,会出现严重的两极化现象,一般难以获得满意的结果。

  第二种,就是在经典的MSRCR文章《A Multiscale Retinex for Bridging the Gap Between Color Images and the Human Observation of Scenes》中提出的Canonical Gain/Offset 算法。计算公式如下:

         

  其中G和b为经验参数。

  第三种,实在上述文章中提到的Simplest Color Balance(我简写为SCR)方式,这种方式的处理类似于Photoshop中的自动色阶,他把数据按照一定的百分比去除最小和最大的部分,然后中间的部分重新线性量化到0和255之间。

  第四种,就是GIMP的Retinex算法,这个可详见 带色彩恢复的多尺度视网膜增强算法(MSRCR)的原理、实现及应用 一文的描述。

  还有一种方式,就是大家知道HDR的过程吧,他也是将高动态的数据量化到图像的可视范围,因此可以直接将这类算法应用与这个问题上。我也做了实验,效果似乎一般。

  在用第二种或第三种方式处理时,最好还需要有个Color Restoration的过程,因为如果直接对MSR处理的结果进行量化,得到的图像往往整体偏灰度,这是由于原始的彩色值经过log处理后的数据范围就比较小了,这样各通道之间的差异也很小,而之后的线性量化比log曲线要平滑很多,因此整体就丧失了彩色。

  论文中提出了修正方式如下:

          

          

          

   其中β=46,α=125为经验参数,但是最终我的分析认为β不可能取这么大,取1试验表明效果还不错。

   对于一些原始图像HUE较为合理的图,如果用经典的MSRCR算法,会导致处理后的图容易偏色,上述论文提出了对图像的Intensity数据进行Retinex处理,然后再把数据根据原始的RGB的比例映射到每个通道,这样就能在保留原始颜色分布的基础上增强图像,文章中称其为MSRCP。

  这个算法的编码论文的附带代码里已经有了很好的例子了,其实真是很简单的工作,需要的朋友自己去参考。

  我自己做了5种算法的比较,分别是:

      MSRCRGIMP    -    Gimp内嵌的Retinex增强算法

      MSRCRStandard  -    按照《A Multiscale Retinex ....  the Human Observation of Scenes》一文写的算法,其中G=30,B=-6,β=1,α=125

      MSRCRSCR      -          使用Color Restoration + Simplest Color Balance算法量化得到的结果

        MSRCPSCR      -          使用Intensity数据 + Simplest Color Balance算法量化得到的结果

      MSRHSV      -    对HSV空间的V分量进行(用的SCR量化)Retinex处理并返回RGB空间后的结果

  他们的效果比较如下:

  

        original                         MSRCRGIMP                                   MSRCRStandard

  

          MSRCRSCR                        MSRCPSCR                        MSRHSV

  

        original                           MSRCRGIMP                                MSRCRStandard

  

       MSRCRSCR                            MSRCPSCR                        MSRHSV

  

        original                           MSRCRGIMP                                MSRCRStandard

  

        MSRCRSCR                            MSRCPSCR                        MSRHSV  

  孰好孰坏给位自己去斟酌吧。

  算法效果测试:http://files.cnblogs.com/Imageshop/Retinex%E7%BB%BC%E5%90%88.rar

  很久没有写博客了,其实也没有江郎才尽的感觉,就是呢没有想写的冲动。现在写也无以前那么认真了,感觉就是像计流水账一样。算了,记账就记账吧。

****************************作者: laviewpbt   时间: 2014.6.26    联系QQ:  1664462947  转载请保留本行信息********************

关于Retinex图像增强算法的一些新学习。的更多相关文章

  1. Retinex图像增强算法

    前一段时间研究了一下图像增强算法,发现Retinex理论在彩色图像增强.图像去雾.彩色图像恢复方面拥有很好的效果,下面介绍一下我对该算法的理解. Retinex理论 Retinex理论始于Land和M ...

  2. retinex图像增强算法的研究

    图像增强方面我共研究了Retinex.暗通道去雾.ACE等算法.其实,它们都是共通的.甚至可以说,Retinex和暗通道去雾就是同一个算法的两个不同视角,而ACE算法又是将Retinex和灰度世界等白 ...

  3. Retinex图像增强算法代码

    http://www.cnblogs.com/sleepwalker/p/3676600.html?utm_source=tuicool http://blog.csdn.net/carson2005 ...

  4. 机器学习实战(Machine Learning in Action)学习笔记————06.k-均值聚类算法(kMeans)学习笔记

    机器学习实战(Machine Learning in Action)学习笔记————06.k-均值聚类算法(kMeans)学习笔记 关键字:k-均值.kMeans.聚类.非监督学习作者:米仓山下时间: ...

  5. 算法设计和数据结构学习_5(BST&AVL&红黑树简单介绍)

    前言: 节主要是给出BST,AVL和红黑树的C++代码,方便自己以后的查阅,其代码依旧是data structures and algorithm analysis in c++ (second ed ...

  6. 机器学习算法总结(三)——集成学习(Adaboost、RandomForest)

    1.集成学习概述 集成学习算法可以说是现在最火爆的机器学习算法,参加过Kaggle比赛的同学应该都领略过集成算法的强大.集成算法本身不是一个单独的机器学习算法,而是通过将基于其他的机器学习算法构建多个 ...

  7. 图像增强算法(直方图均衡化、拉普拉斯、Log、伽马变换)

    一.图像增强算法原理 图像增强算法常见于对图像的亮度.对比度.饱和度.色调等进行调节,增加其清晰度,减少噪点等.图像增强往往经过多个算法的组合,完成上述功能,比如图像去燥等同于低通滤波器,增加清晰度则 ...

  8. 萌新学习Python爬取B站弹幕+R语言分词demo说明

    代码地址如下:http://www.demodashi.com/demo/11578.html 一.写在前面 之前在简书首页看到了Python爬虫的介绍,于是就想着爬取B站弹幕并绘制词云,因此有了这样 ...

  9. builder模式的新学习

    builder模式的新学习 静态工厂和构造器有个共同的局限性:他们不能很好的扩展到大量的可选参数.大多数产品在牧歌可选与中都会有非零的值 对于这种类,应该使用哪种构造器或者静态方法来进行编写?程序员一 ...

随机推荐

  1. HTML5系列目录

    1. HTML5与HTML4的区别 2. HTML5结构 3. HTML5表单 4. HTML5文件 5. HTML5绘图 6. HTML6本地存储

  2. ASP.NET MVC5+EF6+EasyUI 后台管理系统(46)-工作流设计-设计分支

    系列目录 步骤设置完毕之后,就要设置好流转了,比如财务申请大于50000元(请假天数>5天)要总经理审批,否则财务审批之后就结束了. 设置分支没有任何关注点,我们把关注点都放在了用户的起草表单. ...

  3. 制作自己的MVC框架(二)——启动

    自己写了个框架,取名为“PrimusPHP”,就3个文件夹,log中是日志文件,会自动生成. app中就是控制器和视图,public中是入口文件和静态资源,library中既有框架的核心类,还有工具类 ...

  4. spring boot(四):thymeleaf使用详解

    在上篇文章springboot(二):web综合开发中简单介绍了一下thymeleaf,这篇文章将更加全面详细的介绍thymeleaf的使用.thymeleaf 是新一代的模板引擎,在spring4. ...

  5. 个人随想:对于一个.Neter来说,如果一直想走技术路线,该怎么走下去

    前言 首先我不是一个合格的.Neter,也许在这里我的技术算是很菜的,不过我也是有想法的人,下面罗列出我的想法和将要实现的技术路线图. 1.学习一门底层语言 比如学习C语言,学习C语言的最终目的我觉得 ...

  6. nginx 基础

    同步和阻塞,异步和非阻塞 http://yaocoder.blog.51cto.com/2668309/1308899  (51CTO) https://segmentfault.com/a/1190 ...

  7. JavaScript: 零基础轻松学闭包

    本文面向初学者,大神轻喷. 闭包是什么? 初学javascript的人,都会接触到一个东西叫做闭包,听起来感觉很高大上的.网上也有各种五花八门的解释,其实我个人感觉,没必要用太理论化的观念来看待闭包. ...

  8. PID控制

    PID解释: 位置式:      可以看出,比例部分只与当前的偏差有关,而积分部分则是系统过去所有偏差的累积.位置式PI调节器的结构清晰,P和I两部分作用分明,参数调整简单明了.但直观上看,要计算第拍 ...

  9. 导出数据到Excel --使用ExcelReport有感

    先看图,这是几个月前用NPOI写的导出数据到Excel,用了上百行代码,而且难控制,导出来也比较难看 excel打开的效果 下面是我用ExcelReport类库导出到Excel的操作 1.首先引用Ex ...

  10. malloc 与 free函数详解<转载>

    malloc和free函数详解   本文介绍malloc和free函数的内容. 在C中,对内存的管理是相当重要.下面开始介绍这两个函数: 一.malloc()和free()的基本概念以及基本用法: 1 ...