灰度世界算法(Gray World Algorithm)
来源:互联网 发布:js实现动态时钟 编辑:程序博客网 时间:2024/05/01 01:06
人的视觉系统具有颜色恒常性,能从变化的光照环境和成像条件下获取物体表面颜色的不变特性,但成像设备不具有这样的调节功能,
不同的光照环境会导致采集的图像颜色与真实颜色存在一定程度的偏差,需要选择合适的颜色平衡(校正)算法,消除光照环境对颜
色显现的影响。灰度世界算法是最常用平衡算法。
一、灰度世界算法
灰度世界算法以灰度世界假设为基础,该假设认为:对于一幅有着大量色彩变化的图像,,三个分量的平均值趋于同一灰
度值。从物理意义上讲,灰色世界法假设自然界景物对于光线的平均反射的均值在总体上是个定值,这个定值近似地为“灰
色”。颜色平衡算法将这一假设强制应用于待处理图像,可以从图像中消除环境光的影响,获得原始场景图像。
算法执行步骤:
(1)一般有两种方法确定:
要么取固定值(如最亮灰度值的一半,八位显示的话即为128);
要么通过计算图像三通道平均值,取;(2)计算三个通道的增益系数:;;;
(3)根据Von Kries对角模型,对于图像中的每个像素,调整其分量分量:
这种算法简单快速,但是当图像场景颜色并不丰富时,尤其出现大块单色物体时,该算法常会失效。
注:Von Kries提出,可用一个对角矩阵变换描述两种光照条件下同一物体表面颜色间的关系。假定在光照下感知
到的物体值分别为、,根据Von Kries对角理论有:
该理论实现不同光源间的转换。
二、Matlab实现
function Test()I=imread('test.jpg');y=GrayWorld(I);y=uint8(y);figure(1);imshow(I);figure(2);imshow(y);function y=GrayWorld(Image)r=Image(:,:,1);g=Image(:,:,2);b=Image(:,:,3);avgR = mean(mean(r));avgG = mean(mean(g));avgB = mean(mean(b));avgRGB = [avgR avgG avgB];grayValue = (avgR + avgG + avgB)/3scaleValue = grayValue./avgRGB;newI(:,:,1) = scaleValue(1) * r;newI(:,:,2) = scaleValue(2) * g;newI(:,:,3) = scaleValue(3) * b;y=newI;
参考:
http://www.cnblogs.com/Imageshop/archive/2013/04/20/3032062.html
http://scien.stanford.edu/pages/labsite/1999/psych221/projects/99/jchiang/intro2.html
http://scien.stanford.edu/pages/labsite/2000/psych221/projects/00/trek/GWimages.html
[1] 徐晓昭,蔡轶珩,刘晓民,刘长江,沈兰荪. 改进灰度世界颜色校正算法[J]. 光子学报, 2010, 39(3): 559~564
- 灰度世界算法(Gray World Algorithm)
- 灰度世界算法(Gray World Algorithm)
- 灰度世界算法(Gray World Algorithm)
- 灰度世界算法(Gray World Algorithm)和White Patch Retinex算法
- 灰度世界算法学习
- c#图像处理-灰度处理(gray)
- Algorithm Gossip: 格雷码(Gray Code)
- 【转】灰度Gray
- GRAY 灰度图
- 灰度共生矩阵(GLCM,Gray-Level Co-occurrence Matrix)
- The Gray World Assumption
- matlab 图像白平衡(世界灰度法)
- 算法(Algorithm)
- 算法(Algorithm)
- 灰度图Gray Scale Image 或是 Gray Scale Image
- 灰度图Gray Scale Image 或是 Gray Scale Image
- 【图像处理】灰度映射(Gray Level Transformation)
- 【图像处理】灰度图(Gray Scale Image)
- openCV中canny算法
- 运放中不使用引脚正确处理方式
- 豁达是一种人生智慧
- CSU 1407: 最短距离(数学啊 )
- 【HDU 1158】 Employment Plannin
- 灰度世界算法(Gray World Algorithm)
- 《HotSpot实战》笔记2类与对象
- C语言基础之数组、字符串、指针
- 编程学习笔记3--大整数的运算
- android中string.xml中%1$s、%1$d等的用法
- CSU 1408: 种植树苗(贪心啊 )
- HDU2734:Quicksum
- android 下 对3G 模块进行AT 命令调试
- 谈下自己,我比较精通J2SE,熟悉J2SE里的Servlet等