opticalFlowLKDoG

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

Описание

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

Создание

Описание

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);

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

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

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+It=0

.

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

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

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

Ссылки

[1] Barron, J. L., D. J. Fleet, S. S. Боушемин, и Т. А. Буркитт. «Эффективность технологий оптического потока». В работе Конференции IEEE по компьютерному зрению и распознаванию шаблона (CVPR), 236-242. Champaign, IL: CVPR, 1992.

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

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

.
Введенный в R2015a