Вычислить карту несоответствия с помощью сопоставления блоков
вычисляет карту несоответствия из пары исправленных стереоизображений disparityMap = disparityBM(I1,I2)I1 и I2, с использованием метода согласования блоков. Дополнительные сведения об исправлении стереоизображений см. в разделе Исправление изображений.
указывает параметры, использующие один или несколько аргументов пары имя-значение.disparityMap = disparityBM(I1,I2,Name,Value)
Загрузите исправленное изображение стереопары.
I1 = imread('rectified_left.png'); I2 = imread('rectified_right.png');
Создайте стереоанаглиф выпрямленного изображения стереопары и выведите его на экран. Изображение можно просмотреть в 3-D с помощью красно-голубых стереоочков.
A = stereoAnaglyph(I1,I2);
figure
imshow(A)
title('Red-Cyan composite view of the rectified stereo pair image')
Преобразование исправленных входных цветных изображений в изображения в оттенках серого.
J1 = im2gray(I1); J2 = im2gray(I2);
Вычислите карту несоответствия. Укажите диапазон различий как [0, 48] и минимальное значение уникальности как 20.
disparityRange = [0 48]; disparityMap = disparityBM(J1,J2,'DisparityRange',disparityRange,'UniquenessThreshold',20);
Просмотрите карту несоответствий. Установите для диапазона отображения то же значение, что и для диапазона несоответствия.
figure imshow(disparityMap,disparityRange) title('Disparity Map') colormap jet colorbar

