Page tree
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 15 Current »

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

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

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

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

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

  • алгоритмов построения панорамного изображения или изображения 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 представить в виде отчета и исходного кода. В состав отчета включить следующее:
    • полученные калибровочные значения,

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

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

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

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

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

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

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

  • No labels