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

影楼精修-牙齿美型修复算法解析

本文介绍影楼修图中的牙齿美型修复功能的算法实现。

我们大部分人的牙齿看起来都可能会有一些问题,比如牙齿不平整,大门牙,牙齿泛黄,牙齿发黑,牙齿残缺等等,拍照之后影响美观度,正是这个爱美的需求场景,诞生了牙齿美型修复的技术功能。顾名思义,牙齿美型修复就是通过图像处理技术将你的不美观的牙齿照片变成整齐、洁白完美的牙齿,满足你自我欣赏或是晒朋友圈的需求。

牙齿美型修复功能最早出现于美图秀秀家族,目前在美图云修,像素蛋糕,百度网盘AI修图等商业应用以及各类app中都有存在,也深受大家喜爱。

我们以像素蛋糕为例,给出示例图如下:

牙齿美型修复算法

目前牙齿美型修复的技术资料非常少,仅有美图和像素蛋糕(真景科技)的两篇专利:

厦门美图-专利号 CN 111179177 A: 图像处理方法、装置、电子设备和可读存储 介质

像素蛋糕-专利号CN 119313578 A: 一种基于深度学习的牙齿美化方法及装置

其中美图的专利较早,但读起来模棱两可,像素蛋糕的专利相对严谨和可验证,这里将以此来详细介绍。

算法方案

假设原图为S,最终效果图为D,算法方案如下:

1.将S进行人脸点位检测识别,得到嘴巴点位;

举例如下图所示:

2.根据嘴巴点位获取嘴巴区域图像A;

3.构建牙齿美型修复网络模型M;

使用生成GAN网络,举例如:Pix2Pix,输入512×512×3用户嘴巴区域图像,输出512×512×3牙齿美型结果图;

4.将A输入M,得到牙齿美型修复后的效果图B;

5.将B贴回原图S,得到最终效果图D;

方法流程非常简单,但它的难点在于如何构建成对的牙齿美型数据集,来训练GAN网络模型;

数据集构建方案

像素蛋糕专利中的牙齿美型数据集构建方案如下:

1.收集大量高分辨率牙齿整齐的人像照片,通过人脸关键点获取人脸或牙齿图像,与GAN网络输入大小一致,该图像定义为牙齿目标图集;

2.利用牙齿分割算法提取牙齿mask;

3.对牙齿进行随机变形;

3.1对整齐牙齿区域划分为若干个规则的矩形网格,每个网格顶点作为图像的控制点;

3.2利用牙齿mask提取任意一颗牙齿边缘,在边缘区域选择控制点,沿特定方向移动预设距离或随机方向移动预设距离;

3.3根据移动前后的网格顶点位置,对牙齿图像进行液化变形处理,生成牙齿自然变形后的图像,以此方式来构建牙齿变形或者残缺的图像样本;

4.对牙齿进行蛀牙/黄牙/裂痕模拟等操作;

4.1模拟蛀牙,使用图像处理软件或Opencv等,在牙齿图像上添加黑色或深色斑点;

4.2模拟黄牙,将牙齿图像从BGR颜色空间转换为HSV颜色空间,调整饱和度和亮度,模拟牙齿变黄效果;

4.3模拟裂痕,在牙齿图像上绘制细长的黑色或深色线条;

通过1-4的步骤,即可得到牙齿瑕疵图;重复上述步骤,批量构建成对数据集<牙齿瑕疵效果图,牙齿目标图>;

上述过程就是成对牙齿美型修复数据集构建的方法;

整体上,像素蛋糕牙齿美型修复算法就介绍完了,在像素蛋糕软件中,牙齿修复功能与牙齿美白功能是分开的,为了方便调节,像素蛋糕做了详细的功能支撑,比如牙齿美白,颜色调节以及牙齿边缘补齐等,如下图所示:

本人方案

本文从个人经验角度,构建了不太一样的方案:

1.数据集构建,本文这里给出一种新的数据集构建方法,该方法为本人验证使用:

1.1收集大量露出牙齿的人像照片(一般照片即可,不需要牙齿特别整齐的照片),通过人脸关键点获取人脸图像,可以以ffhq的人脸对齐标准进行构建,记录为牙齿瑕疵图集;

1.2.使用SD1.5,WebUI img2img+Controlnet+canny方案制作数据集;

prompt和相关参数设置如下:

基模型可选人像美化相关的基模型,比如realistic等;

通过图像重绘,获取牙齿美观的目标图,然后根据人脸关键点位,将牙齿区域融合到原图中,即可得到牙齿美型后的效果图。制作数据举例如下:

1.3构建1W+的牙齿美型修复数据对(包含了牙齿形状修复+黄牙/黑牙牙齿美白);

2.使用GAN网络,输入原图,输出目标效果图,训练牙齿美型修复算法模型;

本人方案相比而言更加简洁一点,个人角度来看,一直觉得“简约是美”。

最后,给出牙齿美型方案的效果验证对比:

注意:相比于牙齿美型修复功能,牙齿美白功能就变得小儿科了,可以使用GAN网络+美白数据集的方案来实现,也可以使用牙齿分割Mask+HSV调色的传统图像处理方案来实现,这里就不在累赘了。

http://www.xdnf.cn/news/360685.html

相关文章:

  • 数据类型:List
  • robotframe启动ride.py
  • C++ Dll创建与调用 查看dll函数 MFC 单对话框应用程序(EXE 工程)改为 DLL 工程
  • C#学习——继承、封装、多态
  • 安科瑞DJSF1352-RN直流电能表的技术特点与应用
  • ZYNQ笔记(十九):VDMA VGA 输出分辨率可调
  • 各类音频放大器电路原理简析
  • MSF 生成不同的木马 msfvenom 框架命令
  • html object标签介绍(用于嵌入外部资源通用标签)(已不推荐使用deprecated,建议使用img、video、audio标签)
  • Nx与Monorepo
  • 【软件测试】测试用例的概念与常见测试的模型
  • Django ORM: values() 和 annotate() 方法详解
  • 2025-05-09 提示学习概念
  • Edu教育邮箱申请2025年5月
  • 【Lattice FPGA 开发】Diamond在线调试Reveal逻辑乱跳的解决
  • lambda 表达式
  • 摄像头模组高像素模组
  • AI模型蒸馏技术在微控制器上的内存占用与精度平衡实践
  • Java中的反射
  • C++23 中的 views::chunk:深入探索与应用
  • shopping mall(document)
  • 虚拟机ubantu20.04系统桥接模式下无法ping通外网,但可以ping通本机的解决方案
  • 云原生架构下的微服务通信机制演进与实践
  • 每天批次导入 100 万对账数据到 MySQL 时出现死锁
  • TCP套接字通信核心要点
  • AI内容检测如何助力企业应对内容治理挑战
  • MySQL数据库操作
  • 纯Java实现反向传播算法:零依赖神经网络实战
  • 个人项目总结
  • TDengine 在智慧油田领域的应用