I1 - Входное изображение 1gpuArray объектВходное изображение, на которое ссылается I1 соответствие камере 1, определенный как 2-е изображение оттенков серого или a gpuArray (Панель параллельных вычислений). Функция использует это изображение в качестве опорного для вычисления карты несоответствия. Входные изображения I1 и I2 должно быть реальным, конечным и непроверенным. Также, I1 и I2 должны иметь одинаковый размер и одинаковый тип данных.
Типы данных: single | double | int16 | uint8 | uint16
I2 - Входное изображение 2gpuArray объектВходное изображение, на которое ссылается I2 соответствие камере 2, определенный как 2-е изображение оттенков серого или a gpuArray (Панель параллельных вычислений). Входные изображения I1 и I2 должно быть реальным, конечным и непроверенным. I1 и I2 должны иметь одинаковый размер и одинаковый тип данных.
Типы данных: single | double | int16 | uint8 | uint16
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
disparityBM(I1,I2,'DisparityRange',[0 64])'DisparityRange' - Диапазон различий[0 64] (по умолчанию) | двухэлементный векторДиапазон различий, указанный как пара, разделенная запятыми, состоящая из 'DisparityRange' и двухэлементный вектор вида [MinDisparity
MaxDisparity]. MinDisparity - минимальное несоответствие, MaxDisparity - максимальное несоответствие. Условия, которым должен соответствовать этот диапазон, зависят от типа входных изображений.
Если входные изображения представляют собой изображения в градациях серого шириной N, то:
MinDisparity и MaxDisparitity должны быть целыми числами в диапазоне (-N, N).
Разница между значениями MaxDisparity и MinDisparity должна быть кратна 16 и меньше ширины входных изображений.
Если входные изображения gpuArray объекты шириной N, затем:
Значение MinDisparity должно быть равно нулю.
Значение MaxDisparitity должно находиться в диапазоне (16, N). Если N больше 256, то значение MaxDisparitity должно быть выбрано меньше или равно 256.
Разница между значениями MaxDisparity и MinDisparity должна быть разделена на 16.
Значение по умолчанию для диапазона различий: [0 64]. Дополнительные сведения о выборе диапазона различий см. в разделе Выбор диапазона различий.
'BlockSize' - Размер квадратичного блока15 (по умолчанию) | нечетное целое числоРазмер квадратичного блока, определяемого как разделенная запятыми пара, состоящая из 'BlockSize' и нечетное целое число. Это значение определяет ширину окна поиска, используемого для совпадающих элементов изображения блока в исправленной стереопаре. Диапазон для квадратичного блока зависит от типа входных изображений.
Если входные изображения являются изображениями в оттенках серого, 'BlockSize' значение должно быть нечетным целым числом в диапазоне [5, 255].
Если входные изображения gpuArray объекты, 'BlockSize' значение должно быть нечетным целым числом в диапазоне [5, 51].
Значение по умолчанию - 15.
'ContrastThreshold' - Диапазон порога контрастности0.5 (по умолчанию) | скаляр в диапазоне (0, 1]Диапазон порога контрастности, указанный как пара, разделенная запятыми, состоящая из 'ContrastThreshold' и скалярное значение в диапазоне (0, 1]. Порог контрастности определяет приемлемый диапазон значений контрастности. Если значение контрастности пикселя в опорном изображении ниже порога контрастности, то расхождение, вычисленное для этого пикселя, считается ненадежным. Увеличение этого параметра приводит к рассогласованию для меньшего числа пикселей, помеченных как ненадежные.
'UniquenessThreshold' - Минимальное значение уникальности15 (по умолчанию) | неотрицательное целое числоМинимальное значение уникальности, указанное как разделенная запятыми пара, состоящая из 'UniquenessThreshold' и неотрицательное целое число.
Функция помечает оцененное значение K несоответствия для пикселя как ненадежное, если:
v < V × (1 + 0,01 ×UniquenessThreshold),
где V - сумма абсолютной разности (SAD), соответствующая значению диспаратности K. v - наименьшее значение SAD во всем диапазоне диспаратности, исключая K, K-1 и K + 1.
Увеличение значения UniquenessThreshold приводит к тому, что значения несоответствия для большего числа пикселей помечаются как ненадежные. Чтобы отключить использование порога уникальности, установите это значение в [].
Примечание
Если входные изображения gpuArray объекты, затем 'UniquenessThreshold' аргумент пары имя-значение не применяется.
'DistanceThreshold' - Максимальное расстояние между сопряженными пикселями в изображении стереопары[] (отключено) (по умолчанию) | неотрицательное целое числоМаксимальное расстояние между сопряженными пикселями в изображении стереопары, определяемое как пара, разделенная запятыми, состоящая из 'DistanceThreshold' и неотрицательное целое число. Порог расстояния определяет максимальное расстояние между пикселями в I1 и тот же самый пиксель, найденный в I2.
Для пикселя p1 в опорном изображении I1, функция выполняет проверку слева направо, чтобы найти свой лучший совпадающий пиксель p2 в изображении I2. Для пикселя p2 функция выполняет проверку справа налево, чтобы найти свой лучший соответствующий пиксель p3 в опорном изображении. I1. Если расстояние между p1 и p3 больше, чем DistanceThreshold, функция отмечает несоответствие для пикселя p1 в опорном изображении I1 как ненадежный.
Увеличение значения DistanceThreshold приводит к тому, что значения несоответствия для меньшего числа пикселей помечаются как ненадежные. И наоборот, уменьшение значения DistanceThreshold, повышает надежность карты несоответствия. Чтобы отключить использование порога расстояния, установите это значение в [].
Примечание
Если входные изображения gpuArray объекты, затем 'DistanceThreshold' аргумент пары имя-значение не применяется.
'TextureThreshold' - Минимальный порог текстуры0.0002 (по умолчанию) | скалярное значение в диапазоне [0, 1)Минимальный порог текстуры, указанный как пара, разделенная запятыми, состоящая из 'TextureThreshold' и скалярное значение в диапазоне [0, 1).
Текстура пикселя определяется как сумма насыщенного контраста, вычисленного по BlockSizeоколо-BlockSize окно вокруг пикселя. Порог текстуры определяет минимальное значение текстуры для пикселя, чтобы иметь надежное значение различия. Функция считает несоответствие для пикселя ненадежным, если:
текстура < intensitymax ×TextureThreshold×BlockSize2,
где текстура - текстура пикселя. intensitymax - максимальное значение, поддерживаемое типом данных входных изображений. I1 и I2.
Увеличение значения 'TextureThreshold' приводит к тому, что значения несоответствия для большего числа пикселей помечаются как ненадежные. Чтобы отключить использование порога текстуры, задайте для этого значения значение [].
disparityMap - Карта несоответствияgpuArray объектКарта неравенства для исправленного изображения пары стерео, возвращенного как 2-е изображение оттенков серого или a gpuArray объект. Функция возвращает карту несоответствия с тем же размером, что и входные изображения I1 и I2. Каждое значение в этом выводе относится к смещению между сопряженными пикселями в изображении стереопары. Дополнительные сведения о вычислении карты несоответствий см. в разделе Вычисление карты несоответствий с помощью сопоставления блоков.
Типы данных: single
Входные изображения I1 и I2 необходимо исправить перед вычислением карты несоответствий. Исправление гарантирует, что соответствующие точки в изображении стереопары находятся в одних и тех же строках. Можно исправить изображение входной стереопары с помощью rectifyStereoImages функция. Эталонное изображение должно быть одинаковым для исправления и вычисления карты различий.
Диапазон различий должен быть выбран таким образом, чтобы охватить минимальную и максимальную величину горизонтального сдвига между соответствующими пикселями в выпрямленном изображении стереопары. Можно определить приблизительные значения горизонтального сдвига из стереоанаглифа изображения стереопары. Вычислите стереоанаглиф исправленных изображений с помощью stereoAnaglyph функция. Отображение стереоанаглифа в средстве просмотра изображений с помощью imtool функция. Чтобы измерить величину горизонтального сдвига между соответствующими точками на изображении стереопары, выберите команду «Измерить расстояние» в меню «Сервис» в окне «Просмотр изображений». Выберите минимальное и максимальное значения диспаратности для диапазона диспаратности на основе этого измерения.
Например, этот рисунок отображает стереоанаглиф выпрямленного изображения стереопары и значения горизонтального сдвига, измеренные между соответствующими точками в изображении стереопары. Минимальное и максимальное значения сдвига вычисляются как 8 и 31 соответственно. На основе этих значений диапазон различий может быть выбран как [0, 48].

