收藏 分享(赏)

机器视觉之二值图像算法.doc

上传人:gnk289057 文档编号:6212528 上传时间:2019-04-02 格式:DOC 页数:13 大小:410.07KB
下载 相关 举报
机器视觉之二值图像算法.doc_第1页
第1页 / 共13页
机器视觉之二值图像算法.doc_第2页
第2页 / 共13页
机器视觉之二值图像算法.doc_第3页
第3页 / 共13页
机器视觉之二值图像算法.doc_第4页
第4页 / 共13页
机器视觉之二值图像算法.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

1、机器视觉之二值图像算法从背景中分离出物体是一个困难的问题,在此将不讨论这个问题。这里假设物体可以从背景中分离,并且使用某一谓词,可以对图像中属于物体的点进行标记。因此,问题就变为如何将一幅图像中所有被标记的点组合成物体图像。这里还假设物体点在空间上是非常接近的。利用空间接近概念可以严格定义,利用此定义研究的算法可以把空间上非常接近的点聚合在一起,构成图像的一个成分(component)。下面首先引进一些定义,然后讨论有关算法。3.5.1 定义1.近邻在数字图像中,一个象素在空间上可能非常接近其它一些象素。在用网格表示的数字图像中,一个象素与其它四个象素有公共边界,并与另外四个象素共享顶角。如果

2、两个象素有公共边界,则称它们互为 4 邻点(4-neighbors).同样,如果两个象素至少共享一个顶角,则称它们互为 8 邻点。例如,位于i,j的象素有四个 4 邻点:i-1,j,i+1,j,i,j-1,i,j+1。它的 8 邻点包括这四个 4 邻点,再加上i-1,j-1,i + 1,j-1,i-1, j + 1,i + 1,j+ 1。一个象素被认为与它的 4 邻点是 4 连通(4-conneeted)关系,与它的 8 邻点是 8 连通关系(如图 3.7)。2.路径3.前景图像中值为 1 的全部象素的集合称为前景(foreground),用 S 表示。4.连通性5.连通成分一个象素集合,如果

3、集合内的每一个象素与集合内其它象素连通,则称该集合为一个连通成分(connected component)。6.背景S( S 的补集)中包含图像边界点的所有连通成份的集合称为背景(background)。 S 中所有其它元称为洞。考虑下面的两个图像。首先看左图中有几个洞和几个物体。如果从前景和背景来考虑 4 连通,有四个大小为一个象素的物体和一个洞。如果考虑 8 连通,那么有个物体而没有洞。直观地,在这两种情况下出现了不确定性情况。右图为另一个类似的不确定问题。其中如果 1 是连通的,那么 0 就应该是不连通的。为了避免这种难以处理的情况,对物体和背景应使用不同的连通。如果对 S 使用 8连通

4、,那么对 S 就应用 4 连通。7.边界S 的边界(boundary)是 S 中与 中有 4 连通关系的象素集合。边界通常记为 S。8.内部内部(interior)是 S 中不属于它的边界的象素集合.S 的内部等于 S-S“。9.包围如果从 S 中任意一点到图像边界的 4 路径必须与区域 T 相交,则区域 T 包围 (surrounds)区域 S(或 S 在 T 内)。图 3.9 即为一幅简单二值图像和它的边界、内部、包围示意图。3.5.2 连通成分标记在一幅图像中找出连通成分是机器视觉中最常见的运算之一。连通区域内的点构成表示物体的候选区域。机器视觉中的大多数物体都有表面,显然,物体表面点投

5、影到图像平面上会形成空间上密集的点集。这里应该指出,连通成分算法常常会在值视觉系统中形成瓶颈效应,原因是连通成分运算是一个全局性的运算,这种算法在本质上是序贯的。 如果图像中仅有一个物体,那么找连通成分就没有必要;如果图像中有许多物体,且需要求出物体的特性与位置,则必须确定连通成分。连通标记算法可以找到图像中的所有连通成分,并对同连通成分中的所有点分配同一标记。图 3.10 表示的是一幅图像和已标记的连通成分。在很多应用中,要求在标记连通成分的同时算出连通成分的特征,如尺寸、位置、方向和外接矩形。下面介绍两种连通成分标记算法:递归算法和序惯算法Jain 1995。1.递归算法递归算法在串行处理

6、器上的计算效率是很低的,因此,这一算法主要用于并行机上。算法 3.1 连通成分递归算法扫描图像,找到没有标记的 1 点,给它分配一个新的标记 L;递归分配标记 L 给 1 点的邻点;如果不存在没标记的点,则停止; 返回第步。2.序贯算法序惯算法通常要求对图像进行二次处理。由于这一算法一次仅运算图像的两行,因此当图像以文件形式存贮且空间不允许把整幅图像载入内存时也能使用这一算法。这一算法(见算法 3.2)可以查看某一点的邻点,并且可以给象素值为 1 的邻点分配个已经使用过的标记。如果图像的邻点有两种不同的标记,则叫一个等价表(equivalent table)来记录所有的等价标记。在第二次处理过

