opticalFlowLKDoG

Объект для оценки оптического потока с помощью производной Лукаса-Кэнэйда Гауссова метода

Описание

Создайте объект оптического потока для оценки направления и скорости перемещения объектов с помощью метода производной гауссовых (DoG) Лукаса-Кэнэйда. Используйте объектный функциональный estimateFlow, чтобы оценить векторы оптического потока. Используя функцию объекта reset, можно сбросить внутреннее состояние объекта оптического потока.

Создание

Синтаксис

opticFlow = opticalFlowLKDoG
opticFlow = opticalFlowLKDoG(Name,Value)

Описание

opticFlow = opticalFlowLKDoG возвращается оптический поток возражают, что можно использовать, чтобы оценить направление и скорость движущихся объектов в видео. Оптический поток оценивается с помощью метода производной гауссовых (DoG) Лукаса-Кэнэйда.

пример

opticFlow = opticalFlowLKDoG(Name,Value) возвращает объект оптического потока со свойствами, заданными в качестве одного или нескольких аргументов пары Name,Value. Любые незаданные свойства имеют значения по умолчанию. Заключите каждое имя свойства в кавычки.

Например, opticalFlowLKDoG('NumFrames',3)

Свойства

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

Количество буферизированных кадров для временного сглаживания, заданного как положительный скаляр с целочисленным знаком. Когда вы увеличиваете это число, метод оценки оптического потока становится менее устойчивым к резким изменениям в траектории движущихся объектов. Сумма задержки оценки потока зависит от значения NumFrames. Выходной поток соответствует изображению в tflow = tcurrent − 0.5 (NumFrames-1), где tcurrent является временем текущего изображения.

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

Стандартное отклонение для фильтра сглаживания градиента, заданного как положительная скалярная величина.

Порог для шумоподавления, заданного как положительная скалярная величина. Когда вы увеличиваете это число, перемещение объектов оказывает меньше влияния на вычисление оптического потока.

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

estimateFlowОцените оптический поток
resetСбросьте внутреннее состояние объекта оценки оптического потока

Примеры

свернуть все

Считайте видеофайл. Задайте метку времени кадра, который будет считан.

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

Создайте объект оптического потока для оценки оптического потока с помощью Лукаса-Кэнэйда метод DoG. Задайте порог для шумоподавления. Вывод является объектом оптического потока определение метода оценки оптического потока и его свойств.

opticFlow = opticalFlowLKDoG('NoiseThreshold',0.0005)
opticFlow = 
  opticalFlowLKDoG with properties:

              NumFrames: 3
       ImageFilterSigma: 1.5000
    GradientFilterSigma: 1
         NoiseThreshold: 5.0000e-04

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

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

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

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

Алгоритмы

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

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

Ixu+Iyv+It=0

.

  • Ix, Iy, и It пространственно-временные производные яркости изображения.

  • u является горизонтальным оптическим потоком.

  • v является вертикальным оптическим потоком.

Ссылки

[1] Баррон, J. L. Д. Дж. Флит, С. С. Беокемин и Т. А. Беркитт. “Производительность методов оптического потока”. В Продолжениях Конференции по IEEE по Компьютерному зрению и Распознаванию образов (CVPR), 236-242. Равнина, IL: CVPR, 1992.

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

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

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