Вычислите карту несоответствия через полуглобальное совпадение
вычисляет карту расхождения из пары исправленных стерео изображений disparityMap
= disparitySGM(I1
,I2
)I1
и I2
, с использованием метода SGM. Чтобы узнать больше об исправлении стерео изображений, смотрите Изображение Rectification.
задает опции, используя один или несколько аргументы пары "имя-значение".disparityMap
= disparitySGM(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 = disparitySGM(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
.
disparitySGM(I1,I2,'DisparityRange',[0 64])
'DisparityRange'
- Область значений различий[0 128]
(по умолчанию) | двухэлементный векторОбласть значений различий, заданный как разделенная разделенными запятой парами, состоящая из 'DisparityRange'
и двухэлементный вектор вида [MinDisparity
MaxDisparity]. MinDisparity - это минимальное расхождение, а MaxDisparity - это максимальное расхождение.
Для входных изображений N ширины MinDisparity и MaxDisparity должны быть целыми числами в области значений (- N, N). Различие между MaxDisparity и MinDisparity значениями должна быть делиться на 8 и должна быть меньше или равной 128.
Значение по умолчанию для области значений неоднородности [0 128]
. Для получения дополнительной информации о выборе области значений различий смотрите Выбор области значений различий.
Типы данных: integers
'UniquenessThreshold'
- Минимальное значение уникальности15
(по умолчанию) | неотрицательное целое числоМинимальное значение уникальности, заданное как разделенная разделенными запятой парами, состоящая из 'UniquenessThreshold'
и неотрицательное целое число.
Функция помечает предполагаемое значение несоответствия, K для пикселя, как ненадежное, если:
v <<reservedrangesplaceholder1> × (1+0.01× UniquenessThreshold
),
где V - расстояние Хемминга, соответствующее значению дисперсии K. v является наименьшим значением расстояния Хемминга за всю область значений различий, исключая K, K -1 и K + 1.
Увеличение значения UniquenessThreshold
приводит к тому, что значения несоответствия для большего количества пикселей помечаются как ненадежные. Чтобы отключить использование порога уникальности, установите это значение равным 0.
disparityMap
- Карта несоответствияgpuArray
объектКарта расхождения для выпрямленного стерео пары изображения, возвращенная как 2-D полутоновое изображение или gpuArray
объект. Функция возвращает карту расхождения с таким же размером, как вход изображения I1
и I2
. Каждое значение в этом выходе относится к перемещению между сопряженными пикселями в изображении стерео пары. Для получения дополнительной информации об вычислении карты расхождения смотрите Вычисление карты расхождения с использованием Semi-Global Matching.
Типы данных: single
Входные изображения I1
и I2
перед вычислением карты несоответствия необходимо исправить. Исправление гарантирует, что соответствующие точки в изображении стерео пары находятся на тех же строках. Можно исправить вход стерео пары изображение при помощи rectifyStereoImages
функция. Эталонное изображение должно быть тем же самым для расчета исправления и карты расхождения.
Необходимо выбрать область значений расхождения, чтобы покрыть минимальное и максимальное количество горизонтального сдвига между соответствующими пикселями в исправленном стерео пары изображении. Можно определить приблизительные значения горизонтального сдвига по стерео-анаглифу изображения стерео пары. Вычислите стерео-анаглиф выпрямленных изображений с помощью stereoAnaglyph
функция. Отобразите стерео-анаглиф в Image Viewer при помощи imtool
функция. Чтобы измерить величину горизонтального сдвига между соответствующими точками в стерео пары изображении, выберите команду Измерить расстояние (Measure Distance) в меню Инструменты (Tools) в Image Viewer. Выберите минимальное и максимальное значения различия для области значений различий на основе этого измерения.
Для примера этот рисунок отображает стерео-анаглиф выпрямленного стерео- пары изображения и значения горизонтального сдвига, измеренные между соответствующими точками в стерео- паре изображении. Минимальное и максимальное значения сдвига вычисляются как 8 и 31 соответственно. На основе этих значений область значений различий может быть выбран как [0, 48].
Вычислите преобразование переписи исправленного изображения стерео пары.
Вычислите Расстояние Хемминга между пикселями в преобразованном переписью изображении, чтобы получить матрицу затрат соответствия.
Вычислите пиксельное несоответствие от соответствия матрицы затрат с помощью полуглобального метода соответствия, приведенного в [1].
Опционально отметьте пиксели ненадежности на основе UniquenessThreshold
Пара "имя-значение". Функция устанавливает значения неоднородности ненадежных пикселей равными NaN
.
[1] Hirschmuller, H. «Точная и эффективная стерео обработка полуглобальным совпадением и взаимной информацией». В работе Конференции IEEE по компьютерному зрению и распознаванию шаблона (CVPR), стр. 807-814. Сан-Диего, Калифорния: IEEE, 2005.
The аргументов пары "имя-значение", 'DisparityRange'
и 'UniquenessThreshold'
должны быть постоянными во время компиляции.
Поддерживает генерацию кода только в типовых MATLAB Host Computer
целевая платформа.
Указания и ограничения по применению:
Входные изображения I1
и I2
должен быть исправлен, того же размера и совпадающего типа данных.
Генерация кода GPU поддерживает 'UniquenessThreshold'
и 'disparityMap'
Пары "имя-значение".
Для очень больших входов требования к памяти алгоритма могут превысить пределы устройства GPU. В таких случаях рассмотрите уменьшение размера входа, чтобы продолжить генерацию кода.
Эта функция полностью поддерживает массивы GPU. Для получения дополнительной информации смотрите Запуск функций MATLAB на графическом процессоре (Parallel Computing Toolbox).
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.