基于视角变化的视频关键帧提取方法(附代码地址)
基于图像进行三维重建时,需要从视频中提取关键帧,构成图片集合。
从视频中提取关键帧时,一般的方法是按照固定帧率(时间间隔)来进行提取图片。但由于拍摄视频时,场景视角变化幅度有时大有时小,按照固定帧率提取图片集,如果帧率过小,会丢失一些对三维重建比较关键的帧,而如果帧率过大,则提取的图片集合过大,造成不必要的冗余。
本质上来说,不存在一个合适的帧率进行图片提取。用于三维重建的图片集合,只要保持相邻的两个图片之间的场景重复度足够大即可。而根据固定帧率从视频中提取图片集合的方式,没有抓住其本质。
本文提出一种方法,利用深度学习提取局部特征,根据视频中场景视角的变化幅度来提取关键帧,提高了三维重建的效果,且减少了用于三维重建的图片集的冗余。
方法具体过程如下:
- 将视频的当前帧作为关键帧放入图片集合,利用神经网络模型superpoint,对当前帧进行关键点(像素点坐标集合)和局部特征(像素点对应的特征,用于表示像素点的唯一性)的提取,存储关键点为cur_keypoints,存储局部特征为cur_descriptors;
- 对视频下一帧,利用同样的方法进行关键点和局部特征的提取,存储关键点为next_keypoints,存储局部特征为next_descriptors。将next_descriptors与cur_descriptors进行匹配,确定出next_keypoints中与cur_keypoints中相对应的关键点,计算出对应关键点之间的距离,然后求出所有对应关键点的平均距离:distance;
- 如果步骤2中求出的distance大于等于预先设定的距离D,则将步骤2中的帧作为当前帧,返回到步骤1。如果步骤2中求出的distance<D,则返回步骤2考察视频的下一帧。如果视频读取完毕,则结束。
本方法的优点:
- 避免了由于提取帧率过小,而丢失一些对三维重建时较为关键的帧;
- 避免了由于提取帧率过大,而造成图片集合不必要的冗余;
- 利用深度学习方法提取关键点和局部特征,对不同场景具有很好的鲁棒性;
- 抓住了关键帧提取的本质。
现已将代码上传到github上,以供大家参考学习。代码地址为:https://github.com/markshih91/video_keyframe_extraction
基于视角变化的视频关键帧提取方法(附代码地址)相关推荐
- 【ML】基于机器学习的心脏病预测研究(附代码和数据集,多层感知机模型)
写在前面: 首先感谢兄弟们的订阅,让我有创作的动力,在创作过程我会尽最大努力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌. 之前创作过心脏病预测研究文章如下: [ML]基于机器学 ...
- 【ML】基于机器学习的心脏病预测研究(附代码和数据集,随机森林模型)
写在前面: 首先感谢兄弟们的订阅,让我有创作的动力,在创作过程我会尽最大努力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌. 之前创作过心脏病预测研究文章如下: [ML]基于机器学 ...
- 【目标检测】基于yolov5海上船舶目标检测(附代码和数据集)
Hello,大家好,我是augustqi.今天给大家分享的目标检测项目是:基于yolov5海上船舶目标检测(附代码和数据集) Part1 前言 传统的海上目标检测是通过雷达来实现,但是随着技术的发展, ...
- 【ML】基于LSTM的心脏病预测研究(附代码和数据集,系列1)
写在前面: 首先感谢兄弟们的订阅,让我有创作的动力,在创作过程我会尽最大努力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌. 之前创作过心脏病预测研究文章如下: [ML]基于机器学 ...
- FPGA项目开发:基于FPGA的伪随机数发生器(附代码)
FPGA项目开发:基于FPGA的伪随机数发生器(附代码) 今天是画师和各位大侠见面了,执笔绘画FPGA江湖,本人写了篇关于FPGA的伪随机数发生器学习笔记,这里分享给大家,仅供参考. 一.概念 随机数 ...
- Python 多个视频拼接成一个视频工具(附代码) | Python工具
目录 前言 环境依赖 代码 总结 前言 本文提供将多个视频拼接为一个视频的Python工具代码,其中有一些限制条件,下面的代码说明会提到. 环境依赖 ffmpeg环境安装,可以参考我的另一篇文章:wi ...
- Python 将图片或者视频模糊化(附代码) | Python工具类
目录 前言 环境依赖 代码 总结 前言 本文主要分享一个可以将图片或者视频模糊化的工具代码.技术路线主要是使用ffmpeg滤镜. 环境依赖 ffmpeg环境部署,直接参考我的另一篇文章:windows ...
- Python 阶段性总结《抽奖系统》(文末附代码地址)
大家好,今天是python 的阶段性总结,经过前面的学习,我们需要用一个小Demo(抽奖系统)来巩固我们的所学所识: 1.抽奖系统介绍 这是一个通过命令行执行抽奖的操作系统,没有华丽的界面. 1.1 ...
- 实战:基于 CNN 的验证码破解项目(附代码)
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达本文转自|视觉算法 ♚ 在我们的实际生活中有很多的场景需要输入验证码 ...
最新文章
- excel单元格斜线_如何用EXCEL做一套田字格模板?在家给小孩练习写字
- PIC单片机精通_ADC左对齐与右对齐的数据读取问题
- Qt Creator在编辑模式下工作
- WinCE5.0如何安装.NET3.5
- WEB可以调节的框架页
- Android静态安全检测 - Broadcast Receiver组件暴露
- 解析Redis操作五大数据类型常用命令
- 「镁客·请讲」南京布塔:用动作捕捉世界的精彩
- python ---ConfigParser
- android 应用搬家 分区,把安装在SD卡的应用存在DATA分区的数据移到SD卡上
- 2013中国足球的温柔处罚
- 前端构建工具与应用程序测试
- 无法打开包括文件: “SDKDDKVer.h”问题解决办法
- dbm与mysql_关于dBm与功率转换
- 【React】unmountComponentAtNode卸载组件
- 曾鹏锦老师:具备这5种能力人生之路越来越好走越走越宽
- 图卷积神经网络(GCN)
- 怎么取消微信充值服务器,微信亲密充充值提醒怎么取消?
- [转] 单片机硬件设计 转载自 麦麦
- 记录第一个360浏览器翻译插件