Равномерное вращение OpenCV

В настоящее время я застрял в достижении равноугольного вращения на 360 ° изображения с OpenCV из-за моего математического понимания (почти ноль) матриц проекций и вращений.

Результатом такого поворота будет именно то, что вы можете увидеть здесь: https://www.youtube.com/watch?v=l1N0lEKIeLA

Я нашел некоторый код здесь: https://github.com/FoxelSA/libgnomonic/wiki/Equirectangular-rotation_v0.1 но мне не удалось применить его к opencv

Если у кого-то есть идеи, как его применять для углов OpenCV Mat и Pitch, Yaw, Roll, это будет высоко оценено!

Спасибо!

7

Решение

Вместо того чтобы говорить о рыскании и тангаже, я расскажу об углах Эйлера x, y и z.

Чтобы выполнить вращение вашего равностороннего отображения, вы можете выполнить следующую процедуру:

  • Рассмотрим координаты (i2, j2) в вашем изображении результата. Мы постараемся найти, какой цвет поставить здесь. Эти координаты соответствуют точке на сфере с широтой lat2 = 180 * i2 / image.height и долгота lon2 = 360 * j2 / image.width, Вычислить соответствующий 3D вектор v2,

  • Вычислить матрицу вращения R с углами x, y и z (посмотрите на формулы Вот). Возьмите транспонирование этой матрицы, чтобы получить обратный поворот от нового изображения к старому. Мы назовем эту матрицу обратного вращения Rt,

  • вычисление v1 = Rt * v2, Затем вычислите широту lat1 и долгота lon1 из v1,

  • Найти цвет в исходном изображении по координатам i1 = image.height * lat1 / 180 а также j1 = image.width * lon1 / 360, Это не могут быть целочисленные координаты. Возможно, вам придется интерполировать между несколькими пикселями, чтобы получить свое значение. Это цвет пикселя в позиции (i2, j2) в вашем новом изображении.

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

Дайте мне знать, если я допустил какую-либо ошибку, поскольку сам не проверял.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]