3D 网格中 2 - 区域隧道数量计算算法解析
1. 引言
在 3D 数字拓扑的图像分析领域,计算隧道数量(即第一贝蒂数 β1)一直是备受关注的课题。对于有界 3D 集合 K,其欧拉特征 χ(K) 可由庞加莱公式给出:χ(K) = β0 - β1 + β2,其中 β0 是连通分量的数量,β1 是隧道数量,β2 是封闭曲面的数量。
虽然已知欧拉数,但在假设 β0 = 1 的情况下,仍无法确定 β1 或 β2 的具体数值。此前有提出过计算贝蒂数的增量算法,但该算法在过去 12 年多里,尚未有网络文档记录其实现。本文提出的计算 β1 的算法,在概念上更易于理解,并且会详细介绍其实现过程。
本文采用分层的方法来计算 3D 二值图像(具体为网格立方体的 2 - 区域)中的隧道数量。首先逐列处理图像(即处理“运行”),接着逐层处理,最后将从各层推导得出的“2D 图”合并为一个“3D 图”,从而计算出隧道数量。该方法基于利用线性骨架的思想。
2. 定义
- 网格单元模型 :在 3D 空间中使用 0 - 、1 - 、2 - 或 3 - 单元,分别对应顶点、网格边、网格正方形或网格立方体。两个 3 - 单元(即立方体)c1 和 c2 是 2 - 相邻的,当且仅当 c1 ≠ c2 且它们的交集 c1 ∩ c2 包含一个 2 - 单元。
- 图的收缩 :在邻接图 G = [S, A] 中,两个相邻节点 p 和 q 的合并定义为用一个新节点 r 替换 p 和 q,r 与 S \ {p, q} 中所有 p 或 q 原本相邻的节点相邻。有限次的合并操作序列称为
超级会员免费看
订阅专栏 解锁全文
3049

被折叠的 条评论
为什么被折叠?



