disparityBM

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

Синтаксис

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, соответствующий камере 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.

Пример: 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-by-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.

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

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

Введенный в R2019a