2017-01-09 2 views
0

enter image description hereРасчет расстояния между 2 объектами в картине с переменным масштабом

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

Трапеция выше представляет собой прямоугольник длиной 100 метров на 50 метров (трапеция происходит из-за угла, который я сделал с изображением - фактически, гул).

Поэтому, используя эту картинку, я бы хотел рассчитать расстояние между левым (0,0) и красным крестом (654,96 - пиксельные координаты). Моя первая идея заключалась в том, чтобы создать пиксель/метр масштаба, но поскольку вы можете видеть, что длина прямоугольника имеет разный масштаб: 100 метров для 900 пикселей (верх) и 100 метров для 1400 пикселей (см. Выше).

Так что это сложно рассчитать масштаб и рассчитать расстояние.

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

У кого-то есть идеи? Спасибо!

+0

1400 точек (100 метров) находится на пути NO, равным 900 пикселей (100 метров). Пожалуйста, пересмотрите/переформатируйте свой вопрос. Вы должны исправить определенное количество метров для одного пикселя и только затем продолжить. В вашем случае, если '1400 px = 100 m', то в строке выше' 900 px ДОЛЖНО БЫТЬ <100 м'. –

+0

У вас есть высота, на которой фотография была сделана беспилотником? Используя это, вы можете рассчитать расстояние, покрытое одним пикселем, и найти приблизительное расстояние до координаты (x, y) в измерениях реального мира. –

+0

@ JeruLuke - Из-за наклонного вида у меня 100 м = 1400 пикселей и 100 м = 900 px. Это то, что я прошу этот пост ... – YLM

ответ

1

Вам необходимо исправить изображение, т. Е. Отменить проективное преобразование. This post of mine на Math SE или this post на Stack Overflow описывают, как такое преобразование можно вычислить, если вы знаете координаты четырех точек и их изображений. Как и вы: у вас есть координаты в картинке, и у вас есть измерения реального мира, поэтому вы можете выбрать реальную систему координат мира по своему усмотрению. Затем вычислите проективное преобразование, примените его к координатам изображения красной точки и получите ее реальные координаты.

+0

Спасибо за ответ! На самом деле я знаю координаты четырех точек (используя impixelinfo на matlab). Что вы понимаете, зная 4 изображения? @MvG – YLM

+0

У вас есть преобразование, которое отображает одну точку в другую. Ввод называется прообразом, результат называется изображением. Это имеет мало общего с «изображением» в смысле «картины». – MvG

+0

Итак, у меня есть прообраз, и я просчитаю изображение, используя сообщение, которое вы мне дали, не так ли? @MvG - спасибо! – YLM

0

В дополнение к тому, что отправлено @MvG, если вы знаете высоту изображения, то вы можете рассчитать расстояние, которое покрывается каждым пикселем (и включить линейную перспективу в пикселях), а затем просто суммировать их, чтобы найти точное расстояние до пикселя в реальных единицах с помощью этих формул:

enter image description here

enter image description here

Благодаря линейной перспективы, площадь сцены захватили в пиксель пропорционален расстоянию от объекта от камеры. Таким образом, пиксели, расположенные ближе к фотоаппарату , будут захватывать меньшую площадь «a» по сравнению с пикселями, представляющими объекты дальше, захватывая большую площадь «b», как показано на рисунке ниже.

Для получения более подробной информации, вы можете проверить бумагу here (или here)

Смежные вопросы