H264学习指南

因为最近手头的活基本搞完了,人也闲了下来,这么热的天气,突然想写这么一篇文章。不过首先声明的是我对H264并不是太熟悉。但多多少少也学习了这么久了,写点心得出来对自己是个交待,同时也希望给新手们一点帮助,只要对大家有一点点帮助,也就很满足了。

       好,闲话少说。如果大家是刚开始进入图象领域,那么先看一看"计算机图象处理"方面的教材还是有必要的.不过稍微了解一下就好了,不用太深入,在以后的对264的学习中,自然会对这些基本概念有进一步的了解.然后,是对264的了解,推荐3篇文章.

1、Halsted.Press.H.264.And.MPEG-4.Video. Compression. Video. Coding. For. Next. Generation。
   对视频编解码原理讲得比较详细
2、Video coding using the H.264 MPEG-4 AVC compression standard。
   更加关注于编解码的各个模块的实现方式
3、Overview of the H.264/AVC Video Coding Standard。
   是Thomas Wiegand的大作,对264较之以往标准的新特性都作了说明。

        这三篇文章绝对是了解264的经典文章,论坛上好像也有下载的地址。这些都是e文文章,不过相信对大多数人难度都不大。

细心将这三篇文章看完。对264就有了一个比较清楚地认识了。对一个这么大的东西,不可能说要在短时间内全部搞懂它,因此就要根据当前自己的情况,选择一个具体的研究方向,比如说运动估计、熵编码等等。我现在以我自己的研究方向运动估计作为例子,来说一下我的学习方法,当然肯定有班门弄斧的嫌疑,但是既然大家都不认识我,我也就不客气了。

        从入门的3篇文章中可以看出,帧间编码(运动估计)是264的运算复杂度的“主力”部分。那么首先要对传统的那些运动估计方法作一个了解,如果是教育网的朋友再ieee的网站上拿motion estimation一搜就能搜到一大堆文章了,我的建议是选一篇比较新而且比较长的文章,就是那种regular paper 而不是short paper。这些文章中一般会对本研究方向的经典方法作一个回顾和比较,这样,从这篇文章的参考文献中再进一步把本研究方向的历史和现状作一个了解。
        所谓对264的研究的话,基本上就是用更加好的算法来降低264本身的计算复杂度。能够做到不提高码率当然好,但码率稍微有点上升也没有关系,不过那就要在编码速度上有优势,这样就可以说“本方法利于实时实现“啦,哈哈。就运动估计来说,传统的3ss,4ss,ds都要知道是怎么回事,然后像被大家奉为经典的mvfast,pmvfast就要专心的看一下了。最好呢,是在这些方法上,能够提出自己的新观点、新方法。当然,这就不是一个纯粹看论文能够解决的问题了。大家需要对264的新特点有一个清楚了了解,然后考虑的方向可以是以前的方法应该怎么改善再用在264上,能够更好地发挥作用,向连续消方法,half-way stop的方法,好像国内的都有人出论文。因为264的帧间预测采用了可变块大小,因此又引出了一个问题:按什么方法来分块是最好的?大家在看那3篇入门的文章时,就要边看边思考,里面说采用可变块大小,就要想到我怎么知道该怎么分块;里面提到4*4块帧内预测有9种模式,就要想到这9种模式如何决策。也就是说,大家再看这些文章时,要想一下,我该怎么去实现它。这些问题其实很容易就能提出来,但要解决却是一个大问题。
        比如说分块吧,VBSME(variable block size motion estimation),ieee上可有不少文章,台湾国立成功大学(?好像是这个名字)的一篇硕士论文就写的是这个,可见264有好多东西可以去做,养几个博士绝对绰绰有余啊,赫赫。其实研究方向越细,就能够对这个方向把握得越准确,成天看着,总会有些新想法出来吧,嗬嗬,开玩笑的说。选好了一个大的研究方向,然后就要知道现在这个方向大家都是在那些细节上做工作。像运动估计的话,多帧预测,可变块大小的分法,1/4像素估计精度等等都是热门的东西,那基本上来说,跟着大家走就好了。了解哪些东西是热门,基本上*多看文章,同时建议大家多看e文的,最好是ieee的。我的一个博士师兄告诉我说,如果你想发某一个档次的文章,你就应该看比这个杂志高一个档次的文章。而且他说一般看个15篇左右,就应该要能够出一篇自己的东西了。这个师兄现在毕业了,他发了好多EI的,羡慕!
       如果“不幸”有了自己的新想法,那么就需要验证了。简单一点的验证呢,可以放在c语言或者matlab平台下进行,但是如果要发论文的话,基本上还是要放在JM下才有说服力。而且试验序列最好采用标准序列。这既涉及到一个读JM源码和修改JM源码的问题。我看了一段时间,实在是好烦啊,所以,对不起,在这方面我没有太多好的建议。但是我在修改一个帧内预测算法时,反而把预测速度减慢了,哈哈,按照常理来说,我的方法应该比JM里的方法好才对,而且我在matlab下的仿真结果的确如此,很郁闷,希望大家推荐一个看源码的方法给我,谢谢先。
        除去以上说的这些,看标准也是很必要的。200503的那个prepublished版本好像是最新的,对于翻译标准,我认为不是太必要,但对了解标准也还是有点帮助,可以放在正常工作时间以外进行,如果大家有这么努力的话。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/456152.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是数据分析的关键指标?

