opticalFlowHS

Объект для оценки оптического потока с помощью Рогового-Schunck метода

Описание

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

Создание

Синтаксис

opticFlow = opticalFlowHS
opticFlow = opticalFlowHS(Name,Value)

Описание

opticFlow = opticalFlowHS возвращается оптический поток возражают, что можно использовать, чтобы оценить направление и скорость движущихся объектов в видео. Оптический поток оценивается с помощью Рогового-Schunck метода.

пример

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

Например, opticalFlowHS('Smoothness',1.5)

Свойства

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

Ожидаемая гладкость оптического потока, заданного как положительная скалярная величина. Увеличьте это значение, когда будет увеличенное движение между последовательными кадрами. Типичное значение для 'Smoothness' вокруг 1.

Максимальное количество итераций, заданных как положительный скаляр с целочисленным знаком. Увеличьте это значение, чтобы оценить оптический поток объектов с низкой скоростью.

Итеративное вычисление останавливается, когда количество итераций равняется значению 'MaxIteration' или когда алгоритм достигает набора значений для 'VelocityDifference'. Чтобы остановить вычисление только при помощи 'MaxIteration', установите значение 'VelocityDifference' к 0.

Минимальное абсолютное различие скорости, заданное как положительная скалярная величина. Это значение зависит от типа входных данных. Уменьшите это значение, чтобы оценить оптический поток объектов, которые имеют низкую скорость.

Итеративное вычисление останавливается, когда алгоритм достигает набора значений для 'VelocityDifference', или количество итераций равняется 'MaxIteration'. Чтобы использовать только 'VelocityDifference', чтобы остановить вычисление, установите 'MaxIteration' на Inf.

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

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

Примеры

свернуть все

Создайте объект 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 = rgb2gray(frameRGB);  
    flow = estimateFlow(opticFlow,frameGray);
    imshow(frameRGB)
    hold on
    plot(flow,'DecimationFactor',[5 5],'ScaleFactor',60,'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