一种基于kinect相机的人脸三维点云优化处理方法与流程

文档序号:11251393阅读:1106来源:国知局
一种基于kinect相机的人脸三维点云优化处理方法与流程

本发明属于三维重建技术领域,涉及一种基于kinect相机的人脸三维点云优化处理方法。



背景技术:

目前,三维重建技术是计算机视觉领域的研究热点,人脸三维模型更是一个比较重要的方向,常常用于电影动画制作,游戏,医疗等等相关场景。目前获取三维人脸的方法包括三种:手工建模,仪器采集与基于图像的建模。手工建模作为最早的三维建模手段,需要专业人士来进行;仪器采集中,基于结构光和激光扫描仪是典型的代表,但是一般来说,仪器的成本都比较高;基于图像的建模主要是对若干幅图像利用某种算法得到结果,这种方式比较简单,但是由于算法本身的限制,结果不是很精确或者鲁棒。

但随着深度相机的出现,如kinect等,可以很方便又迅速的获取到人脸的深度,也就是很方便地得到人脸的三维点云,但是kinect相机得到的深度值噪声比较大,点云的噪声也是很大,需要对点云进行优化处理。传统的点云优化主要是直接对三维形式的点云进行处理,比如,针对缺失的问题,一般是从点云后期生成的三角网格进行补缺;针对分布不均的问题一般是基于最优投影的方法进行处理;针对点云的噪声主要是基于投影的方法,改进的滤波的方法和基于概率统计的方法。直接对三维的点进行处理,不管是从数据量还是结果而言,算法的鲁棒性都是很大的不确定因素。



技术实现要素:

本发明所要解决的是,就是针对上述传统方法存在问题,提出一种不基于kinect相机的人脸三维点云优化处理方法。

本发明的技术方案是:如图1所示,一种基于kinect相机的人脸三维点云优化处理方法,其特征在于,包括以下步骤:

s1、kinect相机标定,包括深度相机与彩色相机的内外参数;

s2、获取被测人脸图像:应用步骤s1中的相机,获取被测人脸的彩色图和深度图,并将获得的彩色图和深度图进行对齐处理,即将像素大小不同的深度图和彩色图一一对齐,使每一个深度值有一个相应的rgb值;

s3、对获取的图像进行预处理,包括深度图的缺失点,彩色图的错误点,并对深度进行双边滤波处理;

s4、从获取的彩色图中提取出人脸,并将提取出的人脸投影到对齐的深度图里面,获得深度图中相应的人脸区域;

s5、将rgb和深度d结合起来,对d图中相应的人脸区域进行深度优化处理,再利用深度相机的内参,将优化后的深度转换成三维点云。

上述方案为本发明总的技术方案,与传统直接对三维的点进行处理的方式相比,本发明的方法利用kinect相机的四通道图像rgb-d,直接对深度信息进行处理来获得点云优化效果,因此相比传统方法,本发明的方法优化速度较快,同时结果也比较稳定。

进一步的,所述步骤s3的具体方法为:

对于深度d图的缺失点而言,假设缺失像素点坐标为(i,j),那么就从该点的上下左右四个方向进行搜索,直到找到每个方向的首个非零值为止,然后将四个值求平均值来填充该像素的缺失值。对于rgb图的错误点而言,首先分别判断rgb图三个通道的值,若三个通道同时为0,就判定该点为错误点,然后赋予该像素点三个通道都为1。

进一步的,如图2所示,所述步骤s4的具体方法为:

s41、对获取的彩色图进行映射:

将rgb颜色空间通过如下公式1映射到ycbcr空间:

在ycbcr空间里,正常黄种人的cr分量大约在140至175之间,cb分量大约在100至120之间,符合此规律的辨识为人脸皮肤,当然包括脖子以及露出的一部分肢体皮肤等,因此本发明利用cbcr分量的大致取值范围进行预筛选。

s42、初步提取人脸:

采用如下公式2所示的二维高斯模型检测s41得到的变换空间图像中每一个像素点为肤色的概率:

获得每一个像素点的概率值后,对获得的概率图进行二值化,结果即为初步提取人脸结果;

s43、对获得的二值图像进行处理,提取出目标人脸矩形区域。处理的办法包括形态学运算,填充率,面积比,长宽比等判断因子进一步处理二值图像。

进一步的,所述步骤s5的具体方法为:

s51、对rgb图像进行本征分解,按照如下公式3所示的光照模型进行分解:

公式3中,是图像像素点(i,j)处的强度,是像素点的明暗值,ρ(i,j)表示多反射率,β(i,j)表示局部光照变化影响因子;对所述的三个参数求解,。首先我们假设β=0,ρ=1,我们求解出s;接着将求解出的s带入,依旧假设β=0,求解出ρ;最后将求解出的ρ和s带入,求出最后的β。

