2012-03-30 5 views
17

Мне нужно сделать мобильное приложение, которое вычисляет реальный размер объекта в изображении.Как получить реальный размер жизни объекта из изображения, когда вы не знаете расстояние между объектом и камерой?

Я сделал некоторые исследования на нем и нашли полезным [вопрос]: How would you find the height of objects given an image?

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

distance to object (mm) = focal length (mm) * real height of the object (mm) * image height (pixels) 
          --------------------------------------------------------------------------- 
          object height (pixels) * sensor height (mm) 

Но как получить значение реальной высоты объекта, если расстояние неизвестно?

Существуют ли инструменты, которые создают 3d-модели из изображений, имеют реальные размеры?

ответ

25

Простой ответ вы не можете.

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

Более сложный ответ есть пути вокруг этого, например:

  1. Чит с использованием известной ссылки:

    Например, если у вас есть объект известного размера , вы можете сделать вывод о расстоянии. Это похоже на то, что NASA does для калибровки своих камер, например.

    Вы можете сделать безопасные предположения, если вы имеете дело с общими объектами, такими как высота одного этажа при анализе изображения здания.

  2. Переместить камеру вокруг:

    Это позволяет получить более одной контрольной точки с той же камерой.

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

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

  3. Пусть расстояние:

    Если ваше приложение предназначено для сравнения что-то в масштабе человеческой руки (или другие немного анатомии человека), вероятно, можно смело предположить, расстояние на основе того, что люди естественно. Пределы фокусировки самой камеры также дадут верхний и нижний пределы того, насколько далеко объект может быть и все еще находится в фокусе.Вероятно, это будет допустимым пределом погрешности.

Как вы упоминаете в своем вопросе, существует целая subfield, посвященный этому вопросу, и это active research area.

+0

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

+0

Имеют ли инструменты, которые создают 3d-модели из изображений, имеют реальные размеры или пропорциональные размеры? [Пример] (http://www.123dapp.com/catch) –

+3

«Сделайте несколько цифровых фотографий неподвижных людей, мест или вещей». они используют метод # 2, а затем используют обработку изображений для восстановления разницы в позиции между двумя изображениями. – brice

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