disparitySGM

Вычислите карту несоизмеримости посредством полуглобального соответствия

Синтаксис

disparityMap = disparitySGM(I1,I2)
disparityMap = disparitySGM(I1,I2,Name,Value)

Описание

пример

disparityMap = disparitySGM(I1,I2) вычисляет карту несоизмеримости из пары исправленных стереоизображений I1 и I2, при помощи метода полуглобального соответствия (SGM). Чтобы знать больше об исправлении стереоизображений, смотрите Исправление Изображений.

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, соответствующий камере 1, заданный как 2D полутоновое изображение или объект gpuArray. Функция использует это изображение в качестве ссылочного изображения для вычисления карты несоизмеримости. Вход отображает I1, и I2 должен быть действительным, конечным, и неразреженным. Кроме того, I1 и I2 должны быть одного размера и совпадающий тип данных.

Типы данных: single | double | int16 | uint8 | uint16

Введите изображение, на которое ссылаются как I2, соответствующий камере 2, заданный как 2D полутоновое изображение или объект gpuArray. Вход отображает I1, и I2 должен быть действительным, конечным, и неразреженным. I1 и I2 должны быть одного размера и совпадающий тип данных.

Типы данных: single | double | int16 | uint8 | uint16

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: disparitySGM(I1,I2,'DisparityRange',[0 64])

Область значений несоизмеримости, заданной как пара, разделенная запятой, состоящая из 'DisparityRange' и двухэлементный вектор формы [MinDisparity MaxDisparity]. MinDisparity является минимальной несоизмеримостью, и MaxDisparity является максимальной несоизмеримостью.

Для входных изображений ширины N, MinDisparity и MaxDisparity должны быть целыми числами в области значений (–N, N). Различие между MaxDisparity и значениями MinDisparity должно быть делимым 8 и должно быть меньше чем или равным 128.

Значением по умолчанию для области значений несоизмеримости является [0 128]. Для получения дополнительной информации о выборе области значений несоизмеримости смотрите Range of Disparity Выбора.

Типы данных: integers

Минимальное значение уникальности, заданной как пара, разделенная запятой, состоящая из 'UniquenessThreshold' и неотрицательного целого числа.

Функция отмечает предполагаемое значение несоизмеримости K для пикселя как ненадежное, если:

v <V × (1+0.01×UniquenessThreshold),

где V является Расстояние Хемминга, соответствующее значению несоизмеримости K. v является наименьшим значением Расстояния Хемминга в целой области значений несоизмеримости, исключая K, K –1 и K +1.

Увеличение значения UniquenessThreshold приводит к значениям несоизмеримости для большего количества пикселей, отмечаемых как ненадежное. Чтобы отключить использование порога уникальности, установите это значение к 0.

Выходные аргументы

свернуть все

Карта несоизмеримости для исправленного изображения стереопары, возвращенного как 2D полутоновое изображение или объект gpuArray. Функция возвращает карту несоизмеримости с тем же размером, как вход отображает I1 и I2. Каждое значение в этом выводе относится к смещению между сопряженными пикселями в изображении стереопары. Для получения дополнительной информации о вычислении карты несоизмеримости, см., что Вычислительная Карта Несоизмеримости Использует Полуглобальное Соответствие.

Типы данных: single

Больше о

свернуть все

Отобразите исправление

Вход отображает I1, и I2 должен быть исправлен прежде, чем вычислить карту несоизмеримости. Исправление гарантирует, что соответствующие точки в изображении стереопары находятся на тех же строках. Можно исправить входное изображение стереопары при помощи функции rectifyStereoImages. Ссылочное изображение должно быть тем же самым для исправления и вычисления карты несоизмеримости.

Алгоритмы

свернуть все

Выбор области значений несоизмеримости

Область значений несоизмеримости должна быть выбрана, чтобы покрыть минимум и максимальную сумму горизонтального сдвига между соответствующими пикселями в исправленном изображении стереопары. Можно определить аппроксимированные горизонтальные значения сдвига от анаглифа стерео изображения стереопары. Вычислите анаглиф стерео исправленных изображений при помощи функции stereoAnaglyph. Отобразите анаглиф стерео в Image Viewer при помощи функции imtool. Чтобы измерить сумму горизонтального сдвига между соответствующими точками в изображении стереопары, выберите Measure Distance из меню Tools в Image Viewer. Выберите минимальные и максимальные значения несоизмеримости для области значений несоизмеримости на основе этого измерения.

Например, эта фигура отображает анаглиф стерео исправленного изображения стереопары и горизонтальных значений сдвига, измеренных между соответствующими точками в изображении стереопары. Минимальные и максимальные значения сдвига вычисляются как 8 и 31 соответственно. На основе этих значений область значений несоизмеримости может быть выбрана в качестве [0, 48].

Вычисление карты несоизмеримости Используя полуглобальное соответствие

  1. Вычислите преобразование переписи исправленного изображения стереопары.

  2. Вычислите Расстояние Хемминга между пикселями в преобразованном изображении переписи, чтобы получить матрицу стоимости соответствия.

  3. Вычислите мудрую пикселем несоизмеримость из соответствия с матрицей стоимости при помощи полуглобального метода сопоставления, данного в [1].

  4. Опционально, отметьте пиксели для ненадежности на основе пары "имя-значение" UniquenessThreshold. Функция устанавливает значения несоизмеримости ненадежных пикселей к NaN.

Ссылки

[1] Hirschmuller, H. "Точная и Эффективная Обработка Стерео Полуглобальной переменной, Соответствующей и Взаимной информацией". В Продолжениях Конференции по IEEE по Компьютерному зрению и Распознаванию образов (CVPR), стр 807-814. Сан-Диего, CA: IEEE, 2005.

Расширенные возможности

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Введенный в R2019a