estimateFlow

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

Описание

пример

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 = im2gray(frameRGB);  
    flow = estimateFlow(opticFlow,frameGray);
    imshow(frameRGB)
    hold on
    plot(flow,'DecimationFactor',[5 5],'ScaleFactor',60,'Parent',hPlot);
    hold off
    pause(10^-3)
end

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

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

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

свернуть все

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

Вход 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