cameraParameters

Объект для хранения параметров камеры

Описание

The cameraParameters объект сохраняет собственные, внешние и параметры искажения объектива камеры.

Создание

Можно создать cameraParameters объект с использованием cameraParameters функция, описанная здесь. Можно также создать cameraParameters объект при помощи estimateCameraParameters с M -by-2-by - numImages массивом входных точек изображения. M - количество координат точек ключа в каждом шаблоне.

Описание

cameraParams = cameraParameters создает cameraParameters объект, который содержит собственные, внешние и параметры искажения объектива камеры.

пример

cameraParams = cameraParameters(Name,Value) устанавливает свойства cameraParameters объект при помощи одного или нескольких Name,Value аргументы в виде пар. В неопределенных свойствах используются значения по умолчанию.

cameraParams = cameraParameters(paramStruct) создает идентичную cameraParameters объект из существующего cameraParameters объект с параметрами, сохраненными в paramStruct.

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

расширить все

Стерео параметров, заданный как стерео параметров struct. Чтобы получить paramStruct из существующего cameraParameters объект, использовать toStruct функция.

Свойства

расширить все

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

Проекционная матрица, заданная как единичная матрица 3 на 3. Объект использует следующий формат для матричного формата:

[fx00sfy0cxcy1]

Координаты [cx cy] представляют оптический центр (главную точку) в пикселях. Когда x и y ось в точности перпендикулярны, параметр наклона, s, равен 0.

fx = F * s x
fy = F * s y
F - фокусное расстояние в мировых единицах измерения, обычно выраженное в миллиметрах.
[s x, s y] - количество пикселей на мировую единицу измерения в x и y направлениях соответственно.
fx и fy выражены в пикселях.

Это свойство доступно только для чтения.

Объект camera inninsics, заявленный как cameraIntrinsics объект. Объект содержит информацию о параметрах внутренней калибровки камеры, включая искажение объектива.

Зависимость

Вы должны предоставить размер изображения (используя ImageSize свойство) для Intrinsics свойство, которое должно быть непустым. Характеристики параметров камеры зависят от размера изображения.

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

Искажение объектива камеры:

Коэффициенты радиального искажения, заданные как двух- или трехэлементный вектор. Когда вы задаете двухэлементный вектор, объект устанавливает третий элемент равным 0. Радиальное искажение происходит, когда световые лучи изгибаются больше около ребер линзы, чем в ее оптическом центре. Чем меньше линза, тем больше искажение. Объект параметров камеры вычисляет радиальное искаженное положение точки. Можно обозначить искаженные точки следующим образом (x искаженные, y искаженные):

x искаженный = x (1 + k 1 * r2 + <reservedrangesplaceholder1> 2* r4 + <reservedrangesplaceholder1> 3* r6)

y искаженный = y (1 + k 1 * r2 + <reservedrangesplaceholder1> 2* r4 + <reservedrangesplaceholder1> 3* r6)

x, y = неискаженные положения пикселей
k 1, k 2 и k 3 = коэффициенты радиального искажения объектива
r2 = x2 + y2
Обычно достаточно двух коэффициентов. Для серьезных искажений можно включать k 3. Неискаженные положения пикселей появляются в нормированных координатах изображения с источником координат в оптическом центре. Координаты выражены в мировых единицах измерения.

Коэффициенты тангенциального искажения, заданные как двухэлементный вектор. Тангенциальное искажение происходит, когда линза и плоскость изображения не параллельны. Объект параметров камеры вычисляет тангенциальное искаженное положение точки. Можно обозначить искаженные точки как (x искаженные, y искаженные). Неискаженные положения пикселей появляются в нормированных координатах изображения с источником координат в оптическом центре. Координаты выражены в мировых единицах измерения.

Тангенциальное искажение происходит, когда линза и плоскость изображения не параллельны. Коэффициенты тангенциального искажения моделируют этот тип искажения.

Искаженные точки обозначаются как (x искаженные, y искаженные ):

x искаженный = x + [2 * p 1 * x * y + p 2 * (r2 + 2 * x2)]

y искаженный = y + [p 1 * (r2 + 2 * y2) + 2 * <reservedrangesplaceholder2> 2 * x * y]

  • x, y - неискаженные пиксельные местоположения. x и y находятся в нормированных координатах изображения. Нормированные координаты изображения вычисляются из пиксельных координат путем перевода в оптический центр и деления на фокусное расстояние в пикселях. Таким образом, x и y безразмерны.

  • p 1 и p 2 - Коэффициенты тангенциального искажения объектива.

  • r2: x2 + y2

Параметры внешней камеры:

3-D матрица вращения, заданная как 3х3-бай- P, с P количеством изображений шаблона. Каждая матрица 3 на 3 представляет то же 3-D вращение, что и соответствующий вектор.

