exponenta event banner

opticalFlowLK

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

Описание

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

Создание

Описание

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

пример

opticFlow = opticalFlowLK('NoiseThreshold',threshold) возвращает объект оптического потока со свойством 'NoiseThreshold' указано как Name,Value пара. Заключите имя свойства в кавычки.

Например, opticalFlowLK('NoiseThreshold',0.05)

Свойства

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

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

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

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

Примеры

свернуть все

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

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

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

opticFlow = opticalFlowLK('NoiseThreshold',0.009);

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

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',10,'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