Я использовал этот код в качестве основы для обнаружения моей прямоугольной цели. в сцене. Я использую ORB и Flann Matcher. Мне удалось успешно нарисовать ограничивающую рамку обнаруженной цели в моей сцене, используя функции findHomography()
и perspectiveTransform()
.
Эталонное изображение (img_object
в приведенном выше коде) представляет собой прямой вид только прямоугольной цели. Теперь цель в моем изображении сцены может быть наклонена вперед или назад. Я хочу узнать угол, на который он был наклонен. Я прочитал разные сообщения и пришел к выводу, что гомографию, возвращаемую findHomography()
, можно разложить на матрицу вращения и вектор перевода. Я использовал код из рекомендованного http://https:/gist.github.com/inspirit/740979 по этой ссылке, переведенной на C++. Это код декомпозиции Zhang SVD, полученный из модуля калибровки камеры OpenCV. Я получил полное объяснение этого кода декомпозиции из книги O'Reilly Learning OpenCV.
Мои вопросы:
- Прав ли я, предполагая, что полученная мной разложенная матрица вращения скажет мне угол, на который была наклонена моя цель?
- Во-вторых, могу ли я использовать гомографию, полученную из
findHomography()
, в качестве входных данных для этого модуля декомпозиции и ожидать правильного результата? Или я что-то упускаю? - Есть ли другой способ добиться того же?
Наконец, я пишу код на мобильной платформе, поэтому меня также беспокоит производительность. Я был бы рад, если бы вы могли указать мне в правильном направлении.
Заранее спасибо за ваше время и ответы.