标签:
简介
压缩像素数据可以采用的压缩方案是直接压缩bgr24或者将bgr24图像转换为yv12,然后分平面使用libjpeg进行压缩;转yv12然后压缩理由是yv12数据量比bgr24少一半;那么压缩完之后应该数据量会更小;但具体是不是真的会更好,如果好的话,好了多少,并没有一个定量的测试比对数据;这里我们通过实验数据来进行具体分析以辅助决策如果处理我们的数据.
实验方案
选择25个1600×1200尺寸的图像;随机采样计算压缩后的数据大小和压缩与解压缩的耗时;最后性能比对曲线由两条线构成:一是压缩后数据量大小的比对结果,二是压缩和解压缩耗时的比对结果;下图中红色的为y=0表示的横轴;蓝色的为压缩数据量的对比曲线;绿色的为压缩和解压缩耗时的对比曲线;横坐标表示数据尺寸;一共118个采样点;每一个采样点对应的尺寸为(n*10 + 20)^2;即每一个采样点比前一个采样点的图像尺寸的宽高都大10个像素;曲线的含义则是 (bgr – yv12)/bgr*100; 即计算两种压缩方式统计结果的百分比差异;另外耗时的统计每一个采样点包含一次压缩和一次解压缩过程;考虑到使用像素数据时需要bgr24,yv12的时间统计还包含一次yv12转bgr的处理;
结果分析:
根据前边介绍的实验方案,红色线表示的横轴上方表示直接压缩bgr比转yv12然后进行压缩性能要差,横轴下方表示压缩bgr性能优于压缩yv12.从压缩后的数据量上分析,将数据从bgr24转换为yv12没有明显的优势;在全部采样点上, 直接压缩bgr24比压缩yv12最大的百分比差异未超过4%;从耗时上看,尺寸大于200×200以后,耗时约增加了25%; 但尺寸在200×200以内的图像;直接压缩bgr24更有优势;[耗时曲线第一个点应当是异常点]
备注
Turbojpeg是与libjpeg相关的另一个项目,在libjpeg之上做的一些工作,包括提供了一些更上层的接口,我是在搜索libjpeg能不能直接压缩yv12数据时发现这个东西的,发现他的网站有介绍yv12的内容,但很模糊,拿来压缩和解压缩yv12发现数据出错,再仔细搜索相关信息发现他的接口只是提供了把jpeg图像解码为yv12的功能,并没有实现直接编码yv12格式图像的接口.不过也有提到正在开发的版本里已经有了直接编码和解码yv12的接口了.
http://sourceforge.net/p/libjpeg-turbo/mailman/message/32239709/
这个等有时间再仔细测试
ref
http://libjpeg.sourceforge.net/
标签:
原文地址:http://www.cnblogs.com/zstang/p/4394091.html