程芳



摘要:目的是要對靜止圖像壓縮,從而節省空間,使得單位時間內能傳送更多和更快的圖像或者視頻,方法是通基于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.
【通聯編輯:謝媛媛】