GrayWorld 色彩均衡算法

1、问题:彩色图像整体向某一方向移动,导致图像偏冷、偏黄

2、产生原因:采集设备的彩色偏差等因素

3、解决问题的思想:基于灰度世界假设,RGB三个通道的平均值近似同一灰度值,然后分别调至每一像素。

4、GrayWorld 算法的具体实现步骤如下:

(1) 计算分别图像三个颜色分量的平均值avgR 、avgG、avgB ,并令图像的平均灰度值为

        avgGray = ( avgR+ avgG + avgB) / 3

        令 ar = avgGray /avgR

        ag = avgGray /avgG

        ab = avgGray /avgB

    对于图像中每个像素c,调整其 R、G、B分量c(R)、c(G)、c(B),使得

        c(R) = c(R)*ar

        c(G) = c(G)*ag

        c(B) = c(B)*ab

(3)将图像中每个像素的 R、G、B 值都调整到可示范围区间内。例如对于 24 位真彩图像,令factor为图像中所有像素的R、G、B三个分量中的最大值,并令factor= factor/ 255。若factor >1,则对于图像中的每一个像素c,调整其分量c ( R )、 c ( G )、 c ( B ),使得

        c(R) = c(R) /factor

        c(G) = c(G) /factor

        c(B) = c(B) /factor

5、代码实现

matlab:

A=imread(frames.images{1});
A=double(A);
A(:,:,1)=A(:,:,1)*1.05;
A(:,:,2)=A(:,:,2)*0.95;
figure(1)
imshow(uint8(A))
avg_R=mean(mean(A(:,:,1)));
avg_G=mean(mean(A(:,:,2)));
avg_B=mean(mean(A(:,:,3)));

avg_Gray=(avg_R+avg_B+avg_G)/3;
ar=avg_Gray/avg_R;
ag=avg_Gray/avg_G;
ab=avg_Gray/avg_B;

new_A(:,:,1)=uint8(A(:,:,1)*ar);
new_A(:,:,2)=uint8(A(:,:,2)*ag);
new_A(:,:,3)=uint8(A(:,:,3)*ab);


figure(2)
imshow(new_A)

  
  
avg_R=mean(mean(new_A(:,:,1)));
avg_G=mean(mean(new_A(:,:,2)));
avg_B=mean(mean(new_A(:,:,3)));

结果:

1)原图 

2)对各通道乘一系数

3)均衡化结果

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值