直方图均衡化与规定化

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

课程名称___图像处理与分析

题目名称_直方图均衡化与规定化

学院信息工程

专业电子信息工程

年级班别 0503 学号 ********** 学生姓名姚艺锋

指导老师曹江中

2008年6月16日

《图像处理与分析》课程设计报告

直方图均衡化与规定化

1、设计方案(原理)

一般情况下,如果图像的灰度分别集中在比较窄的区间,从而引起图像细节的模糊,为了使图像细节清晰,并使目标得到突出,达到图像增强的目的,可通过改善各部分亮度的比例关系,即通过直方图的方法来实现.直方图的方法是以概率论为基础的.常用的方法有直方图均衡化和直方图规定化.

(1) 直方图均衡化

直方图均衡化又称直方图平坦化,是将一已知灰度概率密度分布的图像经过某种变换,变成一幅具有均匀灰度概率密度分布的新图像.其结果是扩展了像元取值的动态范围,从而达到增强图像整体对比度的效果.

直方图均衡化的具体实现步骤如下:

1).列出原始图像的灰度级

1

,,1,0,-=L j f

j

2).统计各灰度级的像素数目

1

,,1,0,-=L j n j

3).计算原始图像直方图各灰度级的频数

1

,,1,0,/)(-==L j n n

f

P j

j

f

4).计算累积分布函数

1

,,,1,0,)()(0

-==

=L k j f P f C k j j f

5).应用以下公式计算映射后的输出图像的灰度级,P 为输出图像灰度级的个

数,其中INT 为取整符号

1

,,1]

5.0)()[(min min max -=++-=P i g f C g g INT g i

6).统计映射后各灰度级的像素数目 ni, i=0,1,…,k,…P-1.

7). 计算输出直方图Pg(gi)=ni/n, i=0,1,…,P-1.

8). 用fj 和gi 的映射关系修改原始图像的灰度级,从而获得直方图近似为均匀

分布的输出图像

(2) 直方图规定化

直方图均衡化的优点是能自动增强整个图像的对比度,但它的具体增强效果不易控制,处理的结果总是得到全局的均衡化的直方图.实际工作中,有时需要变换直方图使之成为某个特定的形状,从而有选择地增强某个灰度值范围内的对比度,这时可采用比较灵活的直方图规定化方法.直方图规定化增强处理的步骤如下:

令P r (r )和P z (z )分别为原始图像和期望图像的灰度概率密度函数。如果对原始图像和期望图像均作直方图均衡化处理,应有

⎰==x

r dr

r P r T S 0)()( (1) ⎰==x

z dz

z p Z G V 0

)()( (2)

)(1V G Z -= (3)

由于都是进行均衡化处理,处理后的原图像概率密度函数Ps (S )及理想图像概率密度函数PV (V )是相等的。于是,我们可以用变换后的原始图像灰度级S 代替(2)式中的V 。即

Z = G - 1(S ) (4) 这时的灰度级Z 便是所希望的图像的灰度级。 此外,利用(1)与(3)式还可得到组合变换函数 Z = G - 1[T (r )] (5) 对连续图像,重要的是给出逆变换解析式。对离散图像而言,有

n n Z P i

i Z =

)( (6)

∑-===1

)

()(l i i z i i Z P Z G V (7) )]

([)(11i i i r T G S G Z --== (8)

2、设计内容(主要代码)

%----------------------------选择图片路径及显示---------------------------% global f

%选择图片路径

[filename,pathname]= ... %...表示与下行连接

uigetfile({'*.bmp';'*.jpg';'*gif';'*tif'},'选择图片'); %打开文件类型,对话框名称 f=imread([pathname filename]);

axes(handles.axes1); %在axes1显示原图像imshow(f) ;

title('原始图像');

%------------------设置下拉菜单分别选择显示图像------------% global f

va=get(handles.popupmenu1,'Value');

val=get(hObject,'Value');

switch val %用switch语句设置选项case 1 %原图像直方图

I=double(f);[m,n]=size(I);

H=zeros(1,256);

for i=1:m

for j=1:n

H(I(i,j)+1)=H(I(i,j)+1)+1;

end

end

s=zeros(1,256);t=zeros(1,256);

for i=1:256 s(i)=H(i)/(m*n);

for j=1:i

t(i)=t(i)+s(j);

end

end

axes(handles.axes2);

plot(s);title('原图像直方图');

case 2 %均衡化后图像及直方图I=double(f);[m,n]=size(I);

H=zeros(1,256);

for i=1:m

for j=1:n

H(I(i,j)+1)=H(I(i,j)+1)+1;

end

end

s=zeros(1,256);t=zeros(1,256);

for i=1:256 s(i)=H(i)/(m*n);

for j=1:i

t(i)=t(i)+s(j);

end

end

t1=round(t*(256-1)+0.5);

H1=zeros(1,256);

for i=1:256

H1(t1(i))=H1(t1(i))+s(i);

相关文档
最新文档