博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
灰度世界算法(Gray World Algorithm) 分类: 图像处理 ...
阅读量:6614 次
发布时间:2019-06-24

本文共 1185 字,大约阅读时间需要 3 分钟。

人的视觉系统具有颜色恒常性,能从变化的光照环境和成像条件下获取物体表面颜色的不变特性,但成像设备不具有这样的调节功能,

不同的光照环境会导致采集的图像颜色与真实颜色存在一定程度的偏差,需要选择合适的颜色平衡(校正)算法,消除光照环境对颜

色显现的影响。灰度世界算法是最常用平衡算法。

一、灰度世界算法

灰度世界算法以灰度世界假设为基础,该假设认为:对于一幅有着大量色彩变化的图像,三个分量的平均值趋于同一灰

度值从物理意义上讲,灰色世界法假设自然界景物对于光线的平均反射的均值在总体上是个定值,这个定值近似地为“灰

色”。颜色平衡算法将这一假设强制应用于待处理图像,可以从图像中消除环境光的影响,获得原始场景图像。

算法执行步骤:

(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;

测试结果:

参考:

[1] 徐晓昭,蔡轶珩,刘晓民,刘长江,沈兰荪. 改进灰度世界颜色校正算法[J]. 光子学报, 2010, 39(3): 559~564

版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://www.cnblogs.com/luo-peng/p/4646231.html

你可能感兴趣的文章
Android官方架构组件LiveData: 观察者模式领域二三事
查看>>
vmware workstation14永久激活密钥分享
查看>>
Myeclipse中打开接口实现类的快捷键
查看>>
使用JdbcTemplate和JdbcDaoSupport
查看>>
Glibc 和 uClibc
查看>>
Mysql学习第三课-分析二进制日志进行增量备份和还原
查看>>
HDU 6073 - Matching In Multiplication | 2017 Multi-University Training Contest 4
查看>>
如何检测域名是否被微信屏蔽 微信域名检测接口API是如何实现
查看>>
POJ1611-The Suspects
查看>>
Linux下安装Python-3.3.2【转】
查看>>
LeetCode OJ:Merge Two Sorted Lists(合并两个链表)
查看>>
功能测试
查看>>
【BZOJ 1901】Dynamic Rankings
查看>>
【转】聚集索引和非聚集索引的区别
查看>>
Github-Client(ANDROID)开源之旅(二) ------ 浅析ActionBarSherkLock
查看>>
eclipse中如何去除警告:Class is a raw type. References to generic type Class<T> should be parameterized...
查看>>
Android 控件属性
查看>>
React-Native 之 GD (十六)首页筛选功能
查看>>
SSISDB5:使用TSQL脚本执行Package
查看>>
asp.net后台进程做定时任务
查看>>