disparityBM

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

Описание

пример

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')

Figure contains an axes. The axes with title Red-Cyan composite view of the rectified stereo pair image contains an object of type 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

Figure contains an axes. The axes with title Disparity Map contains an object of type image.

Входные параметры

свернуть все

Введите изображение, на которое ссылаются как I1 соответствие камере 1 в виде 2D полутонового изображения или a gpuArray Объект (Parallel Computing Toolbox). Функция использует это изображение в качестве ссылочного изображения для вычисления карты несоизмеримости. Вход отображает I1 и I2 должно быть действительным, конечным, и неразреженным. Кроме того, I1 и I2 должно быть одного размера и совпадающий тип данных.

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

Введите изображение, на которое ссылаются как I2 соответствие камере 2 в виде 2D полутонового изображения или a 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' и двухэлементный вектор из формы [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' значение должно быть нечетным целым числом в области значений [5, 255].

Если входными изображениями является gpuArray объекты, 'BlockSize' значение должно быть нечетным целым числом в области значений [5, 51].

Значение по умолчанию равняется 15.

Область значений контрастного порога в виде разделенной запятой пары, состоящей из 'ContrastThreshold' и скалярное значение в области значений (0, 1]. Контрастный порог задает допустимый диапазон контрастных значений. Если контрастное значение пикселя в ссылочном изображении ниже контрастного порога, то несоизмеримость, вычисленная для того пикселя, рассматривается unreliable. Увеличение этого параметра приводит к несоизмеримости для меньшего количества пикселей, отмечаемых как ненадежное.

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

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

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

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

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

Примечание

Если входными изображениями является gpuArray объекты, затем 'UniquenessThreshold' аргумент пары "имя-значение" не применяется.

Максимальное расстояние между сопряженными пикселями в стереопаре отображает в виде разделенной запятой пары, состоящей из '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).

Структура пикселя задана как сумма влажного контраста, вычисленного по BlockSize- BlockSize окно вокруг пикселя. Порог структуры задает минимальное значение структуры для пикселя, чтобы иметь надежное значение несоизмеримости. Функция рассматривает несоизмеримость для пикселя как ненадежную, если:

texture <intensitymax ×TextureThreshold×BlockSize2,

где texture является структурой пикселя. intensitymax является максимальным значением, поддержанным по условию, тип входа отображает I1 и I2.

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

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

свернуть все

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

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

Больше о

свернуть все

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

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

Алгоритмы

свернуть все

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

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

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

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

Функция вычисляет карту несоизмеримости путем выполнения этих шагов:

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

    • Для центрального процессора — сумма абсолютной разности (SAD) используется в качестве функции стоимости в соответствии блока. Функция стоимости оценивает смещение между пикселями в исправленном изображении стереопары.

    • Для графического процессора — сумма различия в квадрате (SSD) используется в качестве функции стоимости в соответствии блока. Функция стоимости оценивает смещение между пикселями в исправленном изображении стереопары.

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

Ссылки

[1] Konolige, K. "Маленькие Системы Видения: Оборудование и Реализация". В Продолжениях 8-го Международного Симпозиума в Автоматизированном Исследовании, стр 203–212. 1997.

[2] Брадский, G. и А. Кэехлер. Изучение OpenCV: компьютерное зрение с библиотекой OpenCV. Севастополь, CA: O'Reilly Media, Inc. 2008.

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

Введенный в R2019a