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

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

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

牙齿美型修复功能最早出现于美图秀秀家族,目前在美图云修,像素蛋糕,百度网盘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调色的传统图像处理方案来实现,这里就不在累赘了。

相关推荐
赵和范24 分钟前
C++:求分数序列和
开发语言·c++·算法
bbblys1 小时前
B4172 学习计划 题解
算法·动态规划
菜鸟破茧计划1 小时前
线段树:数据结构中的超级英雄
数据结构·c++·算法
秦少游在淮海1 小时前
leetcode - 双指针问题
算法·leetcode
光电大美美-见合八方中国芯1 小时前
【平面波导外腔激光器专题系列】1064nm单纵模平面波导外腔激光器‌
网络·数据库·人工智能·算法·平面·性能优化
iceslime1 小时前
算法设计与分析实验题-序列对齐
数据结构·c++·算法·算法设计与分析·序列对齐
羊小猪~~1 小时前
深度学习基础--目标检测常见算法简介(R-CNN、Fast R-CNN、Faster R-CNN、Mask R-CNN、SSD、YOLO)
人工智能·深度学习·算法·yolo·目标检测·机器学习·cnn
多多*2 小时前
分布式ID设计 数据库主键自增
数据库·sql·算法·http·leetcode·oracle
D_aniel_2 小时前
排序算法-希尔排序
java·算法·排序算法·希尔排序
SuperCandyXu2 小时前
leetcode0310. 最小高度树-medium
数据结构·c++·算法·leetcode