冀 婷
(西安石油大学,陕西 西安 710065)
由于语音识别、图像理解、EMG信号提取等技术的发展,基于语音、手势姿态的人机交互技术应用也在日益扩展,因此繁衍出更多的创新型人机交互技术[1]。人机交互技术是由视觉传感器检测并获取目标的三维数据,并将其通过计算机变成视觉实体,使图形信息能够被直观地检测和分析。传统方法包括图像信息检测方法[2]、异常检测法[3]。但是在当前技术下,存在一个关键的技术难题:感知三维数据,也就是如何进行三维数据协同感知。在检测中,如果过量采样会造成数据堆叠,浪费计算机软硬件资源,若采样不足也将造成空间频谱混叠致使检测结果出现偏差,所以理想的采样选取是非常必要的。
为了提升检测效果,本文构建一种基于人机交互的三维数据协同可视检测仿真,将栅格化的三维数据通过簇分类、特征提取与决策函数,对目标进行精准划分与检测,该法具备较好的检测准确度和平稳度。
该框架通过C/S结构[4],由服务设备下达执行命令,服务端保留目标数据和相关参数,如增添新目标,服务设备将发送新的执行命令;其中不仅含有操作命令,而且包含反馈命令。为缩短反馈时长,采取用户群互通的交互方法。
服务设备主要是执行保存和下达等指令。数据传输到主导的服务端后会保存至服务设备,然后再由该设备下达给各用户端。
基于C/S结构的服务设备和用户端性能分类如图1所示。
图1 服务设备和用户端性能分类图
在三维数据协同可视检测时,需要将二维数据重建实现三维建模,即三维建模[5]等于是每个二维数据的堆叠。三维建模流程图表明,阈值检测行为是在阈值数量设置好后才执行的,也就是说,通过灰度直方图检测、目标边缘灰度统计或固定阈值方法,能够得出作为建模基础的边界阈值数量。最后结合背景和材质,获得三维数据图像。当渲染结果不太理想时,可以通过调整需绘制的边界数量或选择不同阈值,来获得令人满意的结果。多数情况下,该构建流程都可以使检测目标生成较为理想的三维数据结果。
由于Kinect传感器的传输频率比较快,获取与反馈数据信息时基本实现同步传达,再加上三维数据协同模型采集的数据为点云数据,所以协同感知环境下对目标三维数据的提取又迅速又精准,而且还能实时检测。
虽然获得的点云数据较为精确,但数据量又庞大又散乱,因此,要通过邻域查询等途径重建数据信息。采取栅格法[6]将点云数据进行划分,不仅可以提升邻域查询的效率,而且对数据筛选起着重要的作用。该法为一种普适又有效的分类方案,在实际操作中能够快速对数据进行划分处理。
栅格分类法的具体步骤为:获取背景信息的点云数据,所测范围内目标出现时,Kinect传感器将同步采集到点云数据P,设定P点的最大三维数值是xmax,ymax,zmax;最小三维数值是xmin,ymin,zmin。所有极值的坐标交错后形成极小长方体栅格,假设所测范围的边长为L,空间点云被分成的栅格数量为n,由栅格化公式推算得出栅格数量n的公式
(1)
把获得的点云数据与栅格一一对应后,做差所得的结果就是该目标在点云空间内的点云信息。通过将栅格分类点云数据减去背景原始数据,获取目标的点云信息,再以二维数据形式进行存储,当各数据点保存到相应的栅格查询数据库时,对其下达邻域查询指令,指令执行时从该点栅格开始查询,如没有查询结果,则继续查询其周围的栅格,从而减少对全部点云数据查询的指令操作,简化非邻域点的运算,在一定程度上加快查询速度。
通过栅格法采集可用的点云信息,得到基于Kinect传感器的目标数据,将其排列成目标的点云二维数值方阵,并假定该方阵是A1;根据旋转矩阵[7]R和平移矩阵t推算成三维数值后,将得到的方阵假定为A,再利用模型和传感器提取的点云数据得出目标的三维坐标数据。
为了使获取的点云信息更为精准,在采集到经栅格分类的点云数据后,需通过滤波算法做降噪处理。Kinect传感器可以获得所有点的三维点云信息(即各点的x、y、z数值),且模型提取的是目标在y轴上的全部数据信息。
由获得的点云数据得出水平方向y的极值(即ymin、ymax)和垂直方向z的极值(即zmin、zmax),把两对极值投影至yz坐标系上,设定O是三维数据协同模型坐标系的原点,y轴为x值等于0的点集合,也是该坐标系的正方向;其中,ymin、ymax、zmin和zmax的投影点分别是点A、B、C、D。由Kinect传感器和模型协同得到的旋转矩阵R和平移矩阵t,推算出点A、B、C、D的三维坐标数据。用点A举例说明
(xA,yA,zA)=R(x1,y1,z)+t
(2)
创建被点O、A、B、C、D所构成的多面体,求得成像角度的过程如图2所示。
图2 三角形构建示意图
从上图中可以得知多面体的所有线段长,用线段AB举例说明
(3)
多面体中含有三角形:ΔAOB、ΔAOC、ΔAOD、ΔBOC、ΔBOD、ΔCOD,用ΔAOB举例说明,由三角形余弦定理可知
(4)
根据上式即可得到所有三角形中以点O为顶点的全部角度,通过对比得出最大角度,也就是三维数据协同模型的可视范围,为提高目标数据信息采集的精准度奠定基础。
在人机交互的条件下,如想获取更多目标数据信息,那么要根据三维数据协同模型,将所测目标归类划分,进而对目标的细节所属进行标识并实现可视检测。
2.3.1 k-means分类法
分类法中较为简洁有效的划分方法为k-means算法[8],该算法具有普适性,其类别判定的标准为长度,原理是根据长度对目标进行划分并组成有差异的簇,两点间长度愈短,那么属于相同类别的可能性愈大,从而获得一个分类准则,即牢固又独立的簇。
于某一存在空间里采集一组数据{x1,…,xN},其被划分成簇的数量为K,如果仅考虑欧几里得空间方面,则应该把长度较短的点划分成一个簇,而其它不同簇里的点,其长度应该较长。k-means算法的原理为提取K个分类中心μk(k=1,…,K),然后把全部数据分别划分给与其之间长度最短的分类中心,以达到各点与其所属分类中心之间长度的平方和为极小值的目的。
数据点xn用逻辑变量rnk∈{0,1}代替,针对分类k的划分,当数据点xn划分为第k类别时,那么rnk=1,反之,rnk=0。因此,对损失函数做出下列定义
(5)
上式,损失函数的分类标准是rnk,分类中心是μk。
当损失函数J为极小值时,求得全部数据点的分类标准{rnk}与分类中心{μk}。此时的k-means算法通过将不断变化的原始数据递推为新数据的过程,使重复反馈的rnk和μk得到持续的交替改良。具体步骤如下:
首先,获取分类中心μk的初始数据,推算出损失函数J为极小值时的数据点分类标准rnk,根据损失函数定义,已知xn与μk值,损失函数J为rnk的线性函数,因为xn的数据点间毫无联系,为了获取各数据点n,把该数据点划分到与其之间长度最短的分类中心内,如下式所示
(6)
根据上式得到的rnk,推算出损失函数J为极小值时的分类中心μk。已知rnk值,损失函数J为μk的二次函数,当因变量J对自变量μk进行求导,导数值为0时,那么有
(7)
所以μk取值推导为如下公式
(8)
关于第K个类别,当rnk选定是1时,数值为其类别内点的数量,所以μk为其类别内点的均值。
重复反馈的过程,等空间内所有的数据信息全部处理完全后才会停止,数据分类效果逐渐趋于理想化。
目标通过k-means算法分类处理后,其分割的各区域特征也要收集提取,通常采取的特征提取法为LBP特征提取、Haar特征提取等。本文主要利用LBP特征提取法来获得处理后的目标特征。
2.3.2 LBP特征获取
目标特征为该目标与其它目标之间存在的差异点或者目标自身具有的独特特征。LBP算法[9](Local Binary Pattern,也叫局部二值模式)是用于对目标细节纹理特征进行分类的运算符,其具备不变性的优势,例如旋转不变性、灰度不变性等,并展现出良好的分割效果,广泛运用于相关领域。
LBP算法是在由3×3个网格组成的框架里进行运算,该框架中间的像素值是与周围8个像素值做大小比较的基础值(即阈值)。如果比较的像素值比阈值大,那么将该像素所在的网格标记成1;反之标记成0。然后得到8位二进制数,也就是该框架中间像素点的LBP值,该值是纹理信息的展现。图3为LBP特征提取法的示例图。
图3 LBP特征提取法的示例图
LBP算法提取目标特征时,该目标的各像素点都会做像素值对比,并获取其相应的LBP值。
2.3.3 SVM分类与检测
支持向量机[10](support vector machines)为一种二分类模型,以在特征空间内搜索一分类面来分割样本为目标,以距离最大化为分割原则,最后转变成一个基本的非线性分类器。该模型是利用特征划分来获得目标间隔,经过多次的重复反馈获得距离的极大值,其算法是对凸二次规划问题进行解析的理想化算法。
支持向量机通常用于解析线性可分情况,解决间距过大的问题。然而,当数据处于线性不可分情况时,根据非线性映射算法,低维空间里的线性不可分数据被改成高维特征空间里的线性可分数据,然后通过线性算法实现对数据非线性特征的进一步转换,使其成为线性特征来进行解析。提出支持向量机的初始动机是要对两类数据进行归化,分类情况分为四种:二分类线性可分;二分类线性不可分;二分类非线性可分;二分类非线性不可分。
二分类线性可分情况下,通过线性可分SVM,按照已知数据(xi,yi),得到如下的归化平面公式
WX+b=0
(9)
上式,特征缩放系数分别是W、b。
该归化平面不仅能够对两种数据进行精准地划分,还可以满足两个类别内数据间距最大化的条件。当上式中W和X代表维度矢量时,则线性判断基本公式如下所示:
g(x)=Wx+b
(10)
由于归化平面不是只有一个,所以要将几何距离的极大值转换成约束最优化问题,得出
(11)
(12)
(13)
根据式(13)完成三维数据协同可视检测,为检验本文方法的有效性及可行性,需进行仿真。
本文模型的开发平台是基于Windows XP系统的Visual studio c++2017,计算机配置是Pentiun(R)Dual-Core CPU 2.62GHZ内核,2.00GB内存;模型框架是在wxWidgets库下完成,通过Opengl与Glew对目标进行绘制与显示,利用Vcglib库对目标数据进行采集。三维数据采集界面如图4所示。
图4 数据采集界面
为验证该模型检测的准确度与稳定性,对实验对象采取相同环境下56个小时的重复检测,抽取测量数据如表1所示。
表1 各方法检测数据量对比(单位:bit)
如表1所示,相同时间内,所提检测的数据量更高,说明所提方法检测效率更高。
三种方法对三维数据进行可视化检测时,不同输出频率代表波动不同,波动越小,说明三维数据检测能耗越低,检测效率越高。对三种方法的输出频率进行对比实验,实验结果如图5所示。
图5 不同方法输出频率对比图
如图5所示,文献[2]方法、文献[3]方法出数频率较高,波动较大,而所提方法输出频率逐渐降低,波动较小,并且较为稳定。说明所提方法具有明显优势,实用价值较高。
为了进一步验证检测效果,对检测结果偏差进行实验对比,实验结果如图6所示。
图6 三种方法检测结果偏差折线图
通过上图可以更加直观地看出,所提所提方法偏差更小,具备更优化、更理想的精准度和稳定性。
为了提升可视检测应用领域广泛性及检测结果准确性,本文提出一种基于人机交互的三维数据协同可视检测,将人机交互时采集的点云数据栅格化,通过对目标的特征提取、分类以及决策函数,最终实现检测的目的。所以,本文研究得出的方法具有良好的同步性与实时性,不仅检测速度快,而且检测的准确率、精度俱佳,稳定性极好。