当前位置: 首页 > article >正文

论文阅读:“iOrthoPredictor: Model-guided Deep Prediction of Teeth Alignment“

文章目录

  • Introduction
  • Methodology
    • Problem Formulation
    • Conditional Geometry Generation
    • TSynNet
    • Aligned Teeth Silhouette Maps Generation
  • Results
  • References

Github 项目地址:https://github.com/Lingchen-chen/iOrthopredictor

在这里插入图片描述

Introduction

这篇文章提出了一种新颖的牙齿正畸治疗系统,叫作 iOrthoPredictor,它可以直接在人脸图片上预测牙齿排列整齐后的结果,只需给定一张前向的人脸图片(嘴巴需像上图一样张开,露出原始的不齐的牙齿)即可。

需要克服的问题:

  1. 需要准确的估计出牙龈及每颗牙齿的几何变换;
  2. 需要解决由牙齿位移、牙龈牙齿材质及光照条件造成的 in-mouth appearance changes;
  3. 需解决空洞及被遮挡部分的问题。

为了准确的估计出对齐牙齿的形状信息,iOrthoPredictor 还需要患者的 3D 牙模作为额外输入,并引入牙齿的 silhouette maps 来表示图片中的牙齿几何信息。这种表示方法可以借助 3D 牙模(通过口扫设备得到)准确的计算出 2D 的变换牙齿形状。而 in-mouth appearance 则被建模为一个隐向量(latent code),可以从输入图像中有效地提取出来。

整体的流程总结如下:

  1. 用卷积神经网络 TGeoNet 从人脸图片中提取 silhouette maps 以及口腔 mask;
  2. 根据提取出的 silhouette maps 对 3D 牙模的整体位姿进行优化;
  3. 用 MLP-based TAligNet 来学习对齐后的目标牙齿排列;
  4. 借助优化的整体位姿来将对齐牙齿的 silhouette 投影回到 2D 口腔区域,以生成目标牙齿的 geometry maps;
  5. 目标牙齿的 silhouette maps 以及嘴部区域的图片(用上面的口腔 mask 生成)作为一个生成式神经网络 TSynNet 的输入,来生成最终的图像。TSynNet 包含两个编码器,分别将输入的 geometry maps 和原始嘴部区域图片编码为 geometry code 以及 appearance code。

可参考下图进行理解:
在这里插入图片描述

Methodology

Problem Formulation

teeth geometry g g g:表明了牙齿 T \mathcal{T} T 的 2D 几何信息且反映了 T \mathcal{T} T 的牙齿排布;

in-mouth appearance z z z:可描述随表面属性和光照条件变化而变化的 in-mouth appearance。

在实际中,牙齿的几何信息可以被显示的表示(例如通过一个牙齿的轮廓图),但外观信息更加抽象一些。所以这篇文章直接从数据中学习出一个隐编码来表示外观。

Conditional Geometry Generation

2D Geometry Maps. g g g 用和输入图像 x x x 相同分辨率的图像来表示。2D 牙齿的 silhouettes g y g_y gy 包含上颌牙齿的 silhouette map g u g_u gu、下颌牙齿的 silhouette map g l g_l gl 以及口腔 mask g m g_m gm
在这里插入图片描述
TGeoNet. 输入:嘴部照片 x x x (上图 a);输出:三个 binary maps { g ˉ u , g ˉ l , g ˉ m } \{\bar{g}_u,\bar{g}_l,\bar{g}_m\} {gˉu,gˉl,gˉm}TGeoNet 基于 U-Net 结构,包括一个编码器、一个解码器以及 skip connections,如下图所示。
在这里插入图片描述

TSynNet

TSynNet 包括一个 appearance 编码器 M \mathcal{M} M 以及生成网络 N \mathcal{N} N。生成网络 N \mathcal{N} N 进一步包括用来提取 geometry code 的编码器 N e n c \mathcal{N}_{enc} Nenc 以及解码器 N d e c \mathcal{N}_{dec} Ndec N d e c \mathcal{N}_{dec} Ndec 的输入为 geometry code 和从 M \mathcal{M} M 中提取出的 appearance code。

TSynNet 仅生成口腔区域,其他部分直接使用原始人脸图片的对应部分。

为了使得 teeth geometry 和 appearance 这两个特征充分的解缠绕,这篇文章借鉴了 style transfer 的思想:将 in-mouth appearance 看作 style code,输入到每个解码块中。

