retinex整理(其中个人理解部分不保证准确,请多指教)
来源:互联网 发布:女生衣服搭配知乎 编辑:程序博客网 时间:2024/05/20 13:15
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色彩模型尽可能保证颜色的饱和度,鲜明度
- retinex整理(其中个人理解部分不保证准确,请多指教)
- 整理echarts文档 (菜鸟发文 请多指教)
- mean shift算法的个人理解,请大家指教
- Google Guide:Test Your App (个人翻译,请多指教)
- java试题整理1(附部分个人理解)
- 整理一下java笔试题吧(请大家多指教)1------i++,++i
- 初来乍到,请多指教!
- 初来乍到,请多指教
- 请多指教
- 初来乍到,请多指教
- 初来乍到 请多指教
- 请多指教
- 初来乍到,请多指教
- 新手请多指教
- 初来乍到,请多指教
- 请多指教!
- 初来乍到,请多指教
- 请多指教啊
- 跳跃表
- opencv程序三:canny边缘检测算法
- 如何安装cocoapods
- Linux中的set和env命令
- 那些不容错过的Xcode插件
- retinex整理(其中个人理解部分不保证准确,请多指教)
- 白板与编程面试:为什么不在电脑上编程更有帮助
- 1624
- 浅谈java阻塞队列实现原理
- POJ-1002 487-3279 模拟问题
- 二分图基本概念
- SDUTOJ 2120数据结构实验之链表五:单链表的拆分
- Mysql插入乱码问题
- C语言和php语言现在哪个更给力吃香