Калибровка фотоаппарата является процессом вычисления внешних и внутренних параметров камеры. Если вы калибруете камеру, можно использовать данные изображения, чтобы восстановить 3-D информацию с 2D изображений. Можно также не исказить изображения, взятые fisheye-камерой.
Fisheye-камеры используются в одометрии и решать задачи одновременной локализации и отображения (SLAM) визуально. Другие приложения включают, системы наблюдения, GoPro, виртуальная реальность (VR), чтобы получить 360 полей зрения степени (fov) и сшивание алгоритмов. Эти камеры используют комплексную серию линз, чтобы увеличить поле зрения камеры, позволяя ему получить широкие панорамные или полусферические изображения. Однако линзы достигают этого чрезвычайно широкоугольного представления путем искажения линий перспективы в изображениях
Из-за экстремального искажения линза подозрительного взгляда производит, модель крошечного отверстия не может смоделировать fisheye-камеру.
Калибровочный алгоритм Computer Vision Toolbox™ использует модель fisheye-камеры, предложенную Scaramuzza[1]. Можно использовать эту модель с камерами до поля зрения (FOV) 150 градусов. Модель использует всенаправленную модель камеры. Процесс обрабатывает систему обработки изображений как компактную систему. Для того, чтобы связать 3-D мировую точку на 2D изображении, необходимо получить значение внешних параметров камеры и внутренние параметры. Мировые точки преобразовываются к координатам камеры с помощью параметров значений внешних параметров. Координаты камеры сопоставлены в плоскость изображения с помощью параметров внутренних параметров.
Внешние параметры состоят из вращения, R, и перевода, t. Источник системы координат камеры в ее оптическом центре и ее x - и y - ось задает плоскость изображения.
Преобразование от мировых точек до точек камеры:
Для модели fisheye-камеры внутренние параметры включают коэффициенты отображения полинома функции проекции. Коэффициенты выравнивания связаны с выравниванием датчика и преобразованием от плоскости датчика до пиксельного местоположения в плоскости изображения камеры.
Следующее уравнение сопоставляет точку изображений в свой соответствующий 3-D вектор.
идеальные проекции изображений реальных точек.
представляет скалярный фактор.
полином coefficents описанный моделью Scaramuzza, где.
функция (u, v) и зависит только от расстояния точки от центра изображения:.
Внутренние параметры также составляют протяжение и искажение. Матрица фрагмента компенсирует неточное совмещение датчика к линзе, и вектор искажения настраивает (0,0) местоположение плоскости изображения.
Следующее уравнение связывает действительные искаженные координаты (u'', v'') к идеалу исказил координаты (u, v).
Чтобы удалить искажение объектива из изображения подозрительного взгляда, можно обнаружить калибровочный шаблон шахматной доски и затем калибровать камеру. Можно найти точки шахматной доски с помощью detectCheckerboardPoints
и generateCheckerboardPoints
функции. estimateFisheyeParameters
функционируйте использует обнаруженные точки и возвращает fisheyeParameters
объект, который содержит внутренние и внешние параметры fisheye-камеры. Можно использовать fisheyeCalibrationErrors
проверять точность калибровки.
Удалите искажение объектива из изображения подозрительного взгляда путем обнаружения checkboard калибровочного шаблона и калибровки камеры. Затем отобразите результаты.
Соберите набор калибровочных изображений шахматной доски.
images = imageDatastore(fullfile(toolboxdir('vision'),'visiondata', ... 'calibration','gopro'));
Обнаружьте калибровочный шаблон от изображений.
[imagePoints,boardSize] = detectCheckerboardPoints(images.Files);
Сгенерируйте мировые координаты для углов квадратов шахматной доски.
squareSize = 29; % millimeters
worldPoints = generateCheckerboardPoints(boardSize,squareSize);
Оцените калибровочные параметры fisheye-камеры на основе изображения и мировых точек. Используйте первое изображение, чтобы получить размер изображения.
I = readimage(images,1); 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','full'); figure imshow(J2) title('Full Output View')
[1] Scaramuzza, D., А. Мартинелли и Р. Сигварт. "Тулбокс для легких калибрующих всенаправленных камер". Продолжения к международной конференции IEEE по вопросам интеллектуальных роботов и систем, (IROS). Пекин, Китай, 7-15 октября 2006.
estimateFisheyeParameters
| fisheyeCalibrationErrors
| fisheyeIntrinsics
| fisheyeIntrinsicsEstimationErrors
| fisheyeParameters
| undistortFisheyeImage
| undistortFisheyePoints