2013-06-21 7 views
2

비디오에서 얼굴의 방향을 결정하려고합니다.비디오의 동질로부터 얼굴 회전 추출

영상은 얼굴의 정면 화상으로 시작하므로 더 회전이 없다. 다음 프레임에서는 머리가 회전하고 나는 카메라 위치에 따라 얼굴 방향을 결정하도록 이어지는 회전을 결정하려고합니다. 나는 작업 ++을 OpenCV와 C를 사용하고

. SURF 서술자를 사용하여 두 이미지 사이의 호모 그래피를 계산하는 데 사용하는 얼굴의 점을 찾습니다. 두 프레임이 서로 매우 가깝기 때문에 머리 회전은 그 간격에서 최소가되고 호모 그래피 매트릭스는 항등 매트릭스에 가깝습니다.

이것은 내 호모 그래피 행렬이다 : K1 및 K2는 SURF로 추출 키포인트이다

H = findHomography(k1,k2,RANSAC,8); 

.

나는 회전 행렬을 추출하는 decomposeProjectionMatrix를 사용하고 있지만, 지금은 rotMatrix를 해석하는 방법을 모르겠어요. 이것도 기본적으로 (1 0 0; 0 1 0; 0 0 1)입니다 (0은 e-10에서 e-16까지의 숫자입니다).

이론상, 각 프레임에서 회전 각도를 찾고 어딘가에 저장하는 것이 었습니다. 따라서 각 프레임에서 1 ° 변화가 생기면 10 프레임 이후에 내 머리가 방향이 10 ° 변경되었습니다.

나는 내가 등등 QR 분해, 호모 그래피 행렬과에 대해 찾을 수있는 모든 것을 읽는 시간을 보내고,하지만 난이 문제를 얻을 수 없었다. 그러므로 어떤 도움이라도 정말 감사 할 것입니다.

감사합니다.

답변

0

호모 그래피 행렬의 좌측 상단은 2 × 2 차원 회전 행렬이다. 당신이 포인트 행렬의 곱셈을 통해 작업하는 경우 (즉, R의 * p를 보라), 당신이하는 것과입니다 볼 수 있습니다 : 즉

newX = oldVector dot firstRow 
newY = oldVector dot secondRow 

, 행렬의 첫 번째 행은 단위 벡터이다 새 머리의 x 축입니다. (프레임 사이에 눈금 차이가있을 경우 단위 벡터가되지 않지만이 방법은 여전히 ​​작동합니다.) 따라서 계산할 수 있어야합니다.

rotation = atan2(second entry of first row, first entry of first row)