disparityBM

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

Описание

пример

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

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

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

Входное изображение, указанное как 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' и двухэлементный вектор вида [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' и нечетное целое число. Это значение задает ширину окна поиска, используемого для совпадающих с блоками пикселей в исправленном стерео пары изображении. Значение области значений для квадратного блока зависит от типа входа изображений.

Если входные изображения являются полутоновыми изображениями, 'BlockSize' значение должно быть нечетным целым числом в области значений [5, 255].

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

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

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

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

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

v <<reservedrangesplaceholder1> × (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 <<reservedrangesplaceholder1> × <reservedrangesplaceholder0>× <reservedrangesplaceholder0>2,

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

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

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

свернуть все

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

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

Подробнее о

свернуть все

Выпрямление изображений

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

Алгоритмы

свернуть все

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

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

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

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

Функция вычисляет карту расхождения путем следующих шагов:

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

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

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

  2. Опционально отметьте пиксели ненадежности на основе 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.

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

.
Введенный в R2019a