видение. TemplateMatcher

Найдите шаблон в изображении

Описание

Определять местоположение шаблона в изображении.

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

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

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

Создание

Синтаксис

tMatcher = vision.TemplateMatcher
tMatcher = vision.TemplateMatcher(Name,Value)

Описание

пример

tMatcher = vision.TemplateMatcher возвращает шаблон matcher Системный объект, tMatcher. Этот объект выполняет сравнение с шаблонами путем сдвига шаблона с шагом одно пикселя во внутренней части изображения.

tMatcher = vision.TemplateMatcher(Name,Value) свойства наборов с помощью одной или нескольких пар "имя-значение". Заключите каждое имя свойства в кавычки. Например, tMatcher = vision.TemplateMatcher('Metric','Sum of absolute differences')

Свойства

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

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

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

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

Метрика используется для сравнения с шаблонами, заданного как 'Sum of absolute differences', 'Sum of squared differences' или 'Maximum absolute difference'.

Тип вывода, заданного как 'Metric matrix' или 'Best match location'.

Задайте критерии поиска, чтобы найти минимальное различие между двумя входными параметрами, заданными как 'Exhaustive' или 'Three-step'. Если вы устанавливаете это свойство на 'Exhaustive', поиски объектов минимального пикселя разницы пикселем. Если вы устанавливаете это свойство на 'Three-step', поиски объектов минимального различия с помощью постоянно уменьшающегося размера шага. Метод 'Three-step' является в вычислительном отношении менее дорогим, чем метод 'Exhaustive', но иногда не находит оптимальное решение. Это свойство применяется, когда вы устанавливаете свойство OutputValue на 'Best match location'.

Включите метрическим значениям вывод, заданный как true или false. Это свойство применяется, когда вы устанавливаете свойство OutputValue на 'Best match location'.

Размер метрических значений, заданных как нечетное число. Размер N, N-by-N матрица метрических значений как нечетное число. Например, если матричный размер имеет размер 3х3, устанавливает это свойство на 3. Это свойство применяется, когда вы устанавливаете свойство OutputValue на 'Best match location' и свойство BestMatchNeighborhoodOutputPort к true.

Включите спецификацию ROI через вход, заданный как true или false. Установите это свойство на true задавать видимую область (ROI), по которой можно выполнить сравнение с шаблонами. Если вы устанавливаете это свойство на true, ROI должен быть задан. В противном случае целое входное изображение используется.

Включите вывод флага, указывающего, является ли какая-либо часть ROI внешним входным изображением, заданным как true или false. Когда вы устанавливаете это свойство на true, объект возвращает флаг ROI. Флаг, когда установлено в false, указывает, что часть ROI за пределами входного изображения. Это свойство применяется, когда вы устанавливаете свойство ROIInputPort на true

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

Округляя метод для операций фиксированной точки, заданных как '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) выполняют эквивалентные операции.

Синтаксис

location = tMatcher(I,T)
[location,Nvals,Nvalid] = tMatcher(I,T,ROI)
[location,Nvals,Nvalid,ROIvalid] = tMatcher(I,T,ROI)
[location,ROIvalid] = tMatcher(I,T,ROI)

Описание

пример

location = tMatcher(I,T) вычисляет [x y] координаты места, location, лучшего соответствия шаблона между матрицей изображений, I, и матрицей шаблона, T. Выходные координаты относительно левого верхнего угла изображения. Объект вычисляет местоположение путем сдвига шаблона с шагом одно пикселя во внутренней части изображения.

[location,Nvals,Nvalid] = tMatcher(I,T,ROI)возвращается местоположение лучшего шаблона совпадают с location, метрическими значениями вокруг лучшего соответствия Nvals и логический флаг Nvalid. Это применяется, когда вы устанавливаете свойство OutputValue на 'Best match location' и свойство BestMatchNeighborhoodOutputPort к true.

[location,Nvals,Nvalid,ROIvalid] = tMatcher(I,T,ROI) также возвращает логический флаг, ROIvalid, чтобы указать, является ли ROI вне границ входного изображения I. Это применяется, когда вы устанавливаете свойство OutputValue на 'Best match location', и BestMatchNeighborhoodOutputPort, ROIInputPort и свойства ROIValidityOutputPort к true.

[location,ROIvalid] = tMatcher(I,T,ROI)также возвращает логический флаг ROIvalid, указывающий, является ли заданным ROI вне границ входного изображения I. Это применяется, когда вы устанавливаете свойство OutputValue на 'Best match location' и обоих свойства ROIInputPort и ROIValidityOutputPort к true.

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

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

Введите изображение, заданное или как 2D изображение полутонового или как истинного цвета.

Введите шаблон, заданный как 2D изображение полутонового или истинного цвета.

Введите ROI, заданный как четырехэлементный вектор, [x y width height], где первые два элемента представляют координаты верхнего левого угла прямоугольного ROI.

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

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

Метрическая матрица значения, заданная как матрица. Значение false для Nvalid указывает что окружение вокруг лучшего соответствия, расширенного вне границ метрической матрицы значения Nvals.

Допустимое окружение, sepcified как true или false. Значение false для Nvalid указывает что окружение вокруг лучшего соответствия, расширенного вне границ метрической матрицы значения Nvals.

Допустимое окружение ROI, заданное как true или false. Значение false для ROIvalid указывает, что ROI вне границ входного изображения.

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

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

release(obj)

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

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

Примеры

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

Этот пример показывает, как удалить эффект движения камеры от видеопотока.

Введение

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

Инициализация

Создайте Систему object™, чтобы считать видео из мультимедийного файла. Мы устанавливаем вывод быть интенсивности только видео.

% Input video file which needs to be stabilized.
filename = 'shaky_car.avi';

hVideoSource = vision.VideoFileReader(filename, ...
                                      'ImageColorSpace', 'Intensity',...
                                      'VideoOutputDataType', 'double');

Создайте шаблон matcher Системный объект, чтобы вычислить местоположение лучшего соответствия цели в кадре видео. Мы используем это местоположение, чтобы найти перевод между последовательными кадрами видео.

hTM = vision.TemplateMatcher('ROIInputPort', true, ...
                            'BestMatchNeighborhoodOutputPort', true);

Создайте Системный объект, чтобы отобразить исходное видео и стабилизированное видео.

hVideoOut = vision.VideoPlayer('Name', 'Video Stabilization');
hVideoOut.Position(1) = round(0.4*hVideoOut.Position(1));
hVideoOut.Position(2) = round(1.5*(hVideoOut.Position(2)));
hVideoOut.Position(3:4) = [650 350];

Здесь мы инициализируем некоторые переменные, используемые в цикле обработки.

pos.template_orig = [109 100]; % [x y] upper left corner
pos.template_size = [22 18];   % [width height]
pos.search_border = [15 10];   % max horizontal and vertical displacement
pos.template_center = floor((pos.template_size-1)/2);
pos.template_center_pos = (pos.template_orig + pos.template_center - 1);
fileInfo = info(hVideoSource);
W = fileInfo.VideoSize(1); % Width in pixels
H = fileInfo.VideoSize(2); % Height in pixels
BorderCols = [1:pos.search_border(1)+4 W-pos.search_border(1)+4:W];
BorderRows = [1:pos.search_border(2)+4 H-pos.search_border(2)+4:H];
sz = fileInfo.VideoSize;
TargetRowIndices = ...
  pos.template_orig(2)-1:pos.template_orig(2)+pos.template_size(2)-2;
TargetColIndices = ...
  pos.template_orig(1)-1:pos.template_orig(1)+pos.template_size(1)-2;
SearchRegion = pos.template_orig - pos.search_border - 1;
Offset = [0 0];
Target = zeros(18,22);
firstTime = true;

Потоковый цикл обработки

Это - основной цикл обработки, который использует объекты, которых мы инстанцировали выше, чтобы стабилизировать входное видео.

while ~isDone(hVideoSource)
    input = hVideoSource();

    % Find location of Target in the input video frame
    if firstTime
      Idx = int32(pos.template_center_pos);
      MotionVector = [0 0];
      firstTime = false;
    else
      IdxPrev = Idx;

      ROI = [SearchRegion, pos.template_size+2*pos.search_border];
      Idx = hTM(input,Target,ROI);

      MotionVector = double(Idx-IdxPrev);
    end

    [Offset, SearchRegion] = updatesearch(sz, MotionVector, ...
        SearchRegion, Offset, pos);

    % Translate video frame to offset the camera motion
    Stabilized = imtranslate(input, Offset, 'linear');

    Target = Stabilized(TargetRowIndices, TargetColIndices);

    % Add black border for display
    Stabilized(:, BorderCols) = 0;
    Stabilized(BorderRows, :) = 0;

    TargetRect = [pos.template_orig-Offset, pos.template_size];
    SearchRegionRect = [SearchRegion, pos.template_size + 2*pos.search_border];

    % Draw rectangles on input to show target and search region
    input = insertShape(input, 'Rectangle', [TargetRect; SearchRegionRect],...
                        'Color', 'white');
    % Display the offset (displacement) values on the input image
    txt = sprintf('(%+05.1f,%+05.1f)', Offset);
    input = insertText(input(:,:,1),[191 215],txt,'FontSize',16, ...
                    'TextColor', 'white', 'BoxOpacity', 0);
    % Display video
    hVideoOut([input(:,:,1) Stabilized]);
end

Релиз

Здесь вы вызываете метод релиза на объектах закрыть любые открытые файлы и устройства.

release(hVideoSource);

Заключение

Используя функциональность Computer Vision Toolbox™ из командной строки MATLAB® легко реализовать сложные системы как видео стабилизация.

Приложение

Следующая функция помощника используется в этом примере.

Алгоритмы

Типичное использование шаблона matcher включает нахождение небольшой области в рамках увеличенного изображения. Область задана изображением шаблона, которое может быть столь же большим как входное изображение, но которое обычно меньше, чем входное изображение.

Объектные выходные параметры лучшие координаты соответствия, относительно верхнего левого угла изображения. [x y] координаты местоположения соответствуют центру шаблона. Когда вы используете шаблон с нечетным числом пикселей, объект использует центр шаблона. Когда вы используете шаблон с четным числом пикселей, объект использует верхний левый пиксель в центре для местоположения. Следующая таблица показывает как объектные выходные параметры местоположение (LOC) четных и нечетных шаблонов:

Нечетное число пикселей в шаблонеЧетное число пикселей в шаблоне

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

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