基于MATLAB的Horn–Schunck光流算法求解运动两个相邻帧之间的运动矢量图
题目要求
任选一测试视频,输入其任意前后两针的帧整图,以及运动矢量图,运动矢量图的绘制可以按照8*8的块为矢量绘制单位。可以使用Horn和Schunck提出的光流估计算法。
。。
这是我做的一个简单的数字视频处理的课程设计,有需要的可以参考参考(hquer)
具体代码
clear all;
obj = VideoReader('viptraffic.avi'); %读取视频
i=35; %读取第几帧
frame1 = read(obj,i); %读取第x帧
frame2 = read(obj,i+1); %读取下一帧
a=frame2-frame1; %帧差图
a1=rgb2gray(a); %把帧差图变为灰度图像
flow=estimateFlow(opticalFlowHS,a1); %此处使用Horn-Schunck光流法
flow1=estimateFlow(opticalFlowLK,a1); %此处使用LK光流法
%画图。
figure(1)
subplot(1,2,1),imshow(frame1);
subplot(1,2,2),imshow(frame2);
figure(2)
imshow(a);
figure(3)
plot(flow,'DecimationFactor',[5 5],'ScaleFactor',20);view(0,270);
title('HS法 5*5');
figure(4)
plot(flow,'DecimationFactor',[8 8],'ScaleFactor',20);view(0,270);
title('HS法 8*8');
figure(5)
plot(flow1,'DecimationFactor',[5 5],'ScaleFactor',6);view(0,270);
title('LK法 5*5');
figure(6)
plot(flow1,'DecimationFactor',[8 8],'ScaleFactor',6);view(0,270);
title('LK法 8*8');
结果展示