图像处理 灰度世界算法

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

从物理意义上讲,灰色世界法假设自然界景物对于光线的平均反射的均值在总体上是个定值,这个定值近似地为“灰色”。颜色平衡算法将这一假设强制应用于待处理图像,可以从图像中消除环境光的影响。

步骤:

1.通过计算图像R,G,B三通道平均值avgR,avgG,avgB

2.计算三个通道的增益系数

3c1bed190fe5729684c394ddfa1a0007.png ; 

2133c9b3b3f360bdc4bd899d73523086.png ; 

324d5f0c95a5f9484a92197d69a174a9.png ;

3.根据对角模型,对于图像的每个像素C,调整分量

这种算法简单快速,但是当图像场景颜色并不丰富时,尤其出现大块单色物体时,该算法常会失效。 

代码:

I=imread("data/沙尘2.png");
y=GrayWorld(I);
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)/3
scaleValue = grayValue./avgRGB;
newI(:,:,1) = scaleValue(1) * r;
newI(:,:,2) = scaleValue(2) * g;
newI(:,:,3) = scaleValue(3) * b;
y=newI;
end

你可能感兴趣的:(图像处理,计算机视觉)