您的位置:首页 > 其它

直方图规定化

2015-08-26 10:36 204 查看
一、直方图规定化的原理和步骤



二、具体实现

clear all;
close all;
clc;
%% 计算给定的直方图累积分布函数
r=127;
x=-r:r+1;
sigma=20;
y1=exp(-((x-80).^2)/(2*sigma^2));
y2=exp(-((x+80).^2)/(2*sigma^2));
y=y1+y2;                        %双峰高斯函数,任意函数都可以
y=y/sum(y);                   %归一化,使函数符合概率分布的sum(y)==1这样一个规律
G=zeros(1,256);               %函数的累积直方图
G=cumsum(y);

%%  计算待处理的累积分布函数
img=imread('pout.tif');
[m n]=size(img);
hist=imhist(img);       %imhist能返回每个灰度级的像素值,返回的是列向量
p=hist'/(m*n);
s=zeros(1,256);        %待处理图像的累积直方图
s=cumsum(p);
subplot(1,2,1)
imshow(img);
subplot(1,2,2)
imhist(img)

%% 相应的映射
for i=1:256
tmp{i}=G-s(i);
tmp{i}=abs(tmp{i});         %因为要找距离最近的点,所以取绝对值
[a index(i)]=min(tmp{i});   %找到两个累积直方图距离最近的点
end
imgn=zeros(m,n);
for i=1:m
for j=1:n
imgn(i,j)=index(img(i,j)+1)-1;    %由原图的灰度通过索引映射到新的灰度
end
end
%%
figure,
subplot(1,2,1)
imshow(uint8(imgn))
subplot(1,2,2)
imhist(uint8(imgn))       %新图的直方图

----------
本代码参考:http://www.cnblogs.com/tiandsp/archive/2012/12/19/2825418.html


相应结果:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: