Вычислите соответствие блока использования карты несоизмеримости
вычисляет карту несоизмеримости из пары исправленных стереоизображений 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 = rgb2gray(I1); J2 = rgb2gray(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 в виде 2D полутонового изображения или a gpuArray Объект (Parallel Computing Toolbox). Функция использует это изображение в качестве ссылочного изображения для вычисления карты несоизмеримости. Вход отображает I1 и I2 должно быть действительным, конечным, и неразреженным. Кроме того, I1 и I2 должно быть одного размера и совпадающий тип данных.
Типы данных: single | double | int16 | uint8 | uint16
I2 — Введите изображение 2gpuArray объектВведите изображение, на которое ссылаются как I2 соответствие камере 2 в виде 2D полутонового изображения или a gpuArray Объект (Parallel Computing Toolbox). Вход отображает 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' — Область значений несоизмеримости (значение по умолчанию) | двухэлементный векторОбласть значений несоизмеримости в виде разделенной запятой пары, состоящей из 'DisparityRange' и двухэлементный вектор из формы [MinDisparity
MaxDisparity]. MinDisparity является минимальной несоизмеримостью, и MaxDisparity является максимальной несоизмеримостью. Условия, которым должна удовлетворить эта область значений, зависят от типа входных изображений.
Если входные изображения являются полутоновыми изображениями ширины N, то:
MinDisparity и MaxDisparity должны быть целыми числами в области значений (–N, N).
Различие между MaxDisparity и значениями MinDisparity должно быть делимым 16 и меньше, чем ширина входных изображений.
Если входными изображениями является gpuArray объекты ширины N, затем:
Значение MinDisparity должно быть равным нулю.
Значение MaxDisparity должно быть в области значений (16, N). Если N больше 256, то MaxDisparity должен быть выбран в качестве меньше чем или равного 256.
Различие между MaxDisparity и значениями MinDisparity должно быть делимым 16.
Значением по умолчанию для области значений несоизмеримости является [0 64]. Для получения дополнительной информации о выборе области значений несоизмеримости смотрите Range of Disparity Выбора.
'BlockSize' — Размер блока в квадрате (значение по умолчанию) | нечетное целое числоРазмер блока в квадрате в виде разделенной запятой пары, состоящей из 'BlockSize' и нечетное целое число. Это значение задает ширину окна поиска, используемого для пикселей соответствия блока в исправленном изображении стереопары. Область значений для блока размера в квадрате зависит от типа входных изображений.
Если входные изображения являются полутоновыми изображениями, 'BlockSize' значение должно быть нечетным целым числом в области значений [5, 255].
Если входными изображениями является gpuArray объекты, 'BlockSize' значение должно быть нечетным целым числом в области значений [5, 51].
Значение по умолчанию равняется 15.
'ContrastThreshold' — Область значений контрастного порога (значение по умолчанию) | скаляр в области значений (0, 1]Область значений контрастного порога в виде разделенной запятой пары, состоящей из 'ContrastThreshold' и скалярное значение в области значений (0, 1]. Контрастный порог задает допустимый диапазон контрастных значений. Если контрастное значение пикселя в ссылочном изображении ниже контрастного порога, то несоизмеримость, вычисленная для того пикселя, рассматривается unreliable. Увеличение этого параметра приводит к несоизмеримости для меньшего количества пикселей, отмечаемых как ненадежное.
'UniquenessThreshold' — Минимальное значение уникальности (значение по умолчанию) | неотрицательное целое числоМинимальное значение уникальности в виде разделенной запятой пары, состоящей из '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.
Для пикселя p 1 в ссылочном изображении I1, функция выполняет слева направо проверка, чтобы найти ее лучший пиксель соответствия p 2 в изображении I2. Для пикселя p 2, функция выполняет справа налево проверка, чтобы найти ее лучший пиксель соответствия p 3 в ссылочном изображении I1. Если расстояние между p1 и p3 больше DistanceThreshold, функция отмечает несоизмеримость для пикселя p1 в ссылочном изображении I1 как ненадежный.
Увеличение значения DistanceThreshold результаты в значениях несоизмеримости для меньшего количества пикселей, отмечаемых как ненадежный. С другой стороны, уменьшая значение DistanceThreshold, увеличивает надежность карты несоизмеримости. Чтобы отключить использование порога расстояния, установите это значение к [].
Примечание
Если входными изображениями является gpuArray объекты, затем 'DistanceThreshold' аргумент пары "имя-значение" не применяется.
'TextureThreshold' — Минимальный порог структуры (значение по умолчанию) | скалярное значение в области значений [0, 1)Минимальный порог структуры в виде разделенной запятой пары, состоящей из 'TextureThreshold' и скалярное значение в области значений [0, 1).
Структура пикселя задана как сумма влажного контраста, вычисленного по BlockSize- BlockSize окно вокруг пикселя. Порог структуры задает минимальное значение структуры для пикселя, чтобы иметь надежное значение несоизмеримости. Функция рассматривает несоизмеримость для пикселя как ненадежную, если:
texture <intensitymax ×TextureThreshold×BlockSize2,
где texture является структурой пикселя. intensitymax является максимальным значением, поддержанным по условию, тип входа отображает I1 и I2.
Увеличение значения 'TextureThreshold' результаты в значениях несоизмеримости для большего количества пикселей, отмечаемых как ненадежный. Чтобы отключить использование порога структуры, установите это значение к [].
disparityMap — Карта несоизмеримостиgpuArray объектКарта несоизмеримости для исправленного изображения стереопары, возвращенного как 2D полутоновое изображение или gpuArray объект. Функция возвращает карту несоизмеримости с тем же размером, как вход отображает I1 и I2. Каждое значение в этом выходе относится к смещению между сопряженными пикселями в изображении стереопары. Для получения дополнительной информации о вычислении карты несоизмеримости, см., что Вычислительная Карта Несоизмеримости Использует Соответствие Блока.
Типы данных: single
Вход отображает I1 и I2 должен быть исправлен прежде, чем вычислить карту несоизмеримости. Исправление гарантирует, что соответствующие точки в изображении стереопары находятся на тех же строках. Можно исправить входное изображение стереопары при помощи rectifyStereoImages функция. Ссылочное изображение должно быть тем же самым для исправления и расчета карты несоизмеримости.
Область значений несоизмеримости должна быть выбрана, чтобы покрыть минимум и максимальную сумму горизонтального сдвига между соответствующими пикселями в исправленном изображении стереопары. Можно определить аппроксимированные горизонтальные значения сдвига из анаглифа стерео изображения стереопары. Вычислите анаглиф стерео исправленных изображений при помощи stereoAnaglyph функция. Отобразите анаглиф стерео в Image Viewer при помощи imtool функция. Чтобы измерить сумму горизонтального сдвига между соответствующими точками в изображении стереопары, выберите Measure Distance из меню Tools в Image Viewer. Выберите минимальные и максимальные значения несоизмеримости для области значений несоизмеримости на основе этого измерения.
Например, этот рисунок отображает анаглиф стерео исправленного изображения стереопары и горизонтальных значений сдвига, измеренных между соответствующими точками в изображении стереопары. Минимальные и максимальные значения сдвига вычисляются как 8 и 31 соответственно. На основе этих значений область значений несоизмеримости может быть выбрана в качестве [0, 48].

