1. 程式人生 > >MATLAB影象均衡化處理

MATLAB影象均衡化處理

I=imread('office_2.jpg');
f = rgb2gray(I);
figure
subplot(221);
imshow(f);
L=256;
M=zeros(256,1);
p=zeros(256,1);
c=zeros(256,1);
[m n]=size(f);
for i=1:m
    for j=1:n
        M(f(i,j)+1)=M(f(i,j)+1)+1;
    end
end
    for i=1:256;
        p(i)=M(i)/(m*n);
    end
subplot(222);
bar(p);
for i=1:256
    for j=1:i
        c(i)=c(i)+p(j);
    end
end

max=0;
min=0;
for i=1:m
    for j=1:n
        if(max<f(i,j))
            max=f(i,j);
        else if(min>f(i,j))
                min=f(i,j);
            end
        end
    end
end
for i=1:m
    for j=1:n
        K(i,j)=c(f(i,j)+1)*(max-min)+min;
    end
end
subplot(223);
imshow(K);
for i=1:m
    for j=1:n
        M(f(i,j)+1)=M(f(i,j)+1)+1;
    end
end
    for i=1:256;
        p(i)=M(i)/(m*n);
    end
    subplot(224);
    bar(p);