В этом примере показано, как вычислить скорости оптического потока для движущегося объекта в видео или последовательности изображений.
Считайте два фрейма изображения из последовательности изображений в рабочее пространство MATLAB.
I1 = imread('car_frame1.png'); I2 = imread('car_frame2.png');
Откройте модель Simulink®.
modelname = 'ex_blkopticalflow.slx';
open_system(modelname)
Модель читает изображения при помощи блока Image From Workspace. Чтобы вычислить скорости оптического потока, необходимо сначала преобразовать входные цветные изображения в изображения интенсивности при помощи блока Color Space Conversion. Затем найдите скорости при помощи Optical Flow
блок с этими значениями параметров:
Метод - Horn-Schunck
Вычислите оптический поток между - Two images
Фактор гладкости - 1
Остановите итеративное решение - When maximum number of iterations is reached
Максимальное количество итераций - 10
Velocity выход - Horizontal and vertical components in complex form
Наложите обоих фреймы изображения при помощи блока Compositing и используйте наложенное изображение, чтобы построить результаты.
Запустите модель.
out = sim(modelname);
Считайте выходные скорости и наложенное изображение.
Vx = real(out.simout); Vy = imag(out.simout); img = out.simout1;
Создайте объект оптического потока при помощи opticalFlow
функция.
flow = opticalFlow(Vx,Vy);
Отобразите наложенное изображение и постройте векторы скорости при помощи plot
функция.
figure imshow(img) hold on plot(flow,'DecimationFactor',[5 5],'ScaleFactor',40)