2016-12-13 1 views
0

k-NN 알고리즘을 사용하여 사람 인식을위한 간단한 프로그램을 작성하려고합니다.이 문제는 고전적인 것으로 생각되지만 도움이 필요합니다. k-NN 분류기는 몇 가지 거리를 계산해야하므로 제 질문은 어떻게 비교할 것인가, 또는 두 이미지 간의 거리를 계산하는 방법입니까? (나는 미터 거리로 L2- 표준을 사용해야 함) 감사합니다. !OPEN CV C++ person Recognition K-nn

답변

0

그래서 k-NN은 먼저 몇 가지 값과 함께 기능이 필요합니다. 예를 들어 이미지에 n 개의 피쳐가 있으면 그 피쳐에서 n 차원 벡터를 만듭니다. 뭔가 : F (x1, x2, x3, x4, .... xn), 여기서 x1, x2, x3 ... xn은 피쳐의 값입니다. 이제 피처를 계산하고 벡터 형식으로 변환 한 다음 아이콘 거리 공식을 사용하여 벡터 사이의 거리를 간단히 계산할 수 있습니다. 그리고 일단리스트/배열에 모든 거리를 계산/저장하면 그것을 정렬하고 가장 낮은 거리의 k 최고 값을 가져오고, 그것들은 계산 된 가장 가까운 이웃이 될 것입니다. 다시 한번, 특징 추출은 당신이 찾고있는 것입니다.

+0

내 경우에는 그레이 스케일 형식의 이미지의 픽셀 값의 강도가 내 피쳐를 대표한다고 생각해 봅시다. 이미지 X, Y가 있다고합시다. X와 Y 사이의 거리는 픽셀 값의이 2 세트의 L2 표준으로 나타낼 수 있습니다. , X와 Y에 대해서? – Elneny

+0

@ 엘니니, 귀하의 구체적인 사건에 관해서는 정말로 말할 수 없습니다. 마지막으로 두 개의 회색 명암 이미지를 비교할 때 각 픽셀을 고유 한 기능으로 처리했습니다. 즉, 28x28 크기의 이미지가 있다면 784 개의 피쳐가 있고 각 피쳐는 0-255 사이의 값을 갖습니다. 그리고 거리에 대한 L2 규범으로 가고 싶든, 그것은 당신에게 달려 있습니다. 그러니 유클리드 거리 공식을 권하고 싶습니다. –

+0

감사합니다.이 같은 것이 나도 필요합니다. – Elneny

관련 문제