disparity

(Не рекомендуемый) Карта расхождения между стерео изображениями

disparity не рекомендуется. Использовать disparityBM или disparitySGM вместо этого. Для получения дополнительной информации см. «Вопросы совместимости»

Описание

пример

disparityMap = disparity(I1,I2) возвращает карту расхождения, disparityMap, для пары стереофонических изображений, I1 и I2.

disparityMap = disparity(I1,I2,Name,Value) обеспечивает дополнительное управление алгоритмом несоответствия при помощи одного или нескольких Name,Value аргументы в виде пар.

Примеры

свернуть все

Загрузите изображения и преобразуйте их в полутоновые.

I1 = imread('scene_left.png');
I2 = imread('scene_right.png');

Показать стерео анаглиф. Используйте красно-голубые стерео-очки для просмотра изображения в 3-D.

figure
imshow(stereoAnaglyph(I1,I2));
title('Red-cyan composite view of the stereo images');

Figure contains an axes. The axes with title Red-cyan composite view of the stereo images contains an object of type image.

Вычислите карту несоответствия.

disparityRange = [-6 10];
disparityMap = disparity(rgb2gray(I1),rgb2gray(I2),'BlockSize',...
    15,'DisparityRange',disparityRange);

Отобразите карту несоответствия. Для лучшей визуализации используйте область значений несоответствия как отображение области значений для imshow.

figure 
imshow(disparityMap,disparityRange);
title('Disparity Map');
colormap(gca,jet) 
colorbar

Figure contains an axes. The axes with title Disparity Map contains an object of type image.

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

свернуть все

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

Можно улучшить скорость функции, установив класс I1 и I2 на uint8, и количество столбцов, которые будут делиться на 4. Вводите изображения I1 и I2 должно быть вещественным, конечным и нечетким. Они должны быть одним и тем же классом.

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

Входное изображение, указанное как I2 соответствующий камере 2, указанный в 2-D полутоновом цвете. Входные изображения должны быть выпрямлены так, чтобы соответствующие точки были расположены на тех же строках. Можно улучшить скорость функции, установив класс I1 и I2 на uint8, и количество столбцов, которые будут делиться на 4. Вводите изображения I1 и I2 должно быть вещественным, конечным и нечетким. Они должны быть одним и тем же классом.

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

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

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

Пример: 'Method', 'BlockMatching', задает 'Method' для свойства задано значение 'BlockMatching'.

Алгоритм оценки диспаритета, заданный как разделенная разделенными запятой парами, состоящая из 'Method'и любой из них 'BlockMatching' или 'SemiGlobal'. Функция расхождения реализует основные блоки Matching [1] и Semi-Global Block Matching [3]. В 'BlockMatching' метод, функция вычисляет расхождение путем сравнения суммы абсолютных различий (SAD) каждого блока пикселей в изображении. В 'SemiGlobal' метод соответствия, функция дополнительно усиливает аналогичное расхождение на соседних блоках. Это дополнительное ограничение приводит к более полной оценке несоответствия, чем в 'BlockMatching' способ.

Алгоритмы выполняют следующие шаги:

  1. Вычислите меру контрастности изображения с помощью фильтра Собеля.

  2. Вычислите расхождение для каждого пикселя в I1.

  3. Отметьте элементы карты различий, disparityMap, которые не были вычислены надежно. Функция использует -realmax('single'), чтобы пометить эти элементы.

Область значений различий, заданный как разделенная разделенными запятой парами, состоящая из 'DisparityRange'и двухэлементный вектор. Двухэлементный вектор должен быть в формате [MinDisparity, MaxDisparity]. Оба элемента должны быть целым числом и могут быть отрицательными. MinDisparity и MaxDisparity должны находиться в области значений [- image width, image width]. Различия между MaxDisparity и MinDisparity должны быть разделены на 16. DisparityRange должно быть вещественным, конечным и нечетким. Если камера раньше брала I1 была справа от камеры, которую брали I2, тогда MinDisparity должны быть отрицательными.

Область значений различий зависит от расстояния между двумя камерами и расстояния между камерами и объектом интереса. Увеличьте DisparityRange когда камеры находятся далеко друг от друга или объекты находятся рядом с камерами. Чтобы определить разумное расхождение для вашего строения, отобразите стерео-анаглиф входных изображений в imtool и используйте инструмент «Расстояние» для измерения расстояний между парами соответствующих точек. Измените MaxDisparity, чтобы оно соответствовало измерению.

Размер квадратного блока, заданный как разделенная разделенными запятой парами, состоящая из 'BlockSize'и нечетное целое число в области значений [5255]. Это значение задает ширину для размера квадратного блока. Функция использует квадратный блок пикселей для сравнения между I1 и I2. BlockSize должно быть вещественным, конечным и нечетким.

