2013-06-21 2 views
2

Я пытаюсь определить ориентацию лица в видео.Экстракция вращения лица из гомографии в видео

Видеоролик начинается с фронтального изображения лица, поэтому он не имеет вращения. В следующих кадрах голова вращается, и я пытаюсь определить вращение, которое приведет меня к определению ориентации лица в зависимости от положения камеры.

Я использую OpenCV и C++ для работы. Я использую дескрипторы SURF, чтобы найти точки на лице, которые я использую для вычисления гомографии между двумя изображениями. Будучи двумя кадрами, очень близкими друг к другу, вращение головы будет минимальным в этом интервале, и моя гомографическая матрица будет близка к единичной матрице.

Это моя гомография матрица:

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

где k1 и k2 являются ключевыми точками, извлеченные с SURF.

Я использую decomposeProjectionMatrix для извлечения матрицы вращения, но теперь я не уверен, как интерпретировать rotMatrix. Это тоже в основном (1 0 0; 0 1 0; 0 0 1) (где 0 - числа в диапазоне от e-10 до e-16).

В теории, то, что пытался сделать, было найти угол поворота на каждом кадре и сохранить его где-нибудь, так что, если я получаю изменение в 1 ° в каждом кадре, после 10 кадров я знаю, что моя голова изменила ориентацию на 10 °.

Я потратил некоторое время на чтение всего, что я мог найти о декомпозиции QR, матрицах гомографии и т. Д., Но я не смог обойти это. Следовательно, любая помощь будет действительно оценена.

Спасибо!

ответ

0

Верхняя левая 2x2 матрицы гомографии представляет собой двумерную матрицу вращения. Если вы работаете через умножение матрицы с точкой (т.е. взять R * P), вы увидите, что это эквивалентно:

newX = oldVector dot firstRow 
newY = oldVector dot secondRow 

Другими словами, первая строка матрицы представляет собой единичный вектор, - ось x новой головки. (Если разница кадров между кадрами не будет единичным вектором, но этот метод все равно будет работать.) Таким образом, вы должны иметь возможность рассчитать

rotation = atan2(second entry of first row, first entry of first row) 
Смежные вопросы