Python中使用Douglas-Peucker来减少HMM识别中的状态点

在手势识别中,由于相机采集频率高导致HMM状态过多。通过应用Douglas-Peucker算法减少轨迹点,降低状态数量。该算法通过计算点与直线的垂直距离,以预定阈值ε决定是否删除点,从而简化曲线。最终Python实现成功减少了手写a字母轨迹的点数量。
摘要由CSDN通过智能技术生成

手势识别中,基于手运动的位置信息,识别手势运动轨迹,由于相机采集的频率问题,导致数据点太多,HMM中显状态数量太多,使用Douglas-Peucker来减少轨迹中的运动点。

Douglas-Peucker的原理如下图所示:

                          

自然语言表达方式如下:

1.首先以端点A,a连接作为一条直线,如果曲线Aa只包含两个端点 A a, 则此曲线去点循环结束。循环剩下所有的点,计算点与直线的垂直距离,确定与直线距离最大的点及距离ε, 

2.if ε小于预定的值,那么A到a之间的所有点都被删除,使用Aa线段来代替此段曲线,此曲线段循环结束。否则曲线被分成两段Ac, ca

3.继续进行步骤1,直到满足退出循环去点条件。

最后可以看到曲线中的点的数量变少。

基于Python实现的代码粘结在下面:

import math
import re
import matplotlib.pyplot as plt
#use the dp algorithm to simplify the line.
def DPeucker(dataOrigin):
    data = list()
    #to make sure that the datatype is list type instead of numpy list
    print(type(dataOrigin))
    if(type(dataOrigin) == type([])):
        print(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值