什么是核心关键指标呢? 这是一个好问题,不过没有标准的答案。企业性质不同,所处行业、发展阶段不同,关注点当然不同。不过大体可以这样来划分。 1、发展阶段不同,需求不同 对于一个想要做数据化管理的企业来说&#xf…

01Pandas_数据结构

Pandas数据结构 做python数据分析,数据挖掘,机器学习的童鞋应该都离不开pandas。在做数据的预处理的时候pandas尤为给力。 本文主要介绍pandas中的两种数据结构:series,dataframe。 import pandas as pd 1.Series 首先来介绍series数据结…

加密函数

MD5:密码为web页面做准备,建议使用MD5 PASSWORD() :修改当前用户或其他用户密码 mysql> SELECT MD5(admin); #对admin进行MD5的加密(32位)----------------------------------| MD5(admin) |--------------------------------…

如何使用notepad运行python程序

关于使用notepad运行python程序 首先要确保python解释器已经安装成功,查看方法,windows可以在命令提示符中查看,通过按下winR键,调出运行窗口,在输入框中输入cmd回车,然后在命令行中输入python,若出现版本信息,例如Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 18:41:36) [MSC…

H.264学习历程(天之骄子)

半年前,我知道了H.264这个名词。那个时候决定学习H.264,可是我连资料都不知道如何收集。而且整个学校就只有我一个人在学习H.264,找不到人交流,所以那个时候学得真的是举步维艰,很痛苦,而能在网上认识一个学…

插入排序:表折半插入

在前一篇插入排序:表插入中。我们用静态链表的存储方式。直接插入的策略,构建了一种新的插入排序算法:表插入。有人可能会想到:相同是静态链表的形式,为什么不使用更高效的折半插入策略呢?这样的想法真的非…

C++编译报错:重复定义

http://note.youdao.com/noteshare?idcb2bed862a2daae89775603168f297af转载于:https://www.cnblogs.com/taiyang-li/p/6637093.html

【机器学习】sklearn实现---归类为5大类

sklearn实现---归类为5大类 sklearn.preprocessing.scale()(最常用,易受异常值影响)sklearn.preprocessing.StandardScaler()sklearn.preprocessing.minmax_scale()(一般缩放到[0,1]之间,若新数据集最大最小值范围有变…

关于安装deepin+window10双系统有时没有声音的问题

关于安装deepinwindow10双系统有时没有声音的问题 这个问题小编目前还没有解决,求大神帮忙! deepin社区官网:深度科技社区 还可以参考一下其他的教程 深粉交流:新手刚刚安装好DEEPIN,但没有声音,怎而解决? 冰封飞飞(云网牛站):在Deepin系统中…

如何读H.264的标准和代码

首先,还是要弄清楚编解码的流程和 H.264 的关键技术,看白皮书就知道了,另外 H.264 综述类的文章和别人的学位论文一般也会讲到; 其次,弄清楚代码的各个函数实现的功能,这个可以看看 JM 代码里各个函数前面的…

Kafka官方文档翻译——实现

IMPLEMENTATION 1. API Design Producer APIs Producer API封装了底层两个Producer: kafka.producer.SyncProducerkafka.producer.async.AsyncProducerclass Producer {/* Sends the data, partitioned by key to the topic using either the *//* synchronous or t…

【机器学习】熵、决策树、随机森林 总结

一、熵 公式: −∑i1np(xi)∗log2p(xi)-\sum_{i 1}^{n}{p(xi)*log_2p(xi)}−i1∑n​p(xi)∗log2​p(xi) ∑i1np(xi)∗log21p(xi)\sum_{i1}^{n}p(xi)*log_2\frac{1}{p(xi)}i1∑n​p(xi)∗log2​p(xi)1​ import numpy as np# 账号是否真实:3no&#xff…

HDU 4857 逃生(拓扑排序)

拓扑排序 一.定义 对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序&#xff0c;是将G中所有顶点排成一个线性序列&#xff0c;使得图中任意一对顶点u和v&#xff0c;若<u&#xff0c;v> ∈E(G)&#xff0c;则u在线性序列中出现在v之前。 通常&#xff0c;…

关于deepin系统安装design compiler的问题解答

关于deepin系统安装design compiler的问题解答 Design Compiler是Synopsys综合软件的核心产品。它提供约束驱动时序最优化&#xff0c;并支持众多的设计类型&#xff0c;把设计者的HDL描述综合成与工艺相关的门级设计&#xff1b;它能够从速度、面积和功耗等方面来优化组合电…

iOS 数据持久化-- FMDB

一、简介 1.什么是FMDB FMDB是iOS平台的SQLite数据库框架 FMDB以OC的方式封装了SQLite的C语言API 2.FMDB的优点 使用起来更加面向对象&#xff0c;省去了很多麻烦、冗余的C语言代码 对比苹果自带的Core Data框架&#xff0c;更加轻量级和灵活 提供了多线程安全的数据库操作方法…

【机器学习】交叉验证筛选参数K值和weight

交叉验证 导包 import numpy as npfrom sklearn.neighbors import KNeighborsClassifierfrom sklearn import datasets#model_selection &#xff1a;模型选择 # cross_val_score: 交叉 &#xff0c;validation&#xff1a;验证&#xff08;测试&#xff09; #交叉验证 from s…

jqGrid列的统计

$("#List").jqGrid({ url: "${pageContext.request.contextPath}/cbfx/getCbhzList.do", datatype: "json", mtype: GET, colNames:["成本类别","费用","去年同期费用","备注"], colMod…

手机只能签荣耀!最忠诚代言人胡歌喊你去天猫超品日

在你心中&#xff0c;男神胡歌是什么样子&#xff1f;“御剑乘风来&#xff0c;除魔天地间。”也许是《仙剑奇侠传》里飞扬跋扈、青春不羁的侠客李逍遥。“遍识天下英雄路&#xff0c;俯首江左有梅郎。”也许是《琅铘榜》中才智冠天下&#xff0c;远在江湖却名动帝辇的麒麟才子…

欧式距离与曼哈顿距离

欧式距离&#xff0c;其实就是应用勾股定理计算两个点的直线距离 二维空间的公式 其中&#xff0c; 为点与点之间的欧氏距离&#xff1b;为点到原点的欧氏距离。 三维空间的公式 n维空间的公式 曼哈顿距离&#xff0c;就是表示两个点在标准坐标系上的绝对轴距之和&#xff1a…

在maven pom.xml中加载不同的properties ,如localhost 和 dev master等jdbc.properties 中的链接不一样...

【参考】&#xff1a;maven pom.xml加载不同properties配置[转] 首先 看看效果&#xff1a; 点开我们项目中的Maven projects 后&#xff0c;会发现右侧 我们profile有个可勾选选项。默认勾选localhost。localhost对应项目启动后&#xff0c;会加载配置左侧localhost文件夹下面…