Интерполяция объекта по расстоянию на изображении

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

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

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


person Mark Iliffe    schedule 21.08.2010    source источник


Ответы (2)


Поэтому я бы использовал уравнение трехмерной проекции и работал с ним в обратном порядке, чтобы найти 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;

Это предполагает, что вы знаете расстояние до точки, в которой, по вашему мнению, объект находится от камеры (т.е. model.z). Точно так же, если вы хотите рассчитать расстояние объекта от камеры, вы можете рассчитать model.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;

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

person chubbsondubs    schedule 24.08.2010

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

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

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

Для объекта C, такого же реального размера, как A и B, расположенного на расстоянии (1-)DA + ()DB, его размер на изображение с камеры задается:

person rwong    schedule 21.08.2010
comment
Не могли бы вы закончить то, что вы говорили? Казалось именно то, что я хотел! - person Mark Iliffe; 22.08.2010