Вычислите соответствие блока использования карты несоизмеримости
вычисляет карту несоизмеримости из пары исправленных стереоизображений 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 полутоновое изображение или gpuArray
объект. Функция использует это изображение в качестве ссылочного изображения для вычисления карты несоизмеримости. Вход отображает I1
и I2
должно быть действительным, конечным, и неразреженным. Кроме того, I1
и I2
должно быть одного размера и совпадающий тип данных.
Типы данных: single
| double
| int16
| uint8
| uint16
I2
— Введите изображение 2gpuArray
объектВведите изображение, на которое ссылаются как I2
соответствие камере 2, заданный как 2D полутоновое изображение или 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'
— Область значений несоизмеримости
(значение по умолчанию) | двухэлементный векторОбласть значений несоизмеримости, заданной как разделенная запятой пара, состоящая из '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
×BlockSize
2,
где 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.
Указания и ограничения по применению:
Версия графического процессора этой функции работает только над NVIDIA графические процессоры. Максимальное значение несоизмеримости поддержано для gpuArray
объекты 256.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.