三角面片/仿射变换/图片换脸
1. 人脸特征点识别(dlib)
dlib是一个python的库,可以识别出人脸的68个特征点,识别出特征点后生成脸部三角面片,同时得到脸部掩膜FaceMask。
特征点生成三角面片使用scipy.spatial的Delaunay,tsearch方法。
2. 仿射变换(affine transformation)
一个三角形中的每一个点都可以通过重心坐标来表示,那么一个三角形变成另一个三角形,每一个点都会被拉伸移动,这种变换也称之为仿射变换。
三角面片存在一一对应关系,对每个三角面片计算仿射变换后的结果,得到变换后的成像。
通过计算图片中每一个点的变换形状,可以得到换脸后的结果
3. 泊松融合让脸部融合更加自然
可以直接把变换后tony的脸覆盖到soar的图片上吗?也许可以,但是最好不要。因为两张图片的亮度等等可能不同,直接嵌入会显得十分突兀。
直接脸部和身体合在一起会让图片显得很不自然,泊松融合是一种基于梯度的融合方法,可以让边缘过渡更加自然。在opencv里有响应的函数实现cv2.seamlessClone