关于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
孰好孰坏给位自己去斟酌吧。
算法效果测试:https://files.cnblogs.com/Imageshop/Retinex%E7%BB%BC%E5%90%88.rar
很久没有写博客了,其实也没有江郎才尽的感觉,就是呢没有想写的冲动。现在写也无以前那么认真了,感觉就是像计流水账一样。算了,记账就记账吧。
****************************作者: laviewpbt 时间: 2014.6.26 联系QQ: 1664462947 转载请保留本行信息********************
相关文章
- 迭代(一):迭代算法的基本思想
- 吴师兄读者喜提微软offer,来瞧一瞧他的算法学习之路
- 神经网络与机器学习 笔记—LMS(最小均方算法)和学习率退火
- 集成学习算法简介
- Stanford大学机器学习公开课(五):生成学习算法、高斯判别、朴素贝叶斯
- 百度算法题笔试——手撕代码总结
- 商汤 | 离线量化算法研究,从经典到原创
- C04-算法达人修炼营学习安排及方法指导
- 华为2014笔试算法题汇总
- 《模式识别》学习笔记(六)聚类算法之简单聚类算法和谱系聚类算法
- 《数据挖掘:理论与算法》学习笔记(七)—支持向量机
- 智能计算及其应用--蚁群算法
- 《数据挖掘:理论与算法》学习笔记(一)走进数据科学
- [算法]数组中出现次数超过一半的数字
- 强化学习代码实战-07 ERINFORCEMENT 算法
- 强化学习代码实战-06 DQN算法(单模型-平衡车)
- 机器学习与算法面试太难?
- 集成剪枝分类算法的Adaboost集成学习算法示例
- 《Python机器学习——预测分析核心算法》——第1章 关于预测的两类核心算法
- 蓝桥杯《算法很美》第4章:数组与矩阵
- 蓝桥杯《算法很美》第1章:位运算
- 《高性能科学与工程计算》——3.3 案例分析:Jacobi算法
- Python机器学习零基础理解随机森林算法
- 计算机图形学(第2版 于万波 于硕 编著)第45页的Bresenham算法有错误
- 强化学习中经验池的替代设计——A3C算法
- AI学习---分类算法[K-近邻 + 朴素贝叶斯 + 决策树 + 随机森林 ]
- 【Computer Vision学习】三、常用算法之随机抽样一致算法(Random sample consensus,RANSAC)介绍
- 算法导论——lec 12 平摊分析与优先队列
- 大约PCA算法学习总结
- 机器学习——人工神经网络之后向传播算法(BP算法)
- [转]感知神经网络模型与学习算法