С помощью фотограмметрии легко определить размер объекта по изображениям.
Фотограмметрия - это наука об измерениях по фотографиям.
Для этого нам нужно знать две вещи,
- расстояние между камерой и плоскостью изображения (расстояние от камеры до объекта).
- Фокусное расстояние (в мм и пикселях на мм) или физический размер датчика изображения.
Ниже приведены шаги:
Калибровка камеры
Используйте openCV для калибровки камеры. Вы можете использовать инструмент OpenCV calibrate.py и PNG-шаблон шахматной доски, предоставленные в исходном коде, для генерации калибровочной матрицы. Калибровка камеры выполняется для определения параметров камеры. Я сделал около дюжины фотографий шахматной доски с разных ракурсов, как мог с помощью своей веб-камеры (для калибровки своей веб-камеры). Для более подробной информации проверьте калибровка камеры openCV .
Мы получим f_x, f_y, c_x, c_y из калибровочной матрицы.
Проверяя детали сделанных снимков, вы найдете исходное разрешение фотографий (heightXwidth) и в их EXIF заголовках вы можете найти значение фокусного расстояния (f). Эти элементы могут различаться в зависимости от вашей камеры.
Пикселей на миллиметр
Нам нужно знать количество пикселей на миллиметр (px / mm) на датчике изображения.
f_x = е * m_x
f_y = е * M_Y
Поскольку у нас есть две переменные для каждой формулы, которые мы можем найти для m_x и m_y. Я просто усреднил f_x и f_y, чтобы получить f_xy.
м = f_xy / focal_length_of_camera
Вставьте изображение
Вставьте свое изображение, из которого вам нужно найти фактический размер изображения. Вы должны знать расстояние между объектом и камерой. Найти размер изображения (height1Xwidth1)
Найти размер объекта в пикселях
Определить размер объекта в пикселях. Я просто использую формулу расстояния, чтобы найти длину выбранной линии. Вы можете использовать любой другой метод.
Конвертировать px / mm в нижнем разрешении
pxpermm_in_lower_resolution = (ширина1 * м) / ширина
Размер объекта в датчике изображения
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