Matlab图像处理与应用第5章.docx

上传人:b****2 文档编号:24118397 上传时间:2023-05-24 格式:DOCX 页数:64 大小:627.01KB
下载 相关 举报
Matlab图像处理与应用第5章.docx_第1页
第1页 / 共64页
Matlab图像处理与应用第5章.docx_第2页
第2页 / 共64页
Matlab图像处理与应用第5章.docx_第3页
第3页 / 共64页
Matlab图像处理与应用第5章.docx_第4页
第4页 / 共64页
Matlab图像处理与应用第5章.docx_第5页
第5页 / 共64页
点击查看更多>>
下载资源
资源描述

Matlab图像处理与应用第5章.docx

《Matlab图像处理与应用第5章.docx》由会员分享,可在线阅读,更多相关《Matlab图像处理与应用第5章.docx(64页珍藏版)》请在冰豆网上搜索。

Matlab图像处理与应用第5章.docx

Matlab图像处理与应用第5章

第5章图像预处理及MATLAB实现

图像预处理:

是相对于图像识别、图像理解而言的一种前期处理。

不论采用何种装置,输人的图像往往不能令人满意。

例:

从美学的角度会感到图像中物体的轮廓过于鲜明而显得不协调;

按检测对象物大小和形状的要求看,图像的边缘过于模糊;

在相当满意的一幅图像上会发现多了一些不知来源的黑点或白点;

图像的失真、变形等等。

总之,输人的图像在视觉效果和识别方便性等方面可能存在诸多问题,这类问题不妨统称为“质量”问题。

尽管由于目的、观点、爱好等的不同,图像质量很难有统一的定义和标准,但是,根据应用要求改善图像质量却是一个共同的愿望。

改善图像质量的处理称为图像预处理,主要是指按需要进行适当的变换突出某些有用的信息,去除或削弱无用的信息,如:

改变图像对比度,去除噪声或强调边缘的处理等。

本章主要介绍直方图修正、灰度变换等内容。

除本章介绍的内容外,图像预处理基本方法还有:

图像的频域特性(参见本书第4章)、直方图变换、灰度变换、图像平滑、图像锐化、伪彩色和假彩色处理(参见本书第8章)等就不在本章介绍了。

 

5.1直方图修正

5.1.1直方图

*按照随机过程理论,图像可以看做是一个随机场,也具有相应的随机特性,其中最重要的就是灰度密度函数,但是一般讲,要精确得到图像的灰度密度函数是比较困难的,实际中用数字图像的直方图来代替。

图像的直方图:

是图像的重要统计特征,是表示数字图像中每一灰度级与该灰度级出现的频数(该灰度像素的数目)间的统计关系。

用横坐标表示灰度级,纵坐标表示频数(也有用相对频数即概率表示的)。

按照直方图的定义可表示为:

(5.1.1)

式中:

N为一幅图像的总像素数,

是第k级灰度的像素数,

表示第k个灰度级,

表示该灰度级出现的相对频数。

需要注意的是:

直方图能给出该图像的大致描述,如图像的灰度范围、灰度级的分布、整幅图像的平均亮度等,但是仅从直方图不能完整地描述一幅图像,因为一幅图像对应于一个直方图,但是一个直方图不一定只对应一幅图像,几幅图像只要灰度分布密度相同,那么它们的直方图也是相同的。

尽管直方图不能表示出某灰度级的像素在什么位置,更不能直接反映出图像内容,但是具有统计特性的直方图却能描述该图像的灰度分布特性,使人们从中得到诸如总体明亮程度、对比度、对象物的可分性等与图像质量有关的灰度分布概貌,成为一些处理方法的重要依据;同时,对直方图进行分析可得出图像的一些能反映出图像特点的有用特征。

例如,当图像的对比度较小时,它的灰度直方图只在灰度轴上较小的一段区间上非零;较暗的图像由于较多像素的灰度值低,因此直方图的主体出现在低值灰度区间上,在高值灰度区间上的幅度较小或为零,而较亮的图像情况正好相反;看起来清晰柔和的图像,它的直方图分布比较均匀。

通常一幅均匀量化的自然图像由于其灰度直方图分布集中在较窄的低值灰度区间,引起图像的细节看不清楚,为使图像变得清晰,可以通过变换使图像的灰度范围拉开或使灰度分布在动态范围内趋于均化,从而增加反差,使图像的细节清晰,达到图像增强的目的。

事实证明,通过图像直方图修改进行图像增强是一种有效的方法。

 

5.1.2直方图修正

直方图修正的应用非常广泛。

例如:

在医学上,为了改善x射线机操作人员的工作条件,可以采用低强度X射线曝光,但是这样获得的X光片灰度级集中在暗区,许多图像细节无法看清,判读困难,通过修正使灰度级分布在人眼合适的亮度区域,就可以使X光片中的细节,如筋骨、关节等清晰可见。

另外还有一些非可见光成像的工业无损检测(如射线成像、红外成像等),军事公安侦察等照片的处理。

直方图修正通常有直方图均衡化和直方图规定化两大类。

下面分别介绍如下:

(1)直方图均衡化

直方图均衡化也称为直方图均匀化,是一种常用的灰度增强算法,是将原图像的直方图经过变换函数修整为均匀直方图,然后按均衡后的直方图修整原图像。

为研究方便,首先将直方图归一化,即让原图像灰度范围[Z1,Zk]归一化为[0,1]。

设其中任一灰度级Z归一化为r,变换后图像的任一灰度级Z’归一化为s,显然r,s应当满足:

0≤r≤1,0≤s≤1(5.1.2)

因此直方图修正就是对下列公式的计算过程:

s=T(r)或r=T-1(s)(5.1.3)

式中:

T(r)为变换函数,它必须满足下列条件:

①T(r)在0≤r≤1区间内是单值函数,且单调增加;

②T(r)在0≤r≤1内满足0≤T(r)≤1。

条件①保证了灰度级从黑到白的次序,而条件②确保映射后的像素灰度级仍在允许的灰度级范围内,避免整个图像明显变亮或者变暗。

T–1(s)为反变换函数,也同样满足上述的两个条件。

对于连续情况,设Pr(r)和Ps(s)分别表示原图像和变换后图像的灰度级概率密度函数,根据概率论的知识,在已知Pr(r)和T(r)时,T-1(s)也是单调增长,则Ps(s)可由下式求出:

(5.1.4)

在直方图均衡化时,有Ps(s)=1/L=常数,这里L为均衡化后灰度变化范围,归一化表示时L=1,则Ps(s)=1,有ds=Pr(r)dr,即ds=dT(r)=Pr(r)dr

两边取积分得

(5.1.5)

式(5.1.5)就是所求的变换函数,表明变换函数T(r)是原图像的累计分布函数,是一个非负递增函数,因此只要知道原图像的概率密度,就能很容易地确定变换函数。

将上述结论推广到离散的情况。

设一幅图像总像素为n,共分L个灰度级,nk代表第k个灰度级rk出现的频数(像素数),则第k灰度级出现的概率为

Pr(rk)=nk/n,0≤rk≤1,k=0,1,…,L一1(5.1.6)

此时变换函数可以表示为

(5.1.7)

其反变换函数为

(5.1.8)

因此,根据原图像的直方图统计值就可算出均衡后各像素的灰度值。

例:

假设有一幅图像,共有64×64个像素,8个灰度级,各灰度级概率分布如

表5.1所示,试将其直方图均匀化。

表5.1各灰度级对应的概率分布

灰度级rk

0

1/7

2/7

3/7

4/7

5/7

6/7

1

像素数nk

790

1023

850

656

329

245

122

81

概率Pr(rk)

0.19

0.25

0.21

0.16

0.08

0.06

0.03

0.02

790+1023+850+656+329+245+122+81=4096

将图像直方图均匀化过程:

根据表5.1数据可得到此图像直方图:

如图5.2(a)

应用式(5.1.7)可求得变换函数为:

依此类推,即可得到:

s2=0.65,s3=0.81,s4=0.89,s5=0.95,s6=0.98,s7=1.00

变换函数sk与灰度级rk之间的关系曲线如图5.2(b)所示。

从表5.1中可以看出原图像给定的rk是等间隔的(每个间隔为1/7),而经过T(rk)求得的sk就不一定是等间隔的,从图5.2(b)中可以很清楚地看到,为了不改变原图像的量化值,必须对每一个变换的sk取最靠近的量化值,表5.2中列出了重新量化后得到的新灰度s’0,s’1,s’2,s’3,s’4,将计算出来的sk与量化级数相比较,即可得到:

表5.2直方图均匀化过程

原灰度级

变换函数值

原来量化值

原来像素数

新灰度级

新灰度级分布

r0=0

s0=T(r0)=0.19

0

790

s'0(790)

s'1(1023)

s'2(850)

s'3(985)

s'4(448)

r1=1/7

s1=T(r1)=0.44

1/7=0.14

1023

790/4096=0.19

r2=2/7

s2=T(r2)=0.65

2/7=0.29

850

r3=3/7

s3=T(r3)=0.81

3/7=0.43

656

1023/4096=0.25

r4=4/7

s4=T(r4)=0.89

4/7=0.57

329

r5=5/7

s5=T(r5)=0.95

5/7=0.71

245

850/4096=0.21

r6=6/7

s6=T(r6)=0.98

6/7=0.86

122

985/4096=0.24

r7=1

s7=T(r7)=1

1.00

81

448/4096=0.11

图5.2图像直方图均衡化示例

(a)原始图像直方图(b)变换函数(c)直方图均衡化后的直方图

 

将相同值的归并起来,即得直方图均衡化修正后的灰度变换函数,它们是:

由此可知,经过变换后的灰度级不需要8个,只需要5个就可以了。

把相应原灰度级的像素数相加得到新灰度级的像素数。

均匀化以后的直方图如图5.2(c)所示,由图可见,均衡化直方图比原直方图均匀了,但它并不能完全均匀,这是由于在均衡化的过程中,原直方图上有几个像素数较少的灰度级归并到一个新的灰度级上,而像素较多的灰度级间隔被拉大了,这样有利于图像的分析和识别。

这样做是减少图像的灰度级以换取对比度的扩大。

(2)直方图规定化

以上均匀化处理后的图像虽然增强了图像的对比度,但它并不一定适合有些应用场合,如:

有时人们希望增强后的图像,其灰度级的分布是不均匀的,而且是具有规定形状的直方图,这样可以突出感兴趣的灰度范围。

此时可以采用直方图的规定化实现。

直方图规定化有几种不同的方法,下面分别给予介绍:

直方图规定化方法之一是指用一个规定的概率函数来表示所需要的直方图,如表5.3所示。

也就是将原来直方图变换成某一个规定概率密度函数的直方图,这种图像直方图规定化一般是按照式(5.1.1)来进行计算的。

表5.3几种给定形状的直方图修正变换函数

修正后要求的概率密度函数

变换函数s=T(r)

均匀分布

指数分布

雷利分布

双曲分布

 

图5.3由直线段构成的直方图

 

直方图规定化处理的第二种方法是通过控制一组直线段来构成直方图,使其满足所希望的形状。

然后再数字化并归一化。

图5.3中的直线段构成的直方图形状受m,h,θL,θk四个参量控制,其中:

m在[0,1]区间内任意选定;h≥0;当θL,θk从00到900变化时,分别引起j点在(0,1)和(m,0)两点连线、k点在(1,1)和(m,0)两点连线上移动,只要改变上述四个参量就可以得到许多有用的直方图。

如果m=0.5,h=1,θL=θk=0就可以得到一个矩形,即均匀直方图。

下面具体讨论如何实现直方图规定化处理。

先以连续分布的情况来讨论:

原理:

设pr(r)为原始图像的灰度密度函数,Pz(z)为希望得到的增强图像的灰度密度函数。

如果对原始图像pr(r)和期望图像Pz(z)均进行直方图均衡化处理,即可得

(5.1.9)

(5.1.10)

经过上述变换后的灰度s及v,其密度函数是相同的,可以通过直方图均衡,实现从pr(r)到Pz(z)的转换,也就是实现直方图的规定化。

具体的方法:

利用

,可将原图各点的灰度r变换为s,然后根据s=v及

,就可以求出每一个r相对应的灰度值

对于离散的数字图像可进行类似的变换,

即先对原图进行直方图均衡,求出与原图像中每一个灰度级ri相对应的si值,

然后对具有规定形状直方图的期望图像也进行类似的处理,求出与期望图像灰度zk相对应的vk值,再在vk和si之间找出满足vk≈si的点对,进而返回去找出与ri相对应的zk,实现图像按规定形状直方图作增强。

例:

一幅图像有64×64个像素、8个灰度级,将其按直方图规定化增强。

图5.4(a)是原图像直方图,图5.4(b)是期望图像的直方图。

期望图像所对应的

直方图的具体数值列于表5.4所示。

首先,重复前面例子的均匀化过程,计算直方图均衡化原始图像灰度ri对应的变换函数si,8个灰度级合并为5个灰度级,其结果如下:

第二步,对规定化的图像用同样的方法进行直方图均匀化处理(如图5.4(c)),求出给定直方图对应的灰度级

第三步,使用与vk靠近的sk代替vk(由于是离散图像,所以采用“最靠近”原则),得到的结果如下:

并用

求逆变换即可得到

第四步,图像总像素点为4096,根据一系列zk求出相应的Pz(zk),得到如表5.4和图5.4(d)所示的结果。

表5.4规定直方图和结果直方图

规定直方图

结果直方图

zk

Pz(zk)

nk

Pz(zk)

0

0.00

0

0.00

1/7

0.00

0

0.00

2/7

0.00

0

0.00

3/7

0.15

790

0.19

4/7

0.20

1023

0.25

5/7

0.30

850

0.21

6/7

0.20

985

0.24

1

0.15

448

0.11

 

图5.4直方图规定化

(a)原直方图(b)规定的直方图(c)变换函数(d)结果直方图

综上所述,直方图规定化就是把直方图均衡化结果映射到设想的理想直方图上,使图像按人的意愿去变换。

 

5.1.3MATLAB提供的直方图修正函数及其应用

(1)imhist函数

MATLAB图像处理工具箱提供了imhist函数来计算和显示图像的直方图,其语法格式为:

imhist(I,n)

其功能是:

计算和显示灰度图像I的直方图,n为指定的灰度级的数目,对于灰度图像其的默认值是256,对于黑白二值图像,n的默认值是2。

imhist(X,map)

其功能是:

计算和显示索引色图像X的直方图,map为调色板。

[counts,x]=imhist(…)

其功能是:

返回直方图数据向量counts或相应的色彩值向量x。

例:

实现图像gray.bmp的灰度直方图程序清单:

I=imread('gray.bmp');

imshow(I);

figure,imhist(I);

I=imread('rice.png');

imshow(I);

figure,imhist(I);

(2)histeq函数

MATLAB图像处理工具箱提供了用于直方图均匀化的函数histeq。

histeq函数的语法格式为:

J=histeq(I,hgram)

其功能是:

将原始图像I的直方图变成用户指定的向量hgram,hgram中的各元素值域为[0,1]。

J=histeq(I,n)

其功能是:

指定直方图均匀化后的灰度级数n,默认值为64。

[J,T]=histeq(I,…)

其功能是:

返回从能将图像I的灰度直方图变换成图像J的直方图的变换T。

newmap=histeq(X,map,hgram)

newmap=histeq(X,map)

[newmap,T]=histeq(X,…)

其功能是:

针对索引色图像调色板的直方图均匀化。

其他与上面类同。

例:

对图像gray.bmp进行直方图均匀化的程序清单:

I=imread('gray.bmp');

J=histeq(I)

subplot(2,2,1),imshow(I);

subplot(2,2,2),imshow(J);

subplot(2,2,3),imhist(I);

subplot(2,2,4),imhist(J);

I=imread('rice.png');

J=histeq(I)

subplot(2,2,1),imshow(I);

subplot(2,2,2),imshow(J);

subplot(2,2,3),imhist(I);

subplot(2,2,4),imhist(J);

由图可见,图像经过直方图均衡化,图像的细节更加清楚了,但是由于直方图的均衡化没有考虑图像的内容,只是简单地将图像进行直方图均衡,使图像看起来亮度过亮,也就是说直方图的方法不够灵活,于是又提出了其他的图像增强的方法。

例:

将gray.bmp图像均衡化成32个灰度级的直方图作为原始图像的期望直方图,对图像gray进行直方图规定化的程序清单:

I=imread('gray.bmp');

J=histeq(I,32);

[counts,x]=imhist(J);

Q=imread('gray.bmp');

figure,

subplot(2,2,1),imshow(Q);

subplot(2,2,3),imhist(Q);

M=histeq(Q,counts);

subplot(2,2,2),imshow(M);

subplot(2,2,4),imhist(M);

I=imread('rice.png');

J=histeq(I,32);

[counts,x]=imhist(J);

Q=imread('rice.png');

figure,

subplot(2,2,1),imshow(Q);

subplot(2,2,3),imhist(Q);

M=histeq(Q,counts);

subplot(2,2,2),imshow(M);

subplot(2,2,4),imhist(M);

 

5.2灰度变换

灰度变换:

是图像增强的另一种重要手段,它可使图像动态范围加大,使图像对比度扩展,图像更加清晰,特征更加明显。

5.2.1灰度级修正

图像在成像的过程中,往往由于光照、摄像以及光学系统的不均匀性而引起图像某些部分较暗或较亮,那么对图形逐点进行不同程度的灰度级校正,就能使整幅图像灰度均匀,从而获得满意的视角效果。

灰度级修正是对图像在空间域进行增强的一种简单而有效的方法,根据对图像不同的要求而采用不同的修正方法。

灰度级修正也称为点运算,它不改变像素点的位置,只改变像素点的灰度值。

设原来的图像为f(x,y),不均匀降质图像为g(x,y),代表降质性质的函数为e(x,y),则降质过程可以用下式表示:

g(x,y)=e(x,y)f(x,y)(5.2.1)

由式(5.2.1)可知,只要获得降质函数e(x,y),就可以通过降质图像g(x,y)来重建原始图像f(x,y),但是降质函数e(x,y)往往是不知道的,需要根据图像降质系统的特性来计算或测量,最简单的方法是用一个已知灰度级全部为常数C的图像来标定这个降质系统的降质函数。

设:

输人这个图像降质系统的图像为降质函数fC(x,y)=C,那么可获得其输出图

像为降质函数gC(x,y),

那么:

gC(x,y)=e(x,y)fC(x,y)(5.2.2)

由此获得e(x,y)为

(5.2.3)

再将式(5.2.3)代入式(5.2.1),就可以由降质图像g(x,y)求出原始图像f(x,y),即

(5.2.4)

应用灰度级校正的方法需要注意两点:

①对降质图像进行逐点灰度级校正所获得的图像,其中某些像素的灰度值有可能超出记录仪器或显示器输入灰度级的动态范围[Z1,ZK]。

若要不失真的输入,需要采取其他的方法进一步地修正。

最简单的方法是:

令所有灰度值小于Z1的像素的灰度值都等于Z1;令所有灰度值大于Zk的像素的灰度值都等于Zk。

或者用下面介绍的灰度变换方法来修正。

②降质图像在数字化时,各像素灰度值都被量化在[Z1,ZK]离散集合中的离散值上,但经过校正后的图像各像素的灰度值不一定在这些离散值上,因此必须对校正后的图像进行量化。

 

5.2.2灰度变换

一般成像系统只具有一定的亮度响应范围,常出现对比度不足的弊病,使人眼观看图像时视觉效果很差;另外,在某些情况下,需要将图像的灰度级整个范围或者其中的某一段扩展或压缩到记录器输入灰度级动态范围之内。

采用下面介绍的灰度变换方法可以充分利用记录器件灰度级的动态范围,记录显示出图像中需要的图像细节,从而大大改善人的视觉效果。

灰度变换可分为线性、分段线性。

非线性以及其他的灰度变换。

(1)线性灰度变换

假定原图像f(x,y)的灰度范围为[a,b],希望变换后的图像g(x,y)的灰度扩展为[c,d],则采用下述线性变换来实现:

(5.2.5)

若图像灰度在0~M范围内,其中大部分像素的灰度级分布在区间[a,b]内,很小部分像素的灰度级超出了此区间,为改善增强效果,可令

(5.2.6)

上式的关系用图5.9表示。

注意:

这种变换扩展了[a,b]区间灰度级,但是将小于a和大于b范围内的灰度级分别被压缩为c和d这样使图像灰度级在上述两个范围内的像素都各变成一个灰度级,使这二部分信息损失了。

在某些实际应用场合下,只要合理选择[a,b],是可以允许这种失真存在的。

如,在遥感图像分类技术中,那些过黑或者过白的像素往往对应的是玄武岩、冰、水和雪等,其中并不包含所需要的地貌特征,因此完全可以把它们压缩为一个灰度级。

有时为了保持f(x,y)灰度低端和高端值不变,可以采用下面的形式:

(5.2.7)

式中,a,b,c,d这些分割点可根据用户的不同要求来确定。

(2)分段线性灰度变换

为了突出图像中感兴趣的目标或者区间,相对抑制那些不感兴趣的灰度区域,而不惜牺牲其他灰度级上的细节,可以采用分段线性法,将需要的图像细节灰度级拉伸,增强对比度,不需要的细节灰度级压缩。

常采用如图5.10所示的三段线性变换法,其数学表达式如下:

(5.2.8)

图中对灰度区间[a,b]进行了线性扩展,而灰度区间[0,a]和[b,e]受到了压缩。

通过调整折线拐点的位置及控制直线的斜率,可对任一灰度区间进行扩展和压缩。

(3)非线性灰度变换

前面讨论的是分段折线式,也可以用数学上的非线性函数进行变换,如平方、指数、对数等,但是其中有实际意义的还是对数变换。

1)对数变换

对数变换的一般式为:

(5.2.9)

这里的a,b,c是为了调整曲线的位置和形状而引入的参数。

对数变换常用来扩展低值灰度,压缩高值灰度,这样可使低值灰度的图像细节更容易看清。

2)指数变换

指数变换的一般式为

(5.2.10)

这里的a,b,c也是为了调整曲线的位置和形状而引入的参数。

指数变换可以扩展低值灰度,压缩高值灰度。

也可以扩展高值灰度,压缩低值灰度。

但由于与人的视觉特性不太相同,因此不常采用。

 

5.2.3MATLAB提供的灰度变换函数及其应用

MATLAB图像处理工具箱中提供的imadjust函数,可以实现图像的灰度变换,使对比度增强。

其语法格式为:

J=imadjust(I,[low,high],[bottow,top],gamma)

其功能是:

返回图像I经过直方图调整后的图像J。

[low,high]为原图像中要变换的灰度范围,[bottow,top]指定变换后的灰度范围,两者的默认值均为[0,1]。

gamma为矫正量,其取值决定了输入图像到输出图像的灰度映射方式,即决定了增强低灰度还是增强高灰度。

如果gamma等于1时,为线性变换;如果gamma小于1时,那么映射将会对图像的像素值加权,使输出像素灰度值比原来大;如果gamma大于1时,那么映射加权后的灰度值比原来小。

gamma大于1、等于1和小于1的映射方式如图5.11所示。

newmap=imadjust(map,[low,high],[bottow,top],gamma)

其功能是:

调整索引图像的调色板map,此时若[low,high]和[bottow,top]都是2×3矩阵,则根据他们的值分别调整R,G,B这三个分量。

例:

调整图像对比度的程序清单

I=imread('gray.bmp');

J=imadjust(I,[0.3,0.7],[]);

subplot(2,2,1),im

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1