一种基于高效过滤和点集匹配的手势识别方法与流程
- 国知局
- 2024-08-08 16:53:23
本发明涉及手势识别领域,具体为一种基于高效过滤和点集匹配的手势识别方法。
背景技术:
1、手势识别是一种人机交互技术,通过分析和理解用户的手势动作来实现与计算机或其他设备的交互操作。它在移动设备、虚拟现实、游戏控制和智能家居等领域具有广泛的应用。传统的手势识别方法通常基于特征提取和分类器的组合,但在准确性、多样性支持和实时性能等方面存在一些挑战。
2、目前,神经网络已成为手势识别的主流方法,利用深度学习技术来实现手势识别。以下是一种基本的神经网络手势识别方法的步骤:
3、1、数据准备:收集手势数据集,包括手势路径或图像以及对应的标签(手势类别)。数据集应涵盖各种手势类别和变化情况,以确保模型的泛化能力。
4、2、数据预处理:对手势数据进行预处理,如归一化、平滑化或图像处理等,以便于神经网络的训练和识别。预处理操作有助于提高数据的质量和减少噪声。
5、3、网络设计:设计适合手势识别任务的神经网络结构。常见的结构包括卷积神经网络(cnn)、循环神经网络(rnn)或其变种,用于从手势数据中提取关键特征。
6、4、网络训练:使用手势数据集对神经网络进行训练。通过将手势数据输入网络,并使用反向传播算法优化网络参数,使网络能够准确地学习手势的特征和类别。训练过程通常需要大量的计算资源和标注数据。
7、5、网络评估:使用独立的测试数据集评估训练好的神经网络的性能。通过计算准确率、召回率、f1分数等指标来评估手势识别的效果,并进行模型调优。
8、6、实时识别:将训练好的神经网络部署到实际应用中,实现实时手势识别。在实时场景中,将手势数据输入网络,通过前向传播算法得到手势的预测类别,并进行相应的交互操作。
9、神经网络手势识别方法的优点在于其强大的特征学习能力和灵活性。神经网络能够自动学习手势数据中的复杂特征,并且可以通过调整网络结构和参数来适应不同的手势识别任务。然而,神经网络方法也需要大量的标注数据和计算资源进行训练,并且对于小样本或特定手势类别的识别可能存在挑战。
10、现有技术的缺点主要包括以下几个方面:
11、1、高计算资源消耗:传统的神经网络手势识别方法通常需要大量的计算资源,包括高性能的图形处理单元(gpu)和大量的内存。这在资源受限的低功耗设备上是一个挑战。
12、2、高能耗:神经网络的训练和推理过程需要大量的计算操作,导致能耗较高。这对于低功耗设备来说是不可忽视的问题,因为它们通常具有有限的电池寿命。
13、3、实时性能挑战:传统的神经网络手势识别方法可能由于计算复杂度较高而无法满足实时性要求。在某些应用场景中,如虚拟现实和游戏控制,实时性是至关重要的。
14、4、数据需求量大:神经网络手势识别方法通常需要大量的标注数据来训练模型,以获得较高的准确率。然而,收集和标注大规模的手势数据集是一项耗时且费力的工作,为此我们提出了一种基于高效过滤和点集匹配的手势识别方法。
技术实现思路
1、(一)解决的技术问题
2、针对现有技术的不足,本发明提供了一种基于高效过滤和点集匹配的手势识别方法,通过采用高效过滤和点集匹配的策略,本发明的方法能够减少计算资源的消耗,提高算法的运行效率。同时,通过预处理阶段对手势进行重采样、归一化和平移操作,消除了手势大小和位置的差异,提高了识别准确性。
3、(二)技术方案
4、为实现上述所述目的,本发明提供如下技术方案:一种基于高效过滤和点集匹配的手势识别方法,包括以下步骤:
5、第一步:对原始点集进行重新采样,使得点集具有均匀间隔的点;
6、第二步:对采样后的点集进行缩放到一个标准化的单位方形空间中,同时保持点之间的相对位置;
7、第三步:将缩放后的点集进行平移变换,使得点集的质心与原点重合;
8、第四步:将平移后点集中的每个点的浮点坐标转换为整数坐标,方便在像素网格或查找表(lut)中进行索引;
9、第五步:根据转换成整数后的点集坐标,构建一个查找表(lut),用于将二维空间的每个位置映射到给定点集中最近点的索引,用于快速检索最近点;
10、第六步:手写体点集匹配识别。
11、优选的,所述第一步包括以下内容:
12、计算路径长度l:
13、
14、其中m是原始点集中的点的数量,euclideandistance是计算两点之间欧几里得距离的函数:
15、
16、其中d表示距离,表示平方根,x1和y1表示点pt1的坐标,x2和y2表示点pt2的坐标;
17、定义间隔长度i,它是路径长度除以n-1,即i=n-1/l;
18、初始化累计距离d=0;
19、初始化新的点集newpoints,开始时只包含原始点集的第一个点;
20、遍历原始点集中的每个点,并执行以下步骤:
21、如果当前点和前一个点属于同一笔画,则:
22、计算两点之间的距离d=euclideandistance(points[i-1],points[i])。
23、如果累计距离d+d大于或等于间隔长度i,则:
24、在两点之间插入一个新点q,其坐标(qx,qy):
25、
26、
27、将新点q添加到newpoints集合中;
28、将新点q插入到原始点集中,以便它将成为下一个考虑的点;
29、重置累计距离d=0;
30、否则,累加距离d+=d;
31、如果在结束时newpoints的长度是n-1,则将原始点集的最后一个点添加到newpoints中,以确保newpoints的长度为n。
32、优选的,所述第二步的具体步骤如下:
33、首先,找到点集在x轴和y轴上的最小值和最大值:
34、minx=min({points[i].x=1,...,m})
35、miny=min({points[i].y|i=1,...,m})
36、maxx=max({points[i].x=1,...,m})
37、maxy=max({points[i].y=1,...,m})
38、其中m是点集中的点的数量;
39、确定缩放尺寸size,这是x和y轴上的最大范围:
40、size=max(maxx-minx,maxy-miny);
41、接着,对于点集中的每个点,计算其缩放后的坐标(qx,qy):
42、
43、
44、这将点的坐标转换到一个以(0,0)为左下角,以(1,1)为右上角的单位方形内;
45、最后,以新的坐标创建一个新的点集newpoints,其中每个点的坐标都是经过上述计算得到的(qx,qy)。
46、优选的,所述第三步的具体内容如下:
47、首先,计算点集的质心c:
48、
49、
50、其中n是点集中点的数量,cx和cy分别是质心的x和y坐标;
51、接下来,对于点集中的每个点,计算其相对于质心的新位置(qxi,qyi):
52、qxi=points[i].x-cx
53、qyi=points[i].y-cy;
54、这将每个点沿x轴和y轴平移到新的位置,使得质心移动到原点(0,0);
55、最后,创建一个新的点集newpoints,其中每个点都是使用上述计算得到的新坐标(qxi,qyi)。
56、优选的,所述第四步的具体内容为:
57、设定一个最大整数坐标值maxintcoord(1024),基于目标网格的大小或分辨率。于点集中的每个点,将其x和y坐标转换为整数坐标intx和inty:
58、
59、
60、其表示四舍五入到最近的整数,这里的操作(points[i].x+1.0)/2.0和(points[i].y+1.0)/2.0是基于假设原始点坐标已经被规范化到[-1,1][-1,1]的范围内,这样的转换将坐标映射到[0,maxintcoord-1][0,maxintcoord-1]的范围内。
61、优选的,所述第五步的具体内容如下:
62、初始化一个lutsize(64)x lutsize(64)的二维数组lut;
63、对于lut中的每个单元格(x,y),执行以下步骤:
64、c.设置最小距离b为正无穷大,用来存储到目前为止发现的最小距离。
65、d.设置索引u为-1,用来存储最近点的索引。
66、遍历点集points中的每个点points[i],并计算该点与lut单元格(x,y)的距离:
67、di=(rowi-x)2+(coli-y)2;
68、其中rowi和coli是点points[i]的整数坐标通过lutscalefactor(1024/64)缩放后的值,计算方式为:
69、
70、
71、表示四舍五入到最近的整数;
72、如果对于点points[i]计算的距离di小于当前最小距离b,更新b为di,并将u设置为当前点的索引i;
73、在完成所有点的遍历后,将最近点的索引u存储在lut[x][y]中。优选的,所述第六步的具体内容如下:
74、5.定义候选点集c由点points={p1,p2,...,pn}组成;
75、6.对于每个模板点集pi,计算距离:
76、di=pointsetmatch(c,pi,b);
77、7.更新最小距离和最匹配模板索引:
78、
79、8.返回结果:
80、
81、其中pointsetmatch负责计算两个点集之间的最小距离,它使用点集的边界框和查找表(lut)来加速距离计算:
82、设candidate和template为两个点集,它们分别包含n个点,用c={c1,c2,...,cn}表示candidate点集中的点,用t={t1,t2,...,tn}表示template点集中的点;
83、(3)计算步长step为n的平方根向下取整:
84、
85、(4)计算两个下界lbl和lb2:
86、lb1=computelowerbound(c,t,step,template.lut)
87、lb2=computelowerbound(t,c,step,candidate.lut);
88、利用查找表lut来加速计算:
89、给定两个点集p1={p1,1,p1,2,...,p1,n}和p2={p2,1,p2,2,...,p2,n},以及步长step和一个查找表lut,函数计算一个下界数组lb;
90、初始化累加和数组sat和下界数组lb,其中lb[0]被初始化为0:
91、lb[0]=0,sat[0]=0;
92、对于点集p1中的每个点p1,i,执行以下操作:
93、a.计算点p1,i在查找表lut中的索引:
94、
95、b.计算平方欧几里得距离d:
96、d=(p2,index.x-p1,i.x)2+(p2,index.y-p1,i.y)2;
97、c.更新累加和数组sat:
98、
99、d.更新lb[0]:
100、lb[0]+=(n-i)·d;
101、对于步长step的每个倍数索引i,计算lb[j]:
102、lb[j]=lb[0]+i·sat[n-1]-n·sat[i-1];
103、其中
104、以上通过使用查找表lut来快速找到点p1,i在点集p2中最接近的点,以及使用累加和数组sat来高效计算下界;
105、(3)对于i=0,step,2step,…,n-step和对应的下界lb1[j]与lb2[j];
106、如果lb1[j]<minsofar,则:
107、minsofar=min(minsofar,pointsetdistance(c,t,i,minsofar));
108、如果lb2[j]<minsofar,则:
109、minsofar=min(minsofar,pointsetdistance(t,c,i,minsofar));
110、其中pointsetdistance(c,t,i,minsofar)和pointsetdistance(t,c,i,minsofar)是计算从点集c的第i个点到点集t的所有点的加权距离,以及从点集t的第i个点到点集c的所有点的加权距离,过程中可能会提前终止计算,如果已经确定距离会超过minsofar,具体过程如下:
111、给定两个点集p1={p1,1,p1,2,...,p1,n}和p2={p2,1,p2,2,...,p2,n},以及起始索引start和当前最小距离minsofar,函数计算两点集之间的加权距离,计算步骤如下:
112、初始化未匹配点集unmatched,包含p2中所有点的索引:
113、unmatched={0,1,...,n-1};
114、从点集p1中的起始点p1,start开始,初始化权重weight为n(范围0-1),并初始化距离和sum为0;
115、进入循环,直到遍历完点集p1或sum不小于minsofar:
116、a.对于unmatched中的每个索引j,计算平方欧几里得距离d:
117、d=(p2,j.x-p1,i.x)2+(p2,j.y-p1,i.y)2;
118、b.找到最小距离b和对应的索引u:
119、
120、c.从unmatched中移除索引u:
121、unmatched=unmatched\{u};
122、d.更新距离和sum:
123、sum+=weight·b;
124、如果此时sum大于或等于minsofar,则提前终止并返回sum:
125、e.权重递减,转到下一个点:
126、weight--,i=(i+1)mod n;
127、完成循环后,返回累积的距离和sum即两点集之间的加权距离。
128、(三)有益效果
129、与现有技术相比,本发明提供了一种基于高效过滤和点集匹配的手势识别方法,具备以下有益效果:
130、1、该基于高效过滤和点集匹配的手势识别方法,本发明采用高效过滤和点集匹配的策略,通过减少不必要的计算来降低计算资源的消耗。这使得手势识别方法能够在低功耗设备上高效运行,满足资源受限环境的要求。
131、2、该基于高效过滤和点集匹配的手势识别方法,采用了高效的过滤和匹配策略,减少了不必要的计算操作,从而降低了神经网络手势识别方法的能耗。这对于低功耗设备来说是非常重要的,可以延长设备的电池寿命。
132、3、该基于高效过滤和点集匹配的手势识别方法,通过高效过滤和点集匹配策略,减少了计算复杂度,提高了算法的运行效率。这使得手势识别方法能够满足实时性要求,适用于虚拟现实和游戏控制等对实时性要求较高的应用场景。
133、4、该基于高效过滤和点集匹配的手势识别方法,相对于传统的神经网络手势识别方法,本发明的方法采用了预处理阶段对手势进行重采样、归一化和平移操作,消除了手势大小和位置的差异。这意味着可以使用较小规模的标注数据集来训练模型,从而降低了数据需求量和标注工作的复杂性。
本文地址:https://www.jishuxx.com/zhuanli/20240808/271012.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表