s52、求解步骤s51中获得的参数,具体为:

s521、求解明暗值

将图像某一点的明暗值表示成如下公式4所示的该点的法向量的线性形式:

其中,是图像每一像素点的法向向量,是前四个球谐函数系数,图像中的每个像素都可以用来求解明暗值,因此,这里需要解决的是超定的最小二乘系数估计问题,如下公式5:

s522、求解多反射率ρ(i,j):

利用如下公式6所示的能量函数进行求解:

公式6中,n是某像素的邻域,是与像素强度值相关的权重系数,是与初始深度相关的权重系数,i是灰度值,下标k为像素编号,表示为如下公式7:

公式7中,z(i,j)是像素点(i,j)的深度值,i(i,j)是像素(i,j)的色彩值,σc是关于某像素与其邻域内像素强度值的系数,σd是关于深度不连续的相关系数;

s523、求解局部光照变化影响因子β(i,j):

通过如下公式8获得β(i,j):

s53、根据步骤s52得到的参数进行人脸的表面恢复,利用能量最小化,通过如下公式9求解:

公式9中,z0是图像初始深度值(由kinect相机获得),δ表示其拉普拉斯算子;△是深度的偏导关系,是对于每一个像素点的法向量的表示,具有如下公式10所示的关系:

公式10中,z的下标x和y分别表示x方向的梯度和y方向的梯度;

公式9的求解方法具体为,因为法向量与深度梯度的非线性关系,产生了非线性项问题,对于非线性的求解思路描述如下:

s531、固定非线性项,即在求解法向量的时候分母项,将这个分母项以前一次的计算结果作为已知值带入这一次的法向量计算,如下公式11所示:

s532、利用得到的法向量,更新线性光照模型项,如下公式12:

s533、迭代求解,根据参数当f(zk-1)>f(zk)成立时,一直迭代计算:

直到f(zk+1)>f(zk),停止迭代流程,前一次的zk即为我们所优化处理得到的最后结果。

上述方案中,权重阈值τ=0.05,λρ=0.1,深度数据不是转换成灰度图的0-255之间,而是真实的深度值,以mm为单位,取值范围都换算到0-2000mm之间。

进一步的,如下公式13:

公式13中,(i,j)是图像中的像素点,[x(i,j),y(i,j),z(i,j)]为待求解像素(i,j)三维坐标,zk(i,j)是其深度值,k-1是深度相机内参矩阵的求逆,根据上面的变换,就可以得到三维点云数据。

进一步的,还包括:

s6、对获得的三维点云进行去除粗差点处理:

利用pcl库里的八叉树模块,对获得的三维点云进行粗差点去除。

一般来讲,得到点云之后,周边都会产生一些粗差点。对这些粗差点去除的方法类似k近邻。假设以点云中的某一点为中心,给定一半径r,在r内求出与其近邻的点个数n,若n小于某个阈值,则可判定该点为粗差点。但是由于点云数量巨大,在对其进行处理之前都需要建立空间索引。常见的空间索引结构有kd树,r树,四叉树,八叉树等,而在这些结构中,kd树和八叉树的应用最为广泛,而这里选择利用pcl库里的八叉树模块,对其进行粗差点去除。类pcl::octree::octreepointcloud是针对点云数据量大的问题实现的八叉树结构,该类派生很多子类,以方便对点云实现不同的处理。类pcl::octree::octreepointcloudsearch实现了基于八叉树的点云近邻高效搜索算法,在这里用到的成员函数是radiussearch(),主要是获取radius半径内的近邻点集个数,通过与提前设定的阈值大小进行比较,然后判定该点是否为粗差点,一旦判处为粗差点,就在该八叉树里删除掉该点进行滤除工作。处理的参数设置为:八叉树结构的分辨率为0.000008f,半径设置为0.01f,邻近点个数阈值设置为13。

本发明的有益效果为:本发明的方法利用现有的kinect深度相机进行人脸三维点云的优化处理流程,避免了传统的高精度设备的昂贵价格,或者一般算法精度不高的问题;在深度优化的步骤里面,利用得到的优化后深度进行表面恢复时,没有采取一般的利用法向量直接进行融合,因为法向量的融合求解表面会产生偏移误差,这里利用深度梯度与法向量的几何关系进行求解,直接得到最后的深度,最后利用坐标的变化得到质量较高的三维点云。

附图说明

图1为本发明基于kinect相机的人脸三维点云优化处理方法的流程示意图;

图2为深度优化处理算法流程图。

具体实施方式

发明内容部分已经对本发明的技术方案进行了详细描述,在此不再赘述。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1