基于LabVIEW的图像压缩的研究
摘 要:DCT(Discrete Cosine Transform,离散余弦变换)是目前应用最为广泛的多媒体数据压缩技术之一,是近年来国际上高速海量的数据处理领域研究的热点之一。利用LabVIEW软件平台及友好的界面实现图像压缩编程。实验表明,适当选取DCT系数,能得到小的均方误差、压缩比高,同时图像效果好,符合图像与视频信息在大量存储以及传输的要求。
关键词:图像压缩;DCT;JPEG;均方误差
中图分类号:TP301.6 文献标识码:A 文章编号:1004373X(2008)1616903
Study on Image Compression Based on LabVIEW
XIONG Yunpeng.1,HAN Miao.2,LI Qian.2
(1.College of Electricity Information Engineering,Daqing Petroleum Institute,Daqing,163318,China;
2.Business Division Explanation Center,CNPC Logging Changqing,Xi′an,710201,China)
Abstract:The Discrete Cosine Transform (DCT) is one of the most widely used digital compression techniques for multimedia,it is a hotspot in recent years.Using LabVIEW software platform and its friendly interface surface,image compression programming are performenced well.The experiments show that proper selection DCT coefficients can achieve litter mean error,high scaled compression ratio,high image effect.And this has reached the requirements of the image and the video information in the massive storage and the transmission.
Keywords:image compression;DCT;JPEG;mean error
图像压缩主要就是根据图像信息存在很大的冗余度,数据之间存在着相关性和眼作为图像信息的接收端,其视觉对于边缘急剧变化不敏感(视觉掩盖效应),以及人眼具有对图像的亮度敏感性高、而对色度敏感性低的特点这两点特征进行的,由此发展出图像压缩的2类基本方法:一种是将相同的或相似的数据或数据特征归类,使用较少的数据量描述原始数据,达到减少数据量的目的。这种压缩一般为无损压缩。第二类方法是利用人眼的视觉特性有针对性地简化不重要的数据,以减少总的数据量。这种压缩一般为有损压缩,只要损失的数据不太影响人眼主观接收的效果,就可采用。
利用目前最流行的图片编程语言LabVIEW软件平台,以及其便捷的编程环境和友好的人机界面,对图像进行DCT变换和逆变换运算,并对DCT系数进行调整,尽量保留低频分量,忽略高频分量进行分析图像,使其尽量在不损失信号所携带的信息的前提下,尽可能地减小用于存储信号的开销,从而大大提高图像的压缩比。
1 基本原理
离散余弦变换(DCT)是一种实数域变换,其变换核为实数的余弦函数,计算速度较快,而且对于具有一阶马尔柯夫过程的随机信号,DCT十分接近于KarhuncenLoeve变换,也就是说它是一种近似最佳变换,很适于做图像压缩和随机信号处理。
二维离散余弦变换换[1](DCT)和反变换定义为:F(u,v)=2MNC(u)C(v)∑M-1x=0∑N-1y=0f(x,y)·
cos[(2x+1)uπ2M]cos[(2y+1)vπ2N](1)
f(x,y)=2MN∑M-1u=0∑N-1v=0C(u)C(v)F(u,v)·
cos[(2x+1)uπ2M]cos[(2y+1)vπ2N](2) 二维离散余弦变换对数字图像压缩算法的研究在利用离散余弦变换DCT对数字图像进行处理时,把每一帧内各小区的住处加以比较,找出相似性,只剩下那些不同的信息。进而,利用彩色和运动补偿技术,减少表示图像各相继帧中相似部分所需的信息量。在利用二维离散余弦变换进行图像数据压缩时,首先要将输入图像分成若干N×N的图像块。由于N取值小到一定程度时采用变换处理可能带来块与块之间边界上存在着被称为“边界效应”的不连续点,而且当N<8时,边界效应比较明显,所以正确的选择应是N≥8,一般取N=8。将N的值代入,即可得到相关的变换式。
二维快速余弦变换是把8×8块不断分成更小的无交叠子块,直接对数据块进行运算操作。8×8数据块输入分解成64个正交基信号,每个基信号对应于64个独立二维空间频率中的一个,这些空间频率是由输入信号的“频谱”组成。在压缩时,将原始图像数据分成8×8数据单元矩阵,当图像数据分成一个8×8矩阵后,还必须将每个数值减去128,然后分别代入DCT变换公式中,即可达到DCT变换的目的。图像数据值必须减去128,是因为DCT转换公式所接收的数字范围是在-128~+127之间。经过FDCT变换后输出的矩阵数据自然数为频率系数,它们是64个基信号的幅值,称为“DCT系数”,即DCT变换系数值。这些系数以F(0,0)的值最大,称为DC,它代表直流分量“DCT系数”,其余的63个频率系数则多半是一些接近于0的正负浮点数,一概称之为“AC”,代表交流分量的“AC系数”。IDCT是FDCT的逆过程,它把64个DCT变换系数经逆变换运算,重建一个64点的输出图像。DCT系数的频带和方向信息如图1所示。
图1 DCT 系数频带和方向信息由于余弦变换具有把高度相关数据能量集中的趋势,DCT变换后矩阵的能量集中在矩阵的左上角,右下大多数的DCT系数值非常接近于0。对于通常的图像,舍弃这些接近于0的DCT的系数值,并不会对重构图像的画面质量带来显著的下降。所以利用DCT变换进行图像压缩可以节约大量的存储空间。压缩应该在最合理地近似原图像的情况下使用最少的系数,使用系数的多少也决定了压缩比的大小[2]。
2 软件系统
LabVIEW是实验室虚拟仪器集成环境(Laboratory Virtual Instrument Engineering Workbench)的简称,是美国国家仪器公司(National Instrumentstm,NI)的创新软件产品,也是目前应用最广、发展最快、功能最强的图形化软件开发集成环境。作为编写应用程序的语言,除了编程方式不同外,LabVIEW具备语言的所有特性,因此又称为G语言。它与传统高级编程语言最大的差别在于编程方式,一般高级语言采用文本编程,而G语言采用图形化编程方式。G语言编写的程序称为虚拟仪器VI(Virtual Instruments),因为它的界面和功能与真实仪器十分相像,在LabVIEW环境下开发的应用程序都被冠以VI后缀,以表示虚拟仪器的含义。一个完整的程序由前面板、数据流框图和图标连接端口组成[3]。
利用G语言模块化编程思想,可以将一个应用分解为一系列任务,再将每个任务细分,将一个复杂的应用分解一系列简单的子任务,为每个子任务建立一个VI,然后,把这些VI组合在一起完成最终的应用程序,这十分有利于程序的快速开发和后期的维护。
3 实现过程
(1) 前面板设计
在前面板设计中,要考虑主要考虑可控性和美观性。通过可选择框,选择要处理的图片。这里图像处理中4张经典图片(Camerman,Couple,Colubia和Baboon)。在系数表中,设置二极管变亮代表为1,灯灭代表为0;在手动点击这些二极管的亮与灭来设置1或0的同时,可以分别设置了全清除键和全部设置键,方便实现鼠标点击该键就实现相应的全清零或者全部设置为1的功能。设置2个输出数字指示器来显示相应的计算结果。以图片显示控件分别显示对应的图片。以直方图来分析图像前后的灰度分布信息。以一个系统停止按键方便实现系统的关闭。从前面板的这些快捷方便设置充分体现LabVIEW的人机交互的友好性。
(2) 程序框图
程序设计流程图如图2所示:
图2 程序设计流程图LabVIEW是一种图片式编程语言,处理的是数据流。程序设计采用模块化设计概念,自下而上设计,将每个功能模块形成子VI,分别调试;然后把各个SubVI做成模块,最后在总程序中调用各个模块进行连接,完成最终的应用程序,实现整体功能。
系统设计主程序图如图3所示。
(3) 实验结果及分析
先将系数表全清除,则系数表中的二极管全灭(对应为全0)。压缩图像一片黑,没有任何效果,均方误差达到最大134.097。对系数表进行斜45°直线方式从系数表左上角顺序点击方法(当然可以换其他的方法点击实现)点击发光二极管的亮与灭进行改变系数表,同时进行主观评价图片效果。保留系数百份比越小,被抛弃的图像信息就越多,则图像压缩比就越大,但同时均方误差就会越大。表1为按上述方法改变系数表下的均方误差和图像效果变化。
图3 系统设计主程序图表1 实验表
保留系数百分比均方误差(MSE)图像效果1.562 5%27.079 3十分模糊4.687 5%20.371 2模糊9.375%16.374基本可辨认出15.625%13.567 4可辨认出23.437 5%11.308 5清晰32.812 5%9.397 33清晰43.75%7.530 7清晰56.25%5.865 12清晰67.187 5%4.472 75清晰76.562 5%3.361 73清晰84.375%2.425 13清晰90.6251.739 07清晰95.312 5%1.180 22清晰98.437 5%0.669 06清晰100%0跟原图像一样
可见,保留系数百分比(即相当于图像压缩比)与均方误差是有矛盾,必须在两者之间有所折中。实验结果表明:在改变系数表过程中,如图4所示这种情况是在图像效果可以接受的情况下,保留系数百份比和均方误差的值是最佳的,压缩后图像的直方图是十分接近与原始图像的直方图。
在省去将近85%的系数的情况下,图像的效果几乎没有差别。从压缩图像的直方图和原始图像的直方图比较可以看出,经压缩后的图像的直方图和原始图像的直方图差别不大,同时在被抛弃的图像信息可以看出只是在非常细节的部分上损失了一些细节信息,总体能量更是几乎没有损失。8×8的图像块经过DCT变换后,其低频分量都集中在左上角,高频分量分布在右上角(DCT变换实际上是空间域的低通滤波器)。由于低频分量包含了图像的主要信息(如亮度),而高频与之相比,就不是很重要了,所以可以忽略高频分量,从而达到压缩的目的。将高频分量去掉需要用到量化,这是产生信息损失的根源,这里的量化操作,是将某一个值除以量化表中对应的值。由于量化表左上角的值较小,右上角的值较大,这样起到保持低频分量、抑制高频分量的目的。而且由于DCT系数能量往往主要分布在低频区域,这样在保证压缩图像的质量的同时还可以提高计算速度。
图4 最佳情况4 应用
离散余弦变换在图像压缩中有很多应用,它是JPEG,MPEG等数据压缩标准的重要数学基础。在JPEG压缩算法中,首先将RGB分量转化为成亮度分量和色差分量,同时丢失一半的色彩信息(空间分辨率减半);然后将输入图像划分为8×8或16×16的图像块,对每个图像块做二维离散余弦变换;然后舍弃高频的系数,并对余下的系数进行量化以进一步减少数据量;传输后,JPEG接收端解码量化了的DCT系数,计算每一块的逆二维离散余弦变换,然后重组这些小块成为一幅图像。因为经过变换后大部分DCT系数都近似为0,因此,这些系数对重构的影响很小,在视觉效果上不明显,进而可以忽略不计,最终实现JEPG的压缩。
视频编辑技术主要利用DCT变换线性性质,文献[4]综述DCT域可行的视频编辑技术,如图像渐变、添加字模、加膜处理、人物-背景合成、变速处理等操作,都可以通过简单的DCT线性变换和矩阵操作实现,且计算复杂度不大,与传统的空域操作相比,将节省75%(DCT)或23%(MCDCT)的计算量[5]。
5 结 语
离散余弦变换是一种实数域变换变换,由于因此计算速度较快,且十分接近于KarhuncenLoeve变换,是一种近似最佳的变换而广泛的应用于做图像压缩和随机信号处理。本文实现了在LabVIEW软件平台下,利用其强大的计算能力和友好的编程环境对图像进行DCT变换和逆变换。仿真实验结果表明,选取适当的DCT系数,尽量保留低频信息分量,抛弃图像信息的高频分量,能达到均方误差小、压缩比高的、图像效果高的最佳点,同时,运算速度快的特点,在JEPG图像压缩和视频编辑技术等方面应用具有良好的发展前景。
参 考 文 献
[1]Chtprasert B,Rao K R.Discrete Cosine Transform Filtering[J].Signal Processing,1990,19 (3):233245.
[2]董长虹,赖志国,余啸海.Matlab图像处理与应用\.北京:国防工业出版社,2004.
[3]杨乐平,李海涛,杨磊.LabVIEW程序设计与应用\.2版.北京:电子工业出版社,2005.
[4]Chang S F,Messerschmt D G.Manipulation and Compositing of MC2DCT Compressed Video[J].IEEE Journal of Selected Areas in Communications,Special Issue on Intelligent Signal Processing,1995,13(1):111.
[5]刘艳,李宏东.DCT域图像处理和特征提取技术[J].中国图像图形学报,2003,2(2):121129.
作者简介 熊云鹏 1983年出生,研究生。主要研究方向为通信信息与系统、仪器检测。
注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文