HEVC
yang-彧
视频编码,深度学习
展开
-
HEVC编码流程解读
此图为HEVC的编码框架图,接下来我将针对这幅图,写下自己对HEVC的编码流程的理解。(错误多多,处于菜鸟阶段,望看见这篇文章的同行能给点意见,本人将不胜感激)在图中可以看到有多个清晰的互相联系的模块。编码控制,变换量化,帧间预测(运动估计,运动补偿),帧内预测,滤波控制分析,环路滤波(去块滤波,采样点自适应偏移滤波),熵编码。这些编码模块都是互相联系的,一个模块会影响着另一个模块。原创 2015-03-18 19:00:44 · 6611 阅读 · 0 评论 -
HM测试数据的处理
看理论文献,看测试代码,现在正是进入第三阶段,小打小闹的对代码进行修改,并跑代码看看结果。其实修改代码不是目的,目的是通过这些实际的过程来让自己熟练的掌握数据处理的方法,这将为后续的研究打好基础。 这几天对平台中的配置文件个参数进行一一的验证,并改动各参数,看其对实验结果的额影响,这也让我更加清楚我后续工作可以展开的地方。 今早参照别人的博文,对数据批处理进行了设置。数据批处原创 2015-05-14 09:34:26 · 1501 阅读 · 0 评论 -
HM测试数据处理遇到的问题
(1)每一次对.bat文档修改后,都要对程序进行重新生成解决方案。(2)在.bat文档配置好之后,先生成解决方案,再双击.bat文件,将自动进行编码。(一定是先生成解决方案,再双击.bat文档)每次更改.bat文件里面的配置后,都要将下图里面的命令参数更改下。从图中可以看到,此时正在编码第一中配置文件的情况。生成了一个BQMall_q37.txt文档。且文档大小为0KB,因为还处于编码状态原创 2015-05-14 22:19:36 · 1169 阅读 · 1 评论 -
HEVC码率控制代码追踪(一)(HEVC code tracing-Rate control)
接下来的一段时间将对码率控制代码追踪这一块的学习心得和领悟做个简要的记录,在将来的某一天,这些博文将让我清晰地看到自己的成长。码率控制的关键两个步骤:(1)码率分配(2)目标码率的实现所以在看代码的时候也尽量将步骤与代码对应起来,分块阅读,整合思考与优化。在码率控制的两个步骤中又可以依据操作对象(层次)的不同,分别从GOP,picture,lcu这三个方面去看程序。在对功能函数进行解读原创 2015-05-16 10:55:47 · 3506 阅读 · 4 评论 -
HEVC码率控制代码追踪(三)
关于图像级别和单元级别的lambda和qp预测计算 这两个级别各两个参数的计算主要考虑的是计算和计算后的平滑参数的设置。都有现成的公式可以参考。同样用到的是HEVC提案JCTVC-K0103(码率控制提案) (一)Double TEncRCPic::estimatePicLambdaDouble TEncRCPic::estimatePicLambda( list<TEncRCPic*>& li原创 2015-05-20 10:28:14 · 2556 阅读 · 0 评论 -
BDBR和BD-PSNR
转载文章地址:链接 A、VCEG 建议采用Bjontegaard metric described in [1] to provide relative gain between two methods,by measuring average difference between the two RD-curves. 参考[3]中的文档提供了这两种值的计算工具:the bitrate转载 2015-05-20 22:40:27 · 4275 阅读 · 0 评论 -
HEVC码率控制代码追踪(二)
R-lambda码率控制模型中的关于帧层,单元层的目标比特分配代码部分。求出各层的目标比特再除以该层的总像素数,得到Bpp用于后续的lambda和Qp的求解。 (1)帧层的目标比特代码部分Int TEncRCPic::xEstPicTargetBits( TEncRCSeq* encRCSeq, TEncRCGOP* encRCGOP )//估计图像的目标比特数//类中的私有函数的定义{ I原创 2015-05-19 22:27:48 · 2969 阅读 · 1 评论 -
HEVC代码追踪(四)
该图为码率控制的一个大致流程图,给出了绝大部分有关码率控制的功能函数的调用流程,调用函数。这有助于更清晰的对码率控制的实现流程的掌握。同时在后续代码改动的时候,也可以清楚的找到所涉及的所有模块。原创 2015-05-27 10:46:09 · 1211 阅读 · 0 评论 -
C++中的new的用法
Void TEncRCSeq::create( Int totalFrames, Int targetBitrate, Int frameRate, Int GOPSize, Int picWidth, Int picHeight, Int LCUWidth, Int LCUHeight, Int numberOfLevel, Bool useLCUSeparateModel, Int adapti原创 2015-05-18 22:37:37 · 1425 阅读 · 0 评论 -
编码单元
编码树单元(英语:Coding Tree Unit,缩写:CTU)是H.265/高效率视讯编码(High Efficiency Video Coding, HEVC)的处理单元。此处理单元类似H.264/高阶视讯编码(Advanced Video Coding, AVC)中的宏区块(Macroblock)。编码树单元的大小可以从16x16到64x64,使用比H.264更大的处理单元得到更好的压缩效果转载 2015-06-02 16:14:35 · 2053 阅读 · 0 评论 -
for循环
犯这么低级傻帽的错误。。。。 在三层for循环嵌套的时候记得各层的变量定义不能笼统的在for循环开始的时候就全部定义。这样的结果就是内层的for循环结果不会随着形参的改变而刷新。最后的到的结果会是所有结果的累加。 double TotalGpp_ofslice = 0; for (uiEncCUOrder_Our = uiStartCUAddr / rpcPic->getNumPartInCU(原创 2015-06-11 16:54:24 · 487 阅读 · 0 评论 -
跨源文件函数/变量调用
在面对一个大工程的时候,在当前的源文件里面用到别的源文件里面的定义的变量是常有的事情。前一段时间一直纠结这个问题,根据最初看类这块的印象,我的做法是将该变量在头文件里面声明,然后在某一个源文件里面声明。再将这个头文件包含到需要调用该变量/函数的原文件里面。但是,最后的结果都是错误的。到现在我依然没有理清这些关系。今天上午查了下到底该怎么调用,根据学长的提示,再一次进行尝试。原来他们搞代码的都不是用包原创 2015-06-15 13:11:55 · 1475 阅读 · 0 评论 -
BDBR与BDPSNR的计算
原文地址 在视频的处理过程中, 常常利用 BD-BitRate(BDBR) 与 BD-PSNR(BDPSNR) 来衡量方法的好坏。它提供的是利用新方法得到的视频相对于原来的方法在码率和PSNR上的变化情况。一般来说,码率降低,PSNR增大,能够说明新方法具有较好的性能。然而,会出现这样一种情况, 即码率相对于原来的方法有所降低,但是PSNR即视频的质量却降低了,在这种情况下想要衡量方法的好坏,就需转载 2015-08-05 21:24:34 · 4564 阅读 · 2 评论 -
感知视频编码---自由能引导的率失真优化
自由能—free-energy principle The freeenergy principle suggests that the human visual system (HVS) can actively predict “orderly” information and avoid “disorderly” information for image perception. Bas原创 2016-03-07 22:30:01 · 960 阅读 · 0 评论 -
动态内存分配和指针
C++中使用new delete来实现动态内存分配。#include<iostream>int main(){ using namespace std; int nights = 1001; cout << &nights << endl;//地址A int *pt = new int[10];//创建动态数组 *pt = nights;//为第一个数赋原创 2016-03-08 22:42:41 · 539 阅读 · 0 评论 -
X264编码流程
对H.264编码标准一直停留在理解原理的基础上,对于一个实际投入使用的编码器是如何构建起来一直感觉很神秘,于是决定在理解理论的基础上潜心于编码器实现框架。关于开源的H264编码器有很多,JMVC,T264、X264,这里选择X264,因为网上关于X264源码分析资源很多。X264编码器是一个开源的经过优化的高性能H.264编码器,目前最新的源码在本人的I5处理器的PC机上,编码1920x1080分转载 2016-11-09 15:15:11 · 837 阅读 · 0 评论 -
测试序列的特点
在进行HEVC快速算法研究中,经常要做测试。拿哪 个序列做测试是一个问题,总不能每次都对所有的序列测试,这样的话工作量太大了。经过阅读文献与经验的总结,个人认为做测试的序列应满足如下条件:第一:每种类别(Class)的序列都应该涉及;在“Common HM test conditions and software reference configuration”文献中,规定了帧内、帧间预测转载 2015-05-14 09:46:12 · 3496 阅读 · 2 评论 -
HM测试数据处理
测试结果的保存、批处理及数据处理一.测试结果的单一保存这些天跑了一些程序,发现按照原始状态的话,得到的结果没法保存。刚开始只是跑着玩玩,认为只要把结果截图下来,然后进行处理。后来发现,这样的做法对测试一两个序列还是可以接受的,但当自已在测试多个序列时,工作量实在太大了,浪费了好多时间。于是,就想怎样使测试结果自已保存起来?网上搜了一下,发现了一个函数“freopen”,可以简单的实转载 2015-05-14 08:51:25 · 3113 阅读 · 4 评论 -
HM调试成功————二
第一步:下载HM14.0,YUV播放器,官方测试序列。第二部:在VS2013上调试HM14.0,并编码解码,再对比前后的视频效果。第三步:在VS2013中打开文件 C:\Users\VIP\Desktop\HM14.0\HM-14.0\build\HM_vc10第四步:将TAPPENCODER设置为启动项,将要测试的测试序列添加到C:\Users\VIP\Desktop\HM14.0\原创 2015-03-11 19:31:29 · 2180 阅读 · 0 评论 -
HEVC测试模型HM使用之一
今天才正式开始进行HM测试,并期待在后面的学习中能顺利的理解各模块的原代码。我是在VS2013上跑的HM14.0,在目前的转态下我不知道这是否有什么不妥。毕竟我按照大牛的博客技术文章来做的,最终结果也差不多。呵呵。。至于差多少,待会再说。解压HM14.0后,文件夹里面包含这些文件,我这边使用的windows系统上的VS2013,所以选择Build里面的VC10对应的HM-VC10!原创 2015-03-10 20:28:19 · 2597 阅读 · 1 评论 -
HEVC测试序列
巧妇难为无米之炊,身为一个码农怎能碗里没有米呢?想必很多朋友都碰到下载测试序列的困惑,为了减少麻烦,现提供HEVC所有测试序列的下载,我已经上传到360网盘上,方便大家下载。主要的测试序列如下:Test sequencesClassSequence nameFrame countFrame rate转载 2015-03-29 20:46:33 · 15589 阅读 · 10 评论 -
R-Dcost
Rate Distortion Optimation (率失真优化) 在H.264编码过程中有许多的模式可以选择,有些模式的图像失真较小,但是码率却很大;有些模式的图像失真较大,但是码率却很小。人们就想了,有没有一种方法使得在不超过某最大码率的情况下,失真达到最小。即 min{D} s.t. R实现过程可以描述为:1.以特定的编码参数将视频编码,计算编码转载 2015-03-29 20:29:39 · 797 阅读 · 0 评论 -
感知视频编码(perceptual video coding )
感知视频编码就是在视频编码的过程中,将HVS应用进去,挖掘主观视频感知冗余,进一步提高视频编码压缩效率。1.Computational visual perception:三种视觉感知计算模型(1)视觉敏感模型(2)视觉注意模型(3)视觉可见模型2.perceptual video coding:三种感知视频编码方法(1)基于视觉模型法(vision-mpdel based原创 2015-03-23 21:01:34 · 3993 阅读 · 2 评论 -
GOP三种编码结构
为了应对不同场合,HEVC设立了GOP的三中编码结构,即帧内编码,低延迟编码,随机访问编码。这三种编码结构在编码结构配置文件中显示了各种结构的参数。如图所示,帧内编码给出了两个参考的配置文件,main main10 这两个配置文件在参数上的区别,前面一个比特深度为8,后一个为10.(还有别的区别,但是我还不知道)由帧内编码结构的定义知道,GOP内所有的预测编码都选择帧内预测编码(I原创 2015-03-18 21:04:46 · 6582 阅读 · 0 评论 -
码率控制中的“鸡生蛋蛋生鸡”的悖论
在码率控制过程中,获得适当的QP用于后面的量化过程是一个目的。但是在码率控制中为每一个层分配的比特数R,又是率失真优化的目标。在预先给定的R情况下,RDO通过选择不同的模式,运动估计等来获得的待量化的残差。量化是对残差进行的,所以最终能否达到预定的R,根据当前的残差设定QP是很重要的。但是这里在残差得到之前,QP就必须先设定,以为模式和运动估计,QP都是RDO考虑的对象,只有综合考虑才能选择出最佳原创 2015-04-22 09:07:14 · 1501 阅读 · 0 评论 -
率失真
所谓率失真(distortion-rate),其实指的是图像失真度与编码码率二者之间的相互关系。其中的图像失真度,目前一般采用原始图像与编码重建图像之间的峰值性噪比PSNR来衡量,这个PSNR可以是亮度PSNR,也可以是亮度与色度PSNR的线性组合。一般最简单的情况下,采用亮度的PSNR(Y-PSNR)来作为主要衡量依据。其中所谓的峰值信号,即图像中像素的最大值(比方说像素亮度的最大值);转载 2015-04-07 19:02:13 · 3058 阅读 · 0 评论 -
代码跟踪
(1)HM代码入口:main函数 encmain。找到main函数中调用的函数。再继续走下去 // call encoding function cTAppEncTop.encode();//cTAppEncTop时TAppEncTop的对象,该语句的含义是调用成员函数。。encode是类TAppEncTop的成员函数 // ending time dResult = (D原创 2015-04-13 18:55:17 · 1818 阅读 · 0 评论 -
码率控制总结
看了一个月的码率控制,暂时对现有的码率控制方法有了大体的了解。这是自己做的PPT汇报里面的一张,大致说明了现在有的关于码率控制的个不同时期的文章。这些都是从HEVC提案中找出来的,这也充分说明了他们的价值所在。 这两种基本的码率控制模型前后在各自的时期内都是起很大作用的,但是时代是发展的,现在的码率控制集成代码中用的是后一种的R-Lambda模型。这种模型是在前一代的基础上进行原创 2015-04-25 10:33:08 · 2504 阅读 · 4 评论 -
醉了
命令:-c encoder_lowdelay_main.cfg -c BlowingBubbles.cfg 工作路径:E:\HM\HM16.0\HM-16.0\bin\vc10\Win32\Release原创 2015-04-29 16:47:00 · 511 阅读 · 1 评论 -
VS2013全攻略
如有需要WPF工具的朋友可以移步 工欲善其事,必先利其器 之 WPF篇: 随着开发轨迹来看高效WPF开发的工具和技巧 之前一篇《c++的性能, c#的产能?!鱼和熊掌可以兼得,.NET NATIVE初窥》承蒙大家喜爱和编辑推荐,在此非常感谢大家支持。在回复中我发现很多朋友还在使用老的IDE,当然有些是公司决定的,和个人无关。但是有条件的话还是新的IDE比较适合大家,毕竟新的IDE会有转载 2015-04-29 20:38:08 · 2592 阅读 · 0 评论 -
HM过程
HM的代码流程CSDN博客2013.12.13转自http://blog.csdn.net/hq2902108007/article/details/89650901. 环境配置这个文档描述的版本是HM6.0运行的方法如下可参考之前的文章:2. 编码端主函数的调用主函数中会调用create函数,但是这里面是空函转载 2015-05-03 22:22:35 · 3547 阅读 · 2 评论 -
HEVC/H.265 Bistream Analysis Tools
Currently in markets, there are few good HEVC/H.265 data analysis tools for developers, such as Vega HEVC, Elecard HEVC Analyzer, Parabola Explorer,Zond 265, CodecVisa, and HevcVisa Cloud.转载 2015-05-12 22:23:42 · 2403 阅读 · 0 评论 -
HEVC链接
http://blog.csdn.net/lealoncity/article/details/40340543视频编解码基础:http://www.cnblogs.com/xkfz007/category/322714.htmlHEVC代码跟踪PPT: http://www.camdemy.com/folder/1043转载 2015-05-12 22:38:03 · 728 阅读 · 0 评论 -
VS2013无法找到.exe文件
下载开源的工程文件,编译改错之后,出现无法找到.exe文件的错误。正常情况下都是因为输出目录不对这里其实我的输出目录是对的,只是我编译的时候用的调试Debug模式,但是在改输出路径的时候,改动的却是Release模式下的。切记。。。。原创 2016-11-09 16:41:50 · 9620 阅读 · 0 评论