Функция вычисляет карту различий, выполнив следующие шаги:
Вычислите несоответствие для каждого пикселя с помощью метода согласования блоков, приведенного в [1].
Для CPU - сумма абсолютных разностей (SAD) используется в качестве функции затрат при согласовании блоков. Функция затрат оценивает смещение между пикселями в выпрямленном изображении стереопары.
Для GPU - сумма квадратичной разности (SSD) используется в качестве функции затрат при согласовании блоков. Функция затрат оценивает смещение между пикселями в выпрямленном изображении стереопары.
При необходимости отметьте пикселы для ненадежности на основе ContrastThreshold, UniquenessThreshold, DistanceThreshold, и TextureThreshold пары имя-значение. Функция устанавливает ненадежные значения диспаратности как NaN.
[1] Конолиге, К. «Small Vision Systems: Hardware and Implementation». В трудах 8-го Международного симпозиума по робототехническим исследованиям, стр. 203-212. 1997.
[2] Брэдски, Г. и А. Келер. Обучение OpenCV: компьютерное видение с помощью библиотеки OpenCV. Себастополь, Калифорния: O'Reilly Media, Inc. 2008.
Поддерживает создание кода только в дженерик-программе MATLAB Host Computer целевая платформа.
Поддержка графического процессора будет удалена в следующем выпуске.
Максимальное значение несоответствия, поддерживаемое для gpuArray составляет 256 объектов.
Дополнительные сведения см. в разделе Запуск функций MATLAB на графическом процессоре (панель инструментов параллельных вычислений).
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.