TSynNet 的结构如下图所示:
在这里插入图片描述

Aligned Teeth Silhouette Maps Generation

为了生成最终牙齿对齐的嘴部图片 x ^ \hat{x} x^,我们需要有目标牙齿的 silhouette maps { g ^ u , g ^ l } \{\hat{g}_u,\hat{g}_l\} {g^u,g^l}

首先对 3D 牙模 T \mathcal{T} T 的整体位姿进行优化,来匹配 TGeoNet 的输出 silhouette maps { g ˉ u , g ˉ l } \{\bar{g}_u,\bar{g}_l\} {gˉu,gˉl},之后就需要通过 TAligNet 来自动计算单独牙齿的对齐位姿。

然后,对齐后的牙齿模型 T ^ \hat{\mathcal{T}} T^ 会被投影到嘴部区域来生成我们想要的目标牙齿的 silhouette maps { g ^ u , g ^ l } \{\hat{g}_u,\hat{g}_l\} {g^u,g^l}

整个过程中有两个关键步骤:global teeth pose fitting 和 3D teeth alignment.

global teeth pose fitting. 3D 牙模 T \mathcal{T} T 可以被分为上牙颌 T u \mathcal{T}_u Tu 和下牙颌 T l \mathcal{T}_l Tl,这里使用 { g ˉ u , g ˉ l , g ˉ m } \{\bar{g}_u,\bar{g}_l,\bar{g}_m\} {gˉu,gˉl,gˉm} T \mathcal{T} T 来分别 fit 上下牙颌的变换矩阵。

3D teeth alignment. 通过 TAligNet 来对输入 3D 牙模中的每个牙齿进行对齐。每颗牙齿的位姿用一个 7 维向量 v = ( v p , v q ) v=(v^p,v_q) v=(vp,vq) 来表示,其中 v p v^p vp 代表 3D 位置而 v q v^q vq 则是一个四元数,代表 orientation。

TAligNet 用 PointNet 自编码器来独立的编码每颗牙齿的几何信息,具体来说,编码器是 PointNet,而解码器则是一个简单的 MLP。编码器的输入是从每颗牙齿采样出的 1024 个采样点,输出则是一个 100 维的代表牙齿几何信息的 latent code。TAligNet 结构如下图所示。
在这里插入图片描述

Results

在这里插入图片描述

References

Lingchen Yang, Zefeng Shi, Yiqian Wu, Xiang Li, Kun Zhou, Hongbo Fu, and Youyi Zheng. 2020. iOrthoPredictor: Model-guided Deep Prediction of Teeth Alignment. ACM Trans. Graph. 39, 6, Article 216 (December 2020), 15 pages. https://doi.org/10.1145/3414685.3417771


http://www.kler.cn/news/136239.html

相关文章:

  • 西瓜书《机器学习》符号表KaTex表示
  • 解决电脑更改IP地址后无法连接网络的实用指南
  • java疫苗发布和接种预约系统源码(springboot)
  • 解码专业术语——应用系统开发项目中的专业词汇解读
  • 前后两对双差速轮AGV的运动学正解和逆解
  • excel斜线表头
  • 访问限制符说明面向对象的封装性
  • 【ArcGIS Pro微课1000例】0033:ArcGIS Pro处理cad数据(格式转换、投影变换)
  • leetcode做题笔记2736. 最大和查询
  • 管家婆订货易在线商城任意文件上传漏洞复现
  • Pinia的使用
  • 读像火箭科学家一样思考笔记04_第一性原理(下)
  • MATLAB算法实战应用案例精讲-【神经网络】Transformer
  • K8S(一)
  • maven升级版本后报错:Blocked mirror for repositories
  • 传递函数的推导和理解
  • 大数据HCIE成神之路之数学(3)——概率论
  • AVL树你需要了解一下
  • 代码随想录 Day50 单调栈 LeetCodeT503 下一个最大元素II T42接雨水
  • 【教3妹学编辑-mysql】详解数据库三大范式
  • 鸢尾花分类
  • 如何进行数据结构的设计和实现?
  • C++标准模板库(STL)-list介绍
  • SpringSecurity5|12.实现RememberMe 及 实现原理分析
  • 力扣labuladong一刷day13天双指针8道链表题
  • Uniapp中的事件处理:uni.emit和uni.on/uni.once