数字图像处理实验报告--直方图规定化 本文关键词:直方图,图像处理,实验,数字,报告
数字图像处理实验报告--直方图规定化 本文简介:数字图像处理实验报告实验名称:直方图规定化姓名:班级:学号:专业:电子信息工程(2+2)指导教师:陈华华实验日期:2012年5月24日直方图匹配(规定化)直方图均衡化能够自动增强整个图像的对比度,但它的具体增强效果不容易控制,处理的结果总是得到全局均匀化的直方图。实际上有时需要变换直方图,使之成为某
数字图像处理实验报告--直方图规定化 本文内容:
数字图像处理实验报告
实验名称:直方图规定化
姓名:
班级:
学号:
专业:电子信息工程(2+2)
指导教师:陈华华
实验日期:2012年5月24日
直方图匹配(规定化)
直方图均衡化能够自动增强整个图像的对比度,但它的具体增强效果不容易控制,处理的结果总是得到全局均匀化的直方图。实际上有时需要变换直方图,使之成为某个特定的形状,从而有选择地增强某个灰度值范围内的对比度。
这时可以采用比较灵活的直方图规定化。一般来说正确地选择规定化的函数可以获得比直方图均衡化更好的效果。
所谓直方图规定化,就是通过一个灰度映像函数,将原灰度直方图改造成所希望的直方图。所以,直方图修正的关键就是灰度映像函数。
直方图匹配方法主要有3个步骤(这里设M和N分别为原始图和规定图中的灰度级数,且只考虑
N≤M的情况):
(1)
如同均衡化方法中,对原始图的直方图进行灰度均衡化:
(2)
规定需要的直方图,并计算能使规定的直方图均衡化的变换:
(3)
将第1个步骤得到的变换反转过来,即将原始直方图对应映射到规定的直方图,也就是将所有pf(fi)对应到pu(uj)去。
一、A图直方图规定B图
Matlab程序:
%直方图规定化
clear
all
A=imread(
C:/Users/hp/Desktop/A.tif
);
%读入A图像
imshow(A)
%显示出来
title(
输入的A图像
)
%绘制直方图
[m,n]=size(A);
%测量图像尺寸
B=zeros(1,256);
%预创建存放灰度出现概率的向量
for
k=0:255
B(k+1)=length(find(A==k))/(m*n);
%计算每级灰度出现的概率,将其存入B中相应位置
end
figure,bar(0:255,B,g
);
%绘制直方图
title(
A图像直方图
)
xlabel(
灰度值
)
ylabel(
出现概率
)
axis([0,260,0,0.015])
C=imread(
C:/Users/hp/Desktop/B.tif
);%读入B图像
imshow(C)
%显示出来
title(
输入的B图像
)
%绘制直方图
[m,n]=size(C);
%测量图像尺寸
D=zeros(1,256);
%预创建存放灰度出现概率的向量
for
k=0:255
D(k+1)=length(find(C==k))/(m*n);
%计算每级灰度出现的概率,将其存入D中相应位置
end
figure,bar(0:255,D,g
);
%绘制直方图
title(
B图像直方图
)
xlabel(
灰度值
)
ylabel(
出现概率
)
axis([0,260,0,0.015])
S1=zeros(1,256);
for
i=1:256
for
j=1:i
S1(i)=D(j)+S1(i);
%计算B灰度图累计直方图
end
end
counts=B
figure,bar(0:255,counts,r
)
title(
A图像直方图
)
S2=zeros(1,256);
for
i=1:256
for
j=1:i
S2(i)=counts(j)+S2(i);
end
end;
%“累计“规定化直方图
%对比直方图,找到相差最小的灰度级
for
i=1:256
for
j=1:255
if
S1(j)=S2(i)
if
abs(S1(j)-S2(i))0
for
k=(T(i-1)+1):T(i)
H(i)=H(i)+D(k);
end
else
H(i)=0;
end
end
figure,bar(0:255,H,g
)
%显示规定化后的直方图
title(
A规定B后的直方图
)
xlabel(
灰度值
)
ylabel(
出现概率
)
axis([0,260,0,0.6])
%显示规定图
PA=C;
%将各个像素归一化后的灰度值赋给这个像素
for
i=1:m
for
j=1:n
for
k=2:255
if
T(k-1)=S2(i)
if
abs(S1(j)-S2(i))0
for
k=(T(i-1)+1):T(i)
H(i)=H(i)+B(k);
end
else
H(i)=0;
end
end
figure,bar(0:255,H,g
)
%显示规定化后的直方图
title(
规定化后的直方图
)
xlabel(
灰度值
)
ylabel(
出现概率
)
axis([0,260,0,0.6])
%显示规定图
PA=A;
%将各个像素归一化后的灰度值赋给这个像素
for
i=1:m
for
j=1:n
for
k=2:256
if
T(k-1)<=A(i,j)
break;
end
end
end
end
figure,imshow(PA)
%显示规定化后的图像
title(
规定化后图像
)
imwrite(PA,guidinghua.bmp
);