Основы калибровки «рыбий глаз»

Калибровка камеры - это процесс вычисления внешних и собственных параметров камеры. После калибровки камеры можно использовать информацию об изображении для восстановления 3-D информации с 2-D изображений. Можно также отменить искажение изображений, принятых с помощью fisheye-камеры. Computer Vision Toolbox™ содержит алгоритмы калибровки для модели камеры pinhole и модели fisheye-камеры. Можно использовать модель «рыбий глаз» с камерами до поля зрения ( FOV) 195 степеней.

Fisheye-камеры» используются в одометрии и для решения задач одновременной локализации и картографии (SLAM) визуально. Другие приложения включают системы наблюдения, GoPro, виртуальную реальность (VR) для захвата поля зрения 360 степеней (fov) и алгоритмы сшивания. Эти камеры используют сложную серию объективов, чтобы расширить поле зрения камеры, позволяя ей захватывать широкие панорамные или полусферические изображения. Однако объективы достигают этого чрезвычайно широкого угла, искажая линии зрения на изображениях

Из-за экстремальных искажений, которые производит линза «рыбий глаз», модель pinhole не может смоделировать fisheye-камеры.

Fisheye-камера модель

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

Внешние параметры

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

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

Собственные параметры

Для модели fisheye-камеры внутренние параметры включают полином коэффициенты отображения проекционной функции. Коэффициенты выравнивания связаны с выравниванием датчика и преобразованием из плоскости датчика в положение пикселя в плоскости изображения камеры.

Следующее уравнение преобразует точку изображения в соответствующий ей вектор 3-D.

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

  • представляет скалярный фактор.

  • являются полиномиальными коэффициентами, описанными моделью Скарамуццы, где.

  • является функцией (u, v) и зависит только от расстояния точки от центра изображения:.

Внутренние параметры также учитывают растяжение и искажение. Матрица растяжения компенсирует расхождение датчика и объектива, и вектор искажения настраивает (0,0) положение плоскости изображения.

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

Fisheye-камера калибровки в MATLAB

Чтобы удалить искажение объектива из изображения «рыбий глаз», можно обнаружить шахматный калибровочный шаблон и затем калибровать камеру. Вы можете найти шахматные точки с помощью detectCheckerboardPoints и generateCheckerboardPoints функций. estimateFisheyeParameters функция использует обнаруженные точки и возвращает fisheyeParameters объект, который содержит внутренние и внешние параметры fisheye-камеры. Можно использовать fisheyeCalibrationErrors для проверки точности калибровки.

Исправление изображения «рыбий глаз» для искажения объектива

Удалите искажение объектива из изображения «рыбий глаз» путем обнаружения контрольного калибровочного шаблона и калибровки камеры. Затем отобразите результаты.

Соберите набор шахматных калибровочных изображений.

images = imageDatastore('calibrationImages');

Обнаружите калибровочный шаблон из изображений. Аргумент Имя-Значение 'PartialDetections' по умолчанию имеет значение true, позволяющее обнаруживать частичные шахматные платы.

[imagePoints,boardSize] = detectCheckerboardPoints(images.Files, 'HighDistortion', true);

Сгенерируйте мировые координаты для углов шахматных квадратов.

squareSize = 20; % millimeters
worldPoints = generateCheckerboardPoints(boardSize,squareSize);

Оцените параметры калибровки fisheye-камеры на основе изображения и мировых точек. Используйте первое изображение, чтобы получить размер изображения.

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)')

Figure contains an axes. The axes with title Original Image (left) vs. Corrected Image (right) contains an object of type image.

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

Figure contains an axes. The axes with title Output View with low Scale Factor contains an object of type image.

Ссылки

[1] Скарамуцца, Д., А. Мартинелли и Р. Зигварт. A Toolbox for Easy Calibrating Omnidirectional Cameras (неопр.) (недоступная ссылка). Материалы Международной конференции IEEE по интеллектуальным роботам и системам (IROS). Пекин, Китай, 7-15 октября 2006 года.

См. также

Функции

Объекты

Похожие темы