图像处理之Retinex增强算法(SSR、MSR、MSRCR)

视网膜-大脑皮层(Retinex)理论认为世界是无色的,人眼看到的世界是光与物质相互作用的结果,也就是说,映射到人眼中的图像和光的长波(R)、中波(G)、短波(B)以及物体的反射性质有关

其中I是人眼中看到的图像,R是物体的反射分量,L是环境光照射分量,(x, y)是二维图像对应的位置

基于上面的原理,看下Retinex常见的几种增强算法

一、     SSR(Single Scale Retinex)单尺度Retinex算法

它通过估算L来计算R,具体来说,L可以通过高斯模糊和I做卷积运算求得,用公式表示为:

其中F是高斯模糊的滤波器,“ * ”表示卷积运算

其中σ称为高斯周围空间常数(Gaussian Surround Space Constant),也就是算法中所谓的尺度,对图像处理有比较大的影响,对于二维图像对应于图像中位置,即:

因此,这个算法的思路就可以归结为以下几步:

1、输入: 原始图像数据I(x,y),尺度(也就是高斯函数中的σ)

2、①计算原始图像按指定尺度进行模糊后的图像 L(x,y);

②按照log(R)=log(I)-log(L)公式的计算方法计算出 Log[R(x,y)]的值

③将 Log[R(x,y)]量化为0到255范围的像素值,作为最终的输出,量化公式:R(x,y) = ( Value - Min ) / (Max - Min) * (255-0)(注:无需将Log[R(x,y)]进行Exp函数的运算,而是直接利用Log[R(x,y)]进行量化,即上述公式中的value值)

代码如下:

效果图(左边是原图,右边是SSR效果图):(其中σ=300,即代码中的sigma=300

 

二、     MSR(Multi-Scale Retinex)多尺度Retinex算法

多尺度视网膜增强算法(MSR, Multi-Scale Retinex),最为经典的就是3尺度的,大、中、小,既能实现图像动态范围的压缩,又能保持色感的一致性较好。基于单尺度Retinex算法,多尺度Retinex算法描述如下:

1、需要对原始图像进行每个尺度的高斯模糊,得到模糊后的图像Li(x,y),其中小标i表示尺度数。

2、对每个尺度下进行累加计算  Log[R(x,y)] =  Log[R(x,y)] + Weight(i)* ( Log[Ii(x,y)]-Log[Li(x,y)]);  其中Weight(i)表示每个尺度对应的权重,要求各尺度权重之和必须为1,经典的取值为等权重。

如果尺度数为3,则:W1=W2=W3=1/3

代码如下:

效果图(左边是原图,中间是SSR效果图,右边是MSR效果图)

  

三、     MSRCR(Multi-Scale Retinex with Color Restoration)具有色彩恢复的多尺度Retinex算法

在前面的增强过程中,图像可能会因为增加了噪声,而使得图像的局部细节色彩失真,不能显现出物体的真正颜色,整体视觉效果变差。针对这一点不足,MSRCR在MSR的基础上,加入了色彩恢复因子C来调节由于图像局部区域对比度增强而导致颜色失真的缺陷.

先看一组公式:

RMSRCR(x,y)‘=G⋅RMSRCR(x,y)+b

RMSRCR (x,y)=C(x,y)RMSR(x,y)

C(x,y)=f[I‘(x,y)]=f[I(x,y)/∑I(x,y)]Ci(x,y)=f[Ii′(x,y)]=f[Ii(x,y)∑j=1NIj(x,y)] 

f[I‘(x,y)]=βlog[αI‘(x,y)]=β{log[αI‘(x,y)]−log[∑I(x,y)]}

如果是灰度图像,只需要计算一次即可,如果是彩色图像,如RGB三通道,则每个通道均需要如上进行计算

G表示增益Gain(一般取值:5)

b表示偏差Offset(一般取值:25)

I (x, y)表示某个通道的图像

C表示某个通道的彩色回复因子,用来调节3个通道颜色的比例;

f(·)表示颜色空间的映射函数;

β是增益常数(一般取值:46);

α是受控制的非线性强度(一般取值:125)

MSRCR算法利用彩色恢复因子C,调节原始图像中3个颜色通道之间的比例关系,从而把相对较暗区域的信息凸显出来,达到了消除图像色彩失真的缺陷。 处理后的图像局部对比度提高,亮度与真实场景相似,在人们视觉感知下,图像显得更加逼真;但是MSRCR算法处理图像后,像素值一般会出现负值。所以从对数域r(x, y)转换为实数域R(x, y)后,需要通过改变增益Gain,偏差Offset对图像进行修正。

另外:介绍下什么是颜色的简单白平衡(simplest Color Balance)

白平衡的意思就是:是图片中最亮的部分为白色,最暗的部分为黑色。其余部分进行拉伸

简单的说就是:在RGB三通道上分别统计每个像素值的出现次数。将1%的最大值和最小值设置为255和0。其余值映射到(0,255),这样使得每个值通道的值在RGB中分布较均匀。达到颜色平衡的结果

MSRCR代码如下:

效果图(左上:原图,右上:SSR,左下:MSR,右下:MSRCR)

       

作为一枚技术小白,写这篇笔记的时候参考了很多博客论文,在这里表示感谢,同时,未经同意,请勿转载....

原文地址:https://www.cnblogs.com/wangyong/p/8665434.html

时间: 2024-10-19 11:11:19

图像处理之Retinex增强算法(SSR、MSR、MSRCR)的相关文章

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

最近再次看了一下IPOL网站,有一篇最近发表的文章,名字就是Multiscale Retinex,感觉自己对这个已经基本了解了,但还是进去看了看,也有一些收获,于是抽空把他们稍微整理了下,原始文章及其配套代码详见:http://www.ipol.im/pub/art/2014/107/. 之前在我的 带色彩恢复的多尺度视网膜增强算法(MSRCR)的原理.实现及应用 一文中已经较为详细的描述了Multiscale Retinex的基本原理和应用,这里就不再做过多的说明.为表述方便,还是贴出其基本的

优化的对比度增强算法用于有雾图像的清晰化处理(算法效果是我目前看到最为稳定的,且对天空具有天然的免疫力,极力推荐有需要的朋友研究)。

在未谈及具体的算法流程前,先贴几幅用该算法处理的效果. 不知道各位对这个算法的效果第一印象如何. 这个算法的原理来自于文章<Optimized contrast enhancement for real-time image and video dehazing>,作者是韩国人. 这个算法也是基于大气散射模型: 和现在一些常见的去雾文章有明显的不同的是,这篇文章的并不是基于暗通道原理的,也不是把重点强调在透射率图的细化上,而是提出了一种新的得到粗透射率图的方法.并且文章分别讲到了静态图像和视频

retinex图像增强算法的研究

图像增强方面我共研究了Retinex.暗通道去雾.ACE等算法.其实,它们都是共通的.甚至可以说,Retinex和暗通道去雾就是同一个算法的两个不同视角,而ACE算法又是将Retinex和灰度世界等白平衡理论相结合的产物.下面将依次讨论,每个算法写一个心得,欢迎拍砖. 今天先写Retinex.Retinex理论认为,人眼观测到的图像S是光照图像L和物体反射图像R的乘积.而R才是真实的恒常性的图像,但是怎么从观测图像S中计算R呢?这是个病态问题,根本不可解.研究者就通过加以一定的约束条件,比如光照

用于图像去雾的优化对比度增强算法

图像去雾哪家强?之前我们已经讨论过了著名的基于暗通道先验的图像去雾(Kaiming He, 2009)算法,如果你用兴趣可以参考: 暗通道优先的图像去雾算法(上) 暗通道优先的图像去雾算法(下) 此外,网上也有很多同道推荐了一篇由韩国学者所发表的研究论文<Optimized contrast enhancement for real-time image and video dehazing>(你也可以从文末参考文献[1]给出的链接中下载到这篇经典论文),其中原作者就提出了一个效果相当不错的图

深入学习图像处理——图像相似度算法

最近一段时间学习并做的都是对图像进行处理,其实自己也是新手,各种尝试,所以我这个门外汉想总结一下自己学习的东西,图像处理的流程.但是动起笔来想总结,一下却不知道自己要写什么,那就把自己做过的相似图片搜索的流程整理一下,想到什么说什么吧. 首先在进行图片灰度化处理之前,我觉得有必要了解一下为什么要进行灰度化处理. 图像灰度化的目的是什么? 将彩色图像转化为灰度图像的过程是图像的灰度化处理.彩色图像中的每个像素的颜色由R,G,B三个分量决定,而每个分量有255中值可取,这样一个像素点可以有1600多

数字图像处理,图像锐化算法的C++实现

http://blog.csdn.net/ebowtang/article/details/38961399 之前一段我们提到的算法都是和平滑有关, 经过平滑算法之后, 图像锐度降低, 降低到一定程度, 就变成了模糊. 今天我们反其道行之, 我们看看锐化是怎么做的. 这里的锐化, 还是的从平滑谈开去.我们先来观察原来的图像和平滑图像的区别: 原图 raw: 模糊图 blur: _________________________________________________________ 源图

【20160924】GOCVHelper MFC增强算法(5)

CString ExportListToExcel(CString  sExcelFile,CListCtrl* pList, CString strTitle) { CString warningStr; if (pList->GetItemCount ()>0) { CDatabase database; CString sSql; CString tableName = strTitle; // 检索是否安装有Excel驱动 "Microsoft Excel Driver (*

【20160924】GOCVHelper MFC增强算法(4)

//string替换 void string_replace(string & strBig, const string & strsrc, const string &strdst) { string::size_type pos=0; string::size_type srclen=strsrc.size(); string::size_type dstlen=strdst.size(); while( (pos=strBig.find(strsrc, pos)) != st

Atitit 图像处理30大经典算法attilax总结

1. 识别模糊图片算法2 2. 相似度识别算法(ahash,phash,dhash)2 3. 分辨率太小图片2 4. 横条薯条广告2 5. 图像与图片分类开2 6. 根据肤色归类,根据人物人脸分类.2 7. 其他分类算法2 8. 质量检测: 色偏检测. 亮度检测(曝光不足) 失焦检测 模糊检测  清晰度检测与评价2 9. 图片压缩 图片压缩 图片ocr 调整大小与分辨率 灰度化2 10. 图片叠加 几种叠加方式2 11. 高斯模糊2 11.1. 二值化变换 傅立叶变换 dct变换3 11.2.