关于Retinex图像增强算法的一些新学习。

 最近再次看了一下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  转载请保留本行信息********************

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大学生计算机视觉学习DeepLearning

python实现gabor滤波器提取纹理特征 提取指静脉纹理特征 指静脉切割代码

1235
来自专栏小小挖掘机

拟牛顿法面面俱到(一)--牛顿插值法

这次带来的是拟牛顿法系列,本系列的目标是完全理解拟牛顿法,包括其中涉及到的知识,比如泰勒公式、海森矩阵等,泰勒公式大家都很熟悉,不过它是怎么推导出来的呢?想必大...

771
来自专栏专知

【2018最新版】 200个最好的与机器学习、自然语言处理相关教程

【导读】近年来,机器学习等新最新技术层出不穷,如何跟踪最新的热点以及最新资源,作者Robbie Allen列出了一系列相关资源教程列表,包含四个主题:机器学习,...

910
来自专栏WOLFRAM

用 ContourPlot3D 绘制多面体

1435
来自专栏智能算法

没有公式如何看懂EM算法?

EM(Expectation Maximization: 期望最大化)这个问题感觉真的不太好用通俗的语言去说明白,因为它很简单,又很复杂。简单在于它的思想,简单...

30912
来自专栏机器学习算法与理论

基于面部视觉的疲劳检测-哈欠

基于视觉的疲劳检测可以认为大致分为三个部分,点头,哈欠,眨眼。分别为姿态、嘴部特征、眼部特征。 本文主要介绍哈欠的测定方法。 首先研究了陈博士《基于可拓学与面部...

4125
来自专栏AI科技大本营的专栏

谷歌大脑深度学习从入门到精通视频课程[2.5]:训练神经网络——激活函数的导数

AI100 已经引入 Hugo Larochelle 教授的深度学习课程,会每天在公众号中推送一到两节课,并且对视频中的 PPT 进行讲解。课后,我们会设计一...

3237
来自专栏新智元

【一文看尽200篇干货】2018最新机器学习、NLP、Python教程汇总!

【新智元导读】本文收集并详细筛选出了一系列机器学习、自然语言处理、Python及数学基础知识的相关资源和教程,数目多达200种!来源既包括斯坦福、MIT等名校,...

1234
来自专栏数据结构与算法

超几何分布与二项分布及其期望

惊奇的发现选修2-3上有期望的介绍,不过我没有课本啊qwq。只能去网上找资料了。。

522
来自专栏移动开发面面观

交叉熵——我们如何评估差异

机器学习的本质是信息论。在信息论中,首先我们引入了信息熵的概念。认为一切信息都是一个概率分布。所谓信息熵,就是这段信息的不确定性,即是信息量。如果一段信息,我无...

1315

扫码关注云+社区