视频特性TI(时间信息)和SI(空间信息)的计算工具:TIandSI-压缩码流版
=====================================================
TI(时间信息)和SI(空间信息)计算工具文章列表:
视频特性TI(时间信息)和SI(空间信息)的计算工具:TIandSI
视频特性TI(时间信息)和SI(空间信息)的计算工具:TIandSI-压缩码流版
=====================================================
此前在文章《视频特性TI(时间信息)和SI(空间信息)的计算工具:TIandSI》中记录过两个基于YUV视频数据的TI和SI计算工具:一个图形界面工具和一个命令行工具。由于近期正在研究视频内容复杂度方面的东西,所以顺手将原来的TIandSI工具进行了升级,添加了另外两个支持压缩码流的TI和SI的工具,并将版本改为3.0。
目前的TIandSI项目中一共包含4个项目:
TIandSI : 计算YUV数据的TI和SI-图形界面版。
TIandSIcmd : 计算YUV数据的TI和SI-命令行版。
TIandSIpro : 计算压缩码流数据的TI和SI-图形界面版。
TIandSIprocmd : 计算压缩码流数据的TI和SI-命令行版。
其中后两个“pro”版用于计算压缩码流的TI和SI。
项目主页
SourceForge:https://sourceforge.net/projects/tiandsi/Github:https://github.com/leixiaohua1020/TIandSI开源中国:http://git.oschina.net/leixiaohua1020/TIandSI
CSDN下载
源代码:http://download.csdn.net/detail/leixiaohua1020/8754819
windows可执行程序:http://download.csdn.net/detail/leixiaohua1020/8755215
使用方法
TIandSIprocmd
TIandSIprocmd是用于计算压缩码流的TI和SI的命令行工具。该工具有如下选项。
-i 输入文件
-o 输出包含TI和SI的*.csv 文件 [默认是 {input name}.csv]
-l 计算的帧数
-g 图形化显示计算的中间图像 [可以是 'ti' 或者 'si']
-n 中间图像显示的间隔 [默认是 5]
-h 打开帮助
下面举几条示例命令。
计算“test.avi”的TI和SI,结果保存在“test.csv”。
TISIprogCmd -i test.avi
计算“test.avi”的TI和SI,结果保存在“test_cal.csv”。
TISIprogCmd -i test.avi -o test_cal.csv
计算“test.avi”的TI和SI,计算过程中显示TI的中间图像。
TISIprogCmd -i test.avi -g ti
程序在运行过程中会在屏幕上打印出TI和SI,并将结果保存成“.csv”文件。程序运行截图如下所示。
显示的SI中间信息如下所示(Sobel滤波)。
显示的TI中间信息如下所示(帧差)。
TIandSIpro
TIandSIprocmd是用于计算压缩码流的TI和SI的图形界面工具。该工具的界面如下所示。
该工具的使用可以分成三步:
(1)选择视频文件
(2)点击“添加”将视频文件添加到“视频处理列表”
(3)点击“开始”进行计算
计算的过程中可以选择输出TI或者SI中间信息,如下图所示。
输入的视频为H264裸流,如下图所示。此外也支持mp4、mkv、avi等容器中的视频码流。
计算的结果保存成了“.csv”文件,TI和SI分成两列进行记录。
TI |
SI |
5.091792 |
96.63046 |
4.006694 |
97.14991 |
4.047168 |
95.78278 |
4.016123 |
96.68823 |
5.111005 |
95.08357 |
4.308331 |
95.99482 |
4.231775 |
94.96137 |
4.243418 |
96.51315 |
4.777538 |
94.69438 |
4.63109 |
95.99242 |
4.442572 |
95.27241 |
5.958293 |
94.07044 |
4.802421 |
93.54437 |
3.626003 |
94.44892 |
67.47028 |
55.96951 |
4.859533 |
55.73122 |
2.576851 |
55.94511 |
3.537802 |
55.95005 |
3.136736 |
56.02485 |
2.776622 |
55.88079 |
5.21654 |
56.21251 |
4.816776 |
56.34703 |
2.113539 |
56.39521 |
2.463277 |
56.54902 |
3.58151 |
56.62169 |
4.281242 |
56.89031 |
2.611747 |
56.9627 |
2.134903 |
56.98027 |
2.935039 |
56.72913 |
2.607401 |
56.88178 |
1.745702 |
56.99831 |
2.356833 |
57.06902 |
3.137143 |
56.77847 |
3.540902 |
56.97581 |
2.897511 |
56.95166 |
2.958283 |
56.95023 |
3.18626 |
56.48377 |
3.212861 |
56.56799 |
3.140944 |
56.53749 |
3.214078 |
56.51278 |
3.40129 |
56.14477 |
3.60599 |
56.56562 |
4.518811 |
56.72331 |
7.05519 |
56.32037 |
6.418852 |
56.10862 |
3.521006 |
56.34639 |
3.380948 |
56.21924 |
4.811128 |
56.01251 |
5.344801 |
56.30534 |
5.112007 |
56.1002 |
4.340466 |
55.77702 |
4.603604 |
55.81942 |
5.183671 |
55.94553 |
5.25707 |
55.90999 |
6.184795 |
55.43008 |
6.549098 |
55.66671 |
7.301097 |
55.66413 |
6.839081 |
55.41397 |
6.012524 |
55.64191 |
6.21944 |
55.88689 |
7.074984 |
54.75292 |
7.934908 |
55.05619 |
6.990477 |
55.15948 |
6.806325 |
54.92125 |
7.230724 |
54.62891 |
5.788167 |
54.68493 |
5.61761 |
54.06684 |
5.728929 |
54.35502 |
5.711939 |
54.16241 |
5.219654 |
54.27668 |
5.367257 |
54.10954 |
5.890024 |
54.08825 |
7.249853 |
53.98721 |
6.442775 |
54.22794 |
6.254034 |
53.70972 |
6.627275 |
54.26056 |
6.446436 |
54.10505 |
6.364463 |
54.14791 |
6.606837 |
54.38265 |
7.350156 |
55.03591 |
6.401467 |
54.62808 |
4.030468 |
54.80471 |
4.21936 |
54.94787 |
3.748936 |
54.91839 |
3.503878 |
54.6622 |
4.081355 |
54.84961 |
3.576916 |
54.7182 |
3.589109 |
54.85014 |
3.072421 |
54.54525 |
3.071072 |
54.48639 |
3.125489 |
54.22224 |
3.183908 |
54.37459 |
3.93243 |
54.0887 |
TI_AVG |
SI_AVG |
5.308657 |
61.55853 |
输入Excel之后可以得到以下结果。图中TI的峰值处出现了画面的突变。SI发生变化的地方视频的场景发生了变化。
雷霄骅
leixiaohua1020@126.com
http://blog.csdn.net/leixiaohua1020
视频特性TI(时间信息)和SI(空间信息)的计算工具:TIandSI-压缩码流版的更多相关文章
- Oracle日期查询:季度、月份、星期等时间信息
--oracle有关时间信息 Select to_char(sysdate,'Q') from dual;--指定日期的季度 Select to_char(sysdate,'MM') from dua ...
- PHP获取日期时间信息
getdate函数 描述:可以获取日期/时间信息 语法:array getdate( [ int timestamp ] ) 返回一个数组 例: Array ( [seconds] => 30 ...
- iOS - 获取音视频文件的Metadata信息
// // MusicInfoArray.h // LocationMusic // // Created by Wengrp on 2017/6/22. // Copyright © 2017年 W ...
- Lucene4.6 把时间信息写入倒排索引的Offset偏移量中,并实现按时间位置查询
有个新的技术需求,需要对Lucene4.x的源码进行扩展,把如下的有时间位置的文本写入倒排索引,为此,我扩展了一个TimeTokenizer分词器,在这个分词器里将时间信息写入 偏移量Offset中. ...
- Java8新特性 - 新时间和日期 API
本地时间和时间戳 主要方法: now:静态方法,根据当前时间创建对象 of:静态方法,根据指定日期/时间创建对象 plusDays,plusWeeks,plusMonths,plusYears:向当前 ...
- ping加上时间信息
一.linux系统ping加时间戳信息 1.ping 加时间信息,然后还要实时保存到一个文件中,那么就与awk结合 ping 115.239.211.112 -c 10 | awk '{ print ...
- 从H264码流中获取视频宽高 (SPS帧) 升级篇
之前写过 <从H264码流中获取视频宽高 (SPS帧)> . 但发现很多局限性,而且有时解出来是错误的. 所以重新去研究了. 用了 官方提供的代码库来解析. 花了点时间,从代码库里单独把解 ...
- 直接将视频文件原码流转换成YUV,输出到屏幕显示
#include "stdafx.h" #define inline _inline#ifndef INT64_C#define INT64_C(c) (c ## LL)#defi ...
- go http 下载视频(TS码流文件)(推荐一个网站学习 go example)
视频 http下载代码 dn.go(注意:代码很ugly,没怎么花时间) 总体感觉特别简单,网上看了下 net/http ,io这2个库的使用, 几分钟就写完了,感觉cpp 在做工具这块 开发效率的 ...
随机推荐
- mysql之查询
#数据准备drop table if exists class;create table class( class_no int(2) unsigned zerofill primary key ...
- 机器学习基石:07 The VC Dimension
当N大于等于2,k大于等于3时, 易得:mH(N)被Nk-1给bound住. VC维:最小断点值-1/H能shatter的最大k值. 这里的k指的是存在k个输入能被H给shatter,不是任意k个输入 ...
- Java:扩展后的赋值运算符(带强转功能)
扩展后的赋值运算符,即 +=,-=,*=,/=,%=,&=,|=,^=,<<=,>>=,>>>=. 代码实例一: byte a=5; a=a+5; 此 ...
- [Codeforces 235B]Let's Play Osu!
Description 题库链接 有一个长度为 \(n\) 的 "XO" 序列,其中第 \(i\) 个位置 "O" 出现的概率为 \(p_i\) .一个序列的价 ...
- 洛谷P3164 [CQOI2014]和谐矩阵
高斯消元,可以直接消的 #include<cstdio> #include<cstdlib> #include<algorithm> #include<cst ...
- 【以2-SAT为主题的婚礼UVA11294】
·新娘头饰复杂,这个婚礼怪异非凡. ·英文题,述大意: 婚宴上,有一个很长的桌子.桌子两边坐人(即人们坐成两排).新娘坐在其中一排,只能看见桌子对面所有的人.输入的m表示有m对人打过架. ...
- [bzoj1143][CTSC2008]祭祀
题意:给定一个n个点m条边的有向无环图,你要选出最多的点,并且满足任意两点之间都不存在通路.2)输出每个点选了它之后还是否有最优解. n<=100 m<=1000 题解:每个点拆两个点 ...
- jQuery Datetable 渲染
渲染器 有些情况下,使用表时,表中的行的数据源不包含您希望在表中直接显示的值.您可能希望将其转换为不同的表示形式(时间戳为人类可读的格式),合并数据点(名字和姓氏)或对该值执行一些计算(计算营业额和费 ...
- salt基本使用之二(2)
1.Event和Reactor Event是saltstack里面的对每个事件的一个记录,相比job更加底层. 一,查看Event事件 可以在master下再开一个终端执行以下命令可以查看Event事 ...
- python dataframe数据条件筛选
一般情况下我们从一堆数据中选择我们获取想要的数据会通过一下方式: (1)创建链表或数组: (2)用for 循环遍历所有数据,将想要的存入链表或数组. 但是python中我们不需要这么做,我们可以用Pa ...