Калибровка камеры - это процесс вычисления внешних и внутренних параметров камеры. После калибровки камеры можно использовать информацию об изображении для восстановления 3-D информации из 2-D изображений. Изображения, сделанные с помощью камеры «рыбий глаз», также можно отменить. Компьютерное зрение Toolbox™ содержит алгоритмы калибровки для модели камеры с микроотверстием и модели камеры с рыбьим глазом. Можно использовать модель рыбьего глаза с камерами до поля зрения (ФОВ) 195 градусов.
Камеры Fisheye используются в одометрии и для решения задач одновременной локализации и картирования (SLAM) визуально. Другие приложения включают в себя системы наблюдения, GoPro, виртуальную реальность (VR) для захвата 360-градусного поля зрения (fov) и алгоритмы сшивания. Эти камеры используют сложную серию объективов для увеличения поля зрения камеры, позволяя ей снимать широкие панорамные или полусферические изображения. Однако линзы достигают этого чрезвычайно широкого ракурса путем искажения линий перспективы на изображениях.

Из-за экстремального искажения, создаваемого линзой рыбьего глаза, модель микроотверстия не может моделировать камеру рыбьего глаза.

Алгоритм калибровки Computer Vision Toolbox использует модель камеры «рыбий глаз», предложенную Scaramuzza [1]. В модели используется ненаправленная модель камеры. В процессе система формирования изображения рассматривается как компактная система. Чтобы связать точку мира 3-D с изображением 2-D, необходимо получить внешние и внутренние параметры камеры. Точки мира преобразуются в координаты камеры с использованием параметров внешней среды. Координаты камеры отображаются в плоскости изображения с использованием собственных параметров.

Внешние параметры состоят из поворота, R и перемещения, т. Начало системы координат камеры находится в ее оптическом центре, а ее оси x и y определяют плоскость изображения.

Преобразование от мировых точек к точкам камеры:

Для модели камеры «рыбий глаз» внутренние параметры включают коэффициенты полиномиального отображения проекционной функции. Коэффициенты выравнивания связаны с выравниванием датчика и преобразованием из плоскости датчика в положение пикселя в плоскости изображения камеры.
Следующее уравнение отображает точку изображения в соответствующий вектор 3-D.
идеальные проекции изображения точек реального мира.
представляет скалярный коэффициент.
- полиномиальные коэффициенты, описанные моделью Скарамуцца, где.![]()
является функцией (u, v) и зависит только от расстояния точки от центра изображения
:.
Внутренние параметры также учитывают растяжение и искажение. Матрица растяжения компенсирует смещение датчика к объективу, и вектор искажения регулирует (0,0) местоположение плоскости изображения.

Следующее уравнение связывает реальные искаженные координаты (u «, v») с идеальными искаженными координатами (u, v).

Для удаления искажения объектива с изображения рыбьего глаза можно обнаружить шаблон калибровки шашечной доски, а затем откалибровать камеру. Вы можете найти контрольные точки с помощью detectCheckerboardPoints и generateCheckerboardPoints функции. estimateFisheyeParameters функция использует обнаруженные точки и возвращает fisheyeParameters объект, содержащий внутренние и внешние параметры камеры рыбьего глаза. Вы можете использовать fisheyeCalibrationErrors для проверки точности калибровки.
Удалите искажение объектива изображения рыбьего глаза, обнаружив шаблон калибровки контрольной доски и откалибровав камеру. Затем просмотрите результаты.
Соберите набор калибровочных изображений шашки.
images = imageDatastore('calibrationImages');Определите шаблон калибровки по изображениям. Для аргумента «PartityDetections» Name-Value по умолчанию установлено значение true, позволяющее обнаруживать частичные шахматные доски.
[imagePoints,boardSize] = detectCheckerboardPoints(images.Files, 'HighDistortion', true);Создайте мировые координаты для углов шашечных квадратов.
squareSize = 20; % millimeters
worldPoints = generateCheckerboardPoints(boardSize,squareSize);Оценка параметров калибровки камеры «рыбий глаз» на основе изображения и точек мира. Используйте первое изображение для получения размера изображения.
I = readimage(images,10); imageSize = [size(I,1) size(I,2)]; params = estimateFisheyeParameters(imagePoints,worldPoints,imageSize);
Удаление искажения объектива с первого изображения I и просмотрите результаты.
J1 = undistortFisheyeImage(I,params.Intrinsics); figure imshowpair(I,J1,'montage') title('Original Image (left) vs. Corrected Image (right)')

J2 = undistortFisheyeImage(I,params.Intrinsics,'OutputView','same', 'ScaleFactor', 0.2); figure imshow(J2) title('Output View with low Scale Factor')

[1] Скарамуцца, Д., А. Мартинелли и Р. Зигварт. «Набор инструментов для простой калибровки ненаправленных камер». Материалы Международной конференции IEEE по интеллектуальным роботам и системам (IROS). Пекин, Китай, 7-15 октября 2006 года.
fisheyeCalibrationErrors | fisheyeIntrinsics | fisheyeIntrinsicsEstimationErrors | fisheyeParameters