Преобразование координат пикселей в декартовы координаты

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

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

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

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

введите здесь описание изображения


comment
Ваше изображение все еще очень нечеткое и все еще содержит в градусах. Вы пробовали что-нибудь?   -  person Jabberwocky    schedule 24.03.2020
comment
Извините, я не понимаю.   -  person Jabberwocky    schedule 24.03.2020


Ответы (2)


Вы никогда не сможете - принципиально - преобразовать координаты пикселей в 3d-координаты, поскольку информации недостаточно. Это не имеет ничего общего с С++ или любым другим языком. Просто подумайте о снимке, который вы делаете с помощью камеры. Это 2D, однако реальное слово 3D, и третье измерение не содержится в изображении (за исключением размытости).

person goaran    schedule 24.03.2020
comment
Однако, если бы у вас было два изображения с разных позиций, вы могли бы с некоторой доработкой и некоторой неопределенностью измерить трехмерное положение объекта. - person QuantumDeveloper; 24.03.2020
comment
Хм, да. Это имеет смысл. Я думаю, что мне нужно использовать другой подход и вместо этого использовать 2d. Вы знаете, как это сделать? :) Спасибо за ответ. - person stackmeup; 24.03.2020
comment
Я думаю, что я пытаюсь сделать сшиватель изображений с камеры 360. И мне нужно знать точное местоположение пикселя на снятом изображении, чтобы я мог разместить его в нужном месте на сфере. Моя идея заключается в том, чтобы иметь изображение. Возьмите центр изображения и рассчитайте градусы, в которых он находится от центра, и примените его как вращение к координатам камеры, чтобы получить точное положение пикселя на сфере. Извините, мне трудно объяснить. Конечная цель - поместить изображение в правильное положение на равнопрямоугольном изображении. - person stackmeup; 24.03.2020
comment
сшивание изображения - другая задача. Для сшивания вам необходимо найти совпадающие области в области перекрытия исходных изображений (что можно сделать путем взаимной корреляции с использованием преобразования Фурье). Кроме того, вам нужно выполнить некоторую коррекцию искажений для каждого кадра камеры и сопоставить результат со сферой (с помощью какого-либо метода проекции, например, проекции Меркатора). Также существуют библиотеки, которые могут выполнять эти задачи для вас, например opencv - - person goaran; 25.03.2020
comment
Нет, это не другая задача. Это одна часть процесса. Я знаю точное местоположение изображения (в градусах). И мне нужно найти, в каком положении находятся пиксели в ответ на центр изображения (в градусах). Тогда я думаю, что смогу выяснить остальное. Не хочу использовать автосшиватель opencv. Это медленно и не работает в темных изображениях. И это для снимков, сделанных в случайном направлении. Это круто, но не то, что мне нужно. :) - person stackmeup; 25.03.2020

x - w/2
h/2 - y

где w и h — размеры экрана. А?

person bipll    schedule 24.03.2020