论文阅读:“Model-based teeth reconstruction”

文章目录

  • Abstract
  • Introduction
  • Teeth Prior Model
    • Data Preparation
    • Parametric Teeth Model
  • Teeth Fitting
    • Teeth Boundary Extraction
  • Reference

在这里插入图片描述

Abstract

近年来,基于图像的人脸重建方法日趋成熟。这些方法可以捕捉整个面部或面部特定区域(如头发、眼睛或眼睑)的高精细静态和动态几何模型。遗憾的是,基于图像的口腔捕捉方法,尤其是牙齿捕捉方法,却很少受到关注。然而,牙齿的精确渲染对于面部表情的逼真展示至关重要,目前高质量的面部动画都是通过繁琐的手工工作制作牙列模型。在牙科领域,开发了专门的口腔内牙齿扫描仪,但这种扫描仪还难以广泛使用。

在文章中,研究人员提出了第一种仅凭口腔区域的稀疏照片集就能无创重建整个人特定牙列的方法。该方法的基础是从高质量口扫模型中学习到的新参数牙列先验(parametric tooth row prior)。新的基于模型的重建方法将牙齿与照片相匹配,从而准确匹配可见牙齿,并合理生成遮挡牙齿(occluded teeth)。该方法不仅能无缝集成到整个面部的摄影测量多相机重建设置中,还能从普通的未校准照片甚至手机拍摄的短视频中获得高质量的牙齿建模。

Introduction

由于牙齿表面有半透明的牙釉质涂层,牙齿具有极强的镜面反射性,而由于牙齿下面的牙本质,牙齿又具有高度漫反射性,两者都表现出很强的表面下散射。因此,牙齿只有很少的可见特征,最明显的特征是单个牙齿之间的边界,这甚至不是牙齿表面的特征,因此使用摄影测量(photogrammetric)方法重建牙齿非常具有挑战性。

从另一方面看,牙齿是刚性的,不同对象的牙齿形状变化是可控的,因此牙齿可以很好地进行统计建模(statistical modeling)。基于相机的口腔内部重建由于 non-trivial occlusions 而变得更加复杂。如果不使用专用的嘴唇扩张装置,人们通常很难将嘴张得足够大,即使这样,通常也无法通过单一位姿看到整个口腔。

因此,这篇文章首次提出了一种方法,可从口腔区域的稀疏正常照片集重建牙齿。在这些图像中,人可以做出自然的嘴部表情,而无需在机械支撑下不舒服地张开嘴巴。

Contributions:

  • 提供了一个新的整排牙齿参数先验模型,该模型是从高质量石膏模型的数字化数据库中学习的。该牙齿模型对每颗牙齿的局部形状变化、整排牙齿中每颗牙齿的姿态变化以及整排牙齿的位置和比例进行了编码。它还对模型参数的先验分布进行了编码。
  • 提出了一种基于图像的新方法,该方法可重建特定个人的牙列,与输入图像中的可见牙齿相匹配,并在先验模型的基础上为部分遮挡和完全隐藏的牙齿生成合理的几何形状。

Teeth Prior Model

人类通常有 32 颗牙齿(去掉智齿后为 28 颗),分为上下两排,基本对称。牙齿分为四类:门牙(incisors)、犬牙(canines)、前臼齿(premolars)和臼齿(molars),如下图所示。

在这里插入图片描述

Data Preparation

为了建立牙齿数据库,我们从医学牙科领域获得了 86 排不同牙齿的高分辨率石膏三维扫描图像,其中包括上排牙齿和下排牙齿。其中一部分扫描结果如下图所示。

在这里插入图片描述
Teeth Templates. 为了建立和训练模型,需要一个牙齿数据库,每个牙齿都有独立的几何图形,并在不同的研究对象之间保持一致。研究人员首先手动(artistically create)创建了一个牙齿模板网格。由于四类牙齿的形状迥异,因而创建了四个独立的模板网格。为了完整起见,研究人员将牙齿一直建模到牙根。

Template Fitting. 现在,我们希望将牙齿模板网格实例与石膏扫描模型中的单个牙齿相匹配。研究人员设计了一种半自动模板拟合方法。首先,用户通过点击牙齿间边界以及牙齿和牙龈边界的几个点,为每颗牙齿定义一个分割轮廓。如下图(a),左门牙的轮廓用紫色标出,其他轮廓用绿色标出。根据所选点之间的高曲率路径自动计算分割轮廓。此外,用户还可以为每颗牙齿选择几个预定义的 landmarks(门牙和犬齿为三个,前臼齿和臼齿为五个),这些 landmarks 将指导配准及分割。下图(a) 用红色显示了其中一颗门牙的 landmarks。