Следующее уравнение предоставляет преобразование, которое связывает мировую координату в шахматной системе координат [X Y Z] и соответствующей точке изображения [x y]:

s[xy1]=[XYZ1][Rt]K

R - 3-D матрица поворота.
t - вектор преобразования.
K является IntrinsicMatrix.
s является скаляром.
Это уравнение не принимает во фактор искажения. undistortImage функция удаляет искажения.

3-D векторы вращения, заданные как матрица P -на 3, содержащая P вектора вращения. Каждый вектор описывает 3-D поворот плоскости изображения камеры относительно соответствующего калибровочного шаблона. Вектор задает ось 3-D, вокруг которой вращается камера, где величина является углом поворота в радианах. The RotationMatrices свойство предоставляет соответствующие 3-D матрицы поворота.

Трансляции камеры, заданные как матрица P -by-3. Эта матрица содержит векторы преобразования для P изображений. Векторы содержат калибровочный шаблон, который оценивает параметры калибровки. Каждая строка матрицы содержит вектор, который описывает перемещение камеры относительно соответствующего шаблона, выраженного в мировых единицах измерения.

Следующее уравнение предоставляет преобразование, которое связывает мировую координату в шахматной системе координат [X Y Z] и соответствующей точке изображения [x y]:

s[xy1]=[XYZ1][Rt]K

R - 3-D матрица поворота.
t - вектор преобразования.
K является IntrinsicMatrix.
s является скаляром.
Это уравнение не принимает во фактор искажения. undistortImage функция удаляет искажения.

Чтобы убедиться, что количество векторов поворота равняется количеству векторов смещения, установите RotationVectors и TranslationVectors свойства в конструкторе. Установка только одного свойства, но не другого приводит к ошибке.

Предполагаемая точность параметра камеры:

Среднее евклидово расстояние между перепроектированными и обнаруженными точками, заданное в виде числового значения в пикселях.

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

Мировые точки перепроектируются на калибровочные изображения, заданные как M -by-2-by- P массив [ x y] координат. P - количество изображений шаблона, а M - количество точек ключа в каждом изображении. Отсутствующие точки в обнаруженных ключевых точках шаблона обозначаются как [NaN,NaN].

Обнаруженные ключевые точки в калибровочном шаблоне, заданные как логический M массив -by P. M - количество точек ключа во всем калибровочном шаблоне, и P определяет количество калибровочных изображений.

Настройки для оценки параметра камеры:

Количество калибровочных шаблонов, оценивающих внешнюю камеру, заданное в виде целого числа. Количество калибровочных шаблонов равняется количеству векторов смещения и вращения.

Мировые координаты ключевых точек на калибровочном шаблоне, заданные как массив M -by-2. M представляет количество ключевых точек в шаблоне.

Мировые точки модулей, заданные как вектор символов или строковый скаляр. Значение описывает модули измерения.

Оценочный флаг наклона, заданный как логический скаляр. Когда вы устанавливаете логическое значение trueобъект оценивает наклон осей изображения. Когда вы устанавливаете логическое значение false, оси изображения в точности перпендикулярны.

Количество коэффициентов радиального искажения, заданное как число '2'или' 3'.

Оцените флаг тангенциального искажения, заданный как логический скаляр true или false. Когда вы устанавливаете логическое значение trueобъект оценивает тангенциальное искажение. Когда вы устанавливаете логическое значение falseтангенциальное искажение незначительно.

Примеры

свернуть все

Используйте функции калибровки камеры, чтобы удалить искажения с изображения. Этот пример создает vision.cameraParameters объект вручную, но на практике вы бы использовали estimateCameraParameters или приложение Camera Calibrator, чтобы вывести объект.

Создайте vision.cameraParameters объект вручную.

IntrinsicMatrix = [715.2699 0 0; 0 711.5281 0; 565.6995 355.3466 1];
radialDistortion = [-0.3361 0.0921]; 
cameraParams = cameraParameters('IntrinsicMatrix',IntrinsicMatrix,'RadialDistortion',radialDistortion); 

Удалите искажения из изображений.

I = imread(fullfile(matlabroot,'toolbox','vision','visiondata','calibration','mono','image01.jpg'));
J = undistortImage(I,cameraParams);

Отображение исходных и неискаженных изображений.

figure; imshowpair(imresize(I,0.5),imresize(J,0.5),'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.

Ссылки

[1] Чжан, З. «Гибкий новый техник калибровки камеры». Транзакции IEEE по анализу шаблонов и машинной разведке, том 22, № 11, стр. 1330-1334, 2000.

[2] Heikkila, J, and O. Silven. «Четырехэтапная процедура калибровки камеры с неявной коррекцией изображения», IEEE International Conference on Компьютерное Зрение and Pattern Recognition, 1997.

Расширенные возможности

.
Введенный в R2014a