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);

Исправьте изображения с помощью 'full' выхода.

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

Отобразите результат для '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 truecolor изображение или M -by N 2-D массив полутонового цвета. Вводите изображения I1 и I2 должны также быть вещественными, конечными и нечеткими. Входные изображения должны быть одним и тем же классом.

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

Входное изображение, соответствующее камере 2, задается как M -by N -by-3 truecolor изображение или 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 являются изображениями truecolor, тогда можно задать 'FillValues'к скаляру или 3-элементному вектору значений RGB.

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

свернуть все

Неискаженная и исправленная версия I1, возвращенный как M изображением <reservedrangesplaceholder2>-by-3 truecolor или как M N 2-м изображением оттенков серого.

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

Неискаженная и исправленная версия I2, возвращенный как M изображением <reservedrangesplaceholder2>-by-3 truecolor или как M N 2-м изображением оттенков серого.

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

Совет

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

Ссылки

[1] G. Bradski and A. Kaehler, Learning OpenCV: Компьютерное зрение with the OpenCV Library. Sebastopol, CA: O'Reilly, 2008.

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

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