retinex整理(其中个人理解部分不保证准确,请多指教)
2014-10-06 13:39
295 查看
retinex模型基于人眼,将图片中因雾霭等原因产生的模糊现象去除,提高图像清晰度。这里介绍最常见的一种retinex模型,采用高斯滤波。
人眼看事物时,周围的光照强度和事物的反射光均会进入人眼 I(x,y)=R(x,y)*L(x,y),但真正决定人眼判定事物颜色的是事物的反射光R(x,y)。
拍摄出的照片显示了R,L两个分量,为了让图像更清楚,就需要加强照片里的R分量。于是retinex模型的根本就是提取图像中的R分量。
首先考虑如何估算L分量,假设光照均匀,既图像中的L分量在各处分布均匀,所以L分量占据图像中的低频成分,可以通过高斯滤波,以计算周围邻域内的加权平均值来提取其中的低频成分,并把提取出的低频成分当做L分量。
, sigma决定高斯滤波尺度,K保证G在x,y的二重积分为1.
为了降低运算复杂度,在提取R的时候用减法替代除法,首先对图像求log,于是logR=logI-logL,而不用R=I/L
Single-Scale Retinex:将原始图像分为RGB三个通道,针对每个颜色,采用单一尺度的高斯滤波。高斯尺度越大,影响最后结果的像素范围越大,色彩保真度越大,动态压缩能力越小;尺度越小,结果受周围像素的影响越大,细节越明显,动态范围压缩能力越大。尺度大小各有利弊,为充分发挥各尺度的优缺点,出现了Multi-Scale Retinex。
Multi-Scale Retinex: 一般采用尺度大小为大,中,小(80~100)的三种高斯滤波处理每个颜色通道。根据不同颜色通道对整体颜色的影响,对每个颜色通道的结果加权重,尽可能保持颜色不失真。
动态范围:最亮~最黑,灰度1~255,无论感光器件多高级,感知到的动态范围多大,数字化后只有255.
高斯函数经过傅里叶变换仍未高斯函数,只是原sigma大的,变换之后变为sigma小的。
图像中的高频成分为图像的边缘轮廓等;低频成分为整幅图像强度的综合度量。
sigma大的高斯滤波,平均更多的像素点,频域sigma小,滤掉更多成分,剩下很低频率部分的被当做光照,从原图像中剔除,剩下的便是最后输出,也可以理解为高斯滤掉的各种频率组成了最后输出的反射成分,所以色彩保真度更好,色彩保真了,自然明暗变化不明显,既动态范围压缩能力差
反之,sigma小的高斯滤波,频域sigma大,保留大量频率较低成分,只滤掉少了频率很高成分,这些成分可看做最后的输出反射成分,因为组成的频率种类少,所以色彩较单一,动态范围压缩能力强。高频率成分代表细节,缺少其他成分使得细节更明显。
缺陷:1.颜色分布集中于某一部分时,L分量估算错误。例如一块区域内红色通道均为255,高斯滤波求平均值仍为255,去除L分量,则剩余反射分量为0,显然不合理。
2.retinex模型基于L分量分布均匀的假设,如果在某亮度有较大变化的边缘处,光照变化不符合原有假设,则会出现过亮或过暗的光晕现象(halo artifact)。例如明暗相差很大的临近区域,明亮侧的 I为50,L为30;暗侧的 I为20,L为10;实际的R分别为20,10;如果按假定的均匀L(30+10)/2=20计算的话,R为30,0。亮侧更加亮,暗侧更加暗,造成临界处颜色的感官差异放大。
3.RGB各分量增减幅度不一时会产生颜色失真扭曲。20,10,30--->10,40,20
4.从原图像基础上去除了L分量,使得结果图像产生褪色现象(graying-out)
改进:在之前传统方法的基础上进行改进。其中一种方法如下
EC是enhanced curve, 通过分析周边的直方图和edge分布,决定使用哪种曲线,使得图像可视性更好,轮廓更清晰
添加使用HSV色彩模型尽可能保证颜色的饱和度,鲜明度
人眼看事物时,周围的光照强度和事物的反射光均会进入人眼 I(x,y)=R(x,y)*L(x,y),但真正决定人眼判定事物颜色的是事物的反射光R(x,y)。
拍摄出的照片显示了R,L两个分量,为了让图像更清楚,就需要加强照片里的R分量。于是retinex模型的根本就是提取图像中的R分量。
首先考虑如何估算L分量,假设光照均匀,既图像中的L分量在各处分布均匀,所以L分量占据图像中的低频成分,可以通过高斯滤波,以计算周围邻域内的加权平均值来提取其中的低频成分,并把提取出的低频成分当做L分量。
, sigma决定高斯滤波尺度,K保证G在x,y的二重积分为1.
为了降低运算复杂度,在提取R的时候用减法替代除法,首先对图像求log,于是logR=logI-logL,而不用R=I/L
Single-Scale Retinex:将原始图像分为RGB三个通道,针对每个颜色,采用单一尺度的高斯滤波。高斯尺度越大,影响最后结果的像素范围越大,色彩保真度越大,动态压缩能力越小;尺度越小,结果受周围像素的影响越大,细节越明显,动态范围压缩能力越大。尺度大小各有利弊,为充分发挥各尺度的优缺点,出现了Multi-Scale Retinex。
Multi-Scale Retinex: 一般采用尺度大小为大,中,小(80~100)的三种高斯滤波处理每个颜色通道。根据不同颜色通道对整体颜色的影响,对每个颜色通道的结果加权重,尽可能保持颜色不失真。
动态范围:最亮~最黑,灰度1~255,无论感光器件多高级,感知到的动态范围多大,数字化后只有255.
高斯函数经过傅里叶变换仍未高斯函数,只是原sigma大的,变换之后变为sigma小的。
图像中的高频成分为图像的边缘轮廓等;低频成分为整幅图像强度的综合度量。
sigma大的高斯滤波,平均更多的像素点,频域sigma小,滤掉更多成分,剩下很低频率部分的被当做光照,从原图像中剔除,剩下的便是最后输出,也可以理解为高斯滤掉的各种频率组成了最后输出的反射成分,所以色彩保真度更好,色彩保真了,自然明暗变化不明显,既动态范围压缩能力差
反之,sigma小的高斯滤波,频域sigma大,保留大量频率较低成分,只滤掉少了频率很高成分,这些成分可看做最后的输出反射成分,因为组成的频率种类少,所以色彩较单一,动态范围压缩能力强。高频率成分代表细节,缺少其他成分使得细节更明显。
缺陷:1.颜色分布集中于某一部分时,L分量估算错误。例如一块区域内红色通道均为255,高斯滤波求平均值仍为255,去除L分量,则剩余反射分量为0,显然不合理。
2.retinex模型基于L分量分布均匀的假设,如果在某亮度有较大变化的边缘处,光照变化不符合原有假设,则会出现过亮或过暗的光晕现象(halo artifact)。例如明暗相差很大的临近区域,明亮侧的 I为50,L为30;暗侧的 I为20,L为10;实际的R分别为20,10;如果按假定的均匀L(30+10)/2=20计算的话,R为30,0。亮侧更加亮,暗侧更加暗,造成临界处颜色的感官差异放大。
3.RGB各分量增减幅度不一时会产生颜色失真扭曲。20,10,30--->10,40,20
4.从原图像基础上去除了L分量,使得结果图像产生褪色现象(graying-out)
改进:在之前传统方法的基础上进行改进。其中一种方法如下
EC是enhanced curve, 通过分析周边的直方图和edge分布,决定使用哪种曲线,使得图像可视性更好,轮廓更清晰
添加使用HSV色彩模型尽可能保证颜色的饱和度,鲜明度
相关文章推荐
- java试题整理1(附部分个人理解)
- 关于排序的总结和部分实现(个人理解整理版)
- 结合微软的部分代码再加上自己整理的代码实现的一个我个人觉得很强大的序列化/反序化类
- 个人部分理解部分,后续理解再添加:STL中map的实现
- Spring部分注解的个人简单理解
- Android进程优先级部分整理与理解
- 关于JAVA面向对象基础整理以及个人的理解(适合初学者阅读)
- 对日外包中的各阶段个人感悟及想法整理-1 概要设计理解到详细设计
- 正则表达式个人总结(二):正则表达式语法的深入理解第二部分
- 领域驱动设计(DDD)部分核心概念的个人理解(转)
- 领域驱动设计(DDD)部分核心概念的个人理解
- How to Use MMC/SDC——翻译(其中有很多不理解或翻译不准确的地方,望批评指正)——附件
- Learning a Deep Compact Image Representation for Visual Tracking的部分翻译和个人理解
- 基于MoreWindows整理的基础排序的个人理解
- java概述 部分重要知识(个人理解)
- Openstack个人理解及各部分解释(一)
- CodeIgniter部分个人理解
- C#部分知识个人整理
- 推荐系统个人理解(理论部分)
- 网上查了点关于windows注册表的知识,发现基本名词没理解好,于是整理这篇笔记(可能个别地方不准确,先这么理解吧),有了这个理解,再去看网上的文章,就差不读了