注:以下内容参考资料主要来自于《数字图像处理》第2.5节,对其中内容进行扩充说明以及对部分问题进行修改。
首先,我们用f(x,y)的方式来表示一幅图像,即该图像中坐标(x,y)处的灰度值(如果为RGB图像则有三个值)为f(x,y)。
相邻像素
假设坐标(x,y)处的像素p有4个与其水平和垂直的相邻像素,坐标分别为:
(x+1,y)、(x-1,y)、(x,y+1)、(x,y-1)
则这组像素称为p的4邻域(自然是不包括p的),用N4(p)表示。每个像素距(x,y)一个单位距离,如果(x,y)位于图像的边界上,则p的某些相邻像素位于数字图像的外部。
p的4个对角相邻像素的坐标为:
(x+1,y+1)、(x+1,y-1)、(x-1,y+1)、(x-1,y-1)
并用ND(p)表示。
N4(p)和ND(p)合起来称为p的8邻域,用N8(p)表示。同样,这些相邻像素点是可能落在图像外边的。
注:以上概念为邻域,不是像素邻接。
以上内容可图解为:
邻接性、连通性、区域和边界
令V是用于定义邻接性的灰度值集合(邻接性不光在于是否位于其邻接域,还在于是否符合这个灰度值集合)。在二值图像中,如果把具有1值的像素归诸于邻接像素(该句参考文献中作者本意应为把1值归为邻接像素值,或者说其将像素之间是否邻接和邻接像素之概念分开来),则V={1}。在灰度图像中,概念是一样的,但是集合V一般包含有更多的元素。
此时则有
4邻接:像素p和 q的灰度值属于集合V,像素q在N_4 (p)中。
8邻接:像素p和 q的灰度值属于集合V,像素q在N_8 (p)中。
m邻接:像素p q的灰度值属于集合V,像素q在N_4 (p)中或者像素q在N_D (p)中,且集合N_4 (p)∩N_4 (q)没有来自V中数值的像素(注意是集合部分,非集合部分不算)。
注意区别邻域与邻接概念之区别。
混合邻接是8邻接的改进。混合邻接的引入是为了消除采用8邻接时产生的二义性。例如考虑下图中V={1}的像素排列,第二张图所示产生了多重二义性8邻接,第三张图所示可以通过m邻接消除这种二义性。(也就是说如果8邻接的话,这两个邻接像素之间的通路就不具备唯一性,有两条。关于通路下面有解释。)
从具有坐标(x,y)的像素p到具有坐标(s,t)的像素q的通路(或曲线)是特定的像素序列,其坐标为
(x0,y0)、(x1,y1)、…(xn,yn)
其中(x0,y0)=(x,y)且(xn,yn)=(s,t),且像素(xi,yi)和(xi-1,yi-1)对于1≤i≤n是邻接的。在这种情况下,n是通路的长度。如果(x0,y0)=(xn,yn),则通路是闭合通路。(由此可以看出通路是隔了不止一个点的)
然后根据几邻接来区分几通路,若是4邻接就是4通路,8邻接就是8通路,m邻接就是m通路。(那么一种通路上面肯定只有一种邻接类型)
令S是图像中的一个像素子集。如果S中的两个像素p和q之间存在一个通路,那么说两个像素p和q在S中是连通的。
对于S中的任何像素p,S中连通到该像素的像素集(注意不要重复)称为S的连通分量。举一个更具体的例子:假设在S中有5个像素p1、p2、p3、p4、p5。然后p1-p2-p3连通、p4,p5。那么这就是三个连通分量。
如果S仅有一个连通分量,则集合S称为连通集。
令R是图像中的一个像素子集。如果R是连通集,则称R为一个区域。两个区域Ri和Rj,如果它们联合形成一个连通集,则区域Ri和Rj称为邻接区域。不邻接的区域称为不邻接区域。
不过在讨论是否为邻接区域的时候,只能考虑两个区域边界的像素是否构成4邻接和8邻接,而不考虑m邻接。在定义区域邻接的时候,必须指定邻接类型(区域之间几邻接需与区域内部几邻接一致)。(当然这些区域之间肯定不允许出现有交集的情况)
注意:在《数字图像处理第三版》的2.5.2节中,“不邻接的区域称为不连接区域”应该是错误,修改成“不邻接的区域称为不邻接区域”。
假设一幅图像包含有K个不连接的区域,即Rk,k=1,2,3…,K。且它们都不接触图像的边界(进行这种假设的目的在于避免处理特殊情况。这样做不会丧失一般性,因为如果一个或多个区域接触到图像的边界,我们可简单地使用1像素宽的背景值边界来填充图像)。令Ru代表所有K个区域的并集,并令(Ru)c代表其补集。我们称Ru中的所有点为图像的前景,而称(Ru)c中所有点为图像的背景。
区域R的边界(也称为边缘或轮廓)是这样的点的集合,这些点与R的补集中的点邻近。换一种方式说,一个区域的边界是该区域中至少有一个背景邻点的像素集合。这里再强调一下,我们必须指定用于定义邻接的连通性(即是几连通的)。
前述定义有时称为区域的内边界,以便于其外边界相区分,外边界对应于背景边界。在开发追踪边界的算法时这一区别很重要。这种算法为了保证结果形成一个闭合通路,通常是沿外边界确立的。
如果R恰巧是整幅图像(我们假设这幅图像是像素的方形集合),则边界由图像第一行、第一列和最后一行、最后一列的像素集合来定义。这个附加定义是需要的,因为一幅图像超过边界范围之外没有邻点。正常情况下,当我们提到一个区域,指的是一幅图像的子集,并且区域边界中任何与图像边缘吻合的像素都作为区域边界的一部分全部包含于其中。
转载请标明出处,原文地址:https://blog.csdn.net/come_from_pluto