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 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 в данный момент tcurrent, упоминается как текущая система координат, а T-1 видеокадра упоминается как предыдущая система координат. Начальное значение предыдущей системы координат в момент времени tcurrent = 0 задается как равномерное изображение значения полутонового цвета 0.

Примечание

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

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

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

.

См. также

Введенный в R2015a