1. 引言
近年来,人民生活水平得到了进一步提升,牙齿的健康逐渐受到人们的关注。其中因老化磨损和外力损伤造成的牙齿缺失是较为普遍的口腔健康问题。医生在给患者进行治疗时,需要先获取患者的牙齿模型,才能进一步判断患者牙齿产生病变的原由,进而给出合理的治疗方案。过去医生通常采用灌注印模的方法来实现获取牙齿模型 [1] ,该方法需要医生根据经验采用合适的水分配比制作印模材料,并将制作好的印模材料搅拌均匀,在不断震荡的条件下,进行材料注入,获取病人牙模,并且在整个制作过程中要时刻注意气泡的排除,可以看出完整的操作过程相当复杂,且整体建模的时间也比较长。现如今,随着三维建模技术 [2] 和方法的不断完善以及结构光技术的成熟 [3] ,采用三维建模的方式建立牙齿模型逐渐成为主流,如图1所示。采用三维建模技术进行患者牙模的获取,只需要牙医熟悉牙齿扫描仪的操作,利用牙齿扫描仪对患者牙齿进行扫描就可以得到,这一方法极大地提高了牙齿的设计和加工效率,同时也提升了精度和质量。
Figure 1. 3D dental scan of the mouth
图1. 3D口腔牙齿扫描图
在三维建模技术中,常用的三维数据表示方式有:体素、多视图、多边形网格、点云,如图2所示,不同三维数据格式下的表现形式,本文选择在点云数据格式下进行研究牙齿三维建模。
Figure 2. Different 3D data representations
图2. 不同三维数据表现形式
在牙齿三维建模过程中,由于口腔内空间狭小、环境复杂(牙釉质、口水、唾液、金属牙、牙齿填充物等)、手持设备的抖动等因素,通常医生在进行患者口内扫描时,需要对同一区域的牙齿进行反复操作扫描仪才能够获取完整的该牙齿点云数据,究其原因是由于单次扫描出来的区域牙齿点云因过曝光和结构光 [4] 的阴影效应,无法提取足够的特征,使得重建的3D点云 [5] 存在大量缺失孔洞的现象,这严重降低了口内3D扫描的精度和效率。因此,动态实现对口内3D扫描获取的三维点云进行补全,将会大大提升口腔内3D扫描的准确度,并且减少医生重复扫描的频次,进而缩短整个3D扫描时间。
基于上述问题和思路,本文提出一种基于真实口内3D特征信息,补全3D扫描点云缺失的深度学习Dental-Net算法模型,在不损失原有点云的特征前提下,进行牙齿缺失孔洞补全,实现了获取完整的口内3D扫描的牙齿模型。具体贡献为:
1) 提出了在口腔3D建模领域中,为提高口腔3D建模准确度,基于真实口内牙齿点云的特征信息,通过补全缺失部分点云,实现精细化完整建模的深度学习Dental-Net算法模型方法。
2) 特征提取模块中,Dental-Net借鉴了MLP特征提取的思想,在其基础上,同时考虑各级结果以及相邻层级之间结构的特征信息,进行拼接整合,实现了充分利用包含丰富本地信息的低中级特征层,大大增加了模型的特征提取能力。
3) 在进行深度学习训练中,为了实现对完整点云的各个位置都做到缺失处理,模型具有更强的鲁棒性,采用了最远点采样原理 [6] (FPS)对每一类样本进行中心点选择,获取其均匀的点云分布,根据获取到的点云分布做完整样本缺失处理进行模型训练。
2. 相关研究工作
在点云补全任务 [7] 中,目前主要有两个解决方向:一个是通过获取原有待补全样本的几何特征实现缺失补全 [8] 的几何方法,另一个是使用现有输入点云的特征信息对缺失部分进行补全的深度学习方法。
通过获取原有待补全样本的几何特征实现缺失补全的几何方法。其中的表面重建法基是使用平滑插值算法来对缺失部分实现补全,对称法的思路是利用对称的性质,实现让非缺失区域来补全缺失区域 [9] 。值得的注意的是,这几类方法通常对待补全的输入样本要求较高,需要待补全的缺失孔洞样本物理信息有高度完整性,但实际工程上获取的点云一般很难满足这一要求,故该类方法在工程上的表现效果较差。
利用已有输入点云的特征信息对缺失部分进行补全的深度学习方法主要为使用点卷积补全方法实现,该方法常采用编解码器架构进行网络设计,通过多种不同的特征提取方案实现对输入缺失点云样本的信息理解,以实现对样本的缺失部分预测。例如2018年提出PCN [10] 模型,在不获取样本先验数据结构的情况下,即可实现对输入样本进行预测,编码器复用了Pointnet [11] 网络的思想,采用网络堆叠的方式对其进行改进,实现对输入样本进行特征信息提取,解码器利用获取到的特征信息进行缺失预测 [12] ,该类方法对输入点云的完整性要求相对低,只需要有足够的待解决问题场景样本在设计好的模型下进行训练,即可达到较高的精度,因此该类方法很好的解决了通过获取原有待补全样本的几何信息实现缺失补全的几何方法中对输入样本要求高的问题。
目前,还没有文献针对口内3D实时扫描的牙齿点云进行补全研究。口腔内实时扫描的3D牙齿点云,由于受噪声影响,基于局部几何特征的补全方法效果均不佳。且对于补全算法的实时性要求极高。因此,本文提出一种针对口内实时扫描的3D点云补全模型Dental-Net。
3. 口腔3D点云结构补全网络
在牙齿三维重建过程中我们增加实时点云补全环节的目的是让三维重建后的牙齿模型高度还原患者牙齿的真实结构,便于医生给出更合理的治疗方案,让患者有好的治疗体验。要实现这个目的,需要对补全模型有非常严格的要求,即既要满足生成的牙齿点云和用户真实的牙齿点云在物理表征上是一致的,同时在空间上点云间前后无差异。对此本文提出一种基于真实口内3D点云的全局特征信息,补全3D扫描过程中部分缺失点云的深度学习Dental-Net算法模型。Dental-Net口内3D扫描点云补全算法模型包括生成器和鉴别器 [13] 两大部分,如图3所示,Dental-Net的生成器实现对输入有缺失的牙齿点云,完成其缺失部分补全的任务,解码器采用了生成对抗网络的思想 [14] ,可识别牙齿点云数据是真实的还是生成器产生的,实现对补全结果进行优化。
Figure 3. Dental Net network architecture
图3. Dental-Net网络架构
Dental-Net口内3D扫描点云补全算法模型网络在对牙齿点云样本做特征提取时,采用的方法是对不同尺度下的采样点进行分别特征提取的方式,所以我们需要有输入牙齿点云的不用尺度下采样点,这可使用对原始牙齿点云样本进行降采样的方法来实现,本文降采样方案采用最远点采样法,如表1采样原理,该方法突出优势 [15] 是能够实现均匀采样。
Table 1. Principle of farthest point sampling method
表1. 最远点采样法原理
如下牙齿样本进行最远点采样后的结果(如图4所示),可以看到当降采样到128个采样点时,依然能够分辨出牙齿的形状。
Figure 4. Tooth point clouds at different scale
图4. 不同尺度下的牙齿点云
Dental-Net口内3D扫描点云补全模型网络编码器特征提取模块的输入部分是由原始牙齿点云进行3次下采样得到,对应牙齿的点云数分别为[4096, 2048, 1024]。对得到的不同尺度牙齿点云分别依次采用MLP++进行特性提取,MLP++的主要原理是借鉴了MLP的思想,MLP做特征提取 [11] 是让样本中的点在不同维度下做映射,然后从得到的最大维度中获取最大值,最终形成一个全局潜在向量,从提取的原理上不难看出MLP对中低维度的特征层的信息利用有限,如图5所示,MLP++充分考虑了该缺陷,在考虑全局最大维度特征情况下,同时考虑各级结果以及相邻层级结构的特征信息,最后进行拼接整合,在经过最大值池化作用后,输出1920维特征,作为最终的特征向量,如图6所示,充分考虑在不同感受野下的特征。
Dental-Net口内3D扫描点云补全网络解码器模块是将编码器输出的特征向量作为输入,目标是生成M × 3点云,代表缺失区域的形状。
为了更准确的生成缺失点云,如图3在特征提取时使用了层次结构,实现对样本不同尺度进行特征提取,具体为可先获取主要轮廓特征,并使用该特征进行缺失部分的轮廓预测,接着获取中间较细粒度特征和详细细节特征,进而让不同特征层来预测不同轮廓粒度点云,详细实现细节为把编码器端输出的特征向量,通过使用全连接层作用得到多个特征向量,每个特征向量进行对应轮廓的补全,整个补全过程是串行实现,下一级预测会通过reshape和加法操作考虑上一级预测结果。
4. 数据集描述与预处理
本文数据集由基于DLP [16] (Digital Light Processing)技术的结构光投影采集得到,采集过程中同步使用了ICP算法 [17] 对牙齿点云进行配准,共获得了100个不同位置的牙齿样本数据,每个样本平均大约有5000~7000个点云,由于口腔牙齿点云的特殊性,牙齿细节分辨的区别度较细微,为使模型具有更强的鲁棒性,采用了同样本扩充的手段,具体为对3D牙齿点云数据进行同样本100次复制得到每个样本有100份,达到实现模型对样本的充分感知的目的。
牙齿点云在采集过程中不可避免会产生一定量的离群噪声点,离群噪声点影响模型的训练时间,同时对模型的最终预测精度有负向影响。为解决离群噪声点对模型的影响,本文在数据预处理阶段采用了基于三维网格划分的算法思路来去除离群噪声点,三维网格划分去除离群噪声点的核心思想是,在定性三维网格边长条件下对全区域进行网格划分,然后针对划分好的网格进行最大连通域构建,最大连通域内的数据点即为优质数据点,对其余数据做过滤即可。
同时为了解决由于计算资源有限导致模型训练结果不能很快得到的问题,本文采用了对训练样本做数据归一化 [18] 处理的方案,让样本数据的坐标值均落在(−1, 1)范围内,如图7数据预处理完整流程。
模型训练需要对完整点云进行缺失处理。进行缺失处理的主要思想是通过选取一个点M (m1, m2, m3),然后计算该牙齿样本数据中所有点到该点的距离,选择出最近的64个点,将这64个点的坐标值做置零,以此完成牙齿点云数据的缺失处理。M点的选择方案为采用最远点采样的方法从每一种样本中进行中心点选择,均选择采样32个点,M点从32个点中随机选取,实现对完整点云各个位置都做到缺失处理,帮助网络具有更强的鲁棒性,如下可视化结果,如图8所示。
Figure 7. Tooth point cloud data preprocessing process
图7. 牙齿点云数据预处理流程
Figure 8. Tooth point cloud missing at different locations
图8. 不同位置的牙齿点云缺失
5. 实验
5.1. 损失函数与评估指标
本文基于真实口内3D牙齿点云的特征信息,构建Dental-Net算法模型采用的损失函数是由生成器端的生成和真实之间的差异损失和用于优化整个过程的对抗损失组成。模型采用倒角距离(Chamfer distance, CD) [19] 作为补全结果的评价标准,如下公式
(1)
(2)
公式(1) (2)表达了度量指标CD的含义是生成值和真实值之间的平均最近平方距离,由口腔3D点云的结构补全网络架构可知有
、
、
,如下表达式
(3)
对抗损失:
(4)
由(4)可以知道生成对抗环节鉴别器的输出为D,输入为有缺失部分牙齿点云的预测值
对应实际
。
由式(5)可以看出总损失函数由生成损失和对抗损失两部分加权,
和
是满足以下条件的生成损失和对抗损失的权重:
(5)
5.2. 实验分析
Dental-Net算法模型是在Windows系统下借助Python机器学习库PyTorch进行开发实现,采用ADAM [20] (adaptive moment estimation) 进行梯度下降优化,Batchsize设置为32,epoch设置为1000,生成点云的点数为[M1, M2, M3] = [256, 128, 64] (表2)。
Table 2. Average evaluation measure
表2. 平均评估度量
网络模型在不同大小孔洞下的补全效果,如图9所示。
Figure 9. Filling diagram under holes of different sizes
图9. 不同大小孔洞下的补全图
6. 结束语
本文针对口腔3D建模中,由于口腔内环境复杂(牙釉质、口水、唾液、金属牙、牙齿填充物),导致重建的3D点云含有大量缺失孔洞的问题,给出一种基于真实口内3D点云的特征信息,补全3D扫描过程中部分点云的深度学习Dental-Net算法模型。Dental-Net算法网络架构能够较好运用有缺失孔洞牙齿点云的特征信息,实现缺失区域的补全。实验结果表明在牙齿点云数据集中,平均倒角距离Pred→GT/GT → Pred = 0.135/0.157。
通过对实际扫描的有缺失孔洞牙齿点云进行补全处理,实验达到了预期的效果,Dental-Net算法模型对于完成牙齿点云补全是有效的。然而,需要特别关注的是,当对牙齿缺失孔洞进行补全时,有时会出现点云密度不均匀的现象。因此未来针对密度差异问题提出新的解决方案,实现补全后的所有牙齿点云密度均匀是模型进一步优化的重要工作。
基金项目
国家自然科学基金(81101116)资助。