Поиск местоположения пикселя в поле зрения

Таким образом, у меня есть камера с определенным полем обзора точки места, которое я хотел бы обозначить на изображении. У меня есть как lat, так и lon точек, и я знаю угол между ними, однако мое уравнение для нахождения местоположения пикселей отключено. Прикрепленное изображение, которое поможет мне объяснить:

Я могу решить для каждого вектора камеры в центре обзора, а также точку и полный угол поля зрения и угол между центром зрения и точкой.

Вот что я сейчас использую: [угол поля зрения (зеленый угол)/угол между векторами (синий угол)] * 1024 (ширина экрана)

С номерами: (14.182353/65) * 1024 = 223.426620, а на изображении значение пикселя должно быть 328...

Еще один способ, которым я это пробовал, - использовать уравнение подшипника: [[обозначение точки camera- с левой стороны поля обзора]/поле зрения] * 1024

С номерами: ((97.014993-83.500000)/65) * 1024 = 212.913132 и ответ должен быть 328...

Может ли кто-нибудь подумать о более точном решении?

1 ответ

Попробуйте 512(1-tan(blue)/tan(green/2)), где синий положителен влево.

Если синий находится справа, вы можете рассматривать его как отрицательное число, чтобы получить 512(1+tan(blue)/tan(green/2)).

Объяснение:

Пусть C - камера, d - точка с меткой 328, E - центр поля зрения, а L - левая конечная точка поля зрения, так что вы хотите найти dL. Затем (для синего слева):

dL+dE = EL = 512
tan(green/2)=EL/CE
tan(blue)=dE/CE

Затем tan(blue)/tan(green/2) = dE/EL = (512-dL)/512, и вы можете решить для dL.

Правило будет похоже (или вы можете работать с отрицательными расстояниями, и все получается отлично).

licensed under cc by-sa 3.0 with attribution.