摘 要: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格式閱讀原文