opticalFlowLK

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

Описание

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

Создание

Описание

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

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

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+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