exponenta event banner

rectifyStereoImages

Исправить пару стереоизображений

Описание

пример

[J1,J2] = rectifyStereoImages(I1,I2,stereoParams) возвращает неискаженные и исправленные версии I1 и I2 входные изображения с использованием стереопараметров, хранящихся в stereoParams объект.

Исправление стереоизображений проецирует изображения на общую плоскость изображения таким образом, что соответствующие точки имеют одинаковые координаты строк. Эта проекция изображения делает изображение таким, как если бы две камеры были параллельными. Используйте disparityBM или disparitySGM функции для вычисления карты несоответствия из исправленных изображений для 3-D реконструкции сцены.

[J1,J2] = rectifyStereoImages(I1,I2,tform1,tform2) возвращает исправленные версии I1 и I2 входные изображения путем применения проективных преобразований tform1 и tform2. Проективные преобразования возвращаются estimateUncalibratedRectification функция.

пример

[J1,J2] = rectifyStereoImages(___,interp) дополнительно задает метод интерполяции, используемый для исправленных изображений. Можно указать метод как 'nearest', 'linear', или 'cubic'.

пример

[J1,J2] = rectifyStereoImages(___,Name,Value) использует дополнительные параметры, указанные одним или несколькими Name,Value аргументы пары.

Примеры

свернуть все

Укажите изображения, содержащие шахматную доску для калибровки.

imageDir = fullfile(toolboxdir('vision'),'visiondata', ...
    'calibration','stereo');
leftImages = imageDatastore(fullfile(imageDir,'left'));
rightImages = imageDatastore(fullfile(imageDir,'right'));

Определите шашечные доски.

[imagePoints,boardSize] = detectCheckerboardPoints(...
    leftImages.Files,rightImages.Files);

Укажите мировые координаты шашечных ключевых точек.

squareSizeInMillimeters = 108;
worldPoints = generateCheckerboardPoints(boardSize,squareSizeInMillimeters);

Читайте в изображениях.

I1 = readimage(leftImages,1);
I2 = readimage(rightImages,1);
imageSize = [size(I1,1),size(I1,2)];

Откалибруйте систему стереокамер.

stereoParams = estimateCameraParameters(imagePoints,worldPoints, ...
                                        'ImageSize',imageSize);

Исправьте изображения с помощью «полного» представления вывода.

[J1_full,J2_full] = rectifyStereoImages(I1,I2,stereoParams, ...
  'OutputView','full');

Отображение результата для «полного» представления вывода.

figure; 
imshow(stereoAnaglyph(J1_full,J2_full));

Figure contains an axes. The axes contains an object of type image.

Исправьте изображения с помощью представления вывода «» valid «». Это наиболее подходит для вычислительного неравенства.

[J1_valid,J2_valid] = rectifyStereoImages(I1,I2,stereoParams, ...
  'OutputView','valid');

Отображение результата для представления вывода «» valid «».

figure; 
imshow(stereoAnaglyph(J1_valid,J2_valid));

Figure contains an axes. The axes contains an object of type image.

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

свернуть все

Входное изображение, соответствующее камере 1, заданное как M-by-N-by-3 изображение в цвете или массив M-by-N 2-D в градациях серого. Входные изображения I1 и I2 также должны быть действительными, конечными и непроверенными. Входные изображения должны быть одного класса.

Типы данных: uint8 | uint16 | int16 | single | double | logical

Входное изображение, соответствующее камере 2, заданное как M-by-N-by-3 изображение в цвете или массив M-by-N 2-D в градациях серого. Входные изображения I1 и I2 должно быть реальным, конечным и непроверенным. Входные изображения также должны быть одного класса.

Типы данных: uint8 | uint16 | int16 | single | double | logical

Системные параметры стереокамеры, указанные как stereoParameters объект.

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

Проективные преобразования для изображения 1, заданные как матрица 3 на 3, возвращаемая estimateUncalibratedRectification функцию или projective2d объект.

Проективные преобразования для изображения 2, заданные как матрица 3 на 3, возвращаемая estimateUncalibratedRectification функцию или projective2d объект.

Метод интерполяции, указанный как 'linear', 'nearest', или 'cubic'.

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

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

Пример: 'OutputView', 'valid' устанавливает 'OutputView' свойство для 'valid'.

Размер исправленных изображений, указанный как разделенная запятыми пара, состоящая из 'OutputView«и либо» 'full' или 'valid'. При установке для этого параметра значения 'full'исправленные изображения включают в себя все пиксели из исходных изображений. При установке этого значения в значение 'valid'выходные изображения обрезают до размера наибольшего общего прямоугольника, содержащего допустимые пикселы.

При отсутствии перекрытия между исправленными изображениями установите OutputView кому 'full'.

Выходные значения пиксельной заливки, указанные как разделенная запятыми пара, состоящая из 'FillValuesи массив из одного или нескольких скалярных значений. Когда соответствующее место обратного преобразования во входном изображении полностью выходит за границы входного изображения, используйте значения заливки для выходных пикселей. Если I1 и I2 2-D изображения в градациях серого, затем необходимо установить 'FillValues'в скаляр. Если I1 и I2 являются цветными изображениями, то можно установить 'FillValuesв скаляр или 3-элементный вектор значений RGB.

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

свернуть все

Неискаженная и исправленная версия I1, возвращенное как M-by-N-by-3 изображение в цвете или как изображение M-by-N 2-D в градациях серого.

Исправление стереоизображений проецирует изображения на общую плоскость изображения таким образом, что соответствующие точки имеют одинаковые координаты строк. Эта проекция изображения делает изображение таким, как если бы две камеры были параллельными. Используйте disparityBM или disparitySGM функции для вычисления карты несоответствия из исправленных изображений для 3-D реконструкции сцены.

Неискаженная и исправленная версия I2, возвращенное как M-by-N-by-3 изображение в цвете или как изображение M-by-N 2-D в градациях серого.

Исправление стереоизображений проецирует изображения на общую плоскость изображения таким образом, что соответствующие точки имеют одинаковые координаты строк. Эта проекция изображения делает изображение таким, как если бы две камеры были параллельными. Используйте disparityBM или disparitySGM функции для вычисления карты несоответствия из исправленных изображений для 3-D реконструкции сцены.

Совет

  • Алгоритм исправления Toolbox™ компьютерного зрения требует, чтобы эпипол для каждого изображения лежал вне изображения. Если эпипол находится внутри изображения, можно сначала преобразовать изображения в полярные координаты, как описано в методе ректификации, предложенном Марком Поллефейсом, Рейнхардом Кохом и Люком Ван Гулом [2].

Ссылки

[1] Г. Брадски и А. Келер, обучение OpenCV: компьютерное видение с помощью библиотеки OpenCV. Себастополь, Калифорния: О'Райлли, 2008.

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

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