видение. BlockMatcher

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

Описание

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

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

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

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.

Создание

Синтаксис

blkMatcher = vision.BlockMatcher
blkMatcher = vision.BlockMatcher(Name,Value)

Описание

пример

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

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

Свойства

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

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

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

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

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

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

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

Если вы устанавливаете это свойство на '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. Это свойство применяется только, когда вы устанавливаете свойство AccumulatorDataType на 'Custom'.

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

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

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

Для версий ранее, чем R2016b, используйте функцию step, чтобы запустить Систему object™ алгоритм. Аргументы к step являются объектом, который вы создали, сопровождаемый аргументами, показанными в этом разделе.

Например, y = step(obj,x) и y = obj(x) выполняют эквивалентные операции.

Синтаксис

V = blkMatcher(I)
C = blkMatcher(I)
Y = blkMatcher(I,iref)

Описание

пример

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.

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

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

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

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

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

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

Значения скорости, возвращенные как матрица.

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

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

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

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

release(obj)

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

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

Примеры

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

Считайте и преобразуйте изображение RGB в шкалу полутонов.

img1 = im2double(rgb2gray(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

Представленный в R2012a