exponenta event banner

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

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

Входное изображение, на которое ссылается I2 соответствие камере 2, определенный как 2-е изображение оттенков серого или a gpuArray (Панель параллельных вычислений). Входные изображения 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 и MaxDisparitity должны быть целыми числами в диапазоне (-N, N).

  • Разница между значениями MaxDisparity и MinDisparity должна быть кратна 16 и меньше ширины входных изображений.

Если входные изображения gpuArray объекты шириной N, затем:

  • Значение MinDisparity должно быть равно нулю.

    Значение MaxDisparitity должно находиться в диапазоне (16, N). Если N больше 256, то значение MaxDisparitity должно быть выбрано меньше или равно 256.

    Разница между значениями MaxDisparity и MinDisparity должна быть разделена на 16.

Значение по умолчанию для диапазона различий: [0 64]. Дополнительные сведения о выборе диапазона различий см. в разделе Выбор диапазона различий.

Размер квадратичного блока, определяемого как разделенная запятыми пара, состоящая из 'BlockSize' и нечетное целое число. Это значение определяет ширину окна поиска, используемого для совпадающих элементов изображения блока в исправленной стереопаре. Диапазон для квадратичного блока зависит от типа входных изображений.

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

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

Значение по умолчанию - 15.

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

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

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

v < V × (1 + 0,01 ×UniquenessThreshold),

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

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

Примечание

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

Максимальное расстояние между сопряженными пикселями в изображении стереопары, определяемое как пара, разделенная запятыми, состоящая из 'DistanceThreshold' и неотрицательное целое число. Порог расстояния определяет максимальное расстояние между пикселями в I1 и тот же самый пиксель, найденный в I2.

Для пикселя p1 в опорном изображении I1, функция выполняет проверку слева направо, чтобы найти свой лучший совпадающий пиксель p2 в изображении I2. Для пикселя p2 функция выполняет проверку справа налево, чтобы найти свой лучший соответствующий пиксель p3 в опорном изображении. I1. Если расстояние между p1 и p3 больше, чем DistanceThreshold, функция отмечает несоответствие для пикселя p1 в опорном изображении I1 как ненадежный.

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

Примечание

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

Минимальный порог текстуры, указанный как пара, разделенная запятыми, состоящая из 'TextureThreshold' и скалярное значение в диапазоне [0, 1).

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

текстура < intensitymax ×TextureThreshold×BlockSize2,

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

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

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

свернуть все

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

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

Подробнее

свернуть все

Исправление изображения

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

Алгоритмы

свернуть все

Выбор диапазона различий

Диапазон различий должен быть выбран таким образом, чтобы охватить минимальную и максимальную величину горизонтального сдвига между соответствующими пикселями в выпрямленном изображении стереопары. Можно определить приблизительные значения горизонтального сдвига из стереоанаглифа изображения стереопары. Вычислите стереоанаглиф исправленных изображений с помощью stereoAnaglyph функция. Отображение стереоанаглифа в средстве просмотра изображений с помощью imtool функция. Чтобы измерить величину горизонтального сдвига между соответствующими точками на изображении стереопары, выберите команду «Измерить расстояние» в меню «Сервис» в окне «Просмотр изображений». Выберите минимальное и максимальное значения диспаратности для диапазона диспаратности на основе этого измерения.

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

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

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

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

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

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

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

Ссылки

[1] Конолиге, К. «Small Vision Systems: Hardware and Implementation». В трудах 8-го Международного симпозиума по робототехническим исследованиям, стр. 203-212. 1997.

[2] Брэдски, Г. и А. Келер. Обучение OpenCV: компьютерное видение с помощью библиотеки OpenCV. Себастополь, Калифорния: O'Reilly Media, Inc. 2008.

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

.
Представлен в R2019a