exponenta event banner

opticalFlowLKDoG

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

Описание

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

Создание

Описание

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

пример

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

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

Свойства

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

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

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

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

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

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

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

Примеры

свернуть все

Прочитайте видеофайл. Укажите метку времени считываемого кадра.

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

Создайте объект оптического потока для оценки оптического потока с помощью метода Lucas-Kanade 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);

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

while hasFrame(vidReader)
    frameRGB = readFrame(vidReader);
    frameGray = im2gray(frameRGB);
    flow = estimateFlow(opticFlow,frameGray);
    imshow(frameRGB)
    hold on
    plot(flow,'DecimationFactor',[5 5],'ScaleFactor',35,'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.

Алгоритмы

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

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

Ixu + Iyv + Это = 0

.

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

  • u - горизонтальный оптический поток.

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

Ссылки

[1] Бэррон, Дж. Л., Д. Дж. Флит, С. С. Боухемин и Т. А. Буркитт. «Выполнение методов оптического потока». В материалах Конференции IEEE по компьютерному зрению и распознаванию образов (CVPR), 236-242. Шампейн, IL: CVPR, 1992.

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

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

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