Перейти к содержимому
Compvision.ru
MadMaksidrom

Как получить масштаб для плоского объекта?

Recommended Posts

Всем, добрый день!

Имеется изображение 1280х720, полученное камерой microsoft LifeCam hd 3000(физический размер матрицы 1280х720, автофокус отсутствует). Изображение представляется собой плоский контур. Расстояние от камеры до изображения (h) нам известно. Матрица внутренних параметров камеры нам также известна(получена путем калибровки методами opencv с использованием шахматной доски): fx = 1107,14245231702, fy = 1112,3298199461, cx = 648,436067266757, cy = 391,867526940431. Используя функцию opencv cvCalibrationMatrixValues имеем углы обзора

fovX = 60

fovY = 35

Тогда приближенной значение масштаба(пиксель/мм) можно вычислить - scaleX = 1280/(2*h*tg(fovX/2))=2,33

Причем, насколько я понимаю, это максимальное значение для случая если ПЗС матрица параллельна контуру. Для других случаев масштаб будет уменьшаться.

Известны пространственные координаты двух точек контура. Сравнивая расстояния в реальных координатах с расстояниями в пикселях, получаю (на разных фрагментах контура, высота и ориентация камеры не меняются) масштабы от 3 до 3,8.

В чем причина такого несоответствия?

Любые идеи приветствуются.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Линза в камере вносит не линейные изменения. Поэтому разные фрагменты контура имеют разные масштабы.

Калибровка поможет. Только учти что под калибровкой иногда понимают более частный случай -получение пространственных координат и угла. Что не относится к искажениям вносимой линзой.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Линза в камере вносит не линейные изменения. Поэтому разные фрагменты контура имеют разные масштабы.

Калибровка поможет. Только учти что под калибровкой иногда понимают более частный случай -получение пространственных координат и угла. Что не относится к искажениям вносимой линзой.

А если ориентировать камеру так, чтобы ПЗС матрица камеры была параллельна столу, это поможет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Конечно, в результате калибровки я получил соответсвующие коэффициенты радиальной и тангенциальной дисторсии. Поставлю вопрос более корректно - должен ли я получить правильные значения в контексте расчитанного мною масштаба при ориентации ПЗС камеры параллельно контуру и использованию метода cvUndistort2?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Если строго, то нет.

Мы ведь имеем дело с центральной, а не параллельной проекцией.

post-1-0-91647200-1325176714_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Если будете использовать cvUndistort2, то да должны получить. Причём строго.

А вот почему Smorodov сопротивляется не понятно. Хотя зерно разума есть, длины до точек то разные. Поэтому при выводе теоретического расчёта надо быть аккуратным. Но cvUndistort2 устраняет "не сферичность" и надо считать проекцию параллельной.

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ладно, убедили :)

cvUndistort2 устраняет "несферичность", это да, все линии будут прямыми (прямые отображаются в прямые или точки, окружности в окружности или эллипсы) - и это хорошо, но при параллельной проекции не бывает перспективы, а на видеокадрах (см. рисунок ниже) она есть, так что здесь неточность вот тут про проекции с картинками:

http://alexeyspace.ru/articles/1/

http://shatalov.su/math/transformation_2.php

stereo_undistort.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да, да для такого случая мы будем иметь ещё и перспективные искажения. Нарисовал схему.

image.jpg

На схеме правда не показано, откуда берутся бочкообразные и подушкообразные искажения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×