求助,看看这图像处理的程序哪出错了?
本人写的图像白平衡处理的程序。由于MATLAB刚学,对于数组、矩阵的数值处理搞不太懂,希望大家指出错误,最好能改正。谢谢!function whitebalanced(pic)
a=imread(pic);
b=double(a);
[m,n]=size(b(:,:,1));
yadd=0;
for i=1:m
for j=1:n
y(i,j)=0.299*b(i,j,1)+0.587*b(i,j,2)+0.114*b(i,j,3);
yadd=yadd+y(i,j);
end
end
yave=yadd/m*n;
ymax=0;
for i=1:m
for j=1:n
if ymax<y(i,j)
ymax=y(i,j);
end
end
end
Rsum=0;
Gsum=0;
Bsum=0;
num=0;
for i=1:m
for j=1:n
if y(i,j)<=0.95*ymax
Rsum=Rsum+b(i,j,1);
Gsum=Gsum+b(i,j,2);
Bsum=Bsum+b(i,j,3);
num=num+1;
else
num=num+0;
end
end
end
for i=1:m
for j=1:n
b(i,j,1)=yave*num*b(i,j,1)/Rave;
b(i,j,2)=yave*num*b(i,j,2)/Gave;
b(i,j,3)=yave*num*b(i,j,3)/Bave;
end
end
c=uint8(b);
image(c);
[[it] 本帖最后由 yonghang911 于 2008-6-2 19:48 编辑 [/it]]