Как бы вы нашли высоту объектов с учетом изображения? - программирование
Подтвердить что ты не робот

Как бы вы нашли высоту объектов с учетом изображения?

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

Предположим, что у вас есть изображение нескольких деревьев в формате jpg. Как бы вы хотели найти высоты каждого из этих деревьев. Фотография - единственный вход, который у вас есть.

Я хочу знать подходы, которые вы не кодируете. Так что это не имеет значения, если ваши ответы расплывчаты или не DIP-ish.

Небольшая коррекция: Высота не должна быть фактической высотой дерева. Высота может быть поднята до любого масштаба. Но должен быть согласован со всеми объектами на рис.

4b9b3361

Ответ 1

Да, это возможно. То, что вы описываете, имеет вокруг него всю отрасль, называемую Фотограмметрия

Ответ 2

В этой области существует достаточное количество исследований в области компьютерного зрения. Предполагая, что вы не знаете ограничений камеры, вам нужно будет сделать предположения о сцене и камере, чтобы определить высоты до масштабного коэффициента. Обратите внимание, что без ограничений камеры или эталонной высоты в изображении невозможно отличить высокое дерево сфотографирован с расстояния или короткого дерева сфотографировали близко. Отличное начало - это Single View Metrology от Criminisi.

Ответ 3

Проще всего найти размер объекта из изображений с помощью Photogrammetry. Фотограмметрия - это наука делать измерения с фотографий. Для этого нам нужно знать две вещи:

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

Ниже приведены шаги:

Калибровка камеры

Используйте openCV для калибровки камеры. Для создания калибровочной матрицы вы можете использовать инструмент OpenCV calibrate.py и шаблон PNG Chessboard, который предоставляется в исходном коде. Калибровка камеры выполняется, чтобы найти параметры камеры. Я взял около десятка фотографий фотографий шахматной доски со многих сторон, как мог, с помощью моей веб-камеры (для калибровки моей веб-камеры). Для более подробной информации проверьте калибровку камеры openCV.

Мы получим f_x, f_y, c_x, c_y из калибровочной матрицы.

Проверяя сведения о сделанных вами фотографиях, вы найдете собственное разрешение фотографий (heightXwidth) и в своих EXIF-заголовках вы может найти значение фокусного расстояния (f). Эти элементы могут различаться в зависимости от вашей камеры.

Пиксели на миллиметр

Нам нужно знать пиксели на миллиметр (пикселей/мм) на датчике изображения.

f_x = F * M_X

f_y = F * M_Y

Так как у нас есть две переменные для каждой формулы, мы можем решить для m_x и m_y.I только усредненные f_x и f_y для получения f_xy.

т = f_xy/focal_length_of_camera

Вставить изображение

Вставьте свое изображение, с которого вам нужно найти фактический размер изображения. Вы должны знать расстояние между объектом и камерой. Найдите размер изображения (height1Xwidth1)

Найти размер объекта в пикселях

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

Преобразование px/mm в нижнем разрешении

pxpermm_in_lower_resolution = (width1 * m)/width

Размер объекта в датчике изображения

size_of_object_in_image_sensor = object_size_in_pixels/(pxpermm_in_lower_resolution)

Фактический размер объекта

Фактический размер объекта можно найти с указанными выше данными, так как

real_size = (dist * size_of_object_in_image_sensor)/focal_length

Ответ 4

Предполагая, что они находятся на одинаковом расстоянии, все в масштабе, вы бы хотели найти одну единицу измерения, которую вы можете гарантировать. Например, если у вас есть фотография на фотографии, опять же, в том же масштабе, и вы знаете, что они ровно 6 футов в высоту, вы используете это как свою меру. Затем вы берете это и подсчитываете, сколько укладывается в стеке. Например, если вам нужно 3.5 этого человека, то:

3.5 * 6 = 21

дает вам дерево длиной 21 фут.

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

Ответ 5

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

Или, может быть, мы могли бы использовать данные EXIF ​​для реверсирования размера объекта на основе размеров датчика камеры, используемого объектива и фокусного расстояния. Это снова зависит от угла. Мы должны получать наиболее точные результаты, когда камера удерживается перпендикулярно объекту.

Ответ 6

Если ваше изображение 3 * 3, и вы хотите узнать размер изображения (т.е. 3x3..so 3x3 = 9), теперь у нас есть 8 пикселей, начиная с 0 до 8. Итак, 9/8 = (___) кб.

Если вы хотите найти размер изображения в МБ, как и в примере выше, просто сделайте так (9/8)/(1024) = (----) MB..

Итак, вы получите результат в Mb.