Вычислите карту расхождения с использованием соответствия блоков
вычисляет карту расхождения из пары исправленных стерео изображений disparityMap = disparityBM(I1,I2)I1 и I2, при помощи метода соответствия блоков. Чтобы узнать больше об исправлении стерео изображений, смотрите Изображение Rectification.
задает опции, используя один или несколько аргументы пары "имя-значение".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-D полутоновое изображение или gpuArray (Parallel Computing Toolbox) объект. Функция использует это изображение в качестве ссылки изображения для вычисления карты расхождения. Входные изображения I1 и I2 должно быть вещественным, конечным и нечетким. Кроме того, I1 и I2 должен иметь тот же размер и совпадающий тип данных.
Типы данных: single | double | int16 | uint8 | uint16
I2 - Входное изображение 2gpuArray объектВходное изображение, указанное как I2 соответствующий камере 2, заданный как 2-D полутоновое изображение или 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' - Область значений различий[0 64] (по умолчанию) | двухэлементный векторОбласть значений различий, заданный как разделенная разделенными запятой парами, состоящая из '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]. Для получения дополнительной информации о выборе области значений различий смотрите Выбор области значений различий.
'BlockSize' - Размер квадратного блока15 (по умолчанию) | нечетное целое числоРазмер квадратного блока, заданный как разделенная разделенными запятой парами, состоящая из 'BlockSize' и нечетное целое число. Это значение задает ширину окна поиска, используемого для совпадающих с блоками пикселей в исправленном стерео пары изображении. Значение области значений для квадратного блока зависит от типа входа изображений.
Если входные изображения являются полутоновыми изображениями, 'BlockSize' значение должно быть нечетным целым числом в области значений [5, 255].
Если входные изображения gpuArray объекты, 'BlockSize' значение должно быть нечетным целым числом в области значений [5, 51].
Значение по умолчанию является 15.
'ContrastThreshold' - Область значений контрастного порога0.5 (по умолчанию) | скаляром в области значений (0, 1]Область значений контрастного порога, заданный как разделенная разделенными запятой парами, состоящая из 'ContrastThreshold' и скалярное значение в области значений (0, 1]. Порог контрастности задает приемлемую область значений значений контрастности. Если значение контрастности пикселя в ссылку изображении ниже порога контрастности, то расхождение, вычисленное для этого пикселя, рассматривается unreliable. Увеличение этого параметра приводит к различию для меньшего количества пикселей, помеченных как ненадежные.
'UniquenessThreshold' - Минимальное значение уникальности15 (по умолчанию) | неотрицательное целое числоМинимальное значение уникальности, заданное как разделенная разделенными запятой парами, состоящая из 'UniquenessThreshold' и неотрицательное целое число.
Функция помечает предполагаемое значение несоответствия, K для пикселя, как ненадежное, если:
v <<reservedrangesplaceholder1> × (1+0.01× UniquenessThreshold),
где V - сумма абсолютного различия (SAD), соответствующая K значения диспаритета. v является наименьшим значением SAD за всю область значений различий, исключая K, K -1 и K + 1.
Увеличение значения UniquenessThreshold приводит к тому, что значения несоответствия для большего количества пикселей помечаются как ненадежные. Чтобы отключить использование порога уникальности, установите это значение равным [].
Примечание
Если входные изображения gpuArray объекты, затем 'UniquenessThreshold' аргумент пары "имя-значение" не применяется.
'DistanceThreshold' - Максимальное расстояние между сопряженными пикселями в изображении стереопары[] (disabled) (по умолчанию) | неотрицательное целое числоМаксимальное расстояние между сопряженными пикселями в стереопаре изображения, заданное как разделенная разделенными запятой парами, состоящая из '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.0002 (по умолчанию) | скалярное значение в области значений [0, 1)Минимальный порог текстуры, заданный как разделенная разделенными запятой парами, состоящая из 'TextureThreshold' и скалярное значение в области значений [0, 1).
Текстура пикселя определяется как сумма насыщенной контрастности, вычисленной по BlockSize-by- BlockSize окно вокруг пикселя. Порог текстуры определяет минимальное значение текстуры для пикселя, чтобы иметь надежное значение несоответствия. Функция рассматривает несоответствие для пикселя как ненадежное, если:
texture <<reservedrangesplaceholder1> × <reservedrangesplaceholder0>× <reservedrangesplaceholder0>2,
где texture - текстура пикселя. intensitymax является максимальным значением, поддерживаемым типом данных входов изображений I1 и I2.
Увеличение значения 'TextureThreshold' приводит к тому, что значения несоответствия для большего количества пикселей помечаются как ненадежные. Чтобы отключить использование порога текстуры, установите это значение равным [].
disparityMap - Карта несоответствияgpuArray объектКарта расхождения для выпрямленного стерео пары изображения, возвращенная как 2-D полутоновое изображение или gpuArray объект. Функция возвращает карту расхождения с таким же размером, как вход изображения I1 и I2. Каждое значение в этом выходе относится к перемещению между сопряженными пикселями в изображении стерео пары. Для получения дополнительной информации об вычислении карты расхождения смотрите Вычисление карты расхождения с использованием соответствия блоков.
Типы данных: single
Входные изображения I1 и I2 перед вычислением карты несоответствия необходимо исправить. Исправление гарантирует, что соответствующие точки в изображении стерео пары находятся на тех же строках. Можно исправить вход стерео пары изображение при помощи rectifyStereoImages функция. Эталонное изображение должно быть тем же самым для расчета исправления и карты расхождения.
Необходимо выбрать область значений расхождения, чтобы покрыть минимальное и максимальное количество горизонтального сдвига между соответствующими пикселями в исправленном стерео пары изображении. Можно определить приблизительные значения горизонтального сдвига по стерео-анаглифу изображения стерео пары. Вычислите стерео-анаглиф выпрямленных изображений с помощью stereoAnaglyph функция. Отобразите стерео-анаглиф в Image Viewer при помощи imtool функция. Чтобы измерить величину горизонтального сдвига между соответствующими точками в стерео пары изображении, выберите команду Измерить расстояние (Measure Distance) в меню Инструменты (Tools) в Image Viewer. Выберите минимальное и максимальное значения различия для области значений различий на основе этого измерения.
Для примера этот рисунок отображает стерео-анаглиф выпрямленного стерео- пары изображения и значения горизонтального сдвига, измеренные между соответствующими точками в стерео- паре изображении. Минимальное и максимальное значения сдвига вычисляются как 8 и 31 соответственно. На основе этих значений область значений различий может быть выбран как [0, 48].

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