7、程中,使用这一等价表來给某连通成分中所有象素点分配唯一的标记。本算法从左到右、从上到下扫描图像时,算法仅能查询到某象素点的 4 邻点中的两个邻点,即上点与左点。设算法已经查到了该象素的这两个邻点,此时出现三种情况: 如果这两个邻点中没有一点为 1,则该象素需要一个新的标记。如果这两个邻点中只有一点为 1,且分配了标记为 L,那么该象素点的标记也为 L。如果这两个邻点都为 1,且已分配了标记 L,则该象素点的标记还是 L;但是当邻点被分配了不同标记 M 与 N,则这两个标记被用于了同一组元,应该把它们合并。在这种下,应把其中一个标记(一般选用最小的那个标记)分配给该象素点,并在等价表中登记为等价

8、标记。等价表包含了给每一连通成分分配唯一标记的信息,第一次扫描中,所有属于同一连通成分的标记被视为是等价的。在第二次扫描中,从一个等价集(equivalent set)中选择一个标记并分配给连通成分中所有象素点。通常将最小的标记分配给一个连通成分。第二次扫描将给每一连通成分分配唯一的标记。在找到所有的连通成分后,应该统计等价表,以便删除其中的空格;然后将等价表作为查找表对图像重新进行扫描,以便重新统计图像中的标记。计算每一连通成分的面积、一阶矩、二阶矩是序贯连通成分算法的个部分。当然,必须使用分离变暈来累加每一区域的矩信息)。当区域合并后,每一区域的矩累计值也应加到一起。 算法 3.2 4 连

9、通成分序贯算法从左至右、从上到下扫描图像。如果象素点为 1,则:如果上面点和左面点有一个标记,则复制这一标记。如果两点有相同的标记,复制这一标记。如果两点有不同的标记,则复制上点的标记且将两个标记输人等价表中作为等价标记。否则给这一个象素点分配一新的标记并将这一标记输入等价表。如果需考虑更多的点,则回到第步。在等价表的每一等价集中找到最低的标记。扫描图像,用等价表中的最低标记取代每一标记。3.5.3 欧拉数在许多应用中,亏格数(genus)或欧拉数可作为识别物体的特征。亏格数定义为连通成分数减去洞数。E = C - H (3.21)其中,E,C 和 H 分别是欧拉数、连通成分数与洞数。这个式子

10、给出了一个简单的拓朴特怔,这种拓扑特征具有平稳、旋转和比例不变特性。图 3.11 给出了一些例子及其对应的欧拉数.3.5.4 区域边界连通成分 S 的边界是那些属于 S 且与 邻接的点集。使用简单的局部运算就可找到边界点。在大多数应用中,我们都想用一特定的顺序跟踪边界点。一般的算法是按顺时针方向跟踪区域的所有点。此处讨论一个简单的边界跟踪算法。假定物体边界不在图像的边界上(即物体完全在图像内部),边界跟踪算法先选择一起始点 ,然后跟踪边界直到回到起始点。这种算法概括在算法 3.3 中,这种算法对尺寸大于 1 个象素的所有区域是有效的。用这种算法求 8 邻点区域的边界点如图3.12(a)所示,为

11、了得到平滑的图像边界后,可以在检测和跟踪图像边界后,利用边界点的方向信息来平滑边界。显然,图像边界噪声越太,图像边界点变化越剧烈,图像边界相邻点的方向变化数也越大。显然,根据这一特点,设置一个边界点方向变化数阈值,把方向变化数大于这一阈值的图像边界点滤除,由此可得到平滑的图像边界。图 3.12(b)所示的是一个经过平滑过的区域边界示意图,其中的方向变化数阈值为 1。注意,由于采用 8邻点边界跟踪,因此方向变化数的最大值为 4。如果阈值设成 4,则对原始边界没有平滑。边界跟踪和平滑常常结合在一起使用,见计算机作业 3.5.算法 3.3 边界跟踪算法3.5.5 距离测量在许多应用中,找到一幅图像中

12、两个象素点或两个连通成分之间的距离是很有必要的。目前还没有定义数字图像距离的唯一方法,但对所有的象素点 p,q 和 r,任何距离度量都必须满足下列性质:3.5.6 中轴如果对 S 中象素i,j的所有邻点 u,v 有下式成立(3.25)则 S 中象素i,y到 的距离 d(i,j, )是局部最大值。S 中所有到 的距离是局部最大值的象素点集合称为对称轴或中轴,通常记为 S,使用u,v4 邻点的中轴变换的一些例子见图 3.13。图 3.13(b)表明少量噪声会使中轴变换结果产生显著的差异。由 S和 S中每一点到 的距离能重构原始象素集 S.S是 s 的简洁表示。S可用来表示一个区域的形状。通过去除

