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