论文阅读:“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.hqwc.cn/news/197341.html

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

相关文章

软件测试面试时问你的项目经验,你知道该怎么说吗?

很简单,我来给你们一个公式 0 自我介绍,名字 学历 荣誉。 1 简述项目背景,你身处这个项目是做什么的。 不要太细,试着引导一下面试官让他提问。这样,请问您对此有什么疑问吗? 2 简述 你在项目中的角色&…

uniapp小程序定位;解决调试可以,发布不行的问题

遇见这个问题;一般情况就两种 1、域名配置问题; 2、隐私协议问题 当然,如果你的微信小程序定位接口没开启;定位也会有问题; 第一种,小程序一般是腾讯地图;所以一般都会用https://apis.map.qq.co…

Django 入门学习总结2 创建一个投票系统

通过学习,我们可以实现一个简单的投票系统。这个投票系统有两部分组成。 公共部分,公众可以查看和进行投票。管理员可以进行增加、删除、修改投票信息。 这里投票系统Python语言版本为3.10.13,Django Web框架版本为4.2.7。 投票系统的实现…

git修改commit历史提交时间、作者

1、修改最近的几条记录,进入提交记录列表,修改提交记录模式 git rebase -i HEAD~3 // 修改最近的三条记录,顺序排列按提交时间升序 指令说明: pick:保留该commit(缩写:p) reword&#xff1a…

lvm操作和扩容根分区

扩展逻辑卷 [rootlocalhost ~]# pvcreate /dev/sdb1 vgextend vg1 /dev/sdb1(表示将/dev/sdb1扩展到centos卷组,扩展卷组就是将其它分好的区加入卷组) [rootlocalhost ~]# vgextend centos /dev/sdb1[rootlocalhost ~]# lvextend -L 50G /…

事关Django的静态资源目录设置与静态资源文件引用(Django的setting.py中的三句静态资源(static)目录设置语句分别是什么作用?)

在Django的setting.py中常见的三句静态资源(static)目录设置语句如下: STATICFILES_DIRS [os.path.join(BASE_DIR, static_list)] # 注意这是一个列表,即可以有多个目录的路径 STATIC_ROOT os.path.join(BASE_DIR, static_root) STATIC_URL /static-url/本文介…

CImage通过WinApi的SetWorldTransform来实现图片旋转

SetWorldTransform的功能是旋转画布,这样产生的效果就是图像旋转。因此,在旋转画布之前,要把要旋转的图像的位置和大小准备好,这样旋转之后,才能使图像正好出现在显示区域内。这需要计算两个关键参数,图像的…

Kotlin学习——hello kotlin 函数function 变量 类 + 泛型 + 继承

Kotlin 是一门现代但已成熟的编程语言,旨在让开发人员更幸福快乐。 它简洁、安全、可与 Java 及其他语言互操作,并提供了多种方式在多个平台间复用代码,以实现高效编程。 https://play.kotlinlang.org/byExample/01_introduction/02_Functio…

如何进行手动脱壳

脱壳的目的就是找到被隐藏起来的OEP(入口点) 这里我一共总结了三种方法,都是些自己的理解希望对你们有用 单步跟踪法 一个程序加了壳后,我们需要找到真正的OEP入口点,先运行,找到假的OEP入口点后&#x…

SpringBoot 整合 JdbcTemplate(配置多数据源)

数据持久化有几个常见的方案,有 Spring 自带的 JdbcTemplate 、有 MyBatis,还有 JPA,在这些方案中,最简单的就是 Spring 自带的 JdbcTemplate 了,这个东西虽然没有 MyBatis 那么方便,但是比起最开始的 Jdbc…

家电电器展示预约小程序的作用是什么

电器产品已经成为人们生活的必备品,如冰箱、电视机、洗衣机等,而这些产品的购买方式也很多,可以到线下门店购买,也可以到线上多个电商平台购买,如今互联网高速发展以及民众享受线上服务带来的便捷性,同时商…

windows环境搭建Zblog博客并发布上线公网可访问

文章目录 1. 前言2. Z-blog网站搭建2.1 XAMPP环境设置2.2 Z-blog安装2.3 Z-blog网页测试2.4 Cpolar安装和注册 3. 本地网页发布3.1. Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1. 前言 想要成为一个合格的技术宅或程序员,自己搭建网站制作网页是绕…