登录论坛

查看完整版本 : [求助]matlab的灰度直方图均衡化的程序


heyjude
2008-11-29, 11:18
不要用histeq函数,

本人编的程序如下:
I=imread('C:\Documents and Settings\Administrator\桌面\1.bmp','bmp');
J=rgb2gray(I);
A=im2double(J);
[m,n]=size(A);%获得该图的行列数。
m1=zeros(1,256);%为直方图申请矩阵。
m2=zeros(1,256);
for i=1:m
for j=1:n
m1(A(i,j)+1)=m1(A(i,j)+1)+1;%统计各级灰度的像素数。
end
end
m2(1)=0;
for k=2:256
m3(k)=m1(k)/(m*n);%计算出灰度的概率。
m2(k)=m2(k-1)+m3(k);%累加直方图。
end
M=zeros(m,n);
for i=1:m
for j=1:n
M(i,j)=(255*m2(A(i,j))); %将处理后的灰度装入新的矩阵。
end
end
P=uint8(M);%转成uint8型。
subplot(3,2,1);imshow(I);title('原始图像');subplot(3,2,2);imhist(I);title('原始直方图');%输出图像和直方图,加以对比。

但是运行时,提示第9行即“m1(A(i,j)+1)=m1(A(i,j)+1)+1;”错误,不知错在哪里,希望哪位解答一下,谢谢了