rectifyStereoImages

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

Синтаксис

[J1,J2] = rectifyStereoImages(I1,I2,stereoParams)
[J1,J2] = rectifyStereoImages(I1,I2,tform1,tform2)
[J1,J2] = rectifyStereoImages(___,interp)
[J1,J2] = rectifyStereoImages(___,Name,Value)

Описание

пример

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

Задайте мировые координаты шахматной доски keypoints.

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

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

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

Отобразите результат для 'допустимого' выходного представления.

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

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

свернуть все

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

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

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

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

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

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

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

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

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

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

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

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

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

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

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

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

свернуть все

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

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

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

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

Ссылки

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

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

Введенный в R2014a