您的位置:首页 > 编程语言 > MATLAB

MATLAB实现直方图均衡化与规定化

2018-06-10 21:48 585 查看
function [  ] = image_equalization_regulation( ori_image,obj_image)
%输入为一参数实现图像ori_image的均衡化,输入为两参数实现图像ori_image的规定化
%均衡化
A=imread(ori_image);
subplot(1,2,1),imshow(A);title('origine image');
% subplot(2,2,2),imhist(A);
[r,c]=size(A);
[num,n]=imhist(A);
pi=zeros(1,256);
for i=1:256;
    pi(n(i)+1)=num(i)/(r*c);
end
sig_pi=zeros(1,256);
sig_pi(1)=pi(1);
for i=2:256;
    sig_pi(i)=sig_pi(i-1)+pi(i);
end
for i=1:r;
    for j=1:c;
        A(i,j)=fix(255*sig_pi(A(i,j)+1)+0.5);
    end
end
%规定化
if nargin==2
    B=imread(obj_image);
    [row,col]=size(B);
    [num,n]=imhist(B);
    pj=zeros(1,256);
    for i=1:256;
        pj(n(i)+1)=num(i)/(row*col);
    end
    sig_pj=zeros(1,256);
    sig_pj(1)=pj(1);
    for i=2:256;
        sig_pj(i)=sig_pj(i-1)+pj(i);
    end
    for i=1:r;
        for j=1:c;
            ijdiff=abs(sig_pi(A(i,j)+1)-sig_pj);
            A(i,j)=find(ijdiff<=min(ijdiff))-1;
        end
    end
end
subplot(1,2,2),imshow(A);title('new image');
% subplot(2,2,4),imhist(A);
end 阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: