数字图像处理与机器视觉 联系客服

发布时间 : 星期一 文章数字图像处理与机器视觉更新完毕开始阅读e384d9fe58fafab068dc022f

图像的点运算

1. 灰度直方图

从图像的灰度直方图上可以很直观的看出图像的亮度和对比度特征。直方图的峰值位置说明了图像总体上的亮暗:如果图像较亮,则直方图的峰值出现在直方图的较右部分;如果图像较暗,则直方图的峰值出现在直方图的较左部分,从而曹成暗部细节难以分辨。如果直方图中只有中间某一小段非零值,则这张图像的对比度较低;反之,如果直方图的非零值分布很宽而且比较均匀,则图像的对比度较高。

2. 灰度的线性变换

线性灰度变换函数f(x)是一个一维线性函数:

DB?f(DA)?fADA?fB

3. 灰度对数变换

对数变换的一般表达式为:

t?clog(1?s)

其中c为尺度比例常数,s为源灰度值,t为变换后的目标灰度值。 由对数函数曲线克制,这种变化可以增强一幅图像中较暗部分的细节,从而可用来扩展被压缩的高值图像中的较暗像素,因此对数变换被广泛应用于频谱图像的现实中。

4. 伽马变换

伽马变换的一般表达式为:

y?(x?esp)?

其中,x与y的取值范围均为[0,1]。esp为补偿系数,?为伽马系数。

伽马变换可以通过?的不同取值选择性的增强低灰度区域的对比度或者高灰度区域的对比度。

5. 灰度阈值变换 6. 分段线性变化

7. 直方图均衡化

直方图均衡化又称灰度均衡化,是指通过某种灰度映射使输入图像转换为在每一灰度级上都有近似相同的像素点数的输出图像(即输出地直方图是均匀的)。在经过均衡化处理后的图像中,像素将占有尽可能多的灰度级并且分布均匀。因此,这样的图像将具有较高的对比度和较大的动态范围。

对于离散灰度级,相应的转换公式应为:

DDB?f(DA)?MaxA0其中,灰度值,

?Hi?0DAi

Hi为第i级灰度的像素个数,A0为图像的面积,即像素总数,DB为转换后的

DA为转换前灰度值。

8. 直方图规定化

直方图均衡化算法可以自动确定灰度变换函数,从而获得均有均匀直方图的输出图像。

它主要用于增强动态范围偏小的图像对比度,吩咐图像的灰度级。这种方法的优点是操作简单,且结果可以预知,当图像需要自动增强时时一种不错的选择。

但有时用户虚妄可以对变换过程加以控制,如能够人为的修正直方图的形状,或者获得具有指定直方图的输出图像。这样就可以有选择的增强某个灰度范围内的对比度或者使图像灰度值满足某种特定的分布。

图像的几何变换

1.

空间域图像增强

图像滤波

1. 自适应平滑滤波

利用平均滤波消除噪声的同时也会是图像变得模糊,高斯平滑在一定程度上缓解了这些现象,但由于平滑滤波的机理可知这种模糊是不可避免的。这当然是我们所不希望的,于是想到了选择性的进行平滑,即只在噪声局部区域进行平滑,而在无噪声局部区域不进行平滑,将模糊的影响降到最低,则会就是自适应滤波的思想。

如何判断该局部区域是包含噪声需要平滑的区域还是无明显噪声不需要平滑的区域?这要基于噪声的性质来考虑,根据图像的局部连续性质,噪声的存在导致在噪声点处产生灰度跳跃,从而使噪声点局部区域灰度跨度较大。因此可以选择如下两个标准中的一个作为局部区域存在噪声的判据:

(1) 局部区域最大值与最小值之差大于某一阈值T (2) 局部区域方差大于某一阈值T

2. 高斯平滑与实现

均值为0,方差为?的高斯函数为:

2

(x2?y2)?(x,y)?exp(?) 222??2?1高斯模板正是将连续的二维高斯函数的离散化表示,因此任意大小的高斯模板都可以通过建立一个(2k?1)*(2k?1)的矩阵M得到,其中(i, j)位置的元素可如下确定:

((i?k?1)2?(j?k?1)2)?(i,j)?exp(?) 222??2?1注:标准差?的选取很重要:如果?过小,偏离中心的所有像素权值将会非常小,相

当于加权和响应基本不考虑领域像素的作用,这样的滤波操作退化为图像的点运算,无法起到平滑噪声的作用;相反如果?过大,而领域相对较小,这样在领域内高斯模板将退化为平均模板;只有当?取合适的值时才能得到一个像素值的较好估计。Matlab中?的默认值为0.5,在实际应用中,通常3*3的模板取?为0.8左右,更大的模板可以适当增大?的值。

3. 中值滤波

中值滤波的本质上是一种统计排序滤波器。对于原图像中某点,中值滤波以该点为中心的领域内的所有像素的排序中值作为该点的响应。

