Вычислите соответствие блока использования карты несоизмеримости
disparityMap = disparityBM(I1,I2)
disparityMap = disparityBM(I1,I2,Name,Value)
вычисляет карту несоизмеримости из пары исправленных стереоизображений 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
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: 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]
. Для получения дополнительной информации о выборе области значений несоизмеримости смотрите Range of Disparity Выбора.
'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 <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.0002
(значение по умолчанию) | скалярное значение в области значений [0, 1)Минимальный порог структуры, заданный как пара, разделенная запятой, состоящая из 'TextureThreshold'
и скалярного значения в области значений [0, 1).
Структура пикселя задана как сумма влажного контраста, вычисленного по BlockSize
-by-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.
Указания и ограничения по применению:
Версия графического процессора этой функции работает только над NVIDIA графические процессоры. Максимальное значение несоизмеримости, поддержанное для объектов gpuArray
, 256.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.