exponenta event banner

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 и преобразовать в изображения в оттенках серого. Оцените оптический поток по последовательным кадрам изображения. Отображение текущего кадра изображения и построение графика векторов оптического потока в виде графика quiver.

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 and an object of type uipanel. The axes contains 2 objects of type image, quiver.

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

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

свернуть все

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

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

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

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

свернуть все

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

Алгоритмы

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

Примечание

При указании opticFlow как opticalFlowLKDoG объект, затем задержки оценки на величину относительно количества видеокадров. Величина задержки зависит от значения NumFrames определено в opticalFlowLKDoG объект. Оптический поток, оцениваемый для видеокадра в токе, соответствует видеокадру в момент времени tflow = (tcturch (NumFrames 1 )/2). current - время текущего видеокадра.

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

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.

См. также

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