1 概念与定义
1.1 领域背景:格点与离散空间
在离散空间中,元素通常以有限或可数的方式排列,例如二维/三维格点、像素网格或一般图的顶点集。为使“相近”或“相邻”的概念可计算,需要把连续空间中的距离、方向与邻近关系离散化,并规定某种固定规则,从而把“某元素的邻居”明确成一个可枚举的集合。
8邻域就是在规则网格(尤其是二维)上常用的一种邻接规则:它同时考虑与中心元素在水平、垂直以及对角方向上的直接邻近关系,因此能比只考虑正交方向的邻域提供更“密”的连接。
1.2 8邻域的二维定义
1.2.1 相邻判定:水平、垂直与对角
设二维规则网格中存在一个中心格点(或像素) \( (i,j) \)。8邻域由与其在“单位步长”距离内且与之共享边或角的格点组成,具体包括:
- 水平方向:\( (i-1,j), (i+1,j) \)
- 垂直方向:\( (i,j-1), (i,j+1) \)
- 对角方向:\( (i-1,j-1), (i-1,j+1), (i+1,j-1), (i+1,j+1) \)
因此,8邻域的直观形态可对应到以中心为中心的 \(3\times3\) 区域中除去中心点后的其余 8 个位置。
1.2.2 与中心点的关系:包含与排除规则
8邻域通常指“不包含中心点自身”的邻接集合,即上式列出的是除 \( (i,j) \) 外的 8 个相邻位置。若某些算法需要包含自身(例如在某些模板或滤波表达中),会在具体实现层面把“邻域”和“邻域+自身”的变体加以区分,但标准表述下,“邻域”默认不把中心计入。
1.3 一般化理解:从网格到图的邻接
1.3.1 顶点与边的对应关系
将网格格点视为图论中的顶点,则邻域规则可转化为边的构造方式:对任意顶点 \(v\),若其在网格中位于另一个顶点 \(u\) 的8邻域内,则在图中连接 \(u\) 与 \(v\)(通常可理解为无向边,因为相邻关系是对称的)。由此,8邻域成为一种定义“局部可达性”的连接策略。
1.3.2 邻域集合的集合表示
在集合表示中,可把中心顶点 \( (i,j) \) 的8邻域写作: \[ N_8(i,j)=\{(i+\Delta x, j+\Delta y)\mid \Delta x,\Delta y\in\{-1,0,1\},\ (\Delta x,\Delta y)\neq(0,0)\} \] 该表达强调了:允许的位移在 \([-1,1]\) 的离散范围内,且必须排除零位移,从而得到恰好 8 个邻居(在边界以外的规则网格区域内)。
2 与其他邻域的比较
2.1 4邻域
2.1.1 方向限制与像素/格点连通差异
4邻域仅考虑中心格点在水平方向与垂直方向的直接相邻位置,不包含对角格点。由此,4邻域的连接更“稀疏”,在连通分析中会更严格:两条仅在角点处“相碰”的结构,在4邻域下通常不会被视为连通,而在8邻域下可能被连成一个分量。
2.1.2 对连通性的影响
由于8邻域允许对角连接,它在多数连通域划分任务中往往会导致分量数量减少、连通性更强;相反,4邻域更容易把复杂形状拆分成多个独立部分。选择哪一种邻域,通常取决于任务对“角点相接是否算作连通”的定义需求。
2.2 8邻域与“对角连通”
2.2.1 连通域合并的情形
当两个区域在网格上仅通过对角位置接触时,使用8邻域会把它们判定为连通,从而发生“合并”。在二值图像中,这常见于细小断点被对角邻接覆盖的情况:看似只差一个角的间隙,8邻域会将其视为可达通路。
2.2.2 边界与角点的处理
边界区域由于缺少完整邻居,实际邻接关系会受网格边缘影响。对角相接的位置在边界附近尤其敏感:同样的几何形状在不同裁剪范围内,可能因为缺少某些邻居点而改变连通性判定。因此,在实现时通常需要明确边界策略,例如将越界邻居视为不存在,或采用填充方式统一处理。
2.3 与更大邻域的类比(如3×3窗口)
2.3.1 从局部模板到邻域规模
8邻域可被视作“3×3局部窗口”中的一种模板:窗口范围固定为中心周围一圈。更大尺度的邻域(例如以中心为中心的 \(5\times5\) 窗口)可以理解为允许更远的离散位移。随着邻域规模增大,邻接图变得更密,连通性更强,但代价往往是更容易把原本应分开的结构连接起来,且计算量会上升。
3 几何与连通性相关性质
3.1 连通性的判别方式
3.1.1 BFS/DFS在8邻域上的应用思路
在基于图的连通性判别中,常见做法是把每个格点当作顶点,按照8邻域生成其邻居列表,然后使用 BFS 或 DFS 从某个未访问顶点出发遍历所有可达点。遍历过程中,邻居的产生规则完全由8邻域决定,因此8邻域会直接影响搜索到的范围。
3.1.2 连通分量的识别
若在二值图像或掩膜中只允许某类像素参与(例如只连通“值为1”的点),那么连通分量即为图中由这些参与顶点构成的极大连通子图。8邻域通常会让极大连通子图更容易合并为更大的分量,这也是它在形态学与目标分析中常被采用或对比的原因。
3.2 邻域对形状分析的影响
3.2.1 细小结构的保留与误连
形状分析中,细小凹陷、狭窄通道或单像素级别的断裂都会对连通判定产生显著影响。8邻域由于允许对角穿连,可能在噪声存在时把本应断开的区域“桥接”起来,从而造成误连;与此同时,在某些场景下它又能更好地避免把本应连续的对角纹理拆碎。因此,邻域选择常与预处理(去噪、平滑、阈值设定)共同影响最终结果。
3.3 离散拓扑视角下的直观差异
3.3.1 近邻关系导致的“拓扑外观”变化
在离散空间里,“拓扑外观”取决于邻接规则。8邻域等价于在网格上把对角相邻视为同一可达框架的一部分,这会改变连通域数量、骨架连通方式和孔洞的表现形式。换言之,拓扑性质并非只由几何图形本身决定,还与所采用的离散邻接模型有关。
4 计算与实现
4.1 邻域枚举(二维3×3模板)
4.1.1 坐标偏移量的表示方式
实现中常用“偏移量列表”来枚举8邻域。设中心为 \( (i,j) \),则偏移集合可写为: \[ \{(-1,-1),(-1,0),(-1,1),(0,-1),(0,1),(1,-1),(1,0),(1,1)\} \] 遍历每个 \((\Delta x,\Delta y)\),计算 \((i+\Delta x, j+\Delta y)\) 作为邻居候选,从而把逻辑清晰地与中心坐标分离。
4.1.2 边界像素的处理策略
当中心点位于网格边缘或角点附近,部分邻居坐标会越界。常见处理方式包括:
- 越界邻居直接跳过(把它们视为不存在)
- 对原数据做边界填充(例如复制边界、零填充等),再用统一逻辑枚举
- 在枚举前先判断中心点是否允许取到对应方向的偏移
选择哪种策略取决于任务对边界行为的定义,以及算法对填充值敏感程度。
4.2 访问与去重策略
4.2.1 visited标记与避免重复遍历
在 BFS/DFS 或连通域标记中,需要记录已访问点以避免重复入队/重复递归。典型做法是在与原网格同尺寸的布尔数组或标签数组中标记状态:当一个点被处理过,就不再从其他路径重复进入,从而保证遍历终止且结果一致。
4.2.2 数据结构选择(数组/队列/栈)
- BFS:使用队列,适合按层扩展,便于获得最短步数意义下的连通扩展顺序(在无权图语境下)。
- DFS:使用栈(显式栈或递归),实现相对简洁,但递归深度可能受限。
- 连通域标记:也常使用队列的“种子扩展”方式,把同一分量中的点逐批加入。
4.3 性能与复杂度
4.3.1 单点邻域扫描的代价
对单个格点而言,8邻域的邻居数量固定为 8(在非边界区域)。因此,单点扫描的代价是常数级,时间复杂度可视为 \(O(1)\)(忽略越界判断的常数因子)。
4.3.2 批量连通分析的整体复杂度
若对整个网格进行连通域搜索,每个点最多被访问一次,且每次访问只需检查有限个邻居,则总体复杂度通常与格点数量线性相关,即 \(O(V)\);其中 \(V\) 可理解为参与分析的格点数。实际运行时间还会受到数据布局、队列/栈操作以及边界策略影响。
5 应用场景
5.1 二值图像处理
5.1.1 连通域标记与统计
在二值图像中,8邻域常用于连通域标记:把满足条件的像素按8邻接规则分组,得到每个目标的像素集合与相关统计量(如面积、边界像素数、重心)。由于它对角连接更“宽松”,常用于希望避免把斜向纹理拆成多个碎片的情形。
5.1.2 形态学运算中的邻接选择
形态学运算(如膨胀、腐蚀、开闭运算)经常会与邻域定义绑定:不同邻域等价于不同的结构元素离散化方式。采用8邻域意味着对角方向也可能影响形态演化,从而改变噪声连通桥接的概率以及边界细节保留程度。
5.2 离散几何与图像边界追踪
5.2.1 轮廓连贯性的影响
在边界追踪或轮廓提取中,连通规则决定了轮廓能否跨越对角拐点保持连续。8邻域通常能提供更平滑的“追踪链”,减少因为角点接触而造成的中断。但这也可能在存在尖角噪声时引入多余连接,使轮廓出现非预期的连通跳转。
5.2.2 角点与缝隙处理
角点处的缝隙宽度若小到只有对角间隔,8邻域会倾向于把其视作可跨越的通路;而缝隙稍宽或需要正交穿越时,则可能仍然把结构分开。因而在轮廓或结构估计任务中,8邻域往往需要与阈值、平滑强度或后处理规则配合使用。
5.3 网格图建模与路径搜索
5.3.1 邻接规则与可达性
在网格路径规划或可达性分析中,8邻域对应“允许水平、垂直以及对角移动”的离散运动模型。这样一来,可达空间更大、路径可能更短(步数意义下),也更接近某些连续运动的直观近似。
5.3.2 与代价/权重的结合(概念层面)
若在图上进一步加入代价或权重,通常会把不同方向的移动映射到不同权重(例如对角移动相对更“长”)。8邻域提供了候选边集合,而代价函数决定搜索算法(如最短路)偏好哪类路线,从而使几何直觉与计算目标(距离、代价、平滑性)协调。