13、S中与 距离较小的象素点,可以生成一个简化的S 集。中轴可作为物体的一种简洁表示。但是,二值图像中的区域也可用其边界来表示。边界跟踪算法可用来获得表示边界的序列点。在第七章还将讨论用链码来简洁地表示边界的方法。对任意物体,边界将是区域的简洁表示。但要明确给定象素点是否在某一区域内,中轴则是更好的表示,因为使用中轴上的象素点和每一个给定象素点的最大距离圆盘(中轴距离变换),可以很容易地检测出给定象素是否在中轴定义的区域中。3.5.7 细化细化(thinning)是一种图像处理运算,可以把二值图像区域缩成线条,以逼近区域的中心线,也称之为骨架或核线。细化的目的是减少图像成分,直到只留下区域的最基本

14、信息,以便进一步分析和识别。虽然细化可以用在包含任何区域形状的二值图像,但它主要对细长形(而不是凸圆形或水滴状)区域有效。细化一般用于文本分析预处理阶段,以便将文本图像中线条图画或字符笔画表示成单象素线条。细化要求如下:连通区域必须细化成连通线结构。细化结果最少应该是 8 连通(下面将要解释)。保留终止线的位置。细化结果应该近似于中轴线。由细化引起的附加突刺(短分支)应该是最小的。细化结果应该保证第一条要求中所定义的连通性,这一点是最基本的要求,它保证了连通线结构的数量等于原始图像中连通区域的数量。第二条要求保证所得到的线条总是含有 8 连通图像的最小数量。第三条要求说明终止线位置应该保持不变

15、。细化可以通过迭代方式不断去除边界点来实现,在迭代过程中注意不要去除端点象素,因为这样不仅会缩短细化线,丢掉结构信息,而且不能保持其位置不变。第四条要求说明所得线段应能最好地逼近原始区域的中线,如两个象素点宽的竖线或水平线的真正中线应该位于这两个象素之间半个象素间距的位置。在数字图像中表示半个象素间距是不可能的,因此得到的结果是一条位于原直线一侧的直线。第五条要求没有明确指出噪声的影响控制到最低程度,因为判断噪声本身是一件很难的事。一般不希望原始区域含有会引起突刺的隆起,但当某些较大隆起是区域特征时,却必须识别它们。应该指出,某些细化算法有去除突刺的参数,不过最好将细化和去除噪声分开进行,这是

16、由于某些情况下不需要的突刺,可能是另一些情况下所需要的短线。因此,最好的办法是先进行细化,然后单独去除长度低于某一特定最小值的任何突刺。一种常用的细化手段是在至少 3x3 邻域内检查图像的每一点,剥去区域边界。一次剥去一层图像,直至区域被细化成一条线。这一过程是用迭代法实现的,见算法 3.4。 在每次迭代时,每一个象素点用 nn 窗函数检查,为了保持连通性或线末端位置,将单象素厚的边界擦除。在图 3.14 中将会看到,在每次迭代中,值为 1 的外层区域就是用这种方式削掉的。当迭代结果没有变化时,迭代过程结束,图像得到细化。算法 3.4 4 邻点细化迭代算法对于每一个象素,如果没有上邻点(下邻点

17、左邻点右邻点);不是孤立点或终止线;去除该象素点不会断开区域,则去除该象素点;重复这一步骤直到没有象素点可以去除。3.5.8 扩展与收缩图像中的一个连通成分可以进行全方位的扩展(expanding)或收缩(shrinking)。如果某一连通成分可以变化,使得一些背景象素点变成 1,这一运算就称为扩展。如果物体象素点全方位地消减或变为 0 时,则称为收缩。一种简单的扩展与收缩实现方法如下:扩展:如果邻点是 1,则将该点从 0 变为 1.收缩:如果邻点是 0,则将该点从 1 变为 0.这样,收缩可以看作是扩展背景。这类运算的例子见图 3.15.需要指出,扩展与收缩这样简单的运算可以完成非常有用而又貌似很复杂的运算。下面引进符号先扩展后收缩算法能补上不希望存在的洞,如图 3.15(b)(d)所示;先收缩后扩展算法则能去除孤立的噪卢点,见图 3.15(c)(e),请注意,扩展与收缩可用来确定孤立组元或簇,扩展后收缩有效地填满了空洞却不能去除噪声;相反,收缩后扩展能去除噪声却不能填满空洞。扩展与收缩算法的一般形式被广泛地用在形态图像处理和膨胀与腐蚀运算中。

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

当前位置:首页 > 网络科技 > 图形图像

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报