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