Matlab常用白平衡算法
面阵ccd颜色识别与变换matlab代码
一、引言
面阵CCD(Charge-Coupled Device)是一种常用的图形传感器,可用于获取图像信息。在计算机视觉领域,图像的颜色识别与变换是
一项重要的任务,而MATLAB作为一种强大的技术计算软件,提供了丰富的工具和函数,可以帮助我们实现对面阵CCD图像的颜色识别与变换。本文将介绍如何利用MATLAB实现对面阵CCD图像的颜色识
别与变换,并给出相应的代码和示例。
二、面阵CCD颜色识别
1. 获取图像
在进行面阵CCD颜色识别之前,首先需要获取一张面阵CCD图像。可以通过MATLAB的图像处理工具箱中的函数来读取图像,例如imread函数。
2. 颜色空间转换
面阵CCD图像通常以RGB颜色空间表示,而在进行颜色识别时,通常会将图像转换到其他颜色空间,比如HSV或Lab颜色空间。可以利用MATLAB提供的rgb2hsv和rgb2lab函数来实现颜色空间的转换。
3. 颜色分割
一旦图像转换到目标颜色空间,就可以进行颜色分割操作,将目
标颜色区域提取出来。MATLAB提供了一系列的图像分割函数,比如
imfindcircles和regionprops,可以根据特定的颜色特征来分割图像。
三、面阵CCD颜色变换
1. 色彩空间转换
对于面阵CCD图像的颜色变换,我们可以利用MATLAB提供的颜色空间转换函数,比如rgb2gray和rgb2hsv,将图像转换到目标
色彩空间。
2. 色彩增强
一旦图像转换到目标色彩空间,就可以对图像进行色彩增强操作。MATLAB中的imadjust函数可以帮助我们对图像的色彩进行调整,
Matlab中常用的优化算法与迭代方法
Matlab中常用的优化算法与迭代方法引言
优化问题是在约束条件下求解使得目标函数达到最优值的过程,是许多领域中常见的问题。而Matlab作为一种功能强大的计算软件,提供了各种优化算法和迭代方法,方便用户解决各种优化问题。本文将介绍Matlab中常用的优化算法与迭代方法,并从理论与实践两个角度进行探讨。
一、最优化理论基础
在了解Matlab中的具体算法之前,有必要了解一些最优化理论的基础知识。最优化问题可以分为线性最优化问题和非线性最优化问题。线性最优化问题的目标函数和约束条件都是线性的,而非线性最优化问题中目标函数和/或约束条件可以是非线性的。
在解决这些最优化问题时,有两种常用的方法:直接方法和间接方法。直接方法是通过对优化问题进行求解,找到目标函数的最优值和最优解。间接方法则是通过求解一系列相关方程,找到使目标函数最小的解。对于大多数实际问题,非线性最优化问题往往需要使用间接方法进行求解。
二、Matlab中的优化算法
1. 一维搜索方法
一维搜索是一种简单但有效的优化方法,常用于非线性最优化问题的初始搜索和求解。Matlab中提供了几种常用的一维搜索方法,包括黄金分割和斐波那契搜索方法。
黄金分割搜索方法和斐波那契搜索方法都是通过在一个区间内进行迭代搜索,以找到使目标函数达到最小值的位置。这两种方法都是基于区间的分割原理,通过将区间划分为两个部分并缩小搜索空间,逐步逼近最优解。
2. 梯度下降法
梯度下降法是一种常用的迭代方法,用于求解非线性最优化问题。该方法通过
迭代调整参数值,以找到目标函数的最小值。具体而言,梯度下降法使用目标函数的负梯度方向作为搜索方向,并在每次迭代中更新参数值。
白平衡算法——gamma算子
}
二、运行结果
感谢各位的聆听
参考文献: https://www.cnblogs.com/guanzz/p/7416821.html https://blog.csdn.net/dcrmg/article/details/53677739 http://www.itdaan.com/blog/2016/03/27/93d3569f832579af7bfb56c2f0cc362c.html http://www.itdaan.com/blog/2016/04/11/c8d6b40052d70dfec3559f0086def3f4.html
假设像素值 i=200
二、伽马变换原理
γ值曲线图:
γ值以1为分界,值越小,对图 像低灰度部分的扩展作用就越 强,值越大,对图像高灰度部 分的扩展作用就越强,通过不 同的γ值,就可以达到增强低灰 度或高灰度部分细节的作用
二、伽马变换原理
补偿:
根据公式 , 求出像素归一化后的 数据以 1 /gamma 为指数的对应值。这一步包含 一个 求指数运算 。若 gamma 值为 2. 2 , 则 1 /gamma 为 0. 454545 , 对归一化后 的 A 值进行预补偿的结果就 是 0. 783203 ^0. 454545 = 0. 894872 。
y (x e)
传统CRT:
二、基于伽马变换的图像增强
matlab常用算法大全(数学建模)
本文总结了matlab常用的几个算法,希望对数学建模有帮助。
利用matlab编程FFD算法完成装箱问题:
设有6种物品,它们的体积分别为:60、45、35、20、20和20单位体积,箱子的容积为100个单位体积。
建立box_main.m
function[box_count,b]=box_main(v) vmax=100;
sort(v,'descend');
n=length(v);
b=zeros(1,n);
for i=1:n
b(i)=vmax;
end
box_count=1;
for i=1:n
for j=1:box_count
if v(i)<=b(j) %可以放入 b(j)=b(j)-v(i);
break;
else%不可放入时
continue;
end
end
if j==box_count
box_count=box_count+1;
end
end
box_count=box_count-1;
end
主程序为:
v=[60 45 35 20 20 20];
[box_count,b]=box_main(v)
结果:
box_count =3 b =5 15 80 100 100 100
所以,使用的箱子数为3, 使用的箱子的剩余空间为5,15 ,80。
“超市大赢家”提供了50种商品作为奖品供中奖顾客选择,车的容量为1000dm3 , 奖品i 占用的空间为wi dm3 ,价值为vi 元, 具体的数据如下:
vi = { 220, 208, 198, 192, 180, 180, 165, 162, 160, 158,155, 130, 125, 122, 120, 118, 115, 110, 105, 101, 100, 100, 98,96, 95, 90, 88, 82, 80, 77, 75, 73, 72, 70, 69, 66, 65, 63, 60, 58,56, 50, 30, 20, 15, 10, 8, 5, 3, 1}
均值白平衡原理
均值白平衡原理
均值白平衡原理是数字图像处理中一种常用的白平衡算法。它的基本
原理是通过计算图像中的像素点的平均值,在不同的颜色通道上进行调整,使图像中的灰度平均值接近于理想的中值,从而实现消除图像中的色偏,
恢复图像的真实色彩。
均值白平衡原理基于这样的假设:图像中的白色物体在不同的光照条
件下在红绿蓝三个颜色通道上的亮度值应该是相等的。但是由于光源的颜
色温度及传感器响应的差异等因素的影响,图像中的白色物体在各个颜色
通道上的亮度值并不相同,从而导致图像中的色偏。
为了消除这种色偏,均值白平衡算法首先需要计算图像中的像素点的
平均值。假设图像的大小为M×N,那么图像中的每个像素点可表示为一
个R、G、B三个通道的向量(R,G,B)。通过遍历图像的所有像素点,可
以计算出图像中的每个通道上的像素值的平均值,分别记为R_avg、
G_avg、B_avg。
接下来,通过将图像中的每个像素点的R、G、B三个通道的像素值分
别除以对应通道的平均值,得到3个系数:Kr = R_avg / R,Kg = G_avg / G,Kb = B_avg / B。然后将图像中的每个像素点的R、G、B三个通道
的像素值乘以对应通道的系数,即R = R * Kr,G = G * Kg,B = B * Kb。
最后,将调整后的R、G、B三个通道的像素值分别映射到0到255的
灰度范围内,即R = clip(R, 0, 255),G = clip(G, 0, 255),B =
clip(B, 0, 255)。
通过以上步骤,均值白平衡算法实现了对图像中的白平衡进行校正。
白平衡算法总结
灰色世界法(grey world method)
要计算未知光源的特性必须从图片中提取相关的统计特性。当我们能够仅使用一个统计特性就获得未知光源特性时,算法就变得非常简单了。在这种情况下,未知光源必须在整幅图片上都是统一的。均值于是就成为了此类方法Z下最好的统计指标。而灰色世界法正是利用了均值作为估算未知光源的关键统计量。
从物理意义上说,灰色世界法假设自然界景物对于光线的平均反射的均值在总体上是个定值,这个定值近似地为“灰色”。在给定图片的白平衡算法中,灰色世界假设图片中的反射面足够丰富,以至于可以作为自然界景物的一个缩影。若这幅图片是在经典光源下拍摄的, 其均值就应该等于灰色。若这幅图是在非经典光源下拍摄的,那么均值就会大于或者小于灰色值。而该均值对于灰色的偏离程度则反映了未知光源相对于已知光源的特性。
虽然这个方法比较简单,但是仍然可以从一些方面进行调整。一个方面就是对于灰色的定义形式的选择。包括对于光谱的定义、对于光谱成分的定义和在经典光源Z下的RGB的响应。另一个更加重要的调整方面就是对于灰色的选择。不管如何定义灰色,最佳的灰色之选必然是自然界实事上出现的灰色。但是这个值是无法获得的(除非是合成数据),所以对于灰色的选择是不同的灰色世界算法的一个重要的区别点。
一个方法是假设这个灰色就是实事上的灰色。也就是说反射光谱是均衡的。给定光源Z卜的RGB响应是纯白色对此光源的响应值的一部分。比方说,可以使用50%作为反射率(虽然这个灰色值对于人眼视觉习惯而言
可能过于明亮)。
另一种方法,就是根据大量的数据提炼出一个均值,并把它定义为灰色。这种方法提炼的灰色值可能因为数据库使用的不同而有所不同。最终提炼的灰色也能仅适用于原始的数据库,而对于数据库未包括的图片的适用度就会比较差一些。确定下来的灰色表达形式可以用Gmyf来表示。下标i表示信道,上标c为canonical的首字母,表示经典光源。
Ma ab常用白平衡算法
matlab常用算法大全(数学建模)
本文总结了matlab常用的几个算法,希望对数学建模有帮助。
利用matlab编程FFD算法完成装箱问题:
设有6种物品,它们的体积分别为:60、45、35、20、20和20单位体积,箱子的容积为100个单位体积。
建立box_main.m
function[box_count,b]=box_main(v) vmax=100;
sort(v,'descend');
n=length(v);
b=zeros(1,n);
for i=1:n
b(i)=vmax;
end
box_count=1;
for i=1:n
for j=1:box_count
if v(i)<=b(j) %可以放入 b(j)=b(j)-v(i);
break;
else%不可放入时
continue;
end
end
if j==box_count
box_count=box_count+1;
end
end
box_count=box_count-1;
end
主程序为:
v=[60 45 35 20 20 20];
[box_count,b]=box_main(v)
结果:
box_count =3 b =5 15 80 100 100 100
所以,使用的箱子数为3, 使用的箱子的剩余空间为5,15 ,80。
“超市大赢家”提供了50种商品作为奖品供中奖顾客选择,车的容量为1000dm3 , 奖品i 占用的空间为wi dm3 ,价值为vi 元, 具体的数据如下:
vi = { 220, 208, 198, 192, 180, 180, 165, 162, 160, 158,155, 130, 125, 122, 120, 118, 115, 110, 105, 101, 100, 100, 98,96, 95, 90, 88, 82, 80, 77, 75, 73, 72, 70, 69, 66, 65, 63, 60, 58,56, 50, 30, 20, 15, 10, 8, 5, 3, 1}
白平衡算法
白平衡算法
白平衡算法是相机自动曝光的重要一部分,它能有效调整拍摄的
照片的亮度等特征,使得其保持白色的协调,也就是白平衡。
白平衡算法的基本思路是,照片的自然色系基本上能被认为完全
由红色,绿色和蓝色三角形的点构成。通常情况下,在日光源(例如,白天或晚上自然景观)照射下,白色画面的点应具有相同的红色,绿
色和蓝色比例,因此,照片的RGB像素值的加权平均值也应该是约等
于中性灰(128,128,128)的灰色。在白平衡算法中,为了得到最佳的
曝光,将检测图像中所有白色画面点的RGB值,然后调整比例,以使
每一个点都处于完美的灰度需要级别。
MATLAB直方图均衡算法
直方图均衡
一、直方图的定义
假设图像在区间[0,G]内共有L 个灰度级,其直方图定义为离散函数:
h(r k )=n k
其中r k 为区间[0,G]内的第k 级灰度值,n k 为灰度值是r k 的像素个数。
使用所有元素的h(r k )除以图像中的像素总数n 可以得到归一化直方图,即:
p(r k )=n k /n
其中k=1,2,…,L 。p(r k )表示灰度级r k 的出现概率。
二、绘制直方图
利用MATLAB 内嵌函数imhist 可绘制直方图,基本语法为:h =imhist(f,b)
其中,f 为输入图像,h 为直方图h(r k ),b 是直方图中显示的灰度级的个数,即h 中所含元素的个数,默认为256。
三、直方图均衡算法
假设灰度级为归一化至范围[0,1]内的连续量,并令p r (r)表示某个给定图像中的灰度级的概率密度函数(PDF),假设作如下变换得到输出灰度级s 为:
0()()r r s T r p w dw ==⎰\*MERGEFORMAT (1)
其中s 同样为随机变量,则s 的PDF 由下式可得:
()()s r dr
p s p r ds =\*MERGEFORMAT (2)
对式(1)的定积分求导得:
()()r ds dT r p r dr dr ==\*MERGEFORMAT (3)
将式(3)代入式(2)可得p s (s)=1,即s 属于均匀分布,考虑去归一化后,s 的值域为[0,G],与r 的取值范围一样。实际应用中,图片的灰度值一般不连续,我们可以用出现频率(直方图值)与求和代替PDF 和积分,即:
matlab常用算法大全(K12教育文档)
matlab常用算法大全(word版可编辑修改)
编辑整理:
尊敬的读者朋友们:
这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(matlab常用算法大全(word 版可编辑修改))的内容能够给您的工作和学习带来便利。同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为matlab常用算法大全(word版可编辑修改)的全部内容。
Matlab 高级算法程序代码汇总
一、灰色预测模型matlab程序
% renkou1=renkou(:,1);%年末常住人口数
% renkou2=renkou(:,2);%户籍人口
% renkou3=renkou(:,3);%非户籍人口
% shjian=1979:2010;
%以上数据自己给
x0=renkou2’;
n=length(x0);
lamda=x0(1:n—1)。/x0(2:n)
range=minmax(lamda)
x1=cumsum(x0)
for i=2:n
z(i)=0.5*(x1(i)+x1(i—1));
end
B=[—z(2:n)’,ones(n-1,1)];
Y=x0(2:n)’;
u=B\Y
x=dsolve(’Dx+a*x=b’,'x(0)=x0');
x=subs(x,{’a','b',’x0'},{u(1),u(2),x1(1)});
yuce1=subs(x,’t',[0:n-1]);
基于FPGA的图像自动白平衡研究和实现
收稿日期:2019-08-26;修回日期:2019-11-12基金项目:山西省重点研发计划(高新技术领域)项目(201803D121102)
作者简介:王晨(1994-),男,山西晋中人,硕士研究生,主要研究方向为数字图像处理;王晓凯(1963-),男,山西运城人,教授,博导,主要研究方向
为物联网与智能信息处理(wxk2000@263.net );徐鹤丁(1995-),男,云南曲靖人,硕士研究生,主要研究方向为图像增强、图像去雾
.基于FPGA 的图像自动白平衡研究和实现
*
王
晨1,王晓凯1,徐鹤丁
2(1.山西大学物理电子工程学院,太原030006;2.北京航空航天大学宇航学院,北京100191)
摘
要:采用Xilinx Kintex7-
325T 芯片设计了用于图像色彩校正的FPGA 硬件系统,实现了对彩色CMOS 数字相机的自动白平衡处理。针对当视场中色彩单一时,传统白平衡算法产生色偏的问题,对传统自动白平衡算法进行了改
进,详细描述了算法的设计思路,并采用Verilog 语言在ISE14.7软件开发平台上完成白平衡算法程序设计。通过仿
真软件分析和硬件系统显示图片的效果,
表明该FPGA 硬件系统可以高清实时运行,速度快、功耗低、实用性强。该硬件系统已用于电视摄像机模块图像处理。关键词:FPGA ;自动白平衡;图像处理;色偏
0引言
在当今社会,图像是信息的主要载体,图像信息是非常重要的。随着科学的发展,图像处理的应用越来越广泛。电视摄像机
等图像采集设备现在已经逐步走入了高清化与智能化时代,而
“高清”不仅指能看清监控场景中的目标,而且还需提供高质量的原始图像。
matlab常用算法大全(数学建模)
本文总结了matlab常用的几个算法,希望对数学建模有帮助。
利用matlab编程FFD算法完成装箱问题:
设有6种物品,它们的体积分别为:60、45、35、20、20和20单位体积,箱子的容积为100个单位体积。
建立box_main.m
function[box_count,b]=box_main(v) vmax=100;
sort(v,'descend');
n=length(v);
b=zeros(1,n);
for i=1:n
b(i)=vmax;
end
box_count=1;
for i=1:n
for j=1:box_count
if v(i)<=b(j) %可以放入 b(j)=b(j)-v(i);
break;
else%不可放入时
continue;
end
end
if j==box_count
box_count=box_count+1;
end
end
box_count=box_count-1;
end
主程序为:
v=[60 45 35 20 20 20];
[box_count,b]=box_main(v)
结果:
box_count =3 b =5 15 80 100 100 100
所以,使用的箱子数为3, 使用的箱子的剩余空间为5,15 ,80。
“超市大赢家”提供了50种商品作为奖品供中奖顾客选择,车的容量为1000dm3 , 奖品i 占用的空间为wi dm3 ,价值为vi 元, 具体的数据如下:
vi = { 220, 208, 198, 192, 180, 180, 165, 162, 160, 158,155, 130, 125, 122, 120, 118, 115, 110, 105, 101, 100, 100, 98,96, 95, 90, 88, 82, 80, 77, 75, 73, 72, 70, 69, 66, 65, 63, 60, 58,56, 50, 30, 20, 15, 10, 8, 5, 3, 1}
白平衡matlab
clc;
S1=imread('4.jpg');
R = S1(:,:,1); G = S1(:,:,2); B = S1(:,:,3);
Rx4 = S1(:,:,1)*2; Gx4 = S1(:,:,2)*2; Bx4 = S1(:,:,3)*2;
Rave = mean(mean(R));
Gave = mean(mean(G));
Bave = mean(mean(B));
Kave = (Rave + Gave + Bave) / 3;
R1 = (Kave/Rave)*R; G1 = (Kave/Gave)*G; B1 = (Kave/Bave)*B;
R2 = (Kave/Rave)*Rx4; G2 = (Kave/Gave)*Gx4; B2 = (Kave/Bave)*Bx4;
S1_white = cat(3, R1, G1, B1);
S1_whitex4 = cat(3, R2, G2, B2);
S1_white_out = uint8(S1_white);
S1_white_outx4 = uint8(S1_whitex4);
subplot(121),imshow(S1_white_out)
subplot(122),imshow(S1_white_outx4)
白平衡算法
灰色世界法(grey world method)
要计算未知光源的特性必须从图片中提取相关的统计特性。当我们能够仅使用一个统计特性就获得未知光源特性时,算法就变得非常简单了。在这种情况下,未知光源必须在整幅图片上都是统一的。均值于是就成为了此类方法之下最好的统计指标。而灰色世界法正是利用了均值作为估算未知光源的关键统计量。
从物理意义上说,灰色世界法假设自然界景物对于光线的平均反射的均值在总体上是个定值,这个定值近似地为“灰色”。在给定图片的白平衡算法中,灰色世界假设图片中的反射面足够丰富,以至于可以作为自然界景物的一个缩影。若这幅图片是在经典光源下拍摄的,其均值就应该等于灰色。若这幅图是在非经典光源下拍摄的,那么均值就会大于或者小于灰色值。而该均值对于灰色的偏离程度则反映了未知光源相对于已知光源的特性。
虽然这个方法比较简单,但是仍然可以从一些方面进行调整。一个方面就是对于灰色的定义形式的选择。包括对于光谱的定义、对于光谱成分的定义和在经典光源之下的RGB 的响应。另一个更加重要的调整方面就是对于灰色的选择。不管如何定义灰色,最佳的灰色之选必然是自然界实事上出现的灰色。但是这个值是无法获得的(除非是合成数据),所以对于灰色的选择是不同的灰色世界算法的一个重要的区别点。
一个方法是假设这个灰色就是实事上的灰色。也就是说反射光谱是均衡的。给定光源之下的RGB 响应是纯白色对此光源的响应值的
一部分。比方说,可以使用50%作为反射率(虽然这个灰色值对于人眼视觉习惯而言可能过于明亮)。
另一种方法,就是根据大量的数据提炼出一个均值,并把它定义为灰色。这种方法提炼的灰色值可能因为数据库使用的不同而有所不同。最终提炼的灰色也能仅适用于原始的数据库,而对于数据库未包括的图片的适用度就会比较差一些。确定下来的灰色表达形式可以用来表示。下标i 表示信道,上标c 为canonical 的首字母,表示经
使用Matlab进行图像拍摄与图像处理的实践方法
使用Matlab进行图像拍摄与图像处理的实践
方法
1. 引言
人类对于图像的处理和分析,一直是科学和技术领域中的重要课题。随着数
字图像处理技术的不断发展,Matlab成为了研究者们图像处理的利器。本文将探
讨如何使用Matlab进行图像拍摄与图像处理,以帮助读者更好地理解并应用这一
工具。
2. 图像拍摄
图像拍摄是获取数字图像的第一步。在拍摄过程中,摄影师需要注意一些关
键因素,例如光线条件、曝光时间和焦距等。Matlab提供了图像采集工具箱,可
以与数码相机或摄像机相连,并实时获取图像数据。通过该工具箱,用户可以调整曝光时间、白平衡和对焦等设置,以满足实际需求。
3. 图像处理预处理
图像拍摄后,图像预处理是必不可少的一步。预处理可以帮助提高图像质量,并减少后续处理的复杂度。Matlab提供了一系列的图像处理函数,可以实现预处
理任务,例如灰度化、平滑滤波和直方图均衡化等。通过这些函数,用户可以根据需要调整图像的亮度、对比度和细节等参数,以获取更好的效果。
4. 图像处理主要技术
图像处理主要包括图像增强、图像复原和图像分割等技术。Matlab提供了丰
富的工具箱和函数,可以实现这些技术的应用。例如,Matlab中的imadjust函数可以对图像进行亮度和对比度调整,imfilter函数可以实现各种滤波操作,imsharpen
函数可以增强图像的边缘和细节等。通过灵活使用这些函数,用户可以根据实际情况选择合适的方法,并通过实验不断优化处理结果。
5. 图像处理案例
为了更好地理解和应用Matlab进行图像处理,下面将介绍一个实际的案例:人脸识别。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
灰色世界法(grey world method)
要计算未知光源的特性必须从图片中提取相关的统计特性。当我们能够仅使用一个统计特性就获得未知光源特性时,算法就变得非常简单了。在这种情况下,未知光源必须在整幅图片上都是统一的。均值于是就成为了此类方法之下最好的统计指标。而灰色世界法正是利用了均值作为估算未知光源的关键统计量。
从物理意义上说,灰色世界法假设自然界景物对于光线的平均反射的均值在总体上是个定值,这个定值近似地为“灰色”。在给定图片的白平衡算法中,灰色世界假设图片中的反射面足够丰富,以至于可以作为自然界景物的一个缩影。若这幅图片是在经典光源下拍摄的,其均值就应该等于灰色。若这幅图是在非经典光源下拍摄的,那么均值就会大于或者小于灰色值。而该均值对于灰色的偏离程度则反映了未知光源相对于已知光源的特性。
虽然这个方法比较简单,但是仍然可以从一些方面进行调整。一个方面就是对于灰色的定义形式的选择。包括对于光谱的定义、对于光谱成分的定义和在经典光源之下的RGB 的响应。另一个更加重要的调整方面就是对于灰色的选择。不管如何定义灰色,最佳的灰色之选必然是自然界实事上出现的灰色。但是这个值是无法获得的(除非是合成数据),所以对于灰色的选择是不同的灰色世界算法的一个重要的区别点。
一个方法是假设这个灰色就是实事上的灰色。也就是说反射光谱是均衡的。给定光源之下的RGB 响应是纯白色对此光源的响应值的
一部分。比方说,可以使用50%作为反射率(虽然这个灰色值对于人眼视觉习惯而言可能过于明亮)。
另一种方法,就是根据大量的数据提炼出一个均值,并把它定义为灰色。这种方法提炼的灰色值可能因为数据库使用的不同而有所不同。最终提炼的灰色也能仅适用于原始的数据库,而对于数据库未包括的图片的适用度就会比较差一些。确定下来的灰色表达形式可以用Grey i c来表示。下标i 表示信道,上标c 为canonical 的首字母,表示经典光源。
在确定灰色的表达形式后只要用RGB 响应与经典光源下灰色的比值来归一化图片就可以了。假设RGB 响应均值为Ave i u,下标i 表示信道,上标U 为Unknown 的首字母,表示未知光源。那么归一化率的计算式为σ
i
如下式所示:
σ
i = Grey i c
Ave i u
根据光源转换理论,从未知光源到经典光源下图片表达式的转换式如下式所定义:
ρ⃑c=
[σ
1
σ
2
σ
3
]
∙ρ⃑u
那么,灰色世界法的计算过程如下图所示:
本实验选择的灰色值为(129,129,129),具体的matlab实现程序如下:
%灰色世界法%
clear all; %清屏%
img=imread('b1.bmp'); %读取位图的rgb值并存在名为img的三
维矩阵中%
AveR=mean(mean(img(:,:,1))); %计算R通道的均值%
AveG=mean(mean(img(:,:,2))); %计算G通道的均值%
AveB=mean(mean(img(:,:,3))); %计算B通道的均值%
Qr=129/AveR; %计算R通道的归一化率Qr%
Qg=129/AveG; %计算G通道的归一化率Qg%
Qb=129/AveB; %计算B通道的归一化率Qb%
%光源变换%
img0(:,:,1)=Qr*img(:,:,1);
img0(:,:,2)=Qg*img(:,:,2);
img0(:,:,3)=Qb*img(:,:,3);
figure,imshow(img0),title('变换后图片'); %显示图片%
偏蓝图片
白平衡调整后的图片
正常光照下的图片
基于动态阀值的自动白平衡法(Automatic White Balance Method)这个算法是通过对图片的ycbcr色空间的分析来确定参考白点的,所以次算法可以说是自适应白平衡算法。本算法选择参考白点的阀值是动态变化的,所以对于不同的图片,其阀值也不同。通过对图片的cbcr坐标空间的分析,我们可以看到一个接近白色的区域(near-white region)是包含着参考白点的。通过这个思路,我们可以通过对图片
分区,然后找出参考白点,然后在通过von kvies model来调整图片时期实现白平衡。这样,这个算法就包括了两个步骤了:寻找参考白点,白点调整。
寻找参考白点:
为了确定一个接近白色的区域,我们就必须把RGB色空间转换成YCbCr色空间。
色空间转换后,就是计算Cb、Cr的均值Mb、Mr;然后通过下式计算Cb、Cr的均方差Db、Dr:
Db=∑(|Cb(i,j)−Mb|) i,j
N
⁄
Dr=∑(|Cr(i,j)−Mr|) i,j
N
⁄
为了提高算法的稳健性,将图片分为几个区域并且计算每个区域的Mb、Mr、Db、Dr,如果一个区域的Db,Dr太小,那么这个区域就没有足够的色彩变化,就可以丢弃掉了。这样可以避免大面积的统一色调对结果的影响。
接下来就可以通过下面的关系式得到接近白色区域的所有像素点了:
|Cb(i,j)−(Mb+Db×sign(Mb))|<1.5×Db
|Cr(i,j)−(1.5×Mr+Dr×sign(Mr))|<1.5×Dr 根据亮度值,我们选择接近白色区域中的10%的候选参考白点最为参考白点。在白点确定后,就可以从参考白点中得到信道增益的值了。为了维持整幅图片的亮度不变,亮度的最大值被用来得到信道增益。所以信道增益不及和参考白点有关还与亮度的最大值有关,其表达式如下:
⁄
R gain=Y max R
avew
G gain=Y max G
⁄
avew
B gain=Y max B
⁄
avew
其中Y max是整幅图片像素的亮度最大值,R avew、G avew和B avew是参考白点的RGB信道的均值。
最后,根据von-kvies model来调整图片,使其达到白平衡的效果。调整的表达式如下:
R=́R gain×R
G=́G gain×G
B=́B gain×B
其中RGB是图片的像素点的三个信道值,ŔǴB́是调整之后的图片的像素点的三个信道值。