最近一直在做3D人脸鼻尖识别项目,因为之前没有相关经验,所以前后花了一个半月才做完。
在此记录一下自己的思路:
1.读取人脸点云数据
2.对人脸数据做插值处理
3.对每个Y轴的切片做半圆相交处理(这里我选择用半圆,因为人脸的俯视图是凹的,这跟深度摄像头采集的数据有关,FRGC数据集里面的人脸俯视图是凸的),圆心在切片上滑动,半径采用固定值(我用的是30),相交得到两个交点,计算这两个点和圆心组成的三角形中,以这两个点为底的三角形高H。H的值就是鼻尖置信点的值
4.取所有置信点中的前20个,将这20个点转化到点云坐标系中。对这20个数据做RANSAC直线拟合,计算这20个点到直线的距离,在满足一定阈值的点中,选择深度值最小的那个点。(这一步的目的是去除置信点中的点云噪点)
5.经过第四步取到的那个点即为鼻尖点
最终效果如下图所示:图中红圈是20个鼻尖置信点,绿色部分为程序判断出的鼻尖点。