本发明涉及图像处理、计算机图形学、计算机视觉等领域,特别涉及一种基于快速点特征直方图值进行特征分析提取的高测量精度、高测量速度的三维人体头部点云特征提取方法。
背景技术:
近年来,计算机视觉领域得到飞速发展,在工业机器人、无人驾驶汽车、医学图像分析和拓扑建模、虚拟现实及现实增强、人工智能等领域均获得了广泛应用。在以上诸多应用中,人脸面部特征提取都是至关重要的一步,例如人脸识别、姿态估计、建模、追踪等。
基于二维图像人像识别算法都是针对正面人像,当二维图像的俯仰角度、光照、姿态、化妆、年龄等变化时,会显著降低二维人脸识别算法的性能,经常出现不能识别的情况。近年来,随着科技的发展,获取三维数据越来越具有可行性,同时因为三维人脸对光照和姿态不敏感等优点,三维人脸信息开始受到越来越多的研究者关注。
随着三维人脸处理技术的流行,特征提取作为这些技术中的关键步骤,其重要性也日益凸显。在人体头部组织中,鼻子和耳朵受表情、化妆、年龄等变化影响最小,同时三维几何信息却最为突出和丰富,但是目前还没有一种成熟的能够快速准确提取人体鼻子和耳朵的三维测量技术。
技术实现要素:
本发明目的在于提供一种基于点特征直方图值进行特征分析提取的高测量精度、高测量速度的三维人体头部点云特征提取方法及其装置。本发明克服了传统二维特征提取对光照、角度的敏感,且不需要训练大量数据,实现了对人体头部三个典型特征的快速准确提取。利用本发明能对三维人体头部点云数据,提取鼻子尖、左侧耳道、右侧耳道等典型特征。
为了达到上述的目的,本发明采用以下技术方案实现:一种三维人体头部点云特征提取方法,其包括:
步骤一、点云数据预处理:
步骤二、训练阶段:计算预处理后的点云数据中每个点的法线,进而计算FPFH值,并基于FPFH值通过近似最近邻快速库建立K维树结构的数据,K为预处理后的点云数据中点的个数;
步骤三、从给定模型中手动选择典型特征点,给定模型能选择已知数据的大众脸型,经过设定与步骤二中同样的法线及FPFH值计算参数,计算得到典型特征点的FPFH值;
步骤四、查询阶段:统计学中的卡方值表示观测值与理论值的偏差程度,将从给定模型中提取得到的典型特征点作为理论值,将训练好的待提取模型K维树结构中的点作为观测值,逐一计算卡方值后,通过设定一定的阈值,即可得到由若干个相似点构成的候选集;
步骤五、基于形状响应因子确定特征点,计算候选集中每一个点的主曲率,进而计算形状响应因子。
本发明还提供一种三维人体头部点云特征提取装置,其应用上述三维人体头部点云特征提取方法,该装置包括:
预处理模块,其用于点云数据预的处理;
训练模块,其用于计算预处理后的点云数据中每个点的法线,进而计算FPFH值,并基于FPFH值通过近似最近邻快速库建立K维树结构的数据,K为预处理后的点云数据中点的个数;
典型特征点的FPFH值计算模块,其用于从给定模型中手动选择典型特征点,给定模型能选择已知数据的大众脸型,经过设定与步骤二中同样的法线及FPFH值计算参数,计算得到典型特征点的FPFH值;
候选集生成模块,其用于统计学中的卡方值表示观测值与理论值的偏差程度,将从给定模型中提取得到的典型特征点作为理论值,将训练好的待提取模型K维树结构中的点作为观测值,逐一计算卡方值后,通过设定一定的阈值,即可得到由若干个相似点构成的候选集;
特征点确定模块,其用于基于形状响应因子确定特征点,计算候选集中每一个点的主曲率,进而计算形状响应因子。
与现有技术相比,本发明的有益效果在于:
1、提出了一种全新的三维人体头部点云特征提取方法,为鼻部、耳部定位、识别与特征提取奠定了基础;
2、通过使用FPFH值可以实现实时提取未知人体头部模型中的特征点,提高了三维测量的速度;
3、通过使用三维曲面的形状响应因子并结合法线外积的角度方向等限制条件,实现精确定位鼻尖与耳道点,并区分左右耳道点,提高了定位的精度,从而实现了三维人体头部点云的高速度、高精度特征提取。
附图说明
图1是本发明一种三维人体头部点云特征提取方法的算法执行流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明的三维人体头部点云特征提取方法可设计成三维人体头部点云特征提取装置进行应用,如通过软件设计成App在电子设备中推广与应用。三维人体头部点云特征提取装置主要包括预处理模块、训练模块、典型特征点的FPFH值计算模块、候选集生成模块、特征点确定模块。本发明的三维人体头部点云特征提取方法主要包括五个步骤。
步骤一、点云数据预处理。
此步骤由预处理模块执行。原始数据可能数据量较大,需要进行下采样以加快处理速度;噪声数据需要去除;由于拍摄角度遮挡等造成的离群点需要去除。
点云数据预处理分三步执行:首先,利用该点云数据的每个体素内所有点的重心来近似代替体素中的其他点进行下采样,从而降低该点云数据的点云密度;其次,设定一定的取值范围,删除该点云数据中颈部以下的噪声数据;最后,通过在给定搜索半径范围内邻近点数量小于给定阈值的方法,将该点云数据中的离群点删除。
步骤一中所述的下采样是指利用每个体素(即三维立方体)内所有点的重心来近似代替体素中的其他点。去除噪声数据是指通过设定一定的取值范围,删除扫描点云中颈部以下的数据。去除离群点是指如果一个点在给定搜索半径范围内邻近点数量小于给定阈值,则判定为离群点并将其删除。
步骤二、训练阶段:计算预处理后的点云数据中每个点的法线,进而计算FPFH值,并基于FPFH值通过近似最近邻快速库建立K维树结构的数据,K为预处理后的点云数据中点的个数。
此步骤由训练模块执行。计算每个点的法线、进而计算FPFH值,并基于FPFH通过近似最近邻快速库(FLANN)建立K维树。
计算预处理后的点云数据中每个点的法线:等同于计算预处理后的点云数据中每点的切平面法线,转换为对式(1)中的协方差矩阵C进行分解,对应协方差矩阵C最小特征值的特征向量作为预处理后的点云数据中每点的法线;通过式(2)使所有法线一致朝向视点方向。其中,Pi是预处理后的点云数据中第i个点的数据,k是Pi邻近点的数目,是Pi所有邻近点的三维质心,vp为视点。
得到法线后,通过以下流程计算FPFH值。
(1)、对于预处理后的点云数据中每一个查询点Pt,通过式(3)、(4)、(5)计算这个查询点Pt和它邻域点Ps之间的uvw坐标系;
u=ns 式(3)
w=u×v 式(5)
其中,ns为查询点Pt的邻域点Ps的法线。
(2)、通过式(6)、(7)、(8)计算查询点Pt的法线nt与邻域点Ps的法线ns之间的一组偏差角度α,θ,此结果称为简化的点特征直方图SPFH;
α=v·nt 式(6)
θ=arctan(w·nt,u·nt) 式(8)
其中,d为查询点Pt到邻域点Ps之间的直线距离。
(3)、重新确定每个点的k邻域,使用邻近点Pk的SPFH值,通过式(9)来确定查询点Pt的FPFH值FPFH(Pt);
其中,得到预处理后的点云数据中每个点的FPFH值后,通过使用FLANN建立K维树结构的数据。
步骤三、从给定模型中手动选择典型特征点,给定模型能选择已知数据的大众脸型,经过设定与步骤二中同样的法线及FPFH值计算参数,计算得到典型特征点的FPFH值。
此步骤由典型特征点的FPFH值计算模块执行。在本实施例中,典型特征点包括鼻子尖典型特征点、左侧耳道典型特征点、右侧耳道典型特征点。从给定模型中手动选择鼻子尖、左侧耳道、右侧耳道三个典型特征点,设定与以上两个步骤相同的计算参数后,得到该点处的FPFH值,可以根据不同人种选择大众脸型作为给定模型。也就是说,步骤三中的给定模型是指选择已知数据的大众脸型,通过人手动选择鼻子尖、左侧耳道、右侧耳道三个典型特征点后,经过设定与步骤二中同样的法线及FPFH值(即FPFH值)计算参数,计算得到三个典型特征点的FPFH值。
步骤四、查询阶段:统计学中的卡方值表示观测值与理论值的偏差程度,将从给定模型中提取得到的典型特征点作为理论值,将训练好的待提取模型K维树结构中的点作为观测值,逐一计算卡方值后,通过设定一定的阈值,即可得到由若干个相似点构成的候选集。
此步骤由候选集生成模块执行。从训练好的待提取模型K维树中,通过计算卡方值得到由若干个相似点构成的候选集。步骤四中所述的卡方值表示观测值与理论值的偏差程度,通过式(10)、(11)计算得到。将从给定模型中提取得到的典型特征点作为理论值Qi,将训练好的待提取模型K维树结构中的点Pi作为观测值,逐一计算卡方值后,通过设定一定的阈值,即可得到由若干个相似点构成的候选集。Ei是对应Pi的期望值。
步骤五、基于形状响应因子确定特征点,计算候选集中每一个点的主曲率,进而计算形状响应因子。
此步骤由特征点确定模块执行。鼻子尖典型特征点最终配置鼻尖候选集,左侧耳道典型特征点、右侧耳道典型特征点最终配置左右侧耳道候选集;设置特性:每个候选集中对应一个曲面,曲面越凸出,类似于鼻子尖处,则形状响应因子越大;曲面越凹陷,类似于碗状或耳道内点,则形状响应因子越小;根据此特性,在鼻尖候选集中选择形状响应因子最大的点作为鼻尖点,在左右侧耳道候选集中选择形状响应因子最小的点作为两个耳道点,通过计算耳道点处法线与鼻尖点处法线外积的方向,区分左右耳道点。
左、右耳道点的法线分别位于鼻尖点法线的左右两侧,通过计算耳道点处法线与鼻尖点处法线外积的方向,利用右手定则,拇指向下是右耳道点,拇指向上是左耳道点。
每个候选集中对应一个曲面,形状响应因子通过以下步骤计算得到:
①计算曲面上一离散点处的高斯曲率kH和平均曲率kG;
②通过式(12)、(13)计算该离散点处的主曲率k1和k2,其中k1≥k2;
③通过式(14)计算该离散点的形状响应因子S;
下面结合附图1对本发明一种三维人体头部点云特征提取方法作进一步说明。
本实施例的三维人体头部点云特征提取方法的第一个步骤是点云数据预处理,分三步执行。首先,因为原始数据量会比较大,所以利用每个体素(即三维立方体)内所有点的重心来近似代替体素中的其他点进行下采样,从而降低点云密度。其次,原始数据可能包含颈部以下及其他点云数据,所以需要设定一定的取值范围,删除扫描点云中颈部以下及其他干扰等噪声数据。最后,由于点云获取设备本身的精度及噪声的因素引起的离群点,需要通过在给定搜索半径范围内邻近点数量小于给定阈值的方法,将离群点删除。
本实施例的三维人体头部点云特征提取方法的第二个步骤是训练数据,分二步执行。首先,计算法线,等同于计算点云中每点的切平面法线,进一步将该问题转换为对式(1)中的协方差矩阵C进行分解,对应C最小特征值的特征向量可作为点云中每点Pi的法线,其中k是Pi邻近点的数目,是所有邻近点的三维质心。通过式(2)使所有法线一致朝向视点方向,其中vp为视点。
得到法线后,通过以下流程计算FPFH值:
(1)对于每一个查询点Pt,通过式(3)、(4)、(5)计算这个点和它邻域点Ps之间的uvw坐标系;
(2)通过式(6)、(7)、(8)计算Pt的法线nt与Ps的法线ns之间的一组偏差角度α,θ,此结果称为SPFH(简化的点特征直方图);
(3)重新确定每个点的k邻域,使用邻近点Pk的SPFH值,通过式(9)来确定Pt的FPFH。
u=ns 式(3)
w=u×v 式(5)
α=v·nt 式(6)
θ=arctan(w·nt,u·nt) 式(8)
得到点云数据中每个点的FPFH值后,通过使用FLANN建立K维树结构的数据。
本实施例的三维人体头部点云特征提取方法的第三个步骤是从给定模型中手动选择鼻子尖、左侧耳道、右侧耳道三个典型特征点。给定模型可以选择已知数据的大众脸型,经过设定与步骤二中同样的法线及FPFH值计算参数,计算得到三个典型特征点的FPFH值。
本实施例的三维人体头部点云特征提取方法的第四个步骤是查询数据,统计学中的卡方值表示观测值与理论值的偏差程度,通过式(10)、(11)计算得到,所以利用卡方值来完成此步骤。将从给定模型中提取得到的典型特征点作为理论值Qi,将训练好的待提取模型K维树结构中的点Pi作为观测值,逐一计算卡方值后,通过设定一定的阈值,即可得到由若干个相似点构成的候选集。
本实施例的三维人体头部点云特征提取方法的第五个步骤是通过形状响应因子确定最终的鼻尖点,通过鼻尖点法线与耳道点法线的外积方向确定最终的左右耳道点。其中形状响应因子通过以下流程计算得到:
(1)计算曲面上一离散点处的高斯曲率kH和平均曲率kG;
(2)通过式(12)、(13)计算该点处的主曲率k1和k2,其中k1≥k2;
(3)通过式(14)计算该点的形状响应因子S。
曲面越凸出,类似于鼻子尖处,则形状响应因子越大;曲面越凹陷,类似于碗状或耳道内点,则形状响应因子越小。根据此特性,在鼻尖候选集中选择形状响应因子最大的点作为鼻尖点,在左右耳道候选集中选择形状响应因子最小的点作为耳道点。因为左右耳道点的法线分别位于鼻尖点法线的左右两侧,所以通过计算耳道点处法线与鼻尖点处法线外积的方向,利用右手定则,拇指向下是右耳道点,拇指向上是左耳道点。
以上内容是结合具体的优选实施方式对本发明所作的详细说明,不能认定本发明具体实施仅限于这些说明。对于本发明所属技术领域的技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明由所提交的权利要求书确定的发明保护范围。