Как преобразовать координаты пикселя / экрана в декартовы координаты? - PullRequest
0 голосов
/ 29 марта 2020

Как мне преобразовать пиксельные / экранные координаты в декартовы координаты (x, y)?

Информация на фотографиях (см. Изображение ниже):

vFov in градусов, hFov в градусах, ширина пикселя, высота пикселя

По сути, я хочу взять любой пиксель на изображении и рассчитать положение пикселя от центра изображения в градусах.

enter image description here

1 Ответ

0 голосов
/ 31 марта 2020

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

Тогда можно построить виртуальную камеру, которая будет видеть ширину / высоту изображения точно в правильном поле зрения. , Чтобы получить расстояние d между изображением и камерой (в пикселях), можно использовать построенный прямоугольный треугольник:

tan(FOV/2) = width/2 / dd = width/(2tan(FOV/2))

То же самое уравнение должно выполняться для высота.

Аналогичным образом можно рассчитать угол пикселя (при условии, что центр изображения равен (0, 0)):

tan(angleX) = x/dangleX = arctan(x/d) = arctan(x/width * 2tan(hFov)) tan(angleY) = y/dangleY = arctan(y/d) = arctan(y/width * 2tan(vFov))

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

...