在这里插入图片描述
对于每颗牙齿,首先根据选定的 landmarks 将适当的模板网格与牙齿进行刚性对齐,然后使用迭代拉普拉斯形变进行非刚性变形,以紧密贴合分割后的牙齿区域(上图(c,d))。

所有扫描模型拟合后的结果是一个包含 per-tooth 网格对应关系的齿列数据库。虽然上述方法中有几步需要人为操作,但建立数据库是一次性的(one-time investment)。

Parametric Teeth Model

从数学上讲,参数化牙齿模型是对典型牙列的形状和姿态偏差进行编码,计算结果为数据库的平均值(如下图所示)。

在这里插入图片描述

在这里插入图片描述

Teeth Fitting

Teeth Boundary Extraction

可以通过手动标注输入图像来获得牙齿轮廓。虽然这种方法是可行的,而且算法也可以在这种数据上运行,但随着图像数量的增加,这种方法很快就会变得极为繁琐。特别是对于基于视频的牙齿重建使用案例,手动标注是不切实际的。因此研究人员希望自动检测输入图像中的牙齿轮廓。

在这里插入图片描述
如上图所示,研究人员定义了三种类型的牙齿边界:牙齿、牙龈及嘴唇。明确区分牙龈和嘴唇对于防止牙齿模型牙龈线与嘴唇边界错误对齐至关重要。为了识别边界,文章采用了增强边缘学习(BEL) 算法。BEL 是一种用于边缘和物体边界检测的通用监督学习算法,它根据小块图像上的大量通用快速特征(包括梯度、滤波器响应直方图和不同尺度的哈尔小波)将图像像素分类为边界。研究人员在一组手工标注的输入图像上分别训练三个检测器,每个检测器对应上述特定的牙齿边界。下图显示了训练数据的几个示例。

在这里插入图片描述

Reference

[1] Wu, C. , Bradley, D. , Garrido, P. , Zollhfer, M. , Theobalt, C. , & Gross, M. , et al. (2016). Model-based teeth reconstruction. International Conference on Computer Graphics and Interactive Techniques. ACM.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/174792.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HarmonyOS共享包以及跨模块引用

跨模块引用文件时遇到了一个问题&#xff1a; Importing ArkTS files to JS and TS files is not allowed. <ArkTSCheck>参照官方文档使用&#xff1a;Index.ets作为导出配置文件&#xff0c;在另一个库中使用遇到此问题 重读官方文档得到解决方法&#xff1a;重新创建:…

CAN总线星型连接器及特点

CAN总线星型连接特点 CAN总线是一种广泛应用于汽车、工业自动化、家庭等领域的现场总线技术。它具有高速度、高可靠性、灵活性等特点&#xff0c;被广泛应用于汽车电子、工业自动化、家庭自动化等领域。在CAN总线的实际应用中&#xff0c;其连接方式可以是星型或菊花型。本文将…

Android WMS——客户端输入事件处理(十九)

