exponenta event banner

неравенство

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

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-х оттенках серого. Стереоизображение, I1 и I2, должны быть исправлены таким образом, чтобы соответствующие точки располагались на одних и тех же строках. Вы можете выполнить это исправление с помощью rectifyStereoImages функция.

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

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

Входное изображение, на которое ссылается I2 соответствие камере 2, определенный в 2-х оттенках серого. Входные изображения должны быть исправлены таким образом, чтобы соответствующие точки располагались в одних и тех же строках. Можно повысить скорость функции, задав класс 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'. Функция несоответствия реализует базовые алгоритмы сопоставления блоков [1] и сопоставления полуглобальных блоков [3]. В 'BlockMatching' в способе функция вычисляет несоответствие путем сравнения суммы абсолютных разностей (SAD) каждого блока пикселей в изображении. В 'SemiGlobal' способ согласования, причем функция дополнительно форсирует аналогичное рассогласование на соседних блоках. Это дополнительное ограничение приводит к более полной оценке несоответствия, чем в 'BlockMatching' способ.

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

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

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

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

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

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

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

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

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

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

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

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

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

Пусть p1 - точка в I1 изображения.
Шаг 1: Функция ищет наилучшее совпадение точки p1 в I2 изображения (проверка слева направо) и находит точку p2.
Шаг 2: Функция ищет наилучшее совпадение p2 в I1 изображения (проверка справа налево) и находит точку p3.
Если поиск возвращает расстояние между p1 и p3 больше, чем DistanceThreshold, функция отмечает несоответствие для точки p1 как ненадежное.

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

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

Текстура < X *TextureThreshold * BlockSize2

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

TextureThreshold должно быть реальным, конечным и непроверенным.

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

свернуть все

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

Функция вычисляет карту различий за три шага:

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

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

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

Совет

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

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

развернуть все

Не рекомендуется начинать с R2019a

Ссылки

[1] Конолиге, К., Small Vision Systems: Hardware and Implementation, материалы VIII Международного симпозиума по робототехническим исследованиям, стр. 203-212, 1997.

[2] Брэдски, Г. и А. Келер, Learning OpenCV: Computer Vision with the OpenCV Library, O'Reilly, Sebastopol, CA, 2008.

[3] Hirschmuller, H., Точная и эффективная стереообработка путем полуглобального согласования и взаимной информации, Международная конференция по компьютерному зрению и распознаванию образов, 2005.

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

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