程芳
摘要:目的是要对静止图像压缩,从而节省空间,使得单位时间内能传送更多和更快的图像或者视频,方法是通基于DCT变换的压缩方式,DCT在进行压缩和量化时,图像的能量集中在左上角,而右下角的值绝大部分为零,从而降低了比特率。结果比较压缩后的图片和原始的图片,虽然压缩后的像素值有细微的变化,但是由于人眼的特性,根本发现不了,最重要的是大大节省了空间,得出结论,基于DCT变换的图片压缩是一种很好的方法。
关键词:图像;压缩;DCT;像素
中图分类号:TP391 文献标识码:A
文章编号:1009-3044(2021)10-0228-02
1 背景
根据大数据显示大家对图像、视频的追求与日俱增,像百度推送的小视频,以及抖音等都成为大家消遣时光主要对象,但是图像、视频所占据的数据太大,所以在传输之前首先都要进行压缩,由于人眼的特性,视频图像在形成的过程中是一秒钟传送50帧静态图像而形成的,所以终归是对静态图像的压缩的过程,另外图像及视频在传输过程中会产生大量的数据,会占据大量的带宽,同时还会使得数据在传输过程中速度大大地降低,随着5G时代和3D电视的到来,图像压缩是个严峻的问题,只有解决了数据量的问题,才会推进下一个数字时代的发展。
JPEG[1]是灰度图像和真彩色图像压缩的一种标准方式,对于一些工程图、卡通图和非真实感的图片若采用JPEG压缩方式压缩效果是不好的。图像压缩在进行分类时有两种,第一种为有损压缩,是一种基于DCT的方法,压缩后在重构图像时,压缩后的图像像素是明显少于原始图像的像素,因为DCT公式中涉及无理数,而计算机在计算过程中会截取有效位数,将剩下的就去除,但是人眼的特性无法辨别出,人们看到压缩后的图片与没压缩前是差不多的。第二种压缩方式为无损压缩,通常采用的是预测的方式,压缩后的图像和原始图像的像素是相同。
2 基于DCT图像压缩的过程
输入图像通过DCT变换,DCT在图像压缩中的作用是将图像中绝大部分能量集中在少数的系数中,变换的过程只处理该少数的系数,其他空间域的值都转换为零。DCT变换从理论上讲没有任何图像信息的丢失,输入图像是等于输出的图像。量化的过程就是把视觉上不重要的地方把它丢失,减少图像块的存储量,是数据量减少的一个重要环节,由于量化的过程是一种一对多,如像素为0.1,在量化时它为0.5,像素为0.9,在量化时也为0.5去处理,所以在量化的过程会引起量化噪声,熵编码是编码的过程不能丢失相关的信息,它是通过信息出现的概率来进行编码的,如离散字母:{a1,a2,a3,a4},a1,a2,a3,a4出现的概率分别用p1,p2,p3,p4表示,没别为p1=0.123,p2=0.25.p3=0.5,p4=0.125,对这些离散字母按照概率的高低重新排序,分别为a3,a2,a1,a4,其中a1,a4出现的概率是相同的,把两者结合起来,a1与a4概率相加与a2相同,a2,a1,a4相加与a3相同,依次编码的过程如图3所示。图像解压缩是图像压缩的逆过程。
3 DCT压缩的工作原理
3.1 图像预处理
在DCT变换之前要进行前处理,若是彩色图像首先要把它得RGB空间转换成YUV色彩空间,其中Y是亮度信号,U、V表示两个色差信号,接着对U和V连个色差信号进行采样,在采样的过程中其实则为压缩,不对Y信号压缩主要是亮度信号主要为低频信号,如果出现了失真,人眼对此部分比较敏感,所以Y信号一般不进行压缩,对U和V两倍的采样后,变成了原来尺寸1/4,如对一个16*16的一个图像块经过色差分量采样后,则含有6个8*8的图像块,在DCT变换之间,还需将亮度信号或者灰度图像的像素值减去128,原先像素值的范围为(0,255),减去128后变成了(-128,177),减去128主要是因为自然的大部分图像的灰度值为128的概率比较大,如果减去128,则图像大部分像素值接近于零,而我们在压缩是最希望碰到的就为零,因为零在压缩式不占据存储空间。
3.2 DCT 变换
8*8的像素值经过8*8DCT变换,变换后将原先的灰度值变成了频域值,在自然图像中像素点与像素点之间的灰度变化比较缓慢,DCT变换将缓慢、光滑的图像集中在少数的低频当中,在量化时只需要处理这些系数,而其他的像素值则较小或者接近为零,从理论上讲DCT变换不会引起图像的失真, DCT变换中含有余弦函数,它是无理数,计算机在计算时会截断。在直流的分量当中,又采用差值编码[2](DPCM)。编码的过程如下图4所示:
原始的像素值是1200、1215、1205、1201、1220、1204,最少需要11位去编码,采用DPCM,保持1200第一个直流分量的像素值保持不变,剩下的像素值减去1200,像素值则变成了1200、15、5、1、20、4,经过差值后所需要的比特数目要远远小于之前的比特数,这个过程其实也是压缩的过程,并且此过程是可逆的,完成可以重构之前的直流分量。在8*8图像块中,除了第一个直流分量,剩下部分为交流分量,在进行读取时是先读取左上角的部分,再去读取右下角的部分,因为左上角主要分布的是低频分量,频率变换比较慢,而人眼对低频分量比较敏感,所以先去记录低频的部分,而右下角主要分布的是高频分量,空间频率变换较快,读取的顺序如图5所示。
4 实验过程
压缩的流程如图6所示,首先在一幅图片中抠出8*8的块,从a图中会发现原始图像的像素值点与点变换比较平缓,第一步将这些像素值减去128,再做DCT变换,变换后就为b图,注意此时的b图的值为频域上的值,从b图会发现,它的直流分量占绝大部分,越靠右下角的部分数值都较小,c图为量化表,将b图的值除以对应的c图值并取整即为量化后的值d图,d图中绝大部分的值变为0,直流分量15,单独的用DPCM处理,交流的部分用图5的扫描顺序编码,接下来是去编码,将d表中的量化值乘以量化表中的值得到e表,再经IDCT变换得到像素值f,比较原始像素值a,和压缩后得的像素值f,点与点相比较,会发现灰度值有细微的变化,但是这些小变化放在一幅大的图片中,人眼就很难辨别出,最重要能节约很多空间,图7是具体的程序和实现的图片。
5 结束语
图像经过DCT变换、量化、去量化、IDCT变换后,图像的像素值有些轻微的变化,但是人眼无法分辨出,最重要的是图像节省了很多空间,使得在单位时间和单位带宽内,能传送更多和更快的图像。
参考文献:
[1] 涂昌培.静止图像数据的压缩方法[J].江汉大学学报,2000,17(3):39-45.
[2] 白慧敏,王鑒,牛泽.基于图像混合编码的脑电数据加密方法[J].单片机与嵌入式系统应用,2020,20(12):23-27.
[3] 陈曦.基于DCT的bmp彩色图像压缩应用研究[J].电脑编程技巧与维护,2020(11):142-143.
[4] 王若飞,刘锋.选择排序的DCT系数对JPEG图像的可逆数据隐藏[J].计算机工程与科学,2020,42(11):2013-2019.
[5] 宋琳琳.计算机图像处理技术探析[J].现代工业经济和信息化,2020,10(10):117-118,151.
[6] 王军敏,芦荐宇,张诗梦.主分量分析在图像信号处理中的应用[J].平顶山学院学报,2020,35(5):49-53.
[7] 燕红文.一种基于深度学习的双 JPEG 图像压缩检测算法[J].上海电力大学学报,2020,36(5):505,509.
【通联编辑:谢媛媛】