estimateFlow

Оцените оптический поток

Синтаксис

flow = estimateFlow(opticFlow,I)

Описание

пример

flow = estimateFlow(opticFlow,I) оценочный оптический поток между двумя последовательными кадрами видео.

Примеры

свернуть все

Создайте объект VideoReader для входного видеофайла, visiontraffic.avi. Задайте метку времени кадра, чтобы читать как 11.

vidReader = VideoReader('visiontraffic.avi','CurrentTime',11);

Задайте метод оценки оптического потока как opticalFlowHS. Вывод является объектом, задающим метод оценки оптического потока и его свойства.

opticFlow = opticalFlowHS
opticFlow = 
  opticalFlowHS with properties:

            Smoothness: 1
          MaxIteration: 10
    VelocityDifference: 0

Создайте пользовательское окно рисунка, чтобы визуализировать векторы оптического потока.

h = figure;
movegui(h);
hViewPanel = uipanel(h,'Position',[0 0 1 1],'Title','Plot of Optical Flow Vectors');
hPlot = axes(hViewPanel);

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

while hasFrame(vidReader)
    frameRGB = readFrame(vidReader);
    frameGray = rgb2gray(frameRGB);  
    flow = estimateFlow(opticFlow,frameGray);
    imshow(frameRGB)
    hold on
    plot(flow,'DecimationFactor',[5 5],'ScaleFactor',60,'Parent',hPlot);
    hold off
    pause(10^-3)
end

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

свернуть все

Объект для оценки оптического потока, заданной как одно из следующего:

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

Текущий кадр видео, заданный как 2D полутоновое изображение размера m-by-n. Входное изображение сгенерировано от текущего чтения кадра видео с помощью объекта VideoReader. Кадры видео в формате RGB должны быть преобразованы в 2D полутоновые изображения для оценки оптического потока.

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

свернуть все

Объект для хранения скоростных матриц оптического потока, возвращенных как объект opticalFlow.

Алгоритмы

Функция оценивает оптический поток входного видео использование метода, заданного входным объектом opticFlow. Оптический поток оценивается как движение между двумя последовательными кадрами видео. Кадр видео T в данном мгновенном tcurrent отнесен как текущий кадр и кадр видео T-1, отнесен как предыдущий кадр. Начальное значение предыдущего кадра во время tcurrent = 0 установлено как универсальное изображение полутонового значения 0.

Примечание

Если вы задаете opticFlow как объект opticalFlowLKDoG, то оценка задерживается суммой относительно количества кадров видео. Сумма задержки зависит от значения NumFrames, заданного в объекте opticalFlowLKDoG. Оптический поток, оцененный для кадра видео в tcurrent, соответствует кадру видео во время tflow=(tcurrent(NumFrames1)/2). tcurrent является временем текущего кадра видео.

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

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Смотрите также

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