中值滤波对于某些类型的噪声具有非常理想的降噪能力,对于线性平滑滤波而言,在处

理像素领域之内的噪声点时,噪声的存在总会或多或少影响该点的像素值的计算(高斯平滑影响的程度与噪声点到中心点的距离成正比),但在中值滤波中噪声点则常常直接被忽略掉的;而且与线性平滑滤波器相比,中值滤波在降噪同时引起的模糊响应降低。中值滤波的一种典型应用是消除椒盐噪声。

4. 一种改进的中值滤波

中值滤波效果依赖于滤波窗口的大小,太大会使边缘模糊,太小了则去噪效果不佳。因为噪声点和边缘点同样是灰度变化较为剧烈的像素,普通中值滤波在改变噪声灰度值的同时,会一定程度改变边缘像素灰度值。但是噪声几乎是领域像素的极值,而边缘往往不是,因此利用这个特性来限制中值滤波。

具体的改进方法如下:逐行扫描图像,当处理每一个像素时,判断该像素是否是滤波窗口下覆盖领域像素的极大或者极小值。如果是,则采用正常的中值滤波处理该像素;如果不是,则不予处理。在实践中这种方法能够非常有效的去除突发噪声点,尤其是椒盐噪声,且几乎不影响边缘。

注:作为一种非线性滤波,中值滤波有可能会改变图像的性质,因而一般不适用于像军事图像处理、医学图像处理等领域。

图像锐化

图像锐化的目的是使模糊的图像变得更加清晰。 常用的方法有:

(1) 一阶锐化算子:Robert交叉梯度和Sobel梯度 (2) 二阶锐化算子:Lapalacian算子 比较:

a) 一阶导数通常会产生较宽的边缘;

b) 二阶导数对于阶跃性边缘中心产生零交叉,而对于屋顶状边缘(细线),二

阶导数取极值;

c) 二阶导数对细节有较强的响应,如细线和孤立噪声点。 注:高斯-拉普拉斯变换(Laplacian of a Gaussian, LoG)在增强边缘和细节的同时有效地抑制了噪声。因为锐化在增强边缘和细节的同时往往也增强了噪声,因此如何区分噪声和边缘是锐化过程中要解决的一个核心问题。

频率域图像增强

空间域和频率域为我们提供了不同的视角。在空间域,函数的自变量(x, y)被视为二维空间中的一点,数字图像f(x,y)即为一个定义在二维空间中的矩形区域上

的离散函数;如果将f(x,y)视为一个二维信号,则可以通过某些变换手段(如傅里叶变换、离散余弦变换、沃尔什变换和小波变换等)在频域下进行分析。 1. 低通滤波器

理想低通滤波器:当截止频率非常低时,只有非常靠近原点的低频成分能够通过,图像模糊严重;截止频率较高时,通过的频率成分就很多,图像模糊的程度越小,所获得的图像也就越接近原图像。但是低通滤波器并不能很好的兼顾噪声滤除与细节保留两个方面,这个空间领域中采用平均模板时的情形比较类似。

高斯低通滤波器:sigma参数取40的时候可以较好的处理被高斯噪声污染的图像。在有效抑制噪声的同时,图像的模糊程度更低,对边缘带来的混叠成都更小,从而使高斯低通滤波器在通常情况下获得了比理想低通滤波器更为广泛的应用。

2. 高斯高通滤波器

图像锐化可以通过衰减图像频谱中的低频成分来实现,这就建立了空间域图像锐化与频域高通滤波之间对应关系。

高斯高通滤波器可以较好的提取图像中的边缘信息,sigma参数取值越小,边缘提取越不精确,会包含更多的非边缘信息;sigma参数取值越大,边缘提取越精确,但可能包含不完整的边缘信息。

频域拉普拉斯滤波器: 3. 频域带阻滤波器

前面介绍的几种滤波器都可以通过对应的空域下采用平滑和锐化因子实现。频域带阻滤波器可以有效地去除周期噪声,同时几乎在空域中不能实现。 4. 频域滤波器与空域滤波器之间的内在联系

频域滤波较空域而言更加直接,频域下滤波器表达了一系列空域处理(平滑、锐化等)的本质,即对高于/低于某一特定频率的灰度变化信息予以滤除的同时,而其他的灰度变化信息基本保持不变。这种直观性增加了频域滤波器设计的合理性。同时,我们利用了带阻滤波器实现了对图像中周期噪声的滤除,而想直接在空域中设计出一个能够完成如此滤波作用的滤波模板是非常困难的。

为了得到合适的空域滤波器,我们自然想到的是先设计频域滤波器,然后利用反变换转换到空域,得到空域卷积滤波模板。

由于直接反变换得到的空域卷积模板h(x, y)同H(x, y)等大,所以模板与图像f(x, y)具有相同的尺寸。但是模板操作十分耗时,要计算这样大的模板与图像的卷积是非常低效的。

形态学图像处理

1. 边界提取