Функция вычисляет карту несоизмеримости путем выполнения этих шагов:
Вычислите несоизмеримость для каждого пикселя при помощи метода сопоставления блока, данного в [1].
Для центрального процессора — сумма абсолютной разности (SAD) используется в качестве функции стоимости в соответствии блока. Функция стоимости оценивает смещение между пикселями в исправленном изображении стереопары.
Для графического процессора — сумма различия в квадрате (SSD) используется в качестве функции стоимости в соответствии блока. Функция стоимости оценивает смещение между пикселями в исправленном изображении стереопары.
Опционально, отметьте пиксели для ненадежности на основе ContrastThreshold, UniquenessThreshold, DistanceThreshold, и TextureThreshold пары "имя-значение". Функция устанавливает ненадежные значения несоизмеримости к NaN.
[1] Konolige, K. "Маленькие Системы Видения: Оборудование и Реализация". В Продолжениях 8-го Международного Симпозиума в Автоматизированном Исследовании, стр 203–212. 1997.
[2] Брадский, G. и А. Кэехлер. Изучение OpenCV: компьютерное зрение с библиотекой OpenCV. Севастополь, CA: O'Reilly Media, Inc. 2008.
Генерация кода поддержек только в типовом MATLAB Host Computer целевая платформа.
Указания и ограничения по применению:
Максимальное значение несоизмеримости поддержано для gpuArray объекты 256.
Для получения дополнительной информации смотрите функции MATLAB Запуска на графическом процессоре (Parallel Computing Toolbox).
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.