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

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

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

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

方法具体过程如下:

  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. 【ML】基于机器学习的心脏病预测研究(附代码和数据集,多层感知机模型)

    写在前面: 首先感谢兄弟们的订阅,让我有创作的动力,在创作过程我会尽最大努力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌. 之前创作过心脏病预测研究文章如下: [ML]基于机器学 ...

  2. 【ML】基于机器学习的心脏病预测研究(附代码和数据集,随机森林模型)

    写在前面: 首先感谢兄弟们的订阅,让我有创作的动力,在创作过程我会尽最大努力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌. 之前创作过心脏病预测研究文章如下: [ML]基于机器学 ...

  3. 【目标检测】基于yolov5海上船舶目标检测(附代码和数据集)

    Hello,大家好,我是augustqi.今天给大家分享的目标检测项目是:基于yolov5海上船舶目标检测(附代码和数据集) Part1 前言 传统的海上目标检测是通过雷达来实现,但是随着技术的发展, ...

  4. 【ML】基于LSTM的心脏病预测研究(附代码和数据集,系列1)

    写在前面: 首先感谢兄弟们的订阅,让我有创作的动力,在创作过程我会尽最大努力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌. 之前创作过心脏病预测研究文章如下: [ML]基于机器学 ...

  5. FPGA项目开发:基于FPGA的伪随机数发生器(附代码)

    FPGA项目开发:基于FPGA的伪随机数发生器(附代码) 今天是画师和各位大侠见面了,执笔绘画FPGA江湖,本人写了篇关于FPGA的伪随机数发生器学习笔记,这里分享给大家,仅供参考. 一.概念 随机数 ...

  6. Python 多个视频拼接成一个视频工具(附代码) | Python工具

    目录 前言 环境依赖 代码 总结 前言 本文提供将多个视频拼接为一个视频的Python工具代码,其中有一些限制条件,下面的代码说明会提到. 环境依赖 ffmpeg环境安装,可以参考我的另一篇文章:wi ...

  7. Python 将图片或者视频模糊化(附代码) | Python工具类

    目录 前言 环境依赖 代码 总结 前言 本文主要分享一个可以将图片或者视频模糊化的工具代码.技术路线主要是使用ffmpeg滤镜. 环境依赖 ffmpeg环境部署,直接参考我的另一篇文章:windows ...

  8. Python 阶段性总结《抽奖系统》(文末附代码地址)

    大家好,今天是python 的阶段性总结,经过前面的学习,我们需要用一个小Demo(抽奖系统)来巩固我们的所学所识: 1.抽奖系统介绍 这是一个通过命令行执行抽奖的操作系统,没有华丽的界面. 1.1 ...

  9. 实战:基于 CNN 的验证码破解项目(附代码)

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达本文转自|视觉算法 ♚ 在我们的实际生活中有很多的场景需要输入验证码 ...

最新文章

  1. excel单元格斜线_如何用EXCEL做一套田字格模板?在家给小孩练习写字
  2. PIC单片机精通_ADC左对齐与右对齐的数据读取问题
  3. Qt Creator在编辑模式下工作
  4. WinCE5.0如何安装.NET3.5
  5. WEB可以调节的框架页
  6. Android静态安全检测 - Broadcast Receiver组件暴露
  7. 解析Redis操作五大数据类型常用命令
  8. 「镁客·请讲」南京布塔:用动作捕捉世界的精彩
  9. python ---ConfigParser
  10. android 应用搬家 分区,把安装在SD卡的应用存在DATA分区的数据移到SD卡上
  11. 2013中国足球的温柔处罚
  12. 前端构建工具与应用程序测试
  13. 无法打开包括文件: “SDKDDKVer.h”问题解决办法
  14. dbm与mysql_关于dBm与功率转换
  15. 【React】unmountComponentAtNode卸载组件
  16. 曾鹏锦老师:具备这5种能力人生之路越来越好走越走越宽
  17. 图卷积神经网络(GCN)
  18. 怎么取消微信充值服务器,微信亲密充充值提醒怎么取消?
  19. [转] 单片机硬件设计 转载自 麦麦
  20. 记录第一个360浏览器翻译插件

热门文章

  1. 使用ViewPager实现轮播图自动播放
  2. matlab21世纪论坛,compressive sensing 压缩感知(转) 21世纪最火的研究方向
  3. 2021-2025年中国智能眼镜行业市场供需与战略研究报告
  4. JS可选链操作符 (?.)
  5. 微信 checkbox修改样式
  6. 例说学习方法的改造和提升
  7. 应试教育堵死了孩子们犯错的道路
  8. 自定义控件 流式布局
  9. myCobot pro 机械臂(5)Robotics Toolbox for MATLA(开发环境:matlab)
  10. 秒云与趋动科技联合发布容器云平台与GPU资源池化整体解决方案