本發(fā)明涉及一種高效的圖像壓縮算法,具體地說,涉及一種相對低復(fù)雜度的高壓縮率的圖像壓縮算法。
背景技術(shù):
圖像壓縮算法有著廣泛的社會應(yīng)用價值。目前的圖像壓縮算法主要兩類:基于離散傅里葉變化的壓縮算法(如jpeg),基于離散小波變化的壓縮算法(如spihtwaac,jpeg2000)?;陔x散傅里葉變化的壓縮算法復(fù)雜度低,壓縮速率快,但壓縮效率低。而基于離散小波變換的壓縮算法壓縮效率高,但復(fù)雜度高。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于克服現(xiàn)有技術(shù)中存在的缺陷,提供一種高效的圖像壓縮算法,該算法壓縮速度與spiht算法相當(dāng),但在同樣的壓縮比下的圖像質(zhì)量(psnr)比spiht高0.2到0.4db。該算法在相對低的復(fù)雜度的情況下,具有與spihtwaac算法和jpeg2000算法相當(dāng)?shù)膱D像壓縮效率。
其具體技術(shù)方案為:
一種高效的圖像壓縮算法,包括以下步驟:
輸入:圖像;
輸出:壓縮比特流。
步驟一、對圖像進行小波變化,生成金字塔結(jié)構(gòu)的小波系數(shù)集合;
步驟二、對小波變化后的圖像進行比特層級編碼。
進一步,步驟二具體為:
首先聲明一些定義:
lsp:重要小波系數(shù)列表;
lip:次要小波系數(shù)列表;
lis:次要集合列表;
d(i,j)集合:節(jié)點(i,j)的后裔;
l(i,j)集合:除第一代后裔以外的節(jié)點(i,j)其他后裔;
1.初始化:輸出n=log2(max(i,j)|ci,j|);設(shè)置lsp為空列表,將處于金字塔最高級的節(jié)點添加到lip,將有后裔的節(jié)點的d集合放到lis中。
2.分類處理;
3.細化處理:對于每一個在lsp中的表項(除了那些在上一次的分類處理過的表項),輸出他們的第n位的值。
4.n=n-1,然后返回第2步。
再進一步,步驟2具體為:
2.1for對于在lip中的每一個節(jié)點ci,j做:
if|ci,j|>=2n,將ci,j添加到lsp中,然后輸出1和ci,j的符號位。
else輸出0
endif
endfor
2.2for每一個在lis的集合si,j做:
ifsi,j是d集合則
ifsi,j中有重要值,
then輸出1并用d類集合編碼方案對其四個第一代后裔進行編碼。
if沒有重要的第一代后裔,則將si,j為1類型l集合,并將其添加在lis集合列表中。
elsesi,j為2類型l集合,也將其添加在lis集合列表中。
endif
else輸出0
endif
ifsi,j是1類型l集合則
用一類l集合編碼方案對其四個分支存在重要值的情況進行編碼。并對將哪些沒有重要值的分支作為新的d集合移到lis集合列表中。
對于那些有重要值的分支;
用d類集合編碼方案對其進行編碼,
if沒有重要的第一代后裔,則該分支為1類型l集合,并將其添加在lis集合列表中。
else該分支為2類型l集合,也將其添加在lis集合列表中。
endif
ifsi,j是2類型l集合則
用2類l集合編碼方案對其四個分支存在重要值的情況進行編碼。
ifsi,j沒有重要的值,則將該2類型l集合si,j添加到lis集合列表的最前面。
elsethen
將那些沒有重要值的分支作為d集合添加到lis集合列表的最前面。
對于那些有重要值的分支,用d類集合編碼方案對其進行編碼。
if該分支的第一代后裔沒有重要值,則將該分支以1類型l集合的身份將其添加到lis列表的最后。
else將該分支以2類型l集合的身份將其添加到lis列表的最后。
endif
endif
endif
endfor。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果:
本發(fā)明的算法壓縮速度與spiht算法相當(dāng),但在同樣的壓縮比下的圖像質(zhì)量(psnr)比spiht高0.2到0.4db。該算法在相對低的復(fù)雜度的情況下,具有與spihtwaac算法和jpeg2000算法相當(dāng)?shù)膱D像壓縮效率。本發(fā)明具有相對低復(fù)雜度的高壓縮率的特點,適合推廣應(yīng)用。
具體實施方式
下面結(jié)合具體實施方案對本發(fā)明的技術(shù)方案作進一步詳細地說明。
一種高效的圖像壓縮算法,包括以下步驟:
輸入:圖像;
輸出:壓縮比特流。
步驟一、對圖像進行小波變化,生成金字塔結(jié)構(gòu)的小波系數(shù)集合;
步驟二、對小波變化后的圖像進行比特層級編碼。
進一步,步驟二具體為:
首先聲明一些定義:
lsp:重要小波系數(shù)列表;
lip:次要小波系數(shù)列表;
lis:次要集合列表;
d(i,j)集合:節(jié)點(i,j)的后裔;
l(i,j)集合:除第一代后裔以外的節(jié)點(i,j)其他后裔;
1.初始化:輸出n=log2(max(i,j)|ci,j|);設(shè)置lsp為空列表,將處于金字塔最高級的節(jié)點添加到lip,將有后裔的節(jié)點的d集合放到lis中。
2.分類處理
2.1for對于在lip中的每一個節(jié)點ci,j做:
if|ci,j|>=2n,將ci,j添加到lsp中,然后輸出1和ci,j的符號位。
else輸出0
endif
endfor
2.2for每一個在lis的集合si,j做:
ifsi,j是d集合則
ifsi,j中有重要值,
then輸出1并用表1(d)對其四個第一代后裔進行編碼
if沒有重要的第一代后裔,則將si,j為1類型l集合,并將其添加在lis集合列表中。
elsesi,j為2類型l集合,也將其添加在lis集合列表中。
endif
else輸出0
endif
ifsi,j是1類型l集合則
用表2的1類碼字對其四個分支存在重要值的情況進行編碼。并對將哪些沒有重要值的分支作為新的d集合移到lis集合列表中。
對于那些有重要值的分支;
用表1的碼字對其進行編碼,
if沒有重要的第一代后裔,則該分支為1類型l集合,并將其添加在lis集合列表中。
else該分支為2類型l集合,也將其添加在lis集合列表中。
endif
ifsi,j是2類型l集合則
用表2的2類碼字對其四個分支存在重要值的情況進行編碼。
ifsi,j沒有重要的值,則將該2類型l集合si,j添加到lis集合列表的最前面。
elsethen
將那些沒有重要值的分支作為d集合添加到lis集合列表的最前面。
對于那些有重要值的分支,用表1的碼字對其進行編碼。
if該分支的第一代后裔沒有重要值,則將該分支以1類型l集合的身份將其添加到lis列表的最后。
else將該分支以2類型l集合的身份將其添加到lis列表的最后。
endif
endif
endif
endfor。
3.細化處理:對于每一個在lsp中的表項(除了那些在上一次的分類處理過的表項),輸出他們的第n位的值。
4.n=n-1,然后返回第2步。
d集合編碼方案:
用‘0’,‘1’表示是否為重要后代,如果四個后裔是0000,則編碼為000;如果四個后裔是0001時,編碼為001;如果四個后裔是0010時,編碼為010;如果四個后裔是0100時,編碼為011;如果四個后裔是1000時,編碼為100;如果四個后裔是0011時,編碼為1010;如果四個后裔是0110時,編碼為1011;如果四個后裔是0101時,編碼為1100;如果四個后裔是1001時,編碼為1101;如果四個后裔是1010時,編碼為11100;如果四個后裔是1100時,編碼為11101,如果四個后裔是1110時,編碼為111100;如果四個后裔是1101時,編碼為111101;如果四個后裔是1011時,編碼為111110;如果四個后裔是0111時,編碼為1111110;如果四個后裔是1111時,編碼為1111111。
1類l集合編碼方案:
用‘0’和‘1’表示四個分支是否有重要后裔,如果四個分支是0001,編碼為11;如果四個分支為0010,編碼為10;如果四個分支為0100,編碼為011;如果四個分支為1000,編碼為010;如果四個分支為0011,編碼為00111;如果四個分支為0110,編碼為00110;如果四個分支為0101,編碼為00100;如果四個分支為1001,編碼為00100;如果四個分支為1010,編碼為00010;如果四個分支為1100,編碼為00011;如果四個分支為1110,編碼為000011;如果四個分支為1101,編碼為000010;如果四個分支為1011,編碼為000001;如果四個分支為0111,編碼為0000001;如果四個分支為1111,編碼為0000000。
2類l集合編碼方案:
用‘0’和‘1’表示四個分支是否有重要后裔,如果四個分支是0000,編碼為0;如果四個分支是0001,編碼為1000;如果四個分支為0010,編碼為1001;如果四個分支為0100,編碼為1011;如果四個分支為1000,編碼為1010;如果四個分支為0011,編碼為11000;如果四個分支為0110,編碼為11001;如果四個分支為0101,編碼為11010;如果四個分支為1001,編碼為11011;如果四個分支為1010,編碼為11101;如果四個分支為1100,編碼為111000;如果四個分支為1110,編碼為111001;如果四個分支為1101,編碼為111100;如果四個分支為1011,編碼為111101;如果四個分支為0111,編碼為111110;如果四個分支為1111,編碼為111111。
表1所提算法和spiht算法的圖像壓縮質(zhì)量psnr的比較
表2圖像lena512x512的運行時間的比較
我們對所提算法進行測試,測試所選用的圖像來自學(xué)術(shù)界的經(jīng)典圖像數(shù)據(jù)庫:南加州大學(xué)信號圖像處理中心圖像庫(usc-sipiimagedatabase)(http://sipi.usc.edu/database/)和倫斯勒理工學(xué)院圖像處理研究中心靜態(tài)圖像庫(ciprstillimageslibrary)(http://www.cipr.rpi.edu/resource/stills/index.html)。
可以從表1中看到,所提出的圖像壓縮算法在不同的壓縮比的情況下的壓縮質(zhì)量(psnr)優(yōu)于spiht0.2db到0.4db.由表2,可以看到所提的圖像壓縮算法的速度與spiht算法的速度相當(dāng)。
以上所述,僅為本發(fā)明較佳的具體實施方式,本發(fā)明的保護范圍不限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明披露的技術(shù)范圍內(nèi),可顯而易見地得到的技術(shù)方案的簡單變化或等效替換均落入本發(fā)明的保護范圍內(nèi)。