• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

使用OpenCV(C++/Python)进行人脸交换

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

--

 

 

 图3.面部对齐。左:检测到面部标志和凸包。中:凸包上的点的Delaunay三角剖分。右:通过仿射扭曲三角形进行面部对齐。

1 人脸对齐

1.1 脸部地标检测

两个脸部的几何形状非常不同,因此我们需要对源脸部进行一些扭曲以使其覆盖目标脸部,但是我们还想确保我们不会使其扭曲而无法识别。

首先使用dlib在两个图像上检测面部标志但是,与“ 脸部变形”不同,我们不也不应使用所有点进行脸部对齐。

我们只需要如图所示的人脸外边界上的点即可。

1.2 查找凸包
在计算机视觉和数学术语中,点或形状的集合的边界称为“包”。没有任何凹面的边界称为“凸壳”

在图3中,左图显示了使用dlib检测到的脸部界标为红色,点的凸包显示为蓝色。

一组点的凸包可以使用OpenCV的concealHull函数来计算

python:

# points is numpy array of points obtained 
# using dlib.
hullIndex = cv2.convexHull(points, returnPoints = False)
# hullIndex is a vector of indices of points 
# that form the convex hull. 

 

c++:

vector<int> hullIndex;
// points is of type vector<Point2f> obtained 
// using dlib.
convexHull(points, hullIndex, false, false);
// hullIndex is a vector of indices of points 
// that form the convex hull.

 

 

1.3 Delaunay三角剖分
对齐的下一步是对凸包上的点进行Delaunay三角剖分在图3的中间图像中显示了三角剖分。

这使我们可以将脸部分成较小的部分。我以前的文章详细解释了Delaunay三角剖分,请参见此处

1.4 仿射扭曲三角形

进行面对的最后步骤,以考虑源脸部和目标脸部之间的对应三角形,并将源脸部三角形仿射扭曲到目标脸部上。

脸部变形的更多信息,请参见我的文章

由于两个图像之间的光照和肤色差异,可以看到接缝。下一步显示如何无缝地组合两个图像。

 

 

2 无缝克隆

好的技术思想就像是魔术。优秀的魔术师结合了物理,心理学和良好的旧手技巧来达到令人难以置信的效果。

仅图像扭曲看起来就很糟糕。将其与Seamless Cloning结合使用,结果是神奇的!我写了一篇文章,解释的细节在这里

这是OpenCV 3中的一项功能,可让您无缝地将源图像的一部分(由掩码标识)克隆到目标图像上。

python:

output = cv2.seamlessClone(src, dst, mask, center, cv2.NORMAL_CLONE)

 

c++:

seamlessClone(src, dst, mask, center, output, NORMAL_CLONE);

 

 

上面用法中src图像如图3所示。(右图)。DST图像是其上我们要混合源图像(即特朗普的图像)的图像。

通过使用fillConvexPoly用白色填充凸包来计算蒙版,并且中心是包含蒙版的边界框的中心。

 

总结:

脸部地标检测(Facial Landmark)  点

查找凸包(Convex Hull ) 面

Delaunay三角剖分(Delaunay Triangulation ) 

仿射扭曲三角形(源脸部三角形仿射扭曲到目标脸部)(Affine warp triangles )

无缝克隆(Seamless Cloning)

 

 

 

 

 

 

 

 

 

 

 

--


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
重新启动C++Builder发布时间:2022-07-13
下一篇:
【C++多线程】共享数据保护发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap