python - 重新采样并规范化 numpy 数组以进行手势识别

标签 python numpy resize normalization gesture-recognition

我打算写一个小应用程序来识别手势(现在用鼠标)。

现在,将鼠标坐标记录在 Point 对象(具有 x 和 y 属性的简单类)的 numpy 数组中。 为了训练我的系统(基于 HMM),我需要(我认为......)一些相同长度的样本在相同的范围内归一化。

例如,我需要一个 8 元素长度的数组来进行训练和分类器。 我刚刚记录了 a1(5-len 元素)和 a2(9-len 元素)。如何实现 len(a1)==len(a2)==8 ?

编辑:我找到了一个解释我的问题的网站: http://www.creativedistraction.com/demos/gesture-recognition-kinect-with-hidden-markov-models-hmms/ 他使用 k-means 减少 8 个簇中的元素..

解决方案:我有一些零散的点(我不知道有多少),我想将它减少到 8 个意义点。我可以使用的技术之一是使用一些聚类算法对它们进行聚类。 KMeans 可能是一种可能性。在 scipy 中使用此代码: 从 scipy.cluster.vq 导入 kmeans2

def clusterize(numpy_array, n_cluster):
    centroids, labels = kmeans2(numpy_array, n_cluster)
    #print centroids, labels
    return centroids

注意:如果 numpy_array 大小小于 n_cluster,我注意到解决方案并不好,但在我的真实案例中,经过一些试验后我观察到我有超过(numpy_array 大小>=60,n_cluster=8)。这是很合乎逻辑的:k-means 不是一个确定性的算法,而是一个涉及一些随机初始化的迭代过程,因为对于这类问题没有分析好的解决方案(如果我理解得很好的话)。

肯定有一些我不想深入研究的数学见解。这完成了工作。

最佳答案

我不确定这是否是您需要的,但这将从输入沿 n 均匀间隔的点进行线性插值。

input = np.array([0, 1, 2, 3, 4]) ** 2
n = 8
m = len(input)
out = np.interp(np.linspace(0, m-1, n), np.arange(m), input)

关于python - 重新采样并规范化 numpy 数组以进行手势识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8908312/

相关文章:

python - 无法访问 Python 的 init.py 文件中的 Kubernetes env var

python - 导入 cv2 终端错误 - python

python.exe is not a valid win32 application 突然出现错误

python - 提前比较两个或多个 csv 文件

python - Flask 处理带有 URL 编码参数的请求时出现问题

Python:计算具有重复值的列中每个唯一值的第一个实例

python - Numpy:评估高于/低于平均值的值的标准偏差

java - Java中删除数组中的一些项并收缩数组

java - 如何使用 PersistentBitmap 和位图调整大小?

jquery div resizer 像 stackoverflow 一样