opticalFlowHS

Объект для оценки оптического потока с помощью метода Хорна-Шунка

Описание

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

Создание

Описание

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

пример

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 = 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.

Алгоритмы

расширить все

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

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