estimateFisheyeParameters

Калибровка fisheye-камеры

Описание

пример

[fisheyeParams,imagesUsed,estimationErrors] = estimateFisheyeParameters(imagePoints,worldPoints,imageSize) возвращает fisheyeParameters объект, содержащий оценки для собственных и внешних параметров fisheye-камеры. Функция также возвращает изображения, которые вы использовали для оценки параметров «рыбий глаз» и стандартных ошибок расчета для калибровки одиночной камеры.

[___] = estimateFisheyeParameters(___,Name,Value) настраивает fisheyeParams свойства объекта, заданные одним или несколькими Name,Value аргументы в виде пар, используя предыдущий синтаксис. Неопределенные свойства имеют значения по умолчанию.

Примеры

свернуть все

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

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

images = imageDatastore('calibImages');
imageFileNames = images.Files;

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

[imagePoints,boardSize] = detectCheckerboardPoints(imageFileNames, '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);

Визуализируйте точность калибровки.

figure
showReprojectionErrors(params);

Figure contains an axes. The axes with title Mean Reprojection Error per Image contains 3 objects of type bar, line. This object represents Overall Mean Error: 1.67 pixels.

Визуализируйте внешнюю камеру.

figure
showExtrinsics(params);

Figure contains an axes. The axes with title Extrinsic Parameters Visualization contains 25 objects of type patch, text, line.

drawnow

Постройте график обнаруженных и перепроектированных точек.

figure 
imshow(I); 
hold on
plot(imagePoints(:,1,10),imagePoints(:,2,10),'go');
plot(params.ReprojectedPoints(:,1,10),params.ReprojectedPoints(:,2,10),'r+');
legend('Detected Points','Reprojected Points');
hold off

Figure contains an axes. The axes contains 3 objects of type image, line. These objects represent Detected Points, Reprojected Points.

Входные параметры

свернуть все

Ключевые точки калибровочного шаблона, заданные как M -by-2-by- numImages массив [x, y] собственных координат изображения. Количество изображений, numImages, должно быть больше 2. Количество координат точек ключа в каждом шаблоне, M, должно быть больше 3. Чтобы включить частично обнаруженные шаблоны в оценку, используйте [NaN,NaN] как x - y координаты для отсутствующих точек ключа.

Типы данных: single | double

Ключевые точки калибровочного шаблона в мировых координатах, заданные как M-на-2 матрица M [x, y] мировых координат. Поскольку шаблон должен быть плоским, z -кординаты равны нулю.

Типы данных: single | double

Размер изображения, заданный как [mrows ncols] вектор.

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: 'WorldUnits', 'mm' устанавливает модули измерения точки в миллиметры.

Оцените выравнивание осей, заданное как разделенная разделенными запятой парами, состоящая из 'EstimateAlignment' и false или true. Установите значение true если оптическая ось линзы «рыбий глаз» не перпендикулярна плоскости изображения.

Мировые модули измерения точки, заданные как разделенная разделенными запятой парами, состоящая из 'WorldUnits' и вектор символов или строковый скаляр. Этот аргумент используется просто для хранения типа модуля и не влияет ни на какие вычисления.

Выходные аргументы

свернуть все

Fisheye-камера параметры, возвращенные как fisheyeParameters объект.

Изображения, используемые для оценки параметров камеры, возвращаются как P -by-1 логический массив. P соответствует количеству изображений. Логический true значение указывает индекс изображения, используемого для оценки параметров камеры.

Стандартные ошибки предполагаемых параметров, возвращенные как fisheyeCalibrationErrors объект.

Ссылки

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

[2] Urban, S., J. Leitloff, and S. Hinz. Улучшенная калибровка фотоаппарата по широкоугольному, рыбному и всенаправленному направлению. Журнал фотограмметрии и удаления зондирования ISPRS. Том 108, 2015, стр. 72-79.

Введенный в R2017b