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

Задайте мировые координаты шахматной доски 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 | logical

Введите изображение, соответствующее камере 2 в виде M-by-N-by-3 изображение истинного цвета или M-by-N 2D полутоновый массив. Введите отображает 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'самый близкий, или 'cubic'.

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

Задайте дополнительные разделенные запятой пары Name,Value аргументы. 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 реконструкции сцены.

Советы

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

Ссылки

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

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

Введенный в R2014a