数字图像处理实验报告--直方图规定化

  • 格式:doc
  • 大小:786.50 KB
  • 文档页数:8

下载文档原格式

  / 4
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数字图像处理实验报告

实验名称:直方图规定化

姓名:

班级:

学号:

专业:电子信息工程(2+2)

指导教师:陈华华

实验日期:2020年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)&S1(j+1)>=S2(i)

if abs(S1(j)-S2(i))<=abs(S1(j+1)-S2(i)) T(i)=j;

else T(i)=j+1;

end

end

end

end

%确定变换关系,重组直方图

H=zeros(1,256);

H(1)=S2(1);

for i=2:255

if T(i-1)>0

for k=(T(i-1)+1):T(i)

H(i)=H(i)+D(k);

end

else H(i)=0;

end