VTM 压缩图像初体验记录

2023-10-10 02:10

本文主要是介绍VTM 压缩图像初体验记录,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

VVC编码程序入门超详细教程——VTM从源码下载到编码CU划分结果可视化_暴躁的豌豆射手的博客-CSDN博客
VTM配置并使用VTM对YUV视频帧进行编解码(基于windows系统)_B gorgeous的博客-CSDN博客
​​​​​​VTM配置并使用VTM对YUV视频帧进行编解码(基于windows系统)_B gorgeous的博客-CSDN博客

 

...其实蛮多的,我随机列几个

POC 时域播放第一帧,

TId(temporal id 时域层序号,一个帧只能参考时域层低于他的帧,不能参考更高层的帧)

27456是整张图像的比特数--总比特数,YUV各自的PSNR值

bpp的话就是这个除以图像大小

第二行Total Frames | 的Bitrate其实就是上面的27456,不过这里是以字节为单位,也就是34.32KB,换成字节再乘以8 就等于 27456

rec.yuv 是编码后的重建帧

str.bin 是编码后的码流

 

使用 ffmpeg 将 yuv 文件转换为 .jpg 文件

 ffmpeg -s 500x333 -pix_fmt yuv444p -i "C:\Program Files\VVCSoftware_VTM-master\VVCSoftware_VTM-master\test\rec.yuv" -vframes 1 "C:\Program Files\VVCSoftware_VTM-master\VVCSoftware_VTM-master\test\dec.jpg"

ffmpeg -s wxh =-pix_fmt yuv444p -i inputfile_path -vframes 1 outputfile_path

使用ffmpeg将原图转换为yuv文件,再使用ffmpeg将其还原会jpg,图像正常 

 

但是,经过vtm压缩后的yuv文件使用ffmpeg没有办法还原回原图

究其原因,在encoder_intra_vtm.cfg文件中,

 那个codec operating bit-depth本来是10位,改成8以后,这件事就解决了。。。

---------------------------

另一个(简单)方法,opencv,cv2.cvtColor(),opencv支持的色彩空间,转换色彩空间只需要一条指令调api

OpenCV: Color Space Conversions

然后新的问题出现了,opencv不支持直接读 yuv文件。。。于是找了半天,大约是按字节文件啥的把YUV格式读进来,然后作为一个数组(图像)输到opencv里去转

这件事实有些麻烦。。。没做

------------文件解释

参照一些vtm压缩blog做的,有一些是写了text.bat文件,然后同时生成了str.bin和recon.yuv

因为参数里包含了解压缩的过程

也看到blog把这两部分分开做,也就是压缩的时候,用EncoderAPP,解压的时候用DecoderAPP 

所以我的文件目录里包括了dec.yuv和rec.yuv

批处理的是用Encoder,然后生成的记录会在enc.txt里

Decoder就会产生decoder对应的文件

总的流程大概是,

1、选择压缩的cfg文件,几种压缩模式,这边是encoder_intra_vtm.cfg

str.bin就是想还原的bitstream的名称,rec.yuv就是重建的,按需更改,不是必要

 最简单的改qp,就是改QP,范围在0-51,数值越大,量化越多,比特率越小,psnr越差。

其余的修改,可能需要更多的编码知识

 还有这个,默认是10。

 在不费脑子的情况下,直接用ffmpeg将yuv转回普通图像格式的话,就把这改回8吧,10的话应该有对应的操作方式,需要进一步的学习

Notes:很多人把测试序列的cfg内容沾到这儿来,实测,不需要

2、压缩序列cfg

在per-sequence里给了一些参考的cfg

我把图像从jpg通过ffmpeg转到了yuv444p下,所以参考的是 Doc_444.cfg

 

如图,把这个复制到那个test的文件夹下,InputFile后面改成待压缩Yuv路径

后面的只用改FramesToBeEncoded(我这里是图像,所以就是1)其他不用动,这个才对应EncoderAPP属性里的内容

3、EncoderAPP 属性

 就是说不用把测试序列里的内容粘到encoder_intra_vtm里面去,粘过去的话,这个属性设置就不适用了

这篇关于VTM 压缩图像初体验记录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/177189

