Панорамное изображение - это двухмерная проекция трехмерного пространства. Таким образом, вы не можете напрямую рассчитать размеры объектов по изображению. По крайней мере, вам потребуется расстояние (глубина) объекта от камеры. Зная это и ваше поле зрения, вы можете оценить размер объекта перпендикулярно лучу зрения.
Практически, поскольку проекция через объектив не идеальна, изображения прямых линий в пространстве не приводят к появлению прямых линий на плане изображения (то есть преобразование не является аффинным). Теоретически, вы можете использовать эти знания в некоторой степени, чтобы получить приблизительную оценку размера.
Обновление:
Вам нужна какая-то ссылка на ваши измерения. Если вы хотите измерить размер изолированного объекта, тогда требуется расстояние от камеры и поля зрения. Например, если ваш FoV 90 degrees
, размер изображения 1000 pixels
и размер объекта 100 pixels
, тогда вы можете рассчитать угол обзора объекта Am
. Как только вы знаете это, и расстояние Dm
метров, фактический размер Sm
будет:
Am = 90 * 100 / 1000 = 9 deg -- Angle of View
(Sm / 2) / Dm = tan(Am / 2) -- the trigonometric equation
Sm = 2 * Dm * tan(Am / 2) -- object's size
Как вы можете видеть, одно измерение, которое у вас есть на вашем изображении, - это угол обзора (Am
) объекта, который вы измеряете. Легко видеть, что объект размером 1 метр на расстоянии 3 метра имеет то же изображение, что и объект размером 2 метра на расстоянии 6 метров. Вот почему расстояние до камеры имеет решающее значение.
Обратите внимание, что рассчитанный размер составляет только перпендикулярный размер !. Мы не можем измерить радиальный размер , если не будет предоставлена дополнительная информация .
Ваш второй вариант - использование известных свойств эталонного объекта. В своем вопросе вы упомянули известный размер таблицы, и размер модели необходимо измерить. Если вы знаете относительное расположение этих двух относительно камеры, т. Е. Как далеко ваша модель от стола (для простоты, давайте предположим, что они примерно на одной линии обзора), то вы можете использовать эта информация для расчета размера модели.
Например, таблица имеет ширину Ht = 3 meters
, размер St = 3 pixels
. Модель Sm = 0.356 pixels
, расположена dDm = 2 meters
за столом. Затем вы можете сделать:
At = 90 * 3 / 1000 -- table's angle of view
Dt = (Ht / 2) / tan(At / 2) -- table's distance
Dm = Dt + dDm -- model's distance
Hm = Dm / Dt * Ht -- model's size
Если модель не находится на том же LoS, что и эталонный объект, тогда dDm
должно быть радиальной разницей на расстоянии от камеры.
Это все очень базовая тригонометрия, поэтому, если вы незнакомы с полем, вы можете начать там читать.
Я могу себе представить, что в какой-то исследовательской литературе вы обнаружите, что кто-то разработал эзотерический метод оценки расстояния на основе «размытости» объекта на изображении, вызванной ограниченной глубиной резкости камеры (DoF) или чем-то еще как это. Обычно эти случаи работают для очень специфического и специализированного оборудования, которое было точно откалибровано для проведения измерений.
Наконец - если вы можете использовать две близлежащие камеры или делать два последовательных снимка из близлежащих мест, вы можете создать стереоизображение, которое позволит вам оценить расстояние до объекта от несоответствия изображений объекта (поиск «создание поля глубины из стереоизображение ").