exponenta event banner

видение. 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 способ объекта блока согласования.

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

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

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

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

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

Критерии соответствия между блоками, указанные как '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 (Конструктор фиксированных точек). Это свойство применяется только при установке AccumulatorDataType свойство для 'Custom'.

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

Длины слов и дробей в накопителе, заданные как масштабированные numerictype (Конструктор фиксированных точек). Это свойство применяется только при установке 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™ System в качестве первого входного аргумента. Например, для освобождения системных ресурсов объекта System с именем obj, используйте следующий синтаксис:

release(obj)

развернуть все

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

Примеры

свернуть все

Чтение и преобразование изображения RGB в градации серого.

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

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

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

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

[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