帧内预测
- 格式:doc
- 大小:917.50 KB
- 文档页数:37
基于卷积神经网络的HEVC帧内预测算法优化
李轩;冷雨馨
【期刊名称】《现代电子技术》
【年(卷),期】2024(47)11
【摘要】作为HEVC标准中最基础、最重要的技术之一,帧内预测对实现视频编码的高速、高质量和高压缩率具有重要的作用。
文中针对帧内预测复杂性问题进行研究,提出一种基于深度卷积神经网络(CNN)的方法,通过学习来预测CTU的划分,从
而减少HEVC帧内编码的复杂性。
通过建立一个大规模的CTU划分数据库,并利用CNN的能力学习各种CTU划分模式,能够准确地预测CTU的划分,从而避免了传
统的穷举搜索,实现了HEVC编码复杂性的显著降低,提高了编码效率。
实验结果表明,提出的方法在测试序列和图像上分别将帧内编码时间减少了62.25%和69.06%,与其他最先进的方法相比,比特率分别仅增加了2.12%和1.13%,达到了优化的目的。
【总页数】9页(P69-77)
【作者】李轩;冷雨馨
【作者单位】沈阳航空航天大学电子信息工程学院
【正文语种】中文
【中图分类】TN919.81-34
【相关文献】
1.基于梯度的H.265/HEVC帧内预测硬件加速算法研究
2.基于邻近值的HEVC帧
内预测优化3.一种新的基于FPGA的HEVC帧内预测硬件结构4.基于Hough变
换的3D-HEVC深度图快速帧内预测方法5.基于深度学习的HEVC帧内预测算法研究及FPGA硬件加速
因版权原因,仅展示原文概要,查看原文内容请购买。
h264协议H.264是一种常用的视频压缩编码协议,也被称为AVC (Advanced Video Coding)或MPEG-4 Part 10。
它是一种使视频流能够在较小的带宽上进行高质量传输的标准。
H.264协议的主要目标是通过提供高质量视频编码的同时减少带宽需求。
为了实现这一目标,H.264采用了一些先进的编码技术,包括运动补偿、帧内预测、变换和熵编码等。
其中,运动补偿是H.264协议的一个重要特性。
它通过分析帧间的差异来实现视频压缩。
在连续的帧中,相邻帧之间的图像通常只有部分区域发生变化。
通过将这些变化的部分与参考帧进行比较,可以通过发送变化的部分和一些额外的信息来减少带宽需求。
另一个H.264的特性是帧内预测。
帧内预测通过在图像的当前帧内预测像素值,来减少数据的传输量。
具体的方法是使用相邻像素的值来估计当前像素的值,并将估计误差进行编码传输。
这样可以大大减少数据量,提高传输效率。
H.264还采用了变换和熵编码技术。
变换技术将图像空域的像素转换为频域的变换系数,从而能够更好地提取图像的局部特征。
熵编码技术将高概率事件用较短的编码表示,低概率事件用较长的编码表示,从而进一步减少数据的传输量。
总体而言,H.264协议通过运动补偿、帧内预测、变换和熵编码等技术,使得视频数据能够以较低的带宽要求进行传输,同时保持较高的视频质量。
这使得H.264成为了广泛应用于视频传输领域的标准协议。
H.264协议被广泛应用于各种领域,包括视频通话、视频会议、流媒体传输等。
由于其高效的视频压缩能力,H.264能够在低带宽环境下实现高质量的视频传输,大大提升了用户体验。
然而,H.264也存在一些问题。
它对编码和解码的计算要求较高,需要较强的硬件支持。
此外,H.264是一种有损压缩技术,压缩后的视频质量无法与未压缩的视频完全保持一致。
这些问题在一定程度上限制了H.264在某些应用场景中的应用。
随着技术的发展,H.264也在不断演进。
HEVC学习1—总框架与程序结构 要开始学术了。 我的研究方向是视频编解码,主要研究领域为HEVC,目前新手小白一枚。 这里通过博客的方式记录一下自己的学习过程,顺便也给与我一样的人一个参考。
一、HEVC简介 要对HEVC的总体架构有所了解(百度百科什么的其实一大堆),建议参考这两篇文章,具体可以谷歌学术,找到pdf下载 1.Overview of the High Efficiency Video Coding (HEVC) Standard 这篇文章便是传说中的 HEVC overview 官方文档啦 想看中文翻译是怎么样的,可以看看这篇文章《解读下一代视频压缩标准HEVC (H.265)》 2. High Performance, Low Complexity Video Coding and the Emerging HEVC Standard 这篇文章介绍了HEVC的发展历史,以及HEVC中采用的一些重要技术。 其他的文章还包括有,我现在也在慢慢地看。 列表如下: 3. A Hybrid Video Coder Based on Extended Macroblock Sizes, Improved Interpolation, and Flexible Motion Representation 4. Video Coding Using a Simplified Block Structure and Advanced Coding Techniques 5. Video Compression Using Nested Quadtree Structures, Leaf Merging, and Improved Techniques for Motion Representation and Entropy Coding
6. Improved Video Compression Efficiency Through Flexible Unit Representation and Corresponding Extension of Coding Tools 7. Comparison of the Coding Efficiency of Video Coding Standards—Including High Efficiency Video Coding (HEVC) 8. HEVC Complexity and Implementation Analysis 9. Block Partitioning Structure in the HEVC Standard 10. Quadtree Based Nonsquare Block Structure for Inter Frame Coding in High Efficiency Video Coding 11. Block Merging for Quadtree-Based Partitioning in HEVC
12. Decoder-Side Motion Vector Derivation for Block-Based Video Coding 13. HEVC Deblocking Filter 14. Sample Adaptive Offset in the HEVC Standard 15. Transform Coefficient Coding in HEVC 16. Comparative Rate-Distortion-Complexity Analysis of HEVC and AVC Video Codecs 17. High Throughput CABAC Entropy Coding in HEVC 18. Intra Coding of the HEVC Standard 19. Adaptive Global Motion Temporal Filtering for High Efficiency Video Coding 20. Parallel Scalability and Efficiency of HEVC Parallelization Approaches 21. HEVC Lossless Coding and Improvements 22. Rate-Distortion Optimized Reference Picture Management for High Efficiency Video Coding 23. Performance and Computational Complexity Assessment of High-Efficiency Video Encoders
HEVC的官方详细文档见这里:phenix.it-sudparis.eu/jct/doc_end_user/current_document.php?id=7243
二、HM HEVC的官方测试程序为HM。HM的代码见:https://hevc.hhi.fraunhofer.de/svn/svn_HEVCSoftware/tags/ 大家可以下载一个svn,Windows下的请搜索 TortoiseSVN,使用方法可以参考这篇博客 TortoiseSVN使用方法:http://www.cnblogs.com/blsong/archive/2010/09/02/1816124.html 关于HM的使用和参数配置参考了这篇文章: http://blog.csdn.net/hevc_cjl/article/details/8169182 这位博主很不错,分享了大量的代码注释,并讲解了一些重要的概念和代码。 测试中主要使用的工程为 TAppEncoder 和 TAppDecoder,前者为编码器,后者为解码器。 编码器的输入参数为-c "cfg/encoder_randomaccess_main.cfg" -c "cfg/per-sequence/BQSquare_416x240_60.cfg" 加引号的目的是使得引号内的内容作为一个参数传递(避免路径中的空格带来的影响) 如图所示: 建议release版本编译运行,除非是自己要调试错误采用debug,毕竟编码过程比较慢。 运行的结果一般是 str.bin 和 rec.yuv两个文件, 会放在指定的工作目录中(上图中的“工作目录参数”指定的目录下) 其中str.bin就是编码的结果,即HEVC格式的视频文件, 而 rec.yuv 是编码中重建的视频(和原始输入yuv文件相比会有些不同)。
TAppDecoder是解码器的工程, 运行这个工程的参数为 -b str.bin -o rec2.yuv 其中 -b 参数指定了 HEVC编码文件,而 -o 指定了解码器的输出。 这里输出设置为 rec2.yuv 主要是为了和编码器编码重建的 rec.yuv 对比开来。 这两个文件在代码无误的情况下应该内容完全一致,否则说明你改动的代码出现了问题, 导致了解码出现了错误。
如何对比两个yuv文件是否一致,推荐使用 YUVplayer,自己百度可以下载到, 界面比较小巧,也比较易于使用。这里就不做详细介绍了。
明白了这些之后,再开始新的学习吧,一步一步学习新的算法概念, 并且尝试将自己想的算法添加到代码中,或者替换部分代码把。 HEVC学习(一) —— HM的使用 从今天开始,会陆续发表HEVC学习过程中的一些总结,主要目的是与大家一起交流学习,由于水平有限,恳请大家能够不吝赐教。 由于这是第一次写博客,而且学习也是个循序渐进的过程,第一篇文章就简单介绍下如何使用HEVC的官方标准测试模型HM吧。其实如果之前学习过H.264的话,肯定也是用过JM的,HM的使用方法与JM基本上是相同的,只是配置文件的内容有所不同罢了。好了,不多说,马上进入正题。
首先自然是先把这个测试模型下载下来,链接地址如下:https://hevc.hhi.fraunhofer.de/svn/svn_HEVCSoftware/tags/,这个网址下有各个版本的HM,到目前为止,最新版本是HM 9.0,可以根据自己的实际需求进行选择。这里需要注意的是,下载时需要使用SVN,如windows下的TortoiseSVN 。
其次,最好附带下载HM的reference software manual即参考软件手册,这个手册的主要内容包括HM的下载地址和使用方法,更重要的是,里面包含了对配置文件各个参数的详细解释,可以说是使用HM的必备手册。
最后,就是真正地编译HM工程了。从运行环境来讲,既可以在linux系统下使用makefile对HM进行编译,也可以在windows系统下使用IDE如VS对HM进行编译。我个人是用VS2008作为开发环境,因此,这里也只介绍使用VS编译HM。关于linux下如何进行,请参看前面提到的参看软件手册吧。
打开下载下来的HM文件夹,工程存放在build目录下,工程名为HM_VC9(对VS2008而言)。右击“Solution 'HM_VC9'(7 projects)”->“build solution”。正常的话,等待片刻所有工程都能得到正确的编译,并最终在HM文件夹下生成bin目录,在目录xxx\bin\vc9\Win32\Debug下,最终会生成两个可执行文件,TAppEncoder.exe和TAppDecoder.exe,分别问编码和解码的可执行文件,到了这一步,表明你之前的步骤都是正确的。接下来就能进入到编解码器的使用当中来了。
先说编码器的使用:右击“TAppEncoder”->“Set as Startup Project”, 接着,再次右击“TAppEncoder”->“Properties”->“Configuration Properties”->“Debugging”,在弹出的右窗口中有这么两行需要关注:“Command Arguments“和“Working Directory”。前者用于输入运行时的命令参数,后者用于指定工程的工作目录。先说工作目录,将其设置为xxx\bin\vc9\Win32\Debug,即上一步中编译生成的可执行文件的绝对路径。接下来,为了方便起见,我们可以把需要使用到的配置文件、yuv测试序列复制到该目录下。与JM有所