相关文章

关于Spring @Bean 相同加载顺序不同结果不同的问题记录

《关于Spring@Bean相同加载顺序不同结果不同的问题记录》本文主要探讨了在Spring5.1.3.RELEASE版本下,当有两个全注解类定义相同类型的Bean时,由于加载顺序不同,最终生成的... 目录问题说明测试输出1测试输出2@Bean注解的BeanDefiChina编程nition加入时机总结问题说明

Python利用PIL进行图片压缩

《Python利用PIL进行图片压缩》有时在发送一些文件如PPT、Word时,由于文件中的图片太大,导致文件也太大,无法发送,所以本文为大家介绍了Python中图片压缩的方法,需要的可以参考下... 有时在发送一些文件如PPT、Word时,由于文件中的图片太大,导致文件也太大,无法发送,所有可以对文件中的图

将sqlserver数据迁移到mysql的详细步骤记录

《将sqlserver数据迁移到mysql的详细步骤记录》:本文主要介绍将SQLServer数据迁移到MySQL的步骤,包括导出数据、转换数据格式和导入数据,通过示例和工具说明,帮助大家顺利完成... 目录前言一、导出SQL Server 数据二、转换数据格式为mysql兼容格式三、导入数据到MySQL数据

关于rpc长连接与短连接的思考记录

《关于rpc长连接与短连接的思考记录》文章总结了RPC项目中长连接和短连接的处理方式,包括RPC和HTTP的长连接与短连接的区别、TCP的保活机制、客户端与服务器的连接模式及其利弊分析,文章强调了在实... 目录rpc项目中的长连接与短连接的思考什么是rpc项目中的长连接和短连接与tcp和http的长连接短

Oracle查询优化之高效实现仅查询前10条记录的方法与实践

《Oracle查询优化之高效实现仅查询前10条记录的方法与实践》:本文主要介绍Oracle查询优化之高效实现仅查询前10条记录的相关资料,包括使用ROWNUM、ROW_NUMBER()函数、FET... 目录1. 使用 ROWNUM 查询2. 使用 ROW_NUMBER() 函数3. 使用 FETCH FI

Python MySQL如何通过Binlog获取变更记录恢复数据

《PythonMySQL如何通过Binlog获取变更记录恢复数据》本文介绍了如何使用Python和pymysqlreplication库通过MySQL的二进制日志(Binlog)获取数据库的变更记录... 目录python mysql通过Binlog获取变更记录恢复数据1.安装pymysqlreplicat

基于WinForm+Halcon实现图像缩放与交互功能

《基于WinForm+Halcon实现图像缩放与交互功能》本文主要讲述在WinForm中结合Halcon实现图像缩放、平移及实时显示灰度值等交互功能,包括初始化窗口的不同方式,以及通过特定事件添加相应... 目录前言初始化窗口添加图像缩放功能添加图像平移功能添加实时显示灰度值功能示例代码总结最后前言本文将

Servlet中配置和使用过滤器的步骤记录

《Servlet中配置和使用过滤器的步骤记录》:本文主要介绍在Servlet中配置和使用过滤器的方法,包括创建过滤器类、配置过滤器以及在Web应用中使用过滤器等步骤,文中通过代码介绍的非常详细,需... 目录创建过滤器类配置过滤器使用过滤器总结在Servlet中配置和使用过滤器主要包括创建过滤器类、配置过滤

正则表达式高级应用与性能优化记录

《正则表达式高级应用与性能优化记录》本文介绍了正则表达式的高级应用和性能优化技巧,包括文本拆分、合并、XML/HTML解析、数据分析、以及性能优化方法,通过这些技巧,可以更高效地利用正则表达式进行复杂... 目录第6章:正则表达式的高级应用6.1 模式匹配与文本处理6.1.1 文本拆分6.1.2 文本合并6

python与QT联合的详细步骤记录

《python与QT联合的详细步骤记录》:本文主要介绍python与QT联合的详细步骤,文章还展示了如何在Python中调用QT的.ui文件来实现GUI界面,并介绍了多窗口的应用,文中通过代码介绍... 目录一、文章简介二、安装pyqt5三、GUI页面设计四、python的使用python文件创建pytho