exponenta event banner

cameraParameters

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

Описание

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.

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

развернуть все

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

Свойства

развернуть все

Внутренние параметры камеры:

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

[fx00sfy0cxcy1]

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

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

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

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

Зависимость

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

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

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

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

xdistorted = x (1 + k1 * r2 + k2 * r4 + k3 * r6)

ydistorted = y (1 + k1 * r2 + k2 * r4 + k3 * r6)

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

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

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

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

xdistorted = x + [2 * p1 * x * y + p2 * (r2 + 2 * x2)]

ydistorted = y + [p1 * (r2 + 2 * y2) + 2 * p2 * x * y]

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

  • p1 и p2 - коэффициенты тангенциального искажения линзы.

  • r2: x2 + y2

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

3-D матрицу вращения, заданную как 3-by-3-by-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-by-3 матрица, содержащая P векторов вращения. Каждый вектор описывает 3-D поворот плоскости изображения камеры относительно соответствующего шаблона калибровки. Вектор определяет ось 3-D, вокруг которой вращается камера, где величина - угол поворота в радианах. 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 или приложение «Калибратор камеры» для получения объекта.

Создать 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 Transactions on Pattern Analysis and Machine Intelligence, том 22, № 11, стр. 1330-1334, 2000.

[2] Хейккила, Джей и О. Сильвен. «Четырехэтапная процедура калибровки камеры с неявной коррекцией изображения», Международная конференция IEEE по компьютерному зрению и распознаванию образов, 1997 год.

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

.
Представлен в R2014a