当前位置: 首页 > 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调色的传统图像处理方案来实现,这里就不在累赘了。

相关文章:

  • SSHv2公钥认证示例-Paramiko复用 Transport 连接
  • 养生:塑造健康生活的良方
  • 【挑战项目】 --- 微服务编程测评系统(在线OJ系统)(二)
  • React 第三十八节 Router 中useRoutes 的使用详解及注意事项
  • HOT 100 | 【子串】76.最小覆盖子串、【普通数组】53.最大子数组和、【普通数组】56.合并区间
  • electron 结合 react(cra创建的) 创建桌面应用和打包桌面应用
  • 掌握Multi-Agent实践(三):ReAct Agent集成Bing和Google搜索功能,采用推理与执行交替策略,增强处理复杂任务能力
  • “ES7+ React/Redux/React-Native snippets“常用快捷前缀
  • 【K8S系列】Kubernetes常用 命令
  • CUDA编程 - CUDA编程中处理半精度浮点运算(FP16) - fp16ScalarProduct
  • 5.9-selcct_poll_epoll 和 reactor 的模拟实现
  • window 显示驱动开发-配置内存段类型
  • 官方SDK停更后的选择:开源维护的Bugly Unity SDK
  • 数据库系统概论(七)初识SQL与SQL基本概念
  • `timescale 1ns/1ps的意义
  • DeepResearch深度搜索实现方法调研
  • 【大模型ChatGPT+ArcGIS】数据处理、空间分析、可视化及多案例综合应用
  • 34.笔记1
  • 如何用Jmeter实现自动化测试?
  • wsl - install RabbiqMQ
  • 面对非专业人士,科学家该如何提供建议
  • 马上评丨规范隐藏式车门把手,重申安全高于酷炫
  • 欧派家居:一季度营收降4.8%,目前海外业务整体体量仍较小
  • 中国以“大幅开放市场”回应贸易保护主义
  • 陕西澄城打造“中国樱桃第一县”:从黄土高原走向海外,年产值超30亿
  • 上海一中院一审公开开庭审理被告人胡欣受贿案