Контрастный порог области значений, заданный как разделенная запятой пара, состоящий из 'ContrastThreshold'и скалярное значение в области значений (0,1]. Порог контрастности задает приемлемую область значений значений контрастности. Увеличение этого параметра приводит к тому, что меньше пикселей помечается как ненадежные ContrastThreshold. должно быть вещественным, конечным и нечетким.

Минимальное значение уникальности, заданное как разделенная разделенными запятой парами, состоящая из 'UniquenessThreshold'и неотрицательное целое число. Увеличение этого параметра приводит к тому, что функция помечает больше пикселей ненадежно. Когда значение уникальности для пикселя мало, вычисленное для него несоответствие менее надежно. Установка порога равного 0 отключает пороговое значение уникальности. UniquenessThreshold должно быть вещественным, конечным и нечетким.

Функция определяет уникальность как отношение оптимальной оценки несоответствия и менее оптимальной оценки несоответствия. Для примера:

Позвольте K быть лучшим оценочным несоответствием, и позвольте V быть соответствующим значением SAD (Sum of Absolute Difference).
Рассмотрите V как наименьшее значение SAD за всю область значений расхождения, и v как наименьшее значение SAD за всю область значений расхождения, исключая K, K -1 и K + 1.
Если v < V * (1+ 0.01* UniquenessThreshold), тогда функция помечает несоответствие для пикселя как ненадежное.

Максимальное расстояние для проверки изображения слева направо между двумя точками, заданное как разделенная разделенными запятой парами, состоящая из 'DistanceThreshold'и неотрицательное целое число. Увеличение этого параметра результатов в меньшем количестве пикселей, помеченных как ненадежные. И наоборот, когда вы уменьшаете значение порога расстояния, вы увеличиваете надежность карты различий. Можно задать этот параметр в пустую матрицу [] чтобы отключить его. DistanceThreshold должно быть вещественным, конечным и нечетким.

Порог расстояния задает максимальное расстояние между точкой в I1 и та же точка, найденная от I2. Функция находит расстояние и помечает пиксель следующим образом:

Пусть p 1 быть точкой в изображении I 1.
Шаг 1: Функция ищет лучшее соответствие точки p 1 в изображении I 2 (проверка слева направо) и находит точку p 2.
Шаг 2: Функция ищет лучшее p 2 в изображении I 1 (проверка справа налево) и находит точку p 3.
Если поиск возвращает расстояние между p 1 и p 3 больше DistanceThresholdфункция помечает несоответствие для p 1 точки как ненадежное.

Минимальный порог текстуры, заданный как разделенная разделенными запятой парами, состоящая из 'TextureThreshold'и скалярное значение в области значений [0, 1). Порог текстуры определяет минимальное значение текстуры для пикселя, чтобы быть надежным. Чем меньше текстура для блока пикселей, тем менее надежно вычисленное несоответствие для пикселей. Увеличение этого параметра приводит к тому, что большее количество пикселей помечается как ненадежное. Можно задать этот параметр как 0 чтобы отключить его. Этот параметр применяется только при установке Method на 'BlockMatching'.

Текстура пикселя определяется как сумма насыщенной контрастности, вычисленной по BlockSize-by- BlockSize окно вокруг пикселя. Функция считает расхождение, вычисленное для пикселя ненадежным и помечает его, когда текстура падает ниже значения, заданного:

Texture <X * TextureThreshold * BlockSize2

X представляет максимальное значение, поддерживаемое классом входных изображений, I1 и I2.

TextureThreshold должно быть вещественным, конечным и нечетким.

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

свернуть все

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

Функция вычисляет карту расхождения в три шага:

  1. Вычислите меру контрастности изображения с помощью фильтра Собеля.

  2. Вычислите расхождение для каждого из пикселей с помощью соответствия блоков и суммы абсолютных различий (SAD).

  3. Опционально отметьте пиксели, которые содержат ненадежные значения несоответствия. Функция устанавливает пиксель на значение, возвращаемое -realmax(' single').

Совет

Если ваша получившаяся карта расхождения выглядит зашумленной, попробуйте изменить DisparityRange. Область значений различий зависит от расстояния между двумя камерами и расстояния между камерами и объектом интереса. Увеличьте DisparityRange когда камеры находятся далеко друг от друга или объекты находятся рядом с камерами. Чтобы определить разумное расхождение для вашего строения, отобразите стерео-анаглиф входных изображений в imtool и используйте инструмент «Расстояние» для измерения расстояний между парами соответствующих точек. Измените MaxDisparity, чтобы оно соответствовало измерению.

Вопросы совместимости

расширить все

Не рекомендуемый запуск в R2019a

Ссылки

[1] Konolige, K., Small Vision Systems: Оборудование и Реализация, Proceedings of the VIII International Symposium in Robotic Research, pages 203-212, 1997.

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

[3] Hirschmuller, H., Точная и Эффективная Стерео Обработка Полуглобальным Совпадением и Взаимной Информацией, Международная Конференция по Компьютерному Зрению и Распознаванию Шаблона, 2005.

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

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