本發(fā)明涉及圖像處理
技術(shù)領(lǐng)域:
,尤其涉及基于tms320c6678芯片的高速jepg(jointphotographicexpertgroup,聯(lián)合圖像專家組)圖像壓縮方法,可應(yīng)用于對大規(guī)模雷達(dá)回波數(shù)據(jù)的高速jpeg圖像壓縮處理中。
背景技術(shù):
:高效性和實時性是計算機處理圖像信息的兩個主要問題,因此如何在保證圖像質(zhì)量的前提下對圖像進行快速存儲和傳輸就成為了問題的關(guān)鍵。圖像壓縮技術(shù)應(yīng)運而生,圖像壓縮技術(shù)通過去除圖像數(shù)據(jù)中存在的冗余信息來減小圖像表示的數(shù)據(jù)量,從而用更加高效的格式存儲和傳輸圖像數(shù)據(jù),以滿足圖像處理的高效性和實時性?,F(xiàn)有圖像壓縮技術(shù)中,對于靜態(tài)圖像的壓縮,多采用jepg標(biāo)準(zhǔn)算法。jepg標(biāo)準(zhǔn)算法先將整體圖像分成n×n的像素塊,然后對n×n的像素塊逐一進行dct變換,之后對每個像素塊的dct系數(shù)進行量化,進而對量化后的dct系數(shù)進行熵編碼,并在編碼結(jié)束后將編碼得到的數(shù)據(jù)和圖像的各種標(biāo)記碼組成壓縮數(shù)據(jù)流,即完成了對圖像的壓縮。發(fā)明人發(fā)現(xiàn),現(xiàn)有技術(shù)至少存在如下問題:(1)在jpeg標(biāo)準(zhǔn)算法中,需要對各像素塊逐一進行dct變換,而dct變換包含復(fù)雜的乘法、加法等四則運算以及多重循環(huán)的嵌套,因此dct變換會耗費較多時間,使得處理時間變長,無法滿足圖像壓縮的實時性要求。(2)jpeg標(biāo)準(zhǔn)算法中使用jpeg標(biāo)準(zhǔn)推薦的量化表,統(tǒng)一對各像素塊的dct系數(shù)進行量化。在該量化表中低頻分量對應(yīng)的量化步長較小、高頻分量對應(yīng)的量化步長較大,以實現(xiàn)對圖像低頻部分的精準(zhǔn)量化、高頻部分的粗量化,這與人的視覺及圖像特征是相符的。但是圖像的塊與塊之間是存在差異性的,如果使用現(xiàn)有的標(biāo)準(zhǔn)量化表對各子塊統(tǒng)一進行量化會存在以下問題:有的子塊細(xì)節(jié)較多,高頻分量多、低頻分量少,若按照現(xiàn)有的標(biāo)準(zhǔn)量化表,對高頻分量采用較大的量化步長進行量化,就會使得圖像高頻分量的損失較大,致使壓縮質(zhì)量下降;有的子塊細(xì)節(jié)較少,低頻分量少、高頻分量多,若按照現(xiàn)有的標(biāo)準(zhǔn)量化表,對低頻分量采用較小的量化步長進行量化,即會使得數(shù)據(jù)冗余度大,導(dǎo)致壓縮效率降低。技術(shù)實現(xiàn)要素:針對上述現(xiàn)有技術(shù)的不足,本發(fā)明提供基于tms320c6678芯片的高速jpeg圖像壓縮方法,能夠降低數(shù)據(jù)冗余度,減少圖像壓縮的處理時間,實現(xiàn)高速jpeg圖像實時壓縮。為達(dá)到上述目的,本發(fā)明采用如下技術(shù)方案:提供一種基于tms320c6678芯片的高速jpeg圖像壓縮方法,tms320c6678芯片具有8個處理核,該方法包括以下步驟:步驟1,讀取待壓縮圖像,待壓縮圖像為包含距離向和方位向的二維圖像,且將待壓縮圖像的距離向的像素個數(shù)作為所述待壓縮圖像的長度,將待壓縮圖像的方位向的像素個數(shù)作為所述帶壓縮圖像的寬度;確定待壓縮圖像的長度和寬度是否為8的倍數(shù):若待壓縮圖像的長度或者寬度是8的倍數(shù),則轉(zhuǎn)至步驟2;若待壓縮圖像的長度或者寬度不是8的倍數(shù),則在待壓縮圖像的數(shù)據(jù)末尾補零,使得補零后待壓縮圖像的長度和寬度均為8的倍數(shù),進而轉(zhuǎn)至步驟2;步驟2,將待壓縮圖像的數(shù)據(jù)沿距離向連續(xù)不重疊地分割為8段數(shù)據(jù)塊,令tms320c6678芯片的8個處理核分別指向8段數(shù)據(jù)塊中1段數(shù)據(jù)塊的首地址,以使8個處理核同時對各自所指向的數(shù)據(jù)塊進行掃描,共同完成對待壓縮圖像的分塊,從而得到每段數(shù)據(jù)塊對應(yīng)的n個8×8的子塊,且每一子塊的第一個像素點表示為像素點(0,0);n為整數(shù),n≥1;步驟3,每個處理核分別對其所指向的數(shù)據(jù)塊對應(yīng)的n個8×8的子塊進行dct變換,得到各子塊對應(yīng)的dct系數(shù);其中,每一子塊在其每一像素點處有對應(yīng)的一個dct系數(shù);各子塊在像素點(0,0)處的dct系數(shù)為子塊的直流系數(shù),在除像素點(0,0)之外的63個像素點處的dct系數(shù)為子塊的交流系數(shù);步驟4,分別對每一子塊的全部63個交流系數(shù)的絕對值求平均,得到對應(yīng)的n個平均值p1,p2,…pi,…pn,并確定n個平均值p1,p2,…pi,…pn中的最大值pmax=max(p1,p2,…pi,…pn);其中,p1表示n個8×8的子塊中第1個子塊對應(yīng)的平均值,p2表示n個8×8的子塊中第2個子塊對應(yīng)的平均值,pi表示n個8×8的子塊中第i個子塊對應(yīng)的平均值,i=1,2…,n,pn表示n個8×8的子塊中第n個子塊對應(yīng)的平均值,max()表示取最大值;利用最大值pmax,根據(jù)預(yù)設(shè)公式:計算得到每一子塊的dct系數(shù)對應(yīng)的校正系數(shù);其中,xi(u,v)表示子塊在像素點(u,v)處的dct系數(shù)對應(yīng)的校正系數(shù),u表示像素點(u,v)的行坐標(biāo),v表示像素點(u,v)的列坐標(biāo),u=0,1,2…,7,v=0,1,2…,7;讀取預(yù)先存儲的標(biāo)準(zhǔn)量化表,利用所得的校正系數(shù)對標(biāo)準(zhǔn)量化表中對應(yīng)位置處的量化步長進行校正,得到每一子塊對應(yīng)的校正量化表;利用每一子塊對應(yīng)的校正量化表對該子塊的dct系數(shù)進行量化,得到該子塊量化后的dct系數(shù);步驟5,讀取預(yù)先存儲的huffman編碼表,利用huffman編碼表對各子塊量化后的dct系數(shù)進行huffman熵編碼,得到各子塊的編碼后數(shù)據(jù);步驟6,根據(jù)jpeg標(biāo)準(zhǔn)以及待壓縮圖像格式確定標(biāo)記碼,并將標(biāo)記碼和各子塊的編碼后數(shù)據(jù)組成位比特流,位比特流即為待壓縮圖像對應(yīng)的壓縮數(shù)據(jù)流?;诒景l(fā)明上述方案,在對各子塊進行量化時,先計算得到每一子塊的dct系數(shù)對應(yīng)的校正系數(shù),利用校正系數(shù)對標(biāo)準(zhǔn)量化表進行校正,得到每一子塊對應(yīng)的校正量化表,進而利用每一子塊對應(yīng)的校正量化表對該子塊的dct系數(shù)進行量化,即,對各子塊分別根據(jù)圖像低頻、高頻出現(xiàn)的比率重新計算得到各子塊對應(yīng)的量化表,進而用各子塊對應(yīng)的量化表進行量化。如此一來,即可對不同子塊有針對性的進行量化:對細(xì)節(jié)較多的子塊進行量化時,由于其高頻分量較多,因此計算得到的校正系數(shù)較大,對應(yīng)的量化步長也就相對較大,采用該相對較大的量化步長對該細(xì)節(jié)較多的子塊進行量化,即可有效減少高頻分量的損失,確保壓縮質(zhì)量;對細(xì)節(jié)較少的子塊進行量化時,由于其低頻分量較多,因此計算得到的校正系數(shù)較小,對應(yīng)的量化步長也就相對較小,采用該相對較小的量化步長對該細(xì)節(jié)較少的子塊進行量化,即可有效降低數(shù)據(jù)冗余度,提高壓縮效率。綜上所述,基于本發(fā)明實施例的上述量化步驟,能夠避免現(xiàn)有技術(shù)由于對圖像的全部子塊統(tǒng)一采用標(biāo)準(zhǔn)量化表進行量化所導(dǎo)致的壓縮質(zhì)量差及數(shù)據(jù)冗余度高的問題。附圖說明為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明實施例提供的基于tms320c6678芯片的高速jpeg圖像壓縮方法的流程示意圖;圖2為本發(fā)明實施例仿真實驗中使用的原始圖像;圖3為采用現(xiàn)有的jpeg標(biāo)準(zhǔn)算法對圖2所示的圖像進行壓縮后的圖像;圖4為采用本發(fā)明方法對圖2所示的圖像進行壓縮的圖像。具體實施方式下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。圖1所示為本發(fā)明實施例提供的一種基于tms320c6678芯片的高速jpeg圖像壓縮方法的流程示意圖。如圖1所示,本發(fā)明實施例提供的基于tms320c6678芯片的高速jpeg圖像壓縮方法包括以下步驟:步驟1,讀取待壓縮圖像,所述待壓縮圖像為包含距離向和方位向的二維圖像,且將待壓縮圖像的距離向的像素個數(shù)作為待壓縮圖像的長度,將待壓縮圖像的方位向的像素個數(shù)作為帶壓縮圖像的寬度;分別確定待壓縮圖像的長度和寬度是否為8的倍數(shù):若待壓縮圖像的長度和寬度是8的倍數(shù),則轉(zhuǎn)至步驟2;若待壓縮圖像的長度或者寬度不是8的倍數(shù),則在待壓縮圖像的數(shù)據(jù)末尾補零,使得補零后待壓縮圖像的長度和寬度均為8的倍數(shù),進而轉(zhuǎn)至步驟2。其中,tms320c6678芯片是基于keystone架構(gòu)的高性能多核dsp芯片,其具有8個處理核,每個核具有32kb的數(shù)據(jù)存儲器和一級程序存儲器、512kb的二級存儲器,并共享4mb的多核共享存儲空間,每個核的頻率最高為1.25ghz。步驟2,將待壓縮圖像的數(shù)據(jù)沿距離向連續(xù)不重疊地分割為8段數(shù)據(jù)塊,令tms320c6678芯片的8個處理核分別指向8段數(shù)據(jù)塊中1段數(shù)據(jù)塊的首地址,以使8個處理核同時對各自所指向的數(shù)據(jù)塊進行掃描,共同完成對待壓縮圖像的分塊,從而得到每段數(shù)據(jù)塊對應(yīng)的n個8×8的子塊,且每一子塊的第一個像素點表示為像素點(0,0)。其中,n為整數(shù),n≥1。優(yōu)選的,為了提高后續(xù)的編碼效率,減少壓縮時間,在對待壓縮圖像分塊后可以對圖像進行幅度移位。具體來說,假設(shè)順序編碼模式下輸入的圖像數(shù)據(jù)限制為8位,則圖像分量的取值范圍即被限制在0~2p-1(p=8)之間的無符號整數(shù),為使圖像均值接近0,則需要將圖像幅值移位2p-1,形成-2p-1~-(2p-1+1)的有符號整數(shù)??梢岳斫?,經(jīng)過移位操作后在后續(xù)的編碼過程中,若采用“之”字型編碼即會有更多的0字符行程,因此能夠提高編碼效率。步驟3,每個處理核分別對其所指向的數(shù)據(jù)塊對應(yīng)的n個8×8的子塊進行dct變換,得到各子塊對應(yīng)的dct系數(shù)。其中,每一子塊在其每一像素點處有對應(yīng)的一個dct系數(shù);各子塊在像素點(0,0)處的dct系數(shù)為子塊的直流系數(shù),在除像素點(0,0)之外的63個像素點處的dct系數(shù)為子塊的交流系數(shù)。優(yōu)選的,對n個8×8的子塊中的第i個子塊進行dct變換,得到對應(yīng)的dct系數(shù),具體可以包括以下步驟:步驟3.1,讀取第i個子塊的數(shù)據(jù)。步驟3.2,對于第i個子塊的任一像素點(u,v),執(zhí)行以下操作:(3.2a)根據(jù)像素點(u,v)的行坐標(biāo)u,讀取與行坐標(biāo)u對應(yīng)的第一系數(shù)表。其中,u=0,1,2…,7,第一系數(shù)表為8×8的二維矩陣,該二維矩陣每一行的8個元素依次為x取0,1,2,…,7時第一系數(shù)的取值。示例性的,當(dāng)行坐標(biāo)u=1時,與行坐標(biāo)u對應(yīng)的第一系數(shù)表如表1所示。表中任意兩行都相同,且每行的8個元素依次為x取0,1,2,…,7時的取值,例如,每行的第一個元素即是x=1,u=1時的取值,也即表1u=1時對應(yīng)的第一系數(shù)表0.98070.83140.55550.1950-0.1950-0.5555-0.8314-0.98070.98070.83140.55550.1950-0.1950-0.5555-0.8314-0.98070.98070.83140.55550.1950-0.1950-0.5555-0.8314-0.98070.98070.83140.55550.1950-0.1950-0.5555-0.8314-0.98070.98070.83140.55550.1950-0.1950-0.5555-0.8314-0.98070.98070.83140.55550.1950-0.1950-0.5555-0.8314-0.98070.98070.83140.55550.1950-0.1950-0.5555-0.8314-0.98070.98070.83140.55550.1950-0.1950-0.5555-0.8314-0.9807(3.2b)根據(jù)像素點(u,v)的列坐標(biāo)v,讀取與列坐標(biāo)v對應(yīng)的第二系數(shù)表。其中,v=0,1,2…,7,第二系數(shù)表為8×8的二維矩陣,該二維矩陣每一列的8個元素依次為y取0,1,2,…,7時第二系數(shù)的取值。示例性的,當(dāng)列坐標(biāo)v=1時,與列坐標(biāo)v對應(yīng)的第二系數(shù)表如表2所示。表中任意兩列都相同,且每行列的8個元素依次為y取0,1,2,…,7時的取值,例如,每列的第一個元素即是v=1且y=1時的取值,也即表2v=1時對應(yīng)的第二系數(shù)表0.98070.98070.98070.98070.98070.98070.98070.98070.83140.83140.83140.83140.83140.83140.83140.83140.55550.55550.55550.55550.55550.55550.55550.55550.19500.19500.19500.19500.19500.19500.19500.1950-0.1950-0.1950-0.1950-0.1950-0.1950-0.1950-0.1950-0.1950-0.5555-0.5555-0.5555-0.5555-0.5555-0.5555-0.5555-0.5555-0.8314-0.8314-0.8314-0.8314-0.8314-0.8314-0.8314-0.8314-0.9807-0.9807-0.9807-0.9807-0.9807-0.9807-0.9807-0.9807(3.2c)根據(jù)像素點(u,v)的行坐標(biāo)u和列坐標(biāo)v,讀取第三系數(shù)表data_pr[64],并根據(jù)第三系數(shù)表確定與像素點(u,v)對應(yīng)的第三系數(shù)的取值。其中,第三系數(shù)表為8×8的二維矩陣,該二維矩陣在坐標(biāo)(u,v)處的元素為的取值,具體的,第三系數(shù)表如表3所示。以坐標(biāo)(3,3)為例,第三系數(shù)表在坐標(biāo)(3,3)處的元素即為表3第三系數(shù)表0.12490.17670.17670.17670.17670.17670.17670.17670.17670.25000.25000.25000.25000.25000.25000.25000.17670.25000.25000.25000.25000.25000.25000.25000.17670.25000.25000.25000.25000.25000.25000.25000.17670.25000.25000.25000.25000.25000.25000.25000.17670.25000.25000.25000.25000.25000.25000.25000.17670.25000.25000.25000.25000.25000.25000.25000.17670.25000.25000.25000.25000.25000.25000.2500(3.2d)將第i個子塊、第一系數(shù)表以及第二系數(shù)表中相同位置的元素對應(yīng)相乘后求和,將所得求和值與像素點(u,v)對應(yīng)的第三系數(shù)相乘,得到第i個子塊在像素點(u,v)處的dct系數(shù)。即,第i個子塊在像素點(u,v)處的dct系數(shù)f(u,v)可表示為:式中,t=8×v+u,u和v為0,1,2…,7中之一,data_pr[t]表示像素點(u,v)對應(yīng)的第三系數(shù)第三系數(shù),data_u_new[u][k]表示與行坐標(biāo)u對應(yīng)的第一系數(shù)表的第k個元素,data_v_new[v][k]表示與列坐標(biāo)v對應(yīng)的第二系數(shù)表的第k個元素,f[k]表示第i個子塊的第k個像素值,k=0,1,2,…,63。其中,第一系數(shù)表的第k個元素為將第一系數(shù)表的全部元素按行排成一列后的第k個元素,第二系數(shù)表的第k個元素為將第二系數(shù)表的全部元素按行排成一列后的第k個元素,第i個子塊的第k個像素值為將第i個子塊的全部像素點按行坐標(biāo)排成一列后的第k個像素點的像素值。以下對本發(fā)明實施例方法上述步驟3的原理進行詳細(xì)介紹:首先,給出dct變換的公式如公式(1)所示:其中,f(x,y)為像素值,-128≤f(x,y)≤127;當(dāng)u,v=0時,當(dāng)u,v≠0時;c(u),c(v)=1;u=0,1,2…,7,v=0,1,2…,7。從公式(1)中可以看出,求一個像素點對應(yīng)的dct系數(shù)需要執(zhí)行4次循環(huán)操作,包括2次外循環(huán)(u、v的循環(huán))以及嵌套的2次內(nèi)循環(huán)(變量x、y的循環(huán)),每次循環(huán)的次數(shù)都是8次,也就是說一共要循環(huán)8*8*8*8次。為了下面描述的方便約定:循環(huán)[1]為內(nèi)層變量x、y的循環(huán),循環(huán)[2]為次外層變量u、v的循環(huán)。(1)展開循環(huán)[1]對于循環(huán)[1]來說,每次循環(huán)都要執(zhí)行2次乘法運算和1次加法運算,每次運算都要計算2個余弦系數(shù):和本實施例中用data_x表示data_y表示對于每一個確定的u、v值,每個余弦系數(shù)共有8種可能的取值,分別為依次用c1、c3、…c15來表示。在循環(huán)時,當(dāng)v=0時,u的變化范圍為0~7;當(dāng)v=1時,u的變化范圍為0~7,……,以此類推,當(dāng)v=7時,u的變化范圍為0~7。也就是說,在v的每次循環(huán)時都會用到這8個相同的系數(shù),所以可以把這8個系數(shù)存放在一張表里這樣就不用每次重新計算了。因為u的變化范圍為0~7,所以可以將u的取值存放在一張二維表中,形如data_u[u][8],記號中的[u]稱為表的第一個維度,u的范圍為0~7表示u的取值,記號中的[8]稱為表的第二個維度,它表示c1~c15這8個系數(shù)。同時,根據(jù)三角函數(shù)的對稱性這8個系數(shù)中前4個系數(shù)與后面的4個互為相反數(shù),也就是c1=-c15,c3=-c13,c5=-c11,…,所以在計算data_x系數(shù)時只需要算出前面的4個系數(shù)就可以了。同理,對于系數(shù)data_y來說,根據(jù)x與y、u與v的等價性也可以建一個關(guān)于v值變化的二維表data_v[v][8],具體含義與data_u相同。對于循環(huán)[1]而言,只要u、v的值確定了則系數(shù)data_x與data_y也就確定了,但為了加快執(zhí)行效率,需要將循環(huán)[1]進行展開。在展開前,對于每一個x的取值y都要循環(huán)8次,也就是說系數(shù)data_x會隔8個循環(huán)出現(xiàn),每次循環(huán)出現(xiàn)的值都相等。因此,為了將循環(huán)[1]展開只需要將表data_u[u][8]擴充為data_u_new[u][64],其中[64]表示一個8*8的二維矩陣,矩陣中每一行的數(shù)都相等,每一行的8個元素就是data_u[u][8]中的8個系數(shù)。表data_u_new[u][64]即本發(fā)明實施例中的第一系數(shù)表。(2)展開循環(huán)[2]對于循環(huán)[2],需要將這個關(guān)于u、v的2重循環(huán)變?yōu)殛P(guān)于u的1次循環(huán),與v有關(guān)的就是系數(shù)data_y,為了去掉v必須找到u與v之間的關(guān)系,從公式中可以知道對于每一個v值u都要循環(huán)8次,當(dāng)v=0~7時,u一共要循環(huán)64次。因此可以將這個8*8的二重循環(huán)看成是關(guān)于t的一個64次的單循環(huán),每循環(huán)8次v就遞增一次,因此u與v之間的關(guān)系就可以由t來構(gòu)造。具體來說,t與u和v的關(guān)系可通過如下所示的程序?qū)崿F(xiàn):如此一來,即可通過t的值得到u、v的值,u、v的初始值都為0。因此,為將循環(huán)[2]展開,需要將二維表data_v[v][8]擴充為data_v_new[v][64],其中[64]表示一個8*8的二維矩陣,矩陣中每一列的數(shù)都相等,每一列的8個元素就是data_v[v][8]中的8個系數(shù)。這樣,u每循環(huán)8次v即遞增一次,所以data_v_new[v][64]表中系數(shù)值隔8個才變化一次。其中,表data_v_new[v][64]即本發(fā)明實施例中的第二系數(shù)表。另外,經(jīng)分析知,u每循環(huán)8次v才遞增一次,所以data_u_new[u][64]中的第一行元素與data_v_new[v][64]中第一列的對應(yīng)元素值相等,所以將data_u_new[u][64]進行矩陣轉(zhuǎn)置就可以得到data_v_new[v][64],因此無需另外計算data_v_new[v][64]的各個元素值。此外,根據(jù)公式(1),還需要建立一個關(guān)于表達(dá)式的系數(shù)表,此即本發(fā)明實施例中的第三系數(shù)表。綜上,將8*8圖像塊變換后的dct系數(shù)記作f(u,v),則有:式中各參數(shù)的含義同上。至此,即可將一次dct變換由復(fù)雜的乘法和加法運算轉(zhuǎn)換為簡單的查表法。需要說明的是,本領(lǐng)域技術(shù)人員可以理解,在按照本發(fā)明實施例提供的圖像壓縮方法壓縮圖像時,可在壓縮之前預(yù)先生成并存儲u取0,1,2,…,7時對應(yīng)的第一系數(shù)表、v取0,1,2,…,7時對應(yīng)的第二系數(shù)表以及第三系數(shù)表,這樣一來,在對各子塊進行dct變換時,即可直接讀取第一系數(shù)表、第二系數(shù)表以及第三系數(shù)表中的數(shù)據(jù),從而快速完成對各子塊的dct變換,大大減少圖像壓縮的處理時間,實現(xiàn)高速jpeg圖像實時壓縮。步驟4,分別對每一子塊的全部63個交流系數(shù)的絕對值求平均,得到n個對應(yīng)的平均值p1,p2,…pi,…pn,并確定n個平均值p1,p2,…pi,…pn中的最大值pmax=max(p1,p2,…pi,…pn);利用最大值pmax,根據(jù)預(yù)設(shè)公式:計算得到每一子塊的dct系數(shù)對應(yīng)的校正系數(shù);讀取預(yù)先存儲的標(biāo)準(zhǔn)量化表,利用所得的校正系數(shù)對標(biāo)準(zhǔn)量化表中對應(yīng)位置處的量化步長進行校正,得到每一子塊對應(yīng)的校正量化表;利用每一子塊對應(yīng)的校正量化表對該子塊的dct系數(shù)進行量化,得到該子塊量化后的dct系數(shù)。其中,p1表示n個8×8的子塊中第1個子塊對應(yīng)的平均值,p2表示n個8×8的子塊中第2個子塊對應(yīng)的平均值,pn表示n個8×8的子塊中第n個子塊對應(yīng)的平均值,pi表示n個8×8的子塊中第i個子塊對應(yīng)的平均值,i=1,2…,n,fi(u,v)表示第i個子塊在像素點(u,v)處的dct系數(shù);max()表示取最大值;xi(u,v)表示子塊在像素點(u,v)處的dct系數(shù)對應(yīng)的校正系數(shù),pmean表示n個平均值p1,p2,…pi,…pn的平均值,u表示像素點(u,v)的行坐標(biāo),v表示像素點(u,v)的列坐標(biāo),u=0,1,2…,7,v=0,1,2…,7。優(yōu)選的,步驟4中,利用所得的校正系數(shù)對標(biāo)準(zhǔn)量化表中對應(yīng)位置處的量化步長進行校正,得到各子塊對應(yīng)的校正量化表,具體可以包括:對于n個子塊中的第i個子塊,利用第i個子塊在像素點(u,v)處的dct系數(shù)對應(yīng)的校正系數(shù)xi(u,v)以及公式q′(u,v)=q(u,v)*xi(u,v),對標(biāo)準(zhǔn)量化表中(u,v)處的量化步長q(u,v)進行校正,得到校正后的量化步長q′(u,v),校正后的量化步長q′(u,v)即為第i個子塊對應(yīng)的校正量化表在像素點(u,v)處的量化步長。其中,所述的第i個子塊為n個子塊中的任一子塊,i=1,2,…n。所述的標(biāo)準(zhǔn)量化表即jpeg標(biāo)準(zhǔn)算法中推薦的量化表,該量化表具體如表4所示。表4標(biāo)準(zhǔn)量化表1611101624405161121214192658605514131624405769561417222951878062182237566810910377243555648110411392496478871031211201017292959811210010399需要說明的是,本領(lǐng)域技術(shù)人員可以理解,步驟4中所述的利用每一子塊對應(yīng)的校正量化表對該子塊的dct系數(shù)進行量化,得到該子塊量化后的dct系數(shù),具體是指:對每一子塊,分別將步驟3中得到的64個dct系數(shù)除以步驟4中得到的校正量化表在對應(yīng)位置處的量化步長后,進行四舍五入取整,即得到該子塊量化后的dct系數(shù)。示例性的,對于n個子塊中的某一子塊f,其在(u,v)處的dct系數(shù)為f(u,v)(u=0,1,2…,7,v=0,1,2…,7),且子塊f對應(yīng)的校正量化表在(u,v)處的量化步長為q′(u,v),則子塊f在(u,v)處量化后的dct系數(shù)即為f′(u,v)=integerround[f(u,v)/q′(u,v)],其中,integerround[]表示四舍五入取整函數(shù)。在本發(fā)明上述步驟4中,在對各子塊進行量化時,先計算得到每一子塊的dct系數(shù)對應(yīng)的校正系數(shù),利用校正系數(shù)對標(biāo)準(zhǔn)量化表進行校正,得到每一子塊對應(yīng)的校正量化表,進而利用每一子塊對應(yīng)的校正量化表對該子塊的dct系數(shù)進行量化,即,對各子塊分別根據(jù)圖像低頻、高頻出現(xiàn)的比率重新計算得到各子塊對應(yīng)的量化表,進而用各子塊對應(yīng)的量化表進行量化。如此一來,即可對不同子塊有針對性的進行量化:對細(xì)節(jié)較多的子塊進行量化時,由于其高頻分量較多,因此計算得到的校正系數(shù)較大,對應(yīng)的量化步長也就相對較大,采用該相對較大的量化步長對該細(xì)節(jié)較多的子塊進行量化,即可有效減少高頻分量的損失,確保壓縮質(zhì)量;對細(xì)節(jié)較少的子塊進行量化時,由于其低頻分量較多,因此計算得到的校正系數(shù)較小,對應(yīng)的量化步長也就相對較小,采用該相對較小的量化步長對該細(xì)節(jié)較少的子塊進行量化,即可有效降低數(shù)據(jù)冗余度,提高壓縮效率。綜上所述,基于本發(fā)明實施例的上述量化步驟,能夠避免現(xiàn)有技術(shù)由于對圖像的全部子塊統(tǒng)一采用標(biāo)準(zhǔn)量化表進行量化所導(dǎo)致的壓縮質(zhì)量差及數(shù)據(jù)冗余度高的問題。步驟5,讀取預(yù)先存儲的huffman編碼表,利用huffman編碼表分別對每一子塊量化后的dct系數(shù)進行huffman熵編碼,得到各子塊的編碼后數(shù)據(jù)。步驟6,根據(jù)jpeg標(biāo)準(zhǔn)以及待壓縮圖像格式,并將標(biāo)記碼和各子塊的編碼后數(shù)據(jù)組成位比特流,位比特流即為待壓縮圖像對應(yīng)的壓縮數(shù)據(jù)流。其中,常用的8個標(biāo)記碼及其結(jié)構(gòu)、作用如表5所示。其中,每個標(biāo)記碼都是由2個字節(jié)組成,其前一個字節(jié)是固定值0xff,并且每個標(biāo)記之前還可以添加數(shù)目不限的0xff填充字節(jié)。表5jpeg標(biāo)準(zhǔn)中的標(biāo)記碼需要說明的是,具體如何確定標(biāo)記碼以及將標(biāo)記碼和各子塊的編碼后數(shù)據(jù)組成位比特流,屬于本領(lǐng)域技術(shù)人員所公知的基本常識,具體可參考jpeg標(biāo)準(zhǔn),本發(fā)明實施例對此不再贅述?;诒景l(fā)明實施例上述方案,在對各子塊進行量化時,先計算得到每一子塊的dct系數(shù)對應(yīng)的校正系數(shù),利用校正系數(shù)對標(biāo)準(zhǔn)量化表進行校正,得到每一子塊對應(yīng)的校正量化表,進而利用每一子塊對應(yīng)的校正量化表對該子塊的dct系數(shù)進行量化,即,對各子塊分別根據(jù)圖像低頻、高頻出現(xiàn)的比率重新計算得到各子塊對應(yīng)的量化表,進而用各子塊對應(yīng)的量化表進行量化。如此一來,即可對不同子塊有針對性的進行量化:對細(xì)節(jié)較多的子塊進行量化時,由于其高頻分量較多,因此計算得到的校正系數(shù)較大,對應(yīng)的量化步長也就相對較大,采用該相對較大的量化步長對該細(xì)節(jié)較多的子塊進行量化,即可有效減少高頻分量的損失,確保壓縮質(zhì)量;對細(xì)節(jié)較少的子塊進行量化時,由于其低頻分量較多,因此計算得到的校正系數(shù)較小,對應(yīng)的量化步長也就相對較小,采用該相對較小的量化步長對該細(xì)節(jié)較少的子塊進行量化,即可有效降低數(shù)據(jù)冗余度,提高壓縮效率。綜上所述,基于本發(fā)明實施例的上述量化步驟,能夠避免現(xiàn)有技術(shù)由于對圖像的全部子塊統(tǒng)一采用標(biāo)準(zhǔn)量化表進行量化所導(dǎo)致的壓縮質(zhì)量差及數(shù)據(jù)冗余度高的問題。進一步的,以下通過仿真實驗來對本發(fā)明實施例上述方案的有效性進行驗證:1、實驗條件原始圖像采用512×512的8位bmp灰度圖像,如圖2所示,處理芯片的型號為tms320c6678,處理芯片的存儲空間如表6所示:表6tms320c6678處理芯片存儲空間2、實驗內(nèi)容分別采用現(xiàn)有的jpeg標(biāo)準(zhǔn)算法和本發(fā)明方法對圖4所示的圖像進行壓縮(壓縮倍數(shù)取5),并對比二者的dct處理時間、均方誤差以及壓縮后圖像大小。3、實驗結(jié)果分析采用現(xiàn)有的jpeg標(biāo)準(zhǔn)算法對圖2所示的圖像進行壓縮后的圖像如圖3所示,采用本發(fā)明方法對圖2所示的圖像進行壓縮的圖像如圖4所示,二者的dct處理時間、均方誤差以及壓縮后圖像大小如表7所示。表7jpeg標(biāo)準(zhǔn)算法和本發(fā)明方法實驗結(jié)果比較算法類型dct處理時間(ms)均方誤差壓縮后圖像大小(字節(jié))jpeg標(biāo)準(zhǔn)算法15.676.723550kb本發(fā)明方法1.836.165752kb3、實驗結(jié)果分析從表7可以看出,jpeg標(biāo)準(zhǔn)算法的dct處理時間較長,在壓縮倍數(shù)相同的情況下標(biāo)準(zhǔn)算法的均方誤差較大,均方誤差越大則圖像的壓縮質(zhì)量越差。而本發(fā)明方法用時較少,壓縮質(zhì)量好,并且壓縮后圖像大小與與jpeg標(biāo)準(zhǔn)算法的相差不大。本領(lǐng)域普通技術(shù)人員可以理解:實現(xiàn)上述方法實施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成,前述的程序可以存儲于一計算機可讀取存儲介質(zhì)中,該程序在執(zhí)行時,執(zhí)行包括上述方法實施例的步驟;而前述的存儲介質(zhì)包括:rom、ram、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。以上所述,僅為本發(fā)明的具體實施方式,但本發(fā)明的保護范圍并不局限于此,任何熟悉本
技術(shù)領(lǐng)域:
的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應(yīng)以所述權(quán)利要求的保護范圍為準(zhǔn)。當(dāng)前第1頁12