2012-01-18 2 views
2

제스처를 인식하는 작은 애플리케이션을 작성하려고합니다 (현재는 마우스 사용).제스처 인식을 위해 numpy 배열을 리샘플링하고 정규화하십시오.

이제 Point 개체의 numpy 배열 (x 및 y 특성이있는 간단한 클래스)에 마우스 좌표를 기록합니다. 내 시스템 (HMM을 기반으로) 교육을위한 (같은 생각 ...) 같은 길이의 일부 샘플은 동일한 길이 beormal.

예를 들어 트레이닝과 분류자를 위해 8 요소 길이의 배열이 필요하다고 말하십시오. 그리고 방금 a1 (5-len 요소) 및 a2 (9-len 요소)를 녹음했습니다. len (a1) == len (a2) == 8을 얻는 방법?

편집가 : 8 클러스터의 요소를 줄이기위한 http://www.creativedistraction.com/demos/gesture-recognition-kinect-with-hidden-markov-models-hmms/ 그가 사용하는 K-수단 ..

해결 : 난 내 문제를 설명하는 웹 사이트를 발견 좀 흩어져 점을 (내가 돈 ' 얼마나 많은지 알고있다.) 나는 그것을 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 

참고 : 내가 솔루션이 잘되지 않습니다,하지만 진짜 내 경우에는 내가 관찰 일부 시험 후에 것으로 나타났습니다 n_cluster numpy_array 크기는 작은 경우 그 이상 (numpy_array 크기> = 60, n_cluster = 8). 이것은 꽤 논리적입니다 : k-means는 결정론적인 방향이 아닙니다. 그러나 이것은 (내가 잘 이해한다면) 이런 종류의 문제에 대한 분석적으로 좋은 해결책이 없기 때문에 임의의 초기화를 포함하는 반복 프로세스입니다.

나는 확실히 탐구하고 싶지 않은 수학적 통찰력이있다. 이 일을해라.

답변

0

나는 이것이 당신이 필요로하는 것이 확실치 않지만, 이것은 입력으로부터 선형으로 보간 될 것입니다. 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) 
+0

감사합니다! 나는 kmeans를 해결했다! – nkint

관련 문제