Интерполяция объекта по расстоянию в изображении - PullRequest
1 голос
/ 21 августа 2010

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

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

Я понимаю, что линейная интерполяция будет работать только на одной плоскости, здесь сверхув конце, поэтому идеи о том, как сделать это правильно, были бы хорошими.Это для магистерской диссертации, я сделал «трудные» биты - классификация изображений, сбор данных, однако я только что натолкнулся на умственную кирпичную стену между Java (в настоящее время использую) и R (теперь только для статистики)Помощь будет принята с благодарностью!

Ответы [ 2 ]

0 голосов
/ 24 августа 2010

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

Я бы сделал некоторые предположения относительно камеры (без вращения, без смещения камера находится в 0, 0, 0 по оси z).

image.x = model.x * camera.focalLength / model.z
image.y = model.y * camera.focalLength / model.z

Перевернув их, вы получите:

model.x = image.x * model.z / camera.focalLength;
model.y = image.y * model.z / camera.focalLength;

Предполагается, что вы знаете расстояние до точки, в которую, по вашему мнению, объект опирается от камеры (то есть модель.z). Аналогично, если вы хотите рассчитать расстояние до объекта от камеры, вы можете рассчитать модель.z следующим образом:

model.z = model.x * camera.focalLength / image.x
model.z = model.y * camera.focalLength / image.y

Хитрость, я полагаю, состоит в том, чтобы выяснить, что вы должны использовать для model.x и model.y в ​​этом случае. Взяв либо ширину вашего объекта, либо высоту вашего объекта, вы можете установить соотношение между постоянной шириной вашего объекта и шириной вашего объекта в сцене при изменении расстояния.

model.z = model.width * camera.focalLength / image.width;
model.z = model.height * camera.focalLength / image.height;

Сидел на этом ответе несколько дней, поэтому я проверяю свои факты. Но это примерно согласуется с другим постом.

0 голосов
/ 22 августа 2010

Гомография - это математический метод, который переводит расстояние между объектами от камеры в изменение размера, полученное в результате проекции в перспективе.

По сути, размер объекта, который отображается на изображении с камеры, пропорционален реальному размеру объекта, деленному на расстояние объекта от камеры.

Допустим, есть два объекта, A и B, которые имеют одинаковый размер в реальном мире. A находится на расстоянии D A , а B находится на расстоянии D B . Их размеры, как они появляются на изображении с камеры, составляют H A и H B .

Для объекта C, того же реального размера, что и A и B, который находится на расстоянии (1- & alpha;) D A + (& alpha;) D B, его размер на изображении с камеры определяется следующим образом:

...