NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

一种基于视频帧差异视频卡顿检测方案

  • 2021-03-02
  • 本文字数:1331 字

    阅读完需:约 4 分钟

一种基于视频帧差异视频卡顿检测方案

奇技 · 指南

在视频质量检测中,检测视频是否卡顿也属于视频质量检测的标准之一,在构建视频检测平台中,这一步至关重要。


本文要说明的是把视频转换为帧序列,根据计算帧之间的差值,寻找帧序列中是否有断层,来判断当前视频是否存在卡顿的现象。


结果为一个数据, 0 代表无卡顿现象, 1 代表存在卡顿现象

技术与架构

用户上传视频文件后,使用 ffmpeg 转换为图片序列,抽取图片信息,计算所有序列帧的图片运动像素,计算所有序列图片的平均运动水平,动态计算动态因子,输出判断结果, 0 表示当前不存在卡顿点, 1 表示当前存在卡顿点。



整体方案主要分为六个部分

1. 图片处理

2. 图像相邻帧像素计算

3. 计算所有图片运动量,组合为运动集合

4. 消除视频图片场景剪辑比例,计算平均运动量

5. 计算动态因子

6. 返回结果

技术优势

  • 不需要准备大量的数据集来训练模型,只针对当前要处理的视频进行计算;

  • 不会因为大量的动态场景和静态场景影响卡顿检测的结果;

  • 精准高效,计算量相对较低

技术实现

图片处理

这里采用灰度图片来作为视频卡顿检测的输入序列图片数据,重新设置当前图片的大小为 360*640,当前区域为我们后面计算的兴趣区域.设定兴趣区域,可以有效的避免一些像素点计算的噪声影响。

图像相邻帧计算

A.遍历当前图像集,使用 t+1(下一时刻帧) 的像素减去 t(当前时刻帧)的像素值,计算出两帧之间的差异信息。

B.设定阈值,这里的阈值是一个常量值 = 30,当两帧之间的差异值> 30 的时候,就任务图片存在运动像素,否则,没有存在运动,值为 0,此步骤消除了低运动噪声,或感知能力下的运动像素。

计算所有图片的运动量

将步骤 2 中的值进行平方,将幅度转换为能量,并计算每个视频帧的平均值.该平均值就是当前帧的能量值,所有帧的动量值记为 TI2。

消除视频图片场景切换比例,计算平均运动水量

A.在计算平均值之前要消除场景剪辑比例,这里使用的常量值为 0.02,就是说我们有 100 个帧要消除 2 个场景的剪辑。


B.对 TI2 从小到大排序,在这个序列中,根据 B 中的比例值,消除最高和最低的两个噪声值,循环遍历 TI2,计算 t 时刻帧之前所有帧的平均值,并把这个平均值进行累加.当场景切换的时候,TI2 序列的低点和高点均被消除,平均 TI2 值(TI2_AVG)不会收到影响。

计算动态因子

在近乎静态的场景和动态的场景中,由于像素的变动很小,或者像素变动很大,卡顿的帧/丢失帧会存在少量/大量的运动信息,在确定运动水平的时候需要涉及主观直觉的要素,所以需要利用动态阈值来确定卡顿的视频帧。


在视频中,存在的动态场景较多,该阈值增加,静态场景,阈值减少。


Dfact = a + b * log(TI2_AVG)  a ,b, c 都为常量,分别为 2.5, 1.25, 0.1,c 为限制 Dfact 较小的一个值。

当 Dfact < c = Dfact else 等于 c, Dfact 取值范围是[0, 0.1]之前的一个值。

帧的丢弃和运动量是线性依赖于平均运动能量的对数。

返回结果

循环遍历视频帧,获取每一帧的 TI2 值,如果当前的 TI2 值<= Dfact * Mdrop,认为当前的帧是卡顿的,也就是值为 1,如果当前的 TI2 值> Dfact * Mdrop, 任务当前帧不存在卡顿,把视频所有的帧按找时间顺序排序后,就是我们当前视频卡顿检测的列表值。


Dfact 为上述计算的动态因子,Mdrop 为固定运动能量阈值来确定帧的卡顿.Mdrop 为常量值 0.015。

效果展示


选择 9 张连续的视频帧图片



返回检测结果

本文转载自:360 技术(ID:qihoo_tech)

原文链接:一种基于视频帧差异视频卡顿检测方案

2021-03-02 13:002538

评论

发布
暂无评论
发现更多内容

【直播回顾】OpenHarmony知识赋能第四期第四课——音频驱动开发

OpenHarmony开发者

OpenHarmony HDF框架 音频驱动开发

Java培训-实现定时任务的几种方式

@零度

Java

大数据培训-如何连通 Hive 数仓和ClickHouse

@零度

大数据 hive Clickhouse Seatunnel

架构标准TOGAF实践最重要的三件事

博文视点Broadview

TiFlash 开源了

PingCAP

We are learning by contributing!访 StarRocks Committer 周康、冯浩桉

StarRocks

数据库 开发者社区 StarRocks

博文推荐|深入解析 BookKeeper 多副本协议(一)

Apache Pulsar

开源 云原生 中间件 bookKeeper Apache Pulsar

模块二作业

HZ

架构实战营 「架构实战营」

清华自研时间序列数据库Apache IoTDB原理解析

云智慧AIOps社区

数据库 时序数据库 消息队列 智能运维

设备资产管理系统解决方案

低代码小观

资产管理 CRM系统 企业设备管理 设备巡检管理系统 企业管理软件

直播预告 | 如何在有限数据下实现资讯类网站海量信息自动分类

百度开发者中心

10年资深架构师分享 | 普通程序员向架构师进阶之路

云智慧AIOps社区

程序员人生 高薪 架构师 技术分享 职场发展

【直播回顾】OpenHarmony 知识赋能第四期第四课——音频驱动开发

Anna

OpenHarmony

突破数据分析瓶颈,寻因生物单细胞测序数据分析迈入云时代

阿里云弹性计算

虚拟化 持久内存 基因测序

高效使用Java构建工具,Maven篇|云效工程师指北

阿里云云效

云计算 maven 阿里云 java 并发 构建工具

Kubernetes官方java客户端之三:外部应用

程序员欣宸

Kubernetes java client

开发者手册之如何成为 OceanBase Contributor

OceanBase 数据库

oceanbase OceanBase 开源 OceanBase 社区版

车载小程序快马加鞭突围车联网生态系统

FinClip

对话LigaAI创始人周然:在研发SaaS赛道,「颠覆」Jira | PLG十人谈

LigaAI

SaaS LigaAI 研发协作平台

阿里云:已有10000家企业在云上构建数据湖

Apache Flink

云计算 阿里云 数据湖 云原生

web前端培训-检测Javascript类型的4种方式

@零度

JavaScript 前端开发

产品知识在线培训的解决方案

小炮

企业知识管理

在 AWS 上运行 CAE 工作负载的五个原因。

亚马逊云科技 (Amazon Web Services)

产品 计算机

轻盈潇洒卓然不群,敏捷编辑器Sublime text 4中文配置Python3开发运行代码环境(Win11+M1 mac)

刘悦的技术博客

Python ide 编辑器 Python3 Sublime

Linux下网络编程-UDP协议探测在线好友

DS小龙哥

4月月更

企业实施知识管理的建议

小炮

企业知识管理

“远见者”特斯拉AI主管Karpathy|深度学习崛起十年

OneFlow

人工智能 深度学习 计算机视觉 特斯拉 openai

DevEco Device Tool 3.0 Release新版本发布,支持多人共享开发、源码级调试

HarmonyOS开发者

HarmonyOS DevEco Device Tool

腾讯AI Lab姚建华博士当选 2022 美国医学与生物工程院会士

科技热闻

教你VUE中的filters过滤器2种用法

CRMEB

恒源云(Gpushare)_如何防止训练不中断?技巧大放送1!

恒源云

算法 服务器 训练

一种基于视频帧差异视频卡顿检测方案_架构_360技术_InfoQ精选文章