Вычислите карту расхождения с использованием соответствия блоков
вычисляет карту расхождения из пары исправленных стерео изображений 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.