Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Что такое калибровка видеокамер и зачем она нужна

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

  • алгоритмов стереозрения (восстановления дальности до объектов сцены, снятых с помощью двух камер),

  • алгоритмов совмещения (фьюзинга) показаний различных датчиков (совмещение дальнометрической информации, полученной от лидаров и с изображениями от видеокамер; совмещение показаний колесной одометрии, спутниковой и инерциальной навигации);

  • алгоритмов дополненной реальности;

  • алгоритмов построения панорамного изображения или изображения Surround View для обзорных камер.

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

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

К внутренним параметрам камеры относят:

  • фокусное расстояние камеры, выраженное в пикселях;

  • координаты принципиальной точки – т.е. точки пересечения оптической оси камеры и плоскости изображения;

  • коэффициенты дисторсии камеры (радиальной, тангенциальной и пр.).

При калибровке стереокамеры дополнительно к внутренним параметрам каждой из камер определяются также параметры размещения камеры друг относительно друга (три пространственные координаты и три угловые).

Калибровка производится следующим образом. Сначала необходимо получить около 20–30 изображений калибровочного щита для каждой камеры при различных расстояниях между щитом и камерами и различной ориентации щита относительно камер. Пример калибровочных изображений представлен на рисунке 1.

Рисунок 1 – Пример изображений, используемых для калибровки стереокамеры [1]. Верхний ряд: изображения, полученные левой камерой. Нижний ряд: изображения, полученные правой камерой.


Полученные изображения подаются на вход специального ПО калибровки, например [1]. В результате оцениваются внутренние параметры стереокамеры и параметры положения щита в каждом эксперименте (являются побочным продуктом, не используются в дальнейшем). На рисунке 2 представлены в качестве иллюстрации результата работы алгоритма калибровки модель геометрических искажений камеры и параметры расположения калибровочного щита.


а)

б)

Рисунок 2 – Визуализация результатов алгоритма калибровки [1]: а) модель геометрических искажений камеры; б) расположение калибровочного щита относительно стереокамеры.


В процессе калибровки алгоритм выполняет следующие действия:

  1. На изображениях производится поиск ключевых точек калибровочного объекта с помощью автоматических методов.

  2. На основе найденных координат с помощью решения линейной системы уравнений определяются начальные приближенные значения для внутренних параметров и параметров расположения калибровочного щита.

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


Содержание задания

  1. Установить и Python и OpenCV

  2. Ознакомиться с документацией и туториалами OpenCV по калибровке.

  3. Ознакомиться с примером OpenCV по калибровке

  4. *Ознакомиться с примерами из Calibration Toolbox для MATLAB [1].

  5. Ознакомиться со статьей по калибровке камеры [2].

  6. Скачать датасет с изображениями калибровочного щита

  7. Выполнить калибровку монокулярной камеры (отдельно левой и отдельно правой):

    • поэкспериментировать с различными моделями камерами (задается параметром flag)

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

  8. Исследовать с помощью функции calibrateCameraExtended влияние на погрешность определяемых внутренних параметров количества входных изображений и выбранной модели камеры. 

  9. Выполнить калибровку стереокамеры и получить ректифицированные изображения
  10. *Визуализировать результаты калибровки аналогично рисунку 2
    • построить график дисторсии объектива;

    • построить трехмерный график расположения калибровочного щита относительно стереокамеры.

  11. *Реализовать свою функцию калибровки:
    • поиск калибровочного щита взять из библиотеки OpenCV

    • используя функции initCameraMatrix2D и solvePnP из библиотеки OpenCV получить начальное приближение калибруемых параметров

    • уточнить начальное приближение его с помощью функции least_squares из модуля scipy.optimize

  12. Результаты работы по пунктам 7–11 представить в виде отчета и исходного кода. В состав отчета включить следующее:
       
      • полученные калибровочные значения,

      • погрешности калибровочных значений,

      • изображения с исправленной дисторсией и ректифицированные изображения.

Info
Пункты, отмеченные «*», не обязательны для выполнения.

Кому направлять результаты выполнения задания?

Результаты выполнения задания направлять на электронную почту: tolkachev@nkbvs.ru.

Вопросы по заданию можно задавать на данной странице в поле для комментариев.  

Ссылки на источники информации