vision.BlockMatcher

Оцените движение между изображениями или видеокадрами

Описание

Для оценки движения между изображениями или видеокадрами.

  1. Создайте vision.BlockMatcher Объекту и установите его свойства.

  2. Вызывайте объект с аргументами, как будто это функция.

Дополнительные сведения о работе системных объектов см. в разделе «Что такое системные объекты?».

Создание

Описание

пример

blkMatcher = vision.BlockMatcher возвращает объект, blkMatcher, который оценивает движение между двумя изображениями или двумя видеокадрами. Объект выполняет эту оценку с использованием способа согласования блоков путем перемещения блока пикселей по области поиска.

blkMatcher = vision.BlockMatcher(Name,Value) устанавливает свойства с помощью одной или нескольких пар "имя-значение". Заключайте каждое имя свойства в кавычки. Для примера, blkMatcher = vision.BlockMatcher('ReferenceFrameSource','Input port')

Свойства

расширить все

Если не указано иное, свойства являются нетронутыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируются, когда вы вызываете их, и release функция разблокирует их.

Если свойство настраивается, можно изменить его значение в любой момент.

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Использование Системных объектов.

Источник опорной системы координат, заданный как 'Input port' или 'Property'. Когда вы устанавливаете ReferenceFrameSource свойство к 'Input port', вход опорной системы координат должен быть задан как step метод объекта блока matcher.

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

Лучший метод поиска соответствия, заданный как 'Exhaustive' или 'Three-step'. Задайте, как найти блок пикселей в системе координат k + 1, который лучше всего соответствует блоку пикселей в систему координат k. Если вы задаете это свойство равным 'Exhaustive'Объект block matcher выбирает местоположение блока пикселей в систему координат k + 1. Блок согласования делает это путем перемещения блока по области поиска по одному пикселю за раз, что является вычислительно дорогим.

Если вы задаете это свойство равным 'Three-step'Объект блока matcher ищет блок пикселей в систему координат k + 1, который лучше всего соответствует блоку пикселей в систему координат k используя постоянно уменьшающийся размер шага. Объект начинается с размера шага, приблизительно равного половине максимальной области значений поиска. На каждом шаге объект сравнивает центральную точку области поиска с восемью точками поиска, расположенными на контурах области, и перемещает центральную точку к точке поиска, значения которой являются ближайшими к точкам центральной точки. Затем объект уменьшает размер шага вдвое и снова начинает процесс. Эта опция является менее в вычислительном отношении дорогим, хотя иногда он не находит оптимального решения.

Размер блока, заданный в пикселях как двухэлементный вектор.

Поиск максимального объема, заданный как двухэлементный вектор. Задайте максимальное количество пикселей, которое любой центральный пиксель в блоке пикселей может перемещать, от изображения к изображению или от системы координат к системе координат. Объект matcher блока использует это свойство для определения размера области поиска.

Соответствие критериям между блоками, заданное как 'Mean square error (MSE)' или 'Mean absolute difference (MAD').

Выходная форма движения, заданная как 'Magnitude-squared' или 'Horizontal and vertical components in complex form'.

Входное перекрытие подразделения изображения, заданное в пикселях как двухэлементный вектор.

Свойства с фиксированной точкой

Метод округления для операций с фиксированной точкой, заданный как 'Floor', 'Ceiling', 'Convergent', 'Nearest' , 'Round' , 'Simplest' , или 'Zero'.

Действие, которое берётся, когда целочисленный вход вне области допустимого, задается как 'Wrap' или 'Saturate'.

Тип данных продукта, заданный как 'Same as input' или 'Custom'.

Словосочетание продукта и длины дроби, заданные как масштабированные numerictype (Fixed-Point Designer) объект. Это свойство применяется только при установке AccumulatorDataType свойство к 'Custom'.

Тип данных аккумулятора, заданный как 'Same as product', 'Same as input', или 'Custom'.

Слово аккумулятора и длины дробей, заданные как масштабируемые numerictype (Fixed-Point Designer) объект. Это свойство применяется только при установке AccumulatorDataType свойство к 'Custom'.

Использование

Описание

пример

V = blkMatcher(I) вычисляет движение входа изображения I от одного видеокадра к другому и возвращается V как матрица величин скоростей.

C = blkMatcher(I) вычисляет движение входа изображения I от одного видеокадра к другому и возвращается C как комплексная матрица горизонтальных и вертикальных компонентов, когда вы устанавливаете OutputValue свойство к Horizontal and vertical components in complex form.

Y = blkMatcher(I,iref) вычисляет движение между входным изображением I и опорное изображение iref когда вы устанавливаете ReferenceFrameSource свойство к Input port.

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

расширить все

Входные данные, заданные как скаляр, вектор или матрица значений интенсивности.

Входные опорные данные, заданные в виде скаляра, вектора или матрицы значений интенсивности.

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

расширить все

Скорость величин, возвращенная как матрица.

Горизонтальные и вертикальные компоненты, возвращенные как комплексная матрица.

Движение между изображением и эталонным изображением, возвращаемое как матрица.

Функции объекта

Чтобы использовать функцию объекта, задайте Системную object™ в качестве первого входного параметра. Например, чтобы освободить системные ресурсы системного объекта с именем obj, используйте следующий синтаксис:

release(obj)

расширить все

stepЗапуск алгоритма системного объекта
releaseОтпустите ресурсы и допустите изменения в значениях свойств системного объекта и входных характеристиках
resetСброс внутренних состояний Системного объекта

Примеры

свернуть все

Чтение и преобразование изображения RGB в полутоновое.

img1 = im2double(im2gray(imread('onion.png')));

Создайте блок matcher и объект альфа-смесителя.

hbm = vision.BlockMatcher('ReferenceFrameSource',...
        'Input port','BlockSize',[35 35]);
hbm.OutputValue = 'Horizontal and vertical components in complex form';
halphablend = vision.AlphaBlender;

Смещите первое изображение на [5 5] пикселей, чтобы создать второе изображение.

img2 = imtranslate(img1,[5,5]);

Вычислите движение для двух изображений.

motion = hbm(img1,img2);

Смешайте два изображения.

img12 = halphablend(img2,img1);

Используйте график полей градиента, чтобы показать направление движения на изображениях.

[X,Y] = meshgrid(1:35:size(img1,2),1:35:size(img1,1));         
imshow(img12)
hold on
quiver(X(:),Y(:),real(motion(:)),imag(motion(:)),0)
hold off

Figure contains an axes. The axes contains 2 objects of type image, quiver.

Введенный в R2012a