Color Constancy 色彩恒常性(1)White Patch Retinex

[原创]Color Constancy 色彩恒常性(1)White Patch Retinex  


Color Constancy主要是通过 Marc Ebner 的一本专著“ Color Constancy ”。这篇文章主要讲色彩恒常性中一个最基本的算法——White Patch Retinex算法。在讲述算法之前,先回答两个问题。

(1)什么是色彩恒常性?what is Color Constancy?

首先,颜色并不是一个实实在在的东西,它只是我们大脑和视网膜处理的结果。我们的视觉系统有一个特殊的功能就是在光源变化的情况下,依然能够确定物体的真实颜色,这种鲁棒性是计算机等处理机器所不具有的。色彩的恒常性,也就可以简单的理解为,在外界光源变化的情况下,依然能够保留物体原始的色彩。我们研究色彩恒常性,提出各种算法,目的就是让计算机也具有人类视觉系统的这个特殊功能,在不同光源的照射下还原图像的本来颜色。White Patch Retinex算法就是其中的一个最简单的算法。在后面的实验结果中,我们也可以看出,由于黄色光照下而整体颜色偏黄的餐桌,经过White Patch Retinex算法处理后,桌布恢复了白色。

(2)retinex是什么意思?what is retinex?

retinex 是来自于中古拉丁文Retina 和拉丁文Cortic两个单词的组合, 发音[re-tin-ex] 或 ['ret-nex] 。由Edwin Land 在他的人类色彩视觉模型中提出,是结合眼睛的视网膜(retina)和大脑的头皮层(cortex)而创新出来的一个词。在图像处理中,这个词可以更加明确的定义为一个自动将视觉现实转换到图像的过程,让图像象你实际看见的世界一样的明亮、清晰和清楚。

(原文:from Medieval Latin retina and Latin cortic. Edwin Land coined word for his model of human color vision, combining the retina of the eye and the cerebral cortex of the brain. More specifically defined in image processing as a process that automatically provides visual realism to images.) 来自:Retinex Image processing NASA Langley Research Center

算法:

(1)图像成像模型

White Patch Retinex算法的目的是恢复图像的本身色彩,这势必就要估计图像中外界光源的强度。下面是图像成像的数学表达式:

[原创]Color Constancy 色彩恒常性(1)White Patch Retinex - 钰央 - 计算机视觉·图像处理(1)

式中,[原创]Color Constancy 色彩恒常性(1)White Patch Retinex - 钰央 - 计算机视觉·图像处理是图像成像的几何尺寸因子,[原创]Color Constancy 色彩恒常性(1)White Patch Retinex - 钰央 - 计算机视觉·图像处理是物体在[原创]Color Constancy 色彩恒常性(1)White Patch Retinex - 钰央 - 计算机视觉·图像处理位置处对波长[原创]Color Constancy 色彩恒常性(1)White Patch Retinex - 钰央 - 计算机视觉·图像处理的光的反射系数(反射系数的大小,直接决定成像的亮度),[原创]Color Constancy 色彩恒常性(1)White Patch Retinex - 钰央 - 计算机视觉·图像处理是光源的强度,[原创]Color Constancy 色彩恒常性(1)White Patch Retinex - 钰央 - 计算机视觉·图像处理是照相机的感光系数。最终的成像为[原创]Color Constancy 色彩恒常性(1)White Patch Retinex - 钰央 - 计算机视觉·图像处理,其中[原创]Color Constancy 色彩恒常性(1)White Patch Retinex - 钰央 - 计算机视觉·图像处理[原创]Color Constancy 色彩恒常性(1)White Patch Retinex - 钰央 - 计算机视觉·图像处理是相互对应的关系,前者是图像中的位置,后者是实际物体的位置。

一般RGB照相机的感光材料仅对r,g,b三个颜色反应,即[原创]Color Constancy 色彩恒常性(1)White Patch Retinex - 钰央 - 计算机视觉·图像处理由三个窄带波长组成。假设[原创]Color Constancy 色彩恒常性(1)White Patch Retinex - 钰央 - 计算机视觉·图像处理是delta函数,那么(1)式可以简化为:

[原创]Color Constancy 色彩恒常性(1)White Patch Retinex - 钰央 - 计算机视觉·图像处理 (2)

图像成像模型到此结束。我们接下来的任务就是估计光源强度[原创]Color Constancy 色彩恒常性(1)White Patch Retinex - 钰央 - 计算机视觉·图像处理

(2)最原始的White Patch Retinex算法

White Patch Retinex算法的主要思想是:if there is a white patch in the scene, then this patch reflects the maximum light possible for each band.This will be the color of the illuminant.举例说明,如果[原创]Color Constancy 色彩恒常性(1)White Patch Retinex - 钰央 - 计算机视觉·图像处理那么,[原创]Color Constancy 色彩恒常性(1)White Patch Retinex - 钰央 - 计算机视觉·图像处理

如果像素的颜色和成像的I成正比,即[原创]Color Constancy 色彩恒常性(1)White Patch Retinex - 钰央 - 计算机视觉·图像处理,那么[原创]Color Constancy 色彩恒常性(1)White Patch Retinex - 钰央 - 计算机视觉·图像处理

根据White Patch Retinex算法的主要思想,寻找图像中最亮的点,那么有:[原创]Color Constancy 色彩恒常性(1)White Patch Retinex - 钰央 - 计算机视觉·图像处理,求得的[原创]Color Constancy 色彩恒常性(1)White Patch Retinex - 钰央 - 计算机视觉·图像处理被作为光源的强度。

恢复后的图像为:[原创]Color Constancy 色彩恒常性(1)White Patch Retinex - 钰央 - 计算机视觉·图像处理

使用该算法恢复的图像如实验中(1)的结果所示。可以看出,该算法能去掉一部分的光源颜色,但是效果不是很好。接下来将讲述一种改进后的算法,改进后的算法在实验结果和鲁棒性上均有所提高。

(3)改进后的White Patch Retinex算法

改进后的方法不在单纯的使用最亮点来估计光源强度,而是求原始图像每个通道的累计直方图,取累计到某一个值 p*n 时对应的图像像素值作为[原创]Color Constancy 色彩恒常性(1)White Patch Retinex - 钰央 - 计算机视觉·图像处理。其中p为百分值,实验中取为1%-5%,n为图像的像素点数。

具体可用下列式子表示:

Color Constancy 色彩恒常性(1)White Patch Retinex_第1张图片

使用改进后的算法求得的实验结果如实验(2)中所示,可以看出该结果比实验(1)的结果好很多。

MATLAB代码:

代码(其中,para=0是原始的方法,para=1是改进后的方法):

[plain]  view plain copy print ?
  1. function out = WhitePatchRetinex(in,para)
  2. %%%% copyright: ofalling %%%%
  3. if( nargin < 2 )
  4. para = 0;
  5. end
  6. out = zeros(size(in));
  7. inDouble = double(in);
  8. L = [0 0 0];
  9. if ( para == 0 )
  10. for i = 1:3
  11. L(i) = max(max(in(:,:,i)));
  12. out(:,:,i) = inDouble(:,:,i)/L(i);
  13. end
  14. elseif ( para == 1 )% more robust algorithm
  15. np = 0.1 * size(in,1)*size(in,2);
  16. for i = 1:3
  17. H = imhist(in(:,:,i));
  18. j = 256;
  19. sum = 0;
  20. while( (sum < np)&(j > 1) )
  21. j = j-1;
  22. sum = sum + H(j);
  23. end
  24. L(i) = j;
  25. out(:,:,i) = inDouble(:,:,i)/L(i);
  26. end
  27. end

(1)使用原始的方法对图像进行色彩均衡。

Color Constancy 色彩恒常性(1)White Patch Retinex_第2张图片
Color Constancy 色彩恒常性(1)White Patch Retinex_第3张图片

(2)使用改进后的方法对图像进行色彩均衡。

Color Constancy 色彩恒常性(1)White Patch Retinex_第4张图片
Color Constancy 色彩恒常性(1)White Patch Retinex_第5张图片

由两组实验结果可以看出,对于均匀光照下的图像,使用White Patch Retinex算法对图像进行色彩恢复,并且改进后的方法比原始的方法效果好。并且,可以肯定的是,方法二的鲁棒性比方法一好。

参考:

Marc Ebner 的主页: http://www.ra.cs.uni-tuebingen.de/mitarb/ebner/welcome.html
书籍:Marc Ebner. “ Color Constancy ”.Wiley 1st edition. 2007.  http://www.ra.cs.uni-tuebingen.de/mitarb/ebner/ColorConstancyBook.html
论文:A Parallel Algorithm for Color Constancy . http://www.ra.cs.uni-tuebingen.de/mitarb/ebner/research/colorConstancy/colorConstancy.html

有关Color Constancy 的网站: http://colorconstancy.com/

你可能感兴趣的:(opencv)