计算机视觉基础与模式识别,计算机视觉与模式识别(3)—— FaceMorphing

本文介绍了计算机视觉中的FaceMorphing技术,通过C++和CImg库实现人脸逐渐过渡。难点包括Delaunay算法和仿射变换矩阵的计算。作者提供了辅助工程用于控制点采集和三角分割,主工程负责图像处理。整个过程涉及图像的三角形划分、过渡三角形计算和色彩合成。
摘要由CSDN通过智能技术生成

这是一个非常有意思的应用,可以将一个人的脸逐渐过渡为另一个人的脸。花了大概1天完成了最基本的功能,大概3天去完善它,可能还有不少bug等着我去修改,不过先把目前的进展记录下来吧。

图形库:CImg

环境:Win10、C++11、VS2013

效果图一:

效果图二:

0f86d1a981ec591156a1a4ee00072d3d.png38873ded892ba1faebf4cdba1bf3312e.png

思路:

1)      分别对图像A和图像B采集控制点(坐标)

ddd0335012925c328d3693af34238da9.pngf7b21d14bd92fd9484c541483e7277dd.png

2)      利用Delaunay算法划分三角形,保证图像A和图像B的三角形一一对应且不重合。

06b115cd5d4530331888c8e75ab46ad7.pngd1acd086cf5d433463cfed947dacb30f.png

3)      计算每对三角形的过渡三角形,过渡量为0~1。

bc05225375bd75810ebf3b95c8921b0d.png

4)      计算三角形到三角形的仿射变换矩阵。

06f4973e442307d0a66806c9c0dea446.png

5)      利用变换矩阵分别将图像A和图像B变换到过渡三角形网格。

8a437a6f23ff65e4093038589e8d4328.pngbc843de92cbd5b80ec20a1a5d50d9a91.png

6)      利用过渡量计算合成图的像素色彩。

0b398eb989fe8cf52c8250dbcbaefb4a.png

我觉得难点主要在于 Delaunay算法 和 Affine Transformation矩阵计算,其次是应用的鲁棒性增强。由于目前还没有学习人脸识别的相关技术,所以还需要人为标定控制点,做一些“Dirty Work”。因此我也把工程分为了两个:一是主工程,专门负责已经三角分割后的图像处理。二是辅助工程,专门负责控制点的采集以及三角分割。可以这么说,主工程的核心是Morphing,辅助工程的核心是Delaunay。

先看看辅助工程吧,事先定义好了常用的结构体后,就可以写Delaunay算法了。Delaunay分割的准则是:任何三角形ABC,不存在一点D,在其外接圆内。考虑到人脸的控制点数量一般在低两位

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值