MATLAB+VideoReader+二帧间差分法

MATLAB+VideoReader+二帧间差分法

刚刚接触图像处理没多久,由于之前并没有学过C++,所以现在正在用MATLAB做仿真。
今天刚开始目标检测算法的帧间差分法,遇到了很多问题,今晚解决了一部分,记录一下心得。并将相关错误列举出来,避免小白再走弯路。

遇到的问题

(1)未定义函数或变量 ‘mmreader’。
(2)错误使用 VideoReader/read

		帧范围必须为 1x2 矢量形式的帧索引,第一个值小于或等于第二个值。
		帧索引必须为大于零的数值,并且小于或等于文件中的帧数。

(3)索引超出矩阵维度。

对应的解决方法

(1)以前matlab中读取视频 使用mmreader等,而现在matlab有一个专门的视频读取类 VideoReader完成视频读取的功能。

				   avi=VideoReader('vtest.avi')

(2)读数视频帧数,以防超出帧索引

		           numFrames = obj.NumberOfFrames    %读取视频的帧数

(3)对于直接读取的视频,imshow等函数不支持,读取视频帧后可以解决类似的错误

		          shipin=read(obj,[10 150]);        %读取视频帧10-150帧

特别提醒

mov(k)是一个结构体,mov(k).cdata实际上就是一个有RGB的帧。

有了这个结构体,后续处理就简便了好多!

仿真图片

第11帧

在这里插入图片描述
第12帧
在这里插入图片描述
第十三帧
在这里插入图片描述
11-12帧 二帧间差分
在这里插入图片描述
12-13帧 二帧间差分
在这里插入图片描述

.M文件(附较详细注释)

%%%二帧间差分法
clc;
clear all;
close all;

obj = VideoReader(‘vtest.avi’); %读取视频
numFrames = obj.NumberOfFrames %读取视频的帧数
shipin=read(obj,[10 150]); %读取视频帧

N=2; %考虑N帧的帧间差分法
start=10; %起始帧
threshold=20; %二值化的阈值

for k=1+start:N+1+start
figure(k)
imshow(shipin(:,:,:,k));
mov(k).cdata=rgb2gray(shipin(:,:,:,k)); %将彩色图像转换为灰度图像,变成二维;
% mov(k)是一个结构体,mov(k).cdata实际上就是一个有RGB的帧
end

[row,col]=size(mov(1+start).cdata); %以mov(1+start).cdata的格式生成一个矩阵
alldiff=zeros(row,col,N); %生成一个三维的矩阵alldiff用于存储最终的各个帧的差分结果

for k=1+start:N+start
diff=abs(mov(k).cdata-mov(k+1).cdata); %邻帧差分,并求行列式的值
idiff=diff>threshold; %二值化,idiff中的数据位逻辑值,diff中的数值为unit8
alldiff(:,:,k)=double(idiff);
end

i=1; %观察仿真结果
for k=1+start:N+start
figure(i);
imshow(alldiff(:,:,k))
title(strcat(num2str(k),‘帧’,’-’,num2str(k+1),‘帧’)); %strcat:横向连接字符串。
i=i+1;
end

引用相关博客网址

【1】https://blog.csdn.net/shmilymdt/article/details/48245519
【2】https://www.baidu.com/link?url=YbubYE_O9afp4qlPfYlLWU61Mg5x6FyFlFpkrZWY8pyDBd7hl_DlSBVTeMgpFCWk-Q-1DTvGfv40C8p9VAPcKK&wd=&eqid=f056b49000010724000000035c8f8581
【3】https://www.baidu.com/link?url=BvyQU6O1oX3KI6lnIa-38_p4JWex__rtX-rj6pesYCXn89sbfKqxCwq_JXMHsl0zUnC2gRhsRvxgeq7rfSYuOEIRyWp5biHD8VsUuM4_4X3&wd=&eqid=a9c9026a00000b9b000000035c8f8152

感谢

刚入坑没多久,感谢各位CSDN大神提供了很多代码。
小白很菜,希望也能尽自己小小的一份力量。愿再回首,自己会笑。
大家晚安,好梦!

发布了24 篇原创文章 · 获赞 15 · 访问量 5394

猜你喜欢

转载自blog.csdn.net/qq_34122861/article/details/88651540
今日推荐