《数字图像处理》读书笔记,整理书中的琐碎细小的概念,逐渐将其消化理解。笔记内容大部分摘录自书中内容,并加上一部分解释内容,便于理解。
像素间的基本关系
4邻域、对角邻域、8邻域
4邻域 (4-neighbors)
坐标 \((x,y)\) 上的像素 \(p\) 在水平和垂直方向上的4个相邻像素,其坐标分别为 \((x+1,y),(x-1,y),(x,y+1),(x,y-1)\) ,这组像素中的每个像素距离 \(p\) 一个单位距离,称为像素 \(p\) 的4邻域,用 \(N_4(p)\) 表示。
对角邻域 (diagonal neighbors)
坐标 \((x,y)\) 上的像素 \(p\) 在两个对角方向上的4个相邻像素,其坐标分别为 \((x+1,y+1),(x+1,y-1),(x-1,y-1),(x-1,y+1)\),这组像素称为像素 \(p\) 的对角邻域,用 \(N_D(p)\) 表示。
8邻域 (8-neighbors)
坐标 \((x,y)\) 上的像素 \(p\) 的4邻域和对角邻域合起来称为8邻域,用 \(N_8(p)\) 表示。
邻接性、连通性、区域和边界
相邻像素的邻接性需根据这些像素的灰度值确定,即两个像素 \(p\) 和 \(q\) 可能在空间位置上相邻,但其像素值不在邻接性定义的灰度值像素值集合内,因此这两个像素不是邻接的。
令 \(V\) 是定义邻接性的像素值集合,考虑二值图像(像素的灰度值只有0和1两种数值的图像)时,如果将具有1值的像素设定为邻接像素,则 \(V=\{1\}\)。在其他灰度级数更大(例如256级灰度)的图像中,集合 \(V\) 一般含有更多的灰度值,即 \(V\) 可能是0-255整数集合的任意一个子集。
4邻接
考虑一个像素 \(p\),如果像素 \(q\) 在集合 \(N_4(p)\) 中,则具有 \(V\) 中数值的两个像素 \(p\) 和 \(q\) 是4邻接的。
8邻接
考虑一个像素 \(p\),如果像素 \(q\) 在集合 \(N_8(p)\) 中,则具有 \(V\) 中数值的两个像素 \(p\) 和 \(q\) 是8邻接的。
m邻接(混合邻接)
考虑一个像素 \(p\),如果
-
像素 \(q\) 在集合 \(N_4(p)\) 中,或者
-
像素 \(q\) 在集合 \(N_D(p)\) 中,且集合 \(N_4(p){\cap}N_D(p)\) 没有来自 \(V\) 中数值的像素。
则具有 \(V\) 中数值的两个像素 \(p\) 和 \(q\) 是8邻接的。
混合邻接是8邻接的改进,目的是消除8邻接带来的对角相邻像素之间可能产生的多余的斜向路径。
通路
从具有坐标 \((x,y)\) 的像素 \(p\) 到具有坐标 \((s,t)\) 的像素 \(q\) 之间的通路是由不同像素组成的一个序列,序列中像素的坐标值分别为
其中 \((x_0,y_0)=(x,y),(x_n,y_n)=(s,t)\),并且在序列中左右相邻的两个像素之间都是邻接的。\(n\) 是通路的长度(通路中的像素个数-1)。如果一条通路有 \((x_0,y_0)=(x_n,y_n)\),则这条通路是闭合通路。可根据不同的邻接类型(4邻接、8邻接、m邻接)定义不同的通路类型(4通路、8通路、m通路)。
连通
令 \(S\) 是图像中的一个像素子集(图像中像素点组成的集合)。如果两个像素 \(p\) 和 \(q\) 之间存在一条完全由 \(S\) 中的像素构成的通路(像素 \(p\) 和 \(q\) 均在 \(S\) 中),那么称像素 \(p\) 和 \(q\) 在 \(S\) 中连通。这条通路的所有像素点均取自 \(S\) 中,但无需取遍 \(S\) 的全部元素。
对于 \(S\) 中的任意一个像素 \(p\),在 \(S\) 中与像素 \(p\) 连通的像素构成的像素集合称为 \(S\) 的连通分量。如果S仅有一个连通分量,则 \(S\) 称为连通集(\(S\) 中的所有像素互相都连通)。
区域
令 \(R\) 是图像中的一个像素子集,如果 \(R\) 是一个连通集,则称 \(R\) 为图像的一个区域。两个区域 \(R_i\) 和 \(R_j\),如果将他们合并后能够形成一个连通集,则称区域 \(R_i\) 和 \(R_j\) 为邻接区域。不邻接的区域称为不邻接区域。当考虑区域之间的是否邻接时,一般使用4邻接或8邻接。为了使得这些区域邻接的定义有意义,必须指定区域之间邻接的类型。也就是说,有些区域之间使用4邻接方式是不邻接的,而使用8邻接方式则是邻接的,所以在判断区域之间是否邻接之前需要指定邻接类型。
边界
假设一幅图像中含有 \(K\) 个不邻接的区域 \(R_k,k=1,2,...,K\),且这些区域都不接触图像的边界。令 \(R_u\) 表示这 \(K\) 个区域的并集,\((R_u)^c\) 表示 \(R_u\) 的补集,那么 \(R_u\) 称中的所有像素点为图像的前景,\((R_u)^c\) 中的所有像素点为图像的背景。
区域 \(R\) 的边界(也叫边框或者轮廓)是区域 \(R\) 中与 \(R\) 的补集邻接的像素点组成的集合。也就是说,一个区域的边界是区域中与至少一个背景区域像素邻接的像素点组成的集合。在定义区域的边界时同样要指定邻接的类型。一般来说,为了处理拐角点的情况,通常使用8邻接方式定义区域和其背景之间的边界。
上述边界的定义有时称为区域的内边界,即边界像素是在区域内部。与内边界相区分的是外边界,即边界像素在背景区域内。外边界的定义与内边界的定义类似,只是边界像素取自背景区域,条件变为与至少一个区域像素邻接。内外边界的区别在设计边界跟踪算法时很重要,这类算法为了保证结果是闭合通路,通常制定为遵循外边界。因为有些区域内部无法形成一个闭合通路(例如一条宽度为1个像素的线段构成的区域),因此需要从背景区域中找到该区域的边界,使得围绕这个区域的边界能够形成一个闭合通路。
如果区域 \(R\) 是整幅图像,其边界定义为图像的第一行、第一列、最后一行和最后一列的像素构成的集合。如此定义的原因是一幅图像超出边界以外是没有邻接像素点的。正常情况下,区域指的是一幅图像的子集,并且区域边界上任何与图像边界重合的像素点都隐含为区域边界的一部分。
边缘
边缘在讨论区域和边界时常常出现,然而边缘和边界之间有一个关键的不同点。有限区域的边界形成一个闭合通路,因此这是一个“全局”概念。而边缘由导数值超过某一预设阈值的像素点构成。因此边缘是一个“局部”概念,它基于一个点处灰度级的不连续性度量。边界考虑全局,即边界内的像素点是否能形成一个闭合通路,而边缘考虑局部,即邻接像素点上的灰度级不连续是否能够超过某个阈值。
可以将边缘点连接称边缘线段,并且有时使用计算边界的方式连接这些边缘线段,但并不总是这样。边界和边缘相同的一个例外情况是二值图像。二值图像中像素的灰度值只有0和1两种,根据使用连通类型和边缘算子,能够实现在二值区域中提取的边缘和区域边界是完全一样的。在概念上考虑边缘为灰度不连续、边界为闭合通路是十分有用的。
距离
图像中的像素按照空间位置排布,因此也有着相应的距离度量方式。
对于坐标分别为 \((x,y),(s,t),(v,w)\) 的像素 \(p,q,z\),如果有
- \(D(p,q){\geq}0,[D(p,q)=0\) 当且仅当 \(p=q]\)
- \(D(p,q)=D(q,p)\) 且
- \(D(p,z){\leq}D(p,q)+D(q,z)\)
则 \(D\) 是距离函数或度量标准。
像素 \(p\) 和 \(q\) 之间的欧氏距离度量定义如下:
在欧式距离度量下,到像素点 \((x,y)\) 的距离小于等于某一特定值 \(r\) 的像素都在以 \((x,y)\) 为中心、半径为 \(r\) 的圆盘区域内。
像素 \(p\) 和 \(q\) 之间的 \(D_4\) 距离度量(城市街区距离)定义如下:
在 \(D_4\) 距离度量下,到像素点 \((x,y)\) 的距离小于等于某一特定值 \(r\) 的像素形成一个以 \((x,y)\) 为中心的菱形区域。例如 \(D_4=1\) 的像素是 \((x,y)\) 的4邻域。
像素 \(p\) 和 \(q\) 之间的 \(D_8\) 距离度量(棋盘距离)定义如下:
在 \(D_8\) 距离度量下,到像素点 \((x,y)\) 的距离小于等于某一特定值 \(r\) 的像素形成一个以 \((x,y)\) 为中心的方形区域。例如 \(D_8=1\) 的像素是 \((x,y)\) 的8邻域。
注意,像素 \(p\) 和 \(q\) 之间的 \(D_4\) 和 \(D_8\) 距离度量和任何可能存在与这些像素点之间的通路无关,因为这两种距离度量方式只考虑像素点的坐标。如果考虑m邻接,则 \(D_m\) 距离定义为两像素点间最短的m通路长度。在 \(D_m\) 距离度量下,两个像素之间的距离依赖于通路上像素的灰度值以及它们相邻像素的灰度值。在 \(D_m\) 距离度量下,这些像素的灰度值的不同可能会产生不同的距离值。