您的位置:首页 > 理论基础 > 计算机网络

图像处理——白平衡(灰度世界方法)

2012-02-23 10:19 232 查看
转载请注明出处和作者,谢谢合作!!!

使用相机等采集图像的过程中,往往由于成像过程中的感光元件或者镜头会对原始色彩造成影响,为了校正这种光线和镜头对颜色影响,都会加入白平衡来对成像结果进行调整,那么今天就介绍一个最简单的白平衡处理方法:灰色世界方法

话不多说了,有不懂原理的可以留言,直接上测试通过的代码:

im = imread('1.jpg','jpg');
im = double(im)./256;
r = im(:,:,1);
g = im(:,:,2);
b = im(:,:,3);
avgR = mean(mean(r));
avgG = mean(mean(g));
avgB = mean(mean(b));
avgGray = (avgR + avgG + avgB)/3;
if avgR == 0
outR = r;
else
outR = (avgGray/avgR).*r;
end

if avgG == 0
outG = g;
else
outG = (avgGray/avgG).*g;
end

if avgB == 0
outB = b;
else
outB = (avgGray/avgB).*b;
end

maxRGB = [max(max(outR)) max(max(outG)) max(max(outG))];

factor = max(maxRGB);
if  factor > 1
outR = outR./factor;
outG = outG./factor;
outB = outB./factor;
end

GWoutIm(:,:,1) = outR;
GWoutIm(:,:,2) = outG;
GWoutIm(:,:,3) = outB;

imshow(GWoutIm);

imwrite(GWoutIm, 'testout.jpg', 'jpg');

avgIn1RGB = [mean(mean(r)) mean(mean(g)) mean(mean(b))];
avgGW1RGB = [mean(mean(outR)) mean(mean(outG)) mean(mean(outB))];
avgIn1 = mean([mean(mean(r)) mean(mean(g)) mean(mean(b))]);
avgGW1 = mean([mean(mean(outR)) mean(mean(outG)) mean(mean(outB))]);


一下是测试图像(来源自网络):

原始图像(色调偏冷)



处理以后的图像(色调转暖):



谢谢您的支持,有任何的问题欢迎留言
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息