前面的文章我们介绍了 WMS 中的输入服务的启动及事件处理,这一篇我们来看一下客户端对输入事件的处理。 一、事件初始化 事件的初始化就是在添加窗口的过程。 1、ViewRootImpl 源码位置:/frameworks/base/core/java/android/view/ViewRootImpl.java public void setView(…

Leetcode—160.相交链表【简单】

2023每日刷题&#xff08;四十一&#xff09; Leetcode—160.相交链表 算法思想 两个链表的节点之和是相等的 如果两个链表相交&#xff0c;那么相交点之后的长度是相同的 我们需要做的事情是&#xff0c;让两个链表从同距离末尾同等距离的位置开始遍历。这个位置只能是较短…

Linux系统编程:文件系统总结

目录和文件 获取文件属性 获取文件属性有如下的系统调用&#xff0c;下面逐个来分析。 stat:通过文件路径获取属性&#xff0c;面对符号链接文件时获取的是所指向的目标文件的属性 从上图中可以看到stat函数接收一个文件的路径字符串&#xff08;你要获取哪个文件的属性&a…

并行查询的超时时间设置

众所周知&#xff0c;并行查询可以提高程序运行效率。主线程需要等待所有子线程把数据查询出结果&#xff0c;如果没有设置超时时间&#xff0c;就需要主线程就会一直阻塞到那里&#xff0c;从而占用服务器资源&#xff0c;那么如何设置超时时间呢? 1.在SpringBoot项目中引入线…

第二十三章 解析PR曲线、ROC曲线、AUC、AP(工具)

混淆矩阵Confusion Matrix 混淆矩阵定义 混淆矩阵是机器学习中总结分类模型预测结果的情形分析表&#xff0c;以矩阵形式将数据集中的记录按照真实的类别与分类模型预测的类别判断两个标准进行汇总。其中矩阵的行表示真实值&#xff0c;矩阵的列表示预测值&#xff0c;下面我…

file_get_contents() 函数详解与使用

概述 在PHP中&#xff0c;file_get_contents() 函数是一个强大的工具&#xff0c;它既可以用于读取本地文件的内容&#xff0c;也可以用于发起 HTTP 请求获取远程资源。本文将详细介绍 file_get_contents() 函数的两种主要用途&#xff0c;并探讨如何充分利用这个函数。 1. 文…

selenium报错:element not interact

文章目录 报错分析解决办法 报错分析 报错&#xff1a; selenium.common.exceptions.ElementNotInteractableException: Message: element not interactableElementNotInteractableException异常表示无法与元素交互&#xff0c;通常是由于该元素不可见、被其他元素遮挡或者需…

【高效开发工具系列】MapStruct入门使用

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

数据结构与算法编程题30

层次遍历二叉树(队列&#xff1a;先进先出) #define _CRT_SECURE_NO_WARNINGS#include <iostream> using namespace std;typedef char ElemType; #define ERROR 0 #define OK 1 #define Maxsize 100 #define STR_SIZE 1024typedef struct BiTNode {ElemType data;BiTNode…

Sringboot3 讲解

文章目录 前言一、Springboot快速入门1.1 实例1.2 总结&#xff1a;1.2.1 什么是starter启动器1.2.2 SpringBootApplication注解的功效 二、springboot3 统一配置文件1.概述2、属性配置文件使用简单案例3、yaml配置介绍和说明4、批量配置文件的读取5、多环境配置和激活 三、spr…

el-table修改表格每行的高度包含表头

需求&#xff1a; 需要修改el-table表格每行的高度为54px&#xff0c;并且包含表头。 .el-table {tr {height: 54px;td {padding: 0;}th {padding: 0;}} }如果样式没有生效&#xff0c;可能.el-table需要加上样式穿透

Netty I/O模型和线程模型

目录 1.概述 1.1 为什么使用Netty 1.2 Netty的优势 1.3 Netty的常见使用场景 2.Netty高性能的原因 2.1 I/O模型 2.1.1 阻塞IO 2.1.2 IO复用模型 2.2 线程模型 2.2.1 线程模型1&#xff1a;传统阻塞 I/O 服务模型 2.2.2 线程模型2&#xff1a;Reactor 模式 2.2.2.1 …

Javaweb之Vue组件库Element之Dialog对话框的详细解析

4.3.3 Dialog对话框 4.3.3.1 组件演示 Dialog: 在保留当前页面状态的情况下&#xff0c;告知用户并承载相关操作。其企业开发应用场景示例如下图所示 首先我们需要在ElementUI官方找到Dialog组件&#xff0c;如下图所示&#xff1a; 然后复制如下代码到我们的组件文件的templ…

线程基本方法

1。设置线程名 继承Thread类的线程&#xff0c;可以直接使用.setName()方法&#xff0c;设置线程名。也可以使用构造方法&#xff0c;需要注意java默认不继承构造方法&#xff0c;所以需要自己调用下父类的构造方法。 public class Demo {public static void main(String[…

每日一题:LeetCode-202.快乐数(一点都不快乐)

每日一题系列&#xff08;day 06&#xff09; 前言&#xff1a; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f50e…

基于 Python中的深度学习:神经网络与卷积神经网络

当下&#xff0c;深度学习已经成为人工智能研究和应用领域的关键技术之一。作为一个开源的高级编程语言&#xff0c;Python提供了丰富的工具和库&#xff0c;为深度学习的研究和开发提供了便利。本文将深入探究Python中的深度学习&#xff0c;重点聚焦于神经网络与卷积神经网络…

csgo/steam搬砖项目还能不能做,分享玩法思路

饰品市场持续下跌&#xff0c;CSGO搬砖还有搞头吗&#xff1f; CSGO是最具竞争力的第一人称射击游戏。玩这款游戏离不开里面的炫酷配件。Steam搬砖项目是基于CSGO游戏中的配件运动。蒸汽拆砖项目的原理是使用国外Steam平台的充值卡购买国际服务器的配件和设备&#xff0c;然后转…

【C++】继承(下) 单继承 | 多继承 | 菱形继承 | 继承和组合

一、单/多/菱形继承 1.单继承 当一个子类只有一个直接父类时&#xff0c;称这个继承关系为单继承。 2.多继承 一个子类有两个或以上直接父类时称这个继承关系为多继承。 举个实例&#xff1a;新老师进学校工作时&#xff0c;一般会作为助教老师&#xff0c;一边代课教书&am…