要在二值图像中提取物体的边界,容易想到的方法是将所有物体内部的点删除(置为背景色)。具体的说,可以逐行扫描原图像,如果发现一个黑点(前景色)的8个领域都是黑点,则该点为内部点,在目标图像中将它删除。实际上这相当于采用一个3*3的结构元素对原图像进行腐蚀,使得只有那些8个领域都有黑点的内部点被保留,再用原图像减去腐蚀后的图像,恰好删除了这些内部点,留下了边界图像。

2. 边界跟踪

为了依次记录下边界上的各个像素,边界跟踪首先按照某种扫描规则找到目标物体边界上的一个像素,而后就以该像素为起始点,根据某种顺序(如顺时针或逆时针)依次找出物体边界上的其余像素,知道又回到了起始点,完成整条边界的跟踪。

例如,我们可以按照从左到右、从上到下的顺序扫描图像,这样首先会找到目标物体最左上方的边界点p0,显然,这个点的左侧及上侧都不可能存在边界点(否则左侧或者上侧的边界点就会成为第一个被扫描到得边界点),因此不妨从左上方向逆时针开始探查,如左下方的点是黑点,直接跟踪至此边界点,否则探查方向逆时针旋转45度,直至找到第一个黑点为止,跟踪至此边界点。找到边界点后,在当前探查方向的基础上顺时针回旋90度,继续用上述方法搜索下一个边界点,知道探查又回到初始的边界点p0,则可完成整条边界的跟踪。

3. 区域填充及其VC++实现 4. 连通分量提取及其实现 5. 细化算法及其VC++实现

“骨架”是指一幅图像的骨骼部分,它描述物体的几何形状和拓扑结构,是重要的图像描述子之一。计算骨骼的过程一般称为“细化”或“骨骼化”,在包括文字识别、工业零件形

状识别以及印刷电路板自动检测在内的很多应用中,细化过程都发挥着关键作用。通常,对我们感兴趣的目标物体进行细化有助于突出目标的形状特点和拓扑结构并且减少冗余的信息量。

6. 像素化算法及其VC++实现

细化适用于和物体拓扑结构或形状相关的应用,如前述的手写字符识别。但有时我们关心的是目标对象是够存在、他们的位置关系或者个数,这时可使用像素化步骤。

像素化操作首先需找到二值图像中所有的连通区域,然后用这些连通区域的质心作为这些连通区域的代表,即将一个连通区域化为位于区域质心位置的一个像素。

7. 凸壳及其VC++实现

如果连接物体A内任意两点的直线都在A的内部,则称A是凸的。任意物体A的凸壳H是包含A的最小凸物体。

我们总是希望像素化算法能够找到物体的质心来代表物体,但在实际中,可能由于光照不均等原因导致图像在而之花后,物体本身形状发生凹损,像素化算法就无法找到物体真正的质心。此时可适当的进行凸壳处理,弥补凹损,算法会找到包含原始形状的最小凸多边形。

8. 灰度膨胀

令F表示灰度图像,S为结构元素,使用S对F进行膨胀。计算过程相当于让结构元素S关于原点的镜像!S在图像F的所有位置上滑过。膨胀结果在其定义域内每一点处的取值以(x,y)为中心,在!S规定的局部领域内F与!S之和的最大值。

9. 灰度腐蚀

在结构元素的值均大于零的情况下,灰度膨胀的输出图像总体上比输入图像更亮,这是局部最大值运算作用的结果。此外原图像中一些能够包含于结构元素的暗细节(如一部分毛细的褶皱和尾穗)被完全消除,其余的大部分暗部细节也都得到了一定程度上的减少,而灰度腐蚀的作用正好相反,输出图像比输入图像更暗,如果输入图像中的亮部细节不结构元素小,则亮度会得到消弱。

10. 灰度开、闭运算

灰度开运算就是先灰度腐蚀后灰度膨胀,灰度闭运算则先灰度膨胀再灰度腐蚀。

假设我们有一个球形结构元素S,开运算相当于推动球沿着曲面的下侧面滚动,是的球体可以紧贴着下侧面来回移动,直到移动位置覆盖率整个下侧面。此时球体的任何部分能够达到的最高点构成了开运算的曲面。而闭运算则相当于让球体紧贴在曲面的上表面滚动,此时球体的任何部分所能达到的最低点即构成了闭运算曲面。

在实际应用中,开操作常常用于去除那些相对于结构元素s而言较小的高灰度区域(球体滚不上去),而对于较大的亮区域影响不大(球体可以滚上去)。虽然首先进行的灰度腐蚀会在去除图像细节的同时使得整体灰度下降,但随后的灰度膨胀又会增强图像的整体亮度,因此图像的整体灰度保持不变;而闭操作常用于去除图像中的暗细节部分,而相当的保留高灰度部分不受影响。

11. 顶帽(top-hat)变换

顶帽变换是一种非均匀光照(图像整体灰度不均)问题的解决方案。图像f的顶帽变换h定义为图像f与图像f的开运算之差。

图像分割