вычисление новой координаты точки в поле зрения камеры после вращения камеры вокруг оси z - PullRequest
0 голосов
/ 24 января 2020

Я пытаюсь выполнить какое-нибудь задание по компьютерному зрению, которое включает перемещение камеры вдоль сцены в максимальном 3D-режиме, камера должна перемещаться на каждом шаге на определенное расстояние от своего текущего местоположения (X c, Y c, Z c) в новое место Xcnew = Xc + 1500 мм или Xcnew = Xc + 1500 мм.

На основании этого я могу рассчитать размеры ( ширина и высота) плоскости, которая появляется на изображении с камеры согласно следующему уравнению:

(Размер датчика (мм)) / (Фокусное расстояние (мм)) = (Размер поля ( мм)) / (Расстояние до поля (мм))

так, если датчик имеет 36 на 24 мм физических размеров (ширина * высота) , фокусное расстояние 40 мм и расстояние 1500 мм, мы видим, что ширина и высота захваченного изображения со сцены составляет 1350 мм и 900 мм. , например, глядя на прикрепленное изображение ( изображение 1 ), размер точки A (правый край захваченной плоскости) будет ( CAMx-1500 , CAMy + 675 , CAMz + 450 ); Точка E находится в ( CAMx-1500 , CAMy , CAMz ), где все единицы измерения в мм, а кулачок в (CAMx, CAMy, CAMz).

мой вопрос: если я хотел повернуть камеру вокруг оси z, скажем, 20 градусов (, как показано на рисунке 2 ), как я могу рассчитать координаты точек A, B, C, D и E? Я пытался применить матрицу вращения вокруг оси z r = [ cos(theta) sin(theta) 0; ((-1)*sin(theta)) cos(theta) 0; 0 0 1]

к координатам исходных точек, но результаты не были правильными, как я могу проверить с помощью моделирования в 3d max.

другая проблема: хотя кулачок установлен на [112570 -613080 900] и оригинальный А на [111070 -612405 1350] после поворота я получаю А на [-105083 -613460 1350] , я полагаю, это связано с тем фактом, что плоскость находится «за кулачком», где камера смотрит на отрицательное x-направление мира?

Координаты пустоши Ясно на рисунке 2,

мне нужно применить перевод здесь? если да, то должно ли это применяться к координации камеры или к исходным координатам точек?

Я уверен, что мне здесь чего-то не хватает, и буду признателен, если кто-нибудь сможет помочь.

наконец, пожалуйста, если мой вопрос не по теме c посоветуйте мне, где его разместить.

image 1 image2

...