Matlab常用白平衡算法

上传人:飞****9 文档编号:143100985 上传时间:2020-08-26 格式:PDF 页数:21 大小:690.55KB
返回 下载 相关 举报
Matlab常用白平衡算法_第1页
第1页 / 共21页
Matlab常用白平衡算法_第2页
第2页 / 共21页
Matlab常用白平衡算法_第3页
第3页 / 共21页
Matlab常用白平衡算法_第4页
第4页 / 共21页
Matlab常用白平衡算法_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《Matlab常用白平衡算法》由会员分享,可在线阅读,更多相关《Matlab常用白平衡算法(21页珍藏版)》请在金锄头文库上搜索。

1、1 灰色世界法灰色世界法(grey world method) 要计算未知光源的特性必须从图片中提取相关的统计特性。 当我 们能够仅使用一个统计特性就获得未知光源特性时, 算法就变得非常 简单了。在这种情况下,未知光源必须在整幅图片上都是统一的。均 值于是就成为了此类方法之下最好的统计指标。 而灰色世界法正是利 用了均值作为估算未知光源的关键统计量。 从物理意义上说, 灰色世界法假设自然界景物对于光线的平均反 射的均值在总体上是个定值,这个定值近似地为“灰色” 。在给定图 片的白平衡算法中,灰色世界假设图片中的反射面足够丰富,以至于 可以作为自然界景物的一个缩影。 若这幅图片是在经典光源下拍摄

2、的, 其均值就应该等于灰色。若这幅图是在非经典光源下拍摄的,那么均 值就会大于或者小于灰色值。 而该均值对于灰色的偏离程度则反映了 未知光源相对于已知光源的特性。 虽然这个方法比较简单,但是仍然可以从一些方面进行调整。一 个方面就是对于灰色的定义形式的选择。包括对于光谱的定义、对于 光谱成分的定义和在经典光源之下的 RGB 的响应。 另一个更加重要 的调整方面就是对于灰色的选择。不管如何定义灰色,最佳的灰色之 选必然是自然界实事上出现的灰色。但是这个值是无法获得的(除非 是合成数据) ,所以对于灰色的选择是不同的灰色世界算法的一个重 要的区别点。 一个方法是假设这个灰色就是实事上的灰色。 也就

3、是说反射光谱 是均衡的。 给定光源之下的 RGB 响应是纯白色对此光源的响应值的 2 一部分。比方说,可以使用 50%作为反射率(虽然这个灰色值对于 人眼视觉习惯而言可能过于明亮) 。 另一种方法,就是根据大量的数据提炼出一个均值,并把它定义 为灰色。 这种方法提炼的灰色值可能因为数据库使用的不同而有所不 同。最终提炼的灰色也能仅适用于原始的数据库,而对于数据库未包 括的图片的适用度就会比较差一些。 确定下来的灰色表达形式可以用 Greyi c 来表示。下标 i 表示信道,上标 c 为 canonical 的首字母,表 示经典光源。 在确定灰色的表达形式后只要用 RGB 响应与经典光源下灰色的

4、 比值来归一化图片就可以了。假设 RGB 响应均值为 Avei u,下标 i 表示信道,上标 U 为 Unknown 的首字母,表示未知光源。那么归 一化率的计算式为i 如下式所示 : i= Greyi c Avei u 根据光源转换理论,从未知光源到经典光源下图片表达式的转换 式如下式所定义: c= 1 2 3 u 那么,灰色世界法的计算过程如下图所示: 3 灰色的选择灰色的选择 RGBRGB通道的均值通道的均值 计算计算 归一化率计算归一化率计算 光源变换光源变换 Grey c i 本实验选择的灰色值为(129,129,129) ,具体的 matlab 实现程 序如下: %灰色世界法% c

5、lear 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 通道的均值% 4 Qr=129/AveR; %计算 R 通道的归一化率 Qr% Qg=129/AveG; %计算 G 通道的归一化率 Qg% Qb=129/AveB; %计算 B 通道的归一化率 Qb% %光源变换% img0(:,:,1)=Qr*i

6、mg(:,:,1); img0(:,:,2)=Qg*img(:,:,2); img0(:,:,3)=Qb*img(:,:,3); figure,imshow(img0),title(变换后图片); %显示图片% 偏蓝偏蓝图片图片 5 白平衡调整后的图片白平衡调整后的图片 正常光照下的图片正常光照下的图片 6 基于动态阀值的基于动态阀值的自动白平衡法 (自动白平衡法 (Automatic White Balance Method) 这个算法是通过对图片的 ycbcr 色空间的分析来确定参考白点的, 所以次算法可以说是自适应白平衡算法。 本算法选择参考白点的阀值 是动态变化的,所以对于不同的图片,

7、其阀值也不同。通过对图片的 cbcr 坐标空间的分析, 我们可以看到一个接近白色的区域 (near-white region)是包含着参考白点的。通过这个思路,我们可以通过对图片 分区,然后找出参考白点,然后在通过 von kvies model 来调整图片 时期实现白平衡。这样,这个算法就包括了两个步骤了:寻找参考白 点,白点调整。 寻找参考白点: 为了确定一个接近白色的区域, 我们就必须把 RGB 色空间转换成 YCbCr 色空间。 色空间转换后,就是计算 Cb、Cr 的均值 Mb、Mr;然后通过下式 计算 Cb、Cr 的均方差 Db、Dr: Db = (|Cb(i,j) Mb|) i,j

8、 N Dr = (|Cr(i,j) Mr|) i,j N 为了提高算法的稳健性,将图片分为几个区域并且计算每个区域 的 Mb、Mr、Db、Dr,如果一个区域的 Db,Dr 太小,那么这个区域 就没有足够的色彩变化,就可以丢弃掉了。这样可以避免大面积的统 一色调对结果的影响。 7 接下来就可以通过下面的关系式得到接近白色区域的所有像素点 了: |(,) ( + ()| . |(,) (. + ()| . 根据亮度值,我们选择接近白色区域中的 10%的候选参考白点最 为参考白点。在白点确定后,就可以从参考白点中得到信道增益的值 了。为了维持整幅图片的亮度不变,亮度的最大值被用来得到信道增 益。所以

9、信道增益不及和参考白点有关还与亮度的最大值有关,其表 达式如下: Rgain= Ymax Ravew Ggain= Ymax Gavew Bgain= Ymax Bavew 其中Ymax是整幅图片像素的亮度最大值,Ravew、Gavew和Bavew是 参考白点的 RGB 信道的均值。 最后, 根据 von-kvies model 来调整图片, 使其达到白平衡的效果。 调整的表达式如下: R = Rgain R G = Ggain G B = Bgain B 其中 RGB 是图片的像素点的三个信道值, R GB是调整之后的图片 的像素点的三个信道值。 8 其源程序如下: %Program for

10、 white balancing% function W=wbalance(im) clear all; close all; %读取照片的信息% filename, pathname = uigetfile(*.jpg;*.bmp;*.gif, Pick an image-file); if isequal(filename,0) disp(User selected Cancel); else disp(User selected, fullfile(pathname, filename); end fname=strcat(pathname,filename); im=imread(fn

11、ame); im2=im; im1=rgb2ycbcr(im);%将图片的 RGB 值转换成 YCbCr 值% Lu=im1(:,:,1); Cb=im1(:,:,2); Cr=im1(:,:,3); x y z=size(im); tst=zeros(x,y); 9 %计算 Cb、Cr 的均值 Mb、Mr% Mb=sum(sum(Cb); Mr=sum(sum(Cr); Mb=Mb/(x*y); Mr=Mr/(x*y); %计算 Cb、Cr 的均方差% Db=sum(sum(Cb-Mb)/(x*y); Dr=sum(sum(Cr-Mr)/(x*y); %根据阀值的要求提取出 near-whi

12、te 区域的像素点% cnt=1; for i=1:x for j=1:y b1=Cb(i,j)-(Mb+Db*sign(Mb); b2=Cr(i,j)-(1.5*Mr+Dr*sign(Mr); if (b1abs(1.5*Db) tst(i,j)=Lu(i,j); cnt=cnt+1; end end end cnt=cnt-1; 10 iy=sort(Ciny,descend);%将提取出的像素点从亮度值大的点到小 的点依次排列% nn=round(cnt/10); Ciny2(1:nn)=iy(1:nn);%提取出 near-white 区域中 10%的亮度值较 大的像素点做参考白点%

13、%提取出参考白点的 RGB 三信道的值% mn=min(Ciny2); c=0; for i=1:x for j=1:y if tst(i,j) 由算法决定,不同镜面算法的值不同。 在选出了合适的白色点之后,下一步就是要估计色温,根据计算 的色温来还原已知光源下的图片。色温估计的计算式如下式所示: x= 1 N Xi N i=1 其中下标 X 标示信道,在这种算法中 X=Y、Cb、Cr。 进行色温估计之后,利用光源转换式可以获得如下图所示的计算 过程: 17 色彩空间转换色彩空间转换 RGB-YCbCr 镜面区域选择镜面区域选择 色温估计色温估计 光源变换光源变换 音阶映射法(音阶映射法(ga

14、mut mapping modelgamut mapping model) 音阶映射法采用了与前几种方法完全不同的思路,是第一个很好 的描述了图片统计特性的算法,由 Forsyth 在 1990 年首次提出。此 方法的第一步是建造一个所有可能的 R、G、B 值得集合,这些值是在 经典光源下拍摄所有现实世界可能出现的反射面获得的。 这个集合是 一个凸多面体,因此可使用其顶点来表征。在第二步中,使用相似的 方法,将图片中所有出现的 R、G、B 值绘成一个凸多面体。第三步是 将这两个凸多面体相互映射从而获得对角变换矩阵。 根据映射得来的 变换矩阵一般不是唯一的,而是一个由许多矩阵组成的集合。所以第

15、18 四步就是从这个集合中挑选出最终的变换矩阵。 音阶映射法的主要优点在于对于其应用环境没有特别的限制,因 此其平均表现水平要高于灰色世界法和完美反射法。 其不足之处主要 有三: 第一,要获得在经典光源下所有可能出现的 R、G、B 值集合非常 困难,一般只能获得近似集合。 第二,映射两个三维集合的计算量比较大。 第三,获得的变换矩阵是一个集合, 没有有效的方法获得最优解。 1996 年 Finlayson 提出透视色彩法,在音阶映射法的基础上作了 两点改进。第一,这种方法使用了色度空间(r, g)=(R/(R+B+G), G/(R+B+G)) ;第二,通过考虑可能出现的光源值来进一步缩小得到的 变换矩阵集合。使用色度空间之后,参数集合从三维降为两维,降低 了运算复杂度。 考虑可能出现的光源以后缩小了目标变换矩阵的范围, 使得最后得到的结果更接近最优解。 透视色彩法的主要缺陷在于光源集合是一个非凸集合,也就说它 无法仅仅使用顶点来精确表征。这样就加大了运算难度。 Barnard 采用的方法是将其近似认为一个凸集合,这样就不需要 增加额外的计算了,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号