% matlab彩色圖像分離通道並合並成處理后的彩色圖像(彩色變灰度再變彩色) % 白平衡算法(灰度世界法)消除RGB受光照影響 clear all; close all; %讀入原始圖像 srcImage = imread('7.jpg'); figure,imshow(srcImage); srcImageGray = rgb2gray(srcImage); figure,imshow(srcImageGray); %白平衡算法 R = srcImage(:,:,1); G = srcImage(:,:,2); B = srcImage(:,:,3); %求其各通道平均值及增益 Raver = mean(mean(R)); Gaver = mean(mean(G)); Baver = mean(mean(B)); K = (Raver+Gaver+Baver)/3; Kr = K/Raver; Kg = K/Gaver; Kb = K/Baver; %更新RGB值 Rnew = R*Kr; Gnew = G*Kg; Bnew = B*Kb; %合並通道 % [m,n,k] = size(srcImage); % dstImage = zeros(m,n,k); dstImage(:,:,1) = Rnew; dstImage(:,:,2) = Gnew; dstImage(:,:,3) = Bnew; figure,imshow(dstImage); dstImageGray = rgb2gray(dstImage); figure,imshow(dstImageGray);
結果圖如下:
原圖:

白平衡后圖:

