基于视角变化的视频关键帧提取方法(附代码地址)

在这里插入图片描述
基于图像进行三维重建时,需要从视频中提取关键帧,构成图片集合。

从视频中提取关键帧时,一般的方法是按照固定帧率(时间间隔)来进行提取图片。但由于拍摄视频时,场景视角变化幅度有时大有时小,按照固定帧率提取图片集,如果帧率过小,会丢失一些对三维重建比较关键的帧,而如果帧率过大,则提取的图片集合过大,造成不必要的冗余。

本质上来说,不存在一个合适的帧率进行图片提取。用于三维重建的图片集合,只要保持相邻的两个图片之间的场景重复度足够大即可。而根据固定帧率从视频中提取图片集合的方式,没有抓住其本质。

本文提出一种方法,利用深度学习提取局部特征,根据视频中场景视角的变化幅度来提取关键帧,提高了三维重建的效果,且减少了用于三维重建的图片集的冗余。

方法具体过程如下:

  1. 将视频的当前帧作为关键帧放入图片集合,利用神经网络模型superpoint,对当前帧进行关键点(像素点坐标集合)和局部特征(像素点对应的特征,用于表示像素点的唯一性)的提取,存储关键点为cur_keypoints,存储局部特征为cur_descriptors;
  2. 对视频下一帧,利用同样的方法进行关键点和局部特征的提取,存储关键点为next_keypoints,存储局部特征为next_descriptors。将next_descriptors与cur_descriptors进行匹配,确定出next_keypoints中与cur_keypoints中相对应的关键点,计算出对应关键点之间的距离,然后求出所有对应关键点的平均距离:distance;
  3. 如果步骤2中求出的distance大于等于预先设定的距离D,则将步骤2中的帧作为当前帧,返回到步骤1。如果步骤2中求出的distance<D,则返回步骤2考察视频的下一帧。如果视频读取完毕,则结束。

本方法的优点:

  1. 避免了由于提取帧率过小,而丢失一些对三维重建时较为关键的帧;
  2. 避免了由于提取帧率过大,而造成图片集合不必要的冗余;
  3. 利用深度学习方法提取关键点和局部特征,对不同场景具有很好的鲁棒性;
  4. 抓住了关键帧提取的本质。

现已将代码上传到github上,以供大家参考学习。代码地址为:https://github.com/markshih91/video_keyframe_extraction

  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值