本發(fā)明涉及一種靜態(tài)圖像有損壓縮方法,特別是涉及一種基于最小量化誤差準(zhǔn)則的字典學(xué)習(xí)靜態(tài)圖像有損壓縮方法。
背景技術(shù):
文獻(xiàn)“compressibilityconstrainedsparserepresentationwithlearntdictionaryforlowbit-rateimagecompression,ieeetransactionsoncircuitsandsystemsforvideotechnology,2014,vol24(10),p1743–1757”公開了一種基于凸松弛與壓縮約束的稀疏編碼方法用于圖像的有損壓縮。該方法使用基于凸松弛的稀疏編碼代替了傳統(tǒng)的追蹤匹配算法,強(qiáng)化了圖像表示系數(shù)的稀疏性和穩(wěn)定性。同時,將壓縮約束加入到稀疏編碼的求解過程中,將稀疏編碼問題轉(zhuǎn)化為
技術(shù)實(shí)現(xiàn)要素:
為了克服現(xiàn)有靜態(tài)圖像有損壓縮方法量化誤差大的不足,本發(fā)明提供一種基于最小量化誤差準(zhǔn)則的字典學(xué)習(xí)靜態(tài)圖像有損壓縮方法。該方法將稀疏系數(shù)對應(yīng)索引的信息熵作為正則項(xiàng)加入稀疏編碼的目標(biāo)函數(shù)中,在使用正交匹配追蹤算法選取字典原子時,通過最小化信息熵來限制字典原子的分散度,降低稀疏系數(shù)對應(yīng)索引的編碼代價;同時,在字典學(xué)習(xí)的過程中,通過對稀疏系數(shù)進(jìn)行排序,并尋找使得稀疏系數(shù)總離差平方和最小的k慣序劃分,將每個劃分作為一個量化組,不同量化組之間采用不同的量化步長,同一個量化組內(nèi)采用相同的量化步長,從而使最終的量化誤差最小。
本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:一種基于最小量化誤差準(zhǔn)則的字典學(xué)習(xí)靜態(tài)圖像有損壓縮方法,其特點(diǎn)是包括以下步驟:
步驟一、對訓(xùn)練圖像進(jìn)行分塊和規(guī)范化。將所有訓(xùn)練圖像劃分為16×16的圖像塊,對于每個圖像塊,按照公式(1)進(jìn)行規(guī)范化
其中,vij表示圖像塊中坐標(biāo)為(i,j)的像素點(diǎn)的灰度值,m,n分別表示圖像塊的長寬。將圖像塊拉直為向量
步驟二、先利用自組織特征映射對部分圖像塊進(jìn)行初步聚類,再通過k-means算法對所有圖像塊進(jìn)行聚類。在聚類中,使用歐氏距離來度量任意兩個圖像塊之間的距離
其中,si,sj表示任意兩個不同的圖像塊向量,d(si,sj)表示其歐氏距離。
步驟三、利用字典學(xué)習(xí)算法對每個類簇訓(xùn)練一個超完備字典和一個量化表,字典中的每個原子即為該類簇圖像塊共有的結(jié)構(gòu)模式。同時將稀疏系數(shù)的量化誤差和其對應(yīng)索引的信息熵作為正則項(xiàng)加入字典學(xué)習(xí)的目標(biāo)函數(shù)中,通過迭代求解公式(3)和公式(5)對量化表和字典同時進(jìn)行學(xué)習(xí),減小最終的編碼代價。
其中,s是原始輸入信號矩陣,每列為圖像塊拉直后的輸入信號si,d是字典,a是稀疏系數(shù)矩陣,αj是稀疏系數(shù)矩陣a的第j列,表示信號sj在字典d上分解的表示系數(shù),kmax是稀疏度限制,pi是字典原子di的使用概率,m為字典中的字典原子個數(shù)。隨后,將每個類簇的字典和量化表分別拼接成全局字典和全局量化表,存儲在編碼端和解碼端。
步驟四、圖像編碼時,將圖像分成直流分量和交流分量兩部分。對直流分量進(jìn)行dpcm編碼。對交流分量利用稀疏編碼在全局字典上進(jìn)行分解,得到對應(yīng)的稀疏系數(shù)矩陣,對該稀疏系數(shù)矩陣?yán)萌至炕磉M(jìn)行量化,隨后,對量化后的交流分量對應(yīng)的稀疏系數(shù)矩陣中非零元素及其索引進(jìn)行huffman編碼,形成最終的碼流。
步驟五、解碼過程為編碼過程的逆過程。通過字典與稀疏系數(shù)矩陣相乘重建出信號矩陣s,再對信號矩陣每列加上對應(yīng)的直流分量并重新排列,從而恢復(fù)出圖像。
本發(fā)明的有益效果是:該方法將稀疏系數(shù)對應(yīng)索引的信息熵作為正則項(xiàng)加入稀疏編碼的目標(biāo)函數(shù)中,在使用正交匹配追蹤算法選取字典原子時,通過最小化信息熵來限制字典原子的分散度,降低稀疏系數(shù)對應(yīng)索引的編碼代價;同時,在字典學(xué)習(xí)的過程中,通過對稀疏系數(shù)進(jìn)行排序,并尋找使得稀疏系數(shù)總離差平方和最小的k慣序劃分,將每個劃分作為一個量化組,不同量化組之間采用不同的量化步長,同一個量化組內(nèi)采用相同的量化步長,從而使最終的量化誤差最小。
下面結(jié)合具體實(shí)施方式對本發(fā)明作詳細(xì)說明。
具體實(shí)施方式
本發(fā)明基于最小量化誤差準(zhǔn)則的字典學(xué)習(xí)靜態(tài)圖像有損壓縮方法具體步驟如下:
1.圖像分塊與規(guī)范化。
對所有訓(xùn)練圖像首先按照光柵掃描順序,平移量為2,將其劃分為16×16的圖像塊
最后,將圖像塊拉直為向量
2.圖像塊聚類。
為了保證學(xué)習(xí)到的字典的純度,需要先對圖像塊進(jìn)行聚類,使每類中都是相似圖像塊。由于對訓(xùn)練圖像進(jìn)行有交疊分塊,獲得的圖像塊數(shù)量非常之多,故首先從所有圖像塊中隨機(jī)抽取10%的圖像塊,利用自組織特征映射算法進(jìn)行初步聚類,獲得初步聚類簇?cái)?shù)k和聚類中心
3.字典學(xué)習(xí)與量化表學(xué)習(xí)。
在傳統(tǒng)的稀疏編碼算法中,由于信號是在一個過完備字典上進(jìn)行分解,重建一個信號s時存在著多組不同的字典原子的線性組合,信號s1可以通過字典原子di和dj的線性組合s1=α1di+β1dj進(jìn)行重建;信號s2既可以通過s2=α2dp+β2dq重建,又可以通過s2=α2′di+β2′dj重建。后一種重建方案中s1和s2使用了相同的字典原子,則字典原子的選擇較為稀疏,編碼其對應(yīng)的索引值時只需要較短的字長,有利于提高壓縮比。在本發(fā)明中,將字典原子索引值的信息熵作為正則項(xiàng)加入稀疏編碼的目標(biāo)函數(shù)中,使得最終的編碼代價最小。修改后的目標(biāo)函數(shù)參照公式(3)
式中pi的計(jì)算參照公式(4)
其中,ai表示稀疏系數(shù)矩陣a的第i行,δ是個極小的實(shí)數(shù),防止分母為0。
經(jīng)過稀疏編碼后得到原始信號矩陣的稀疏系數(shù)矩陣a,由于a中都是浮點(diǎn)數(shù),難以壓縮存儲,故需要對其進(jìn)行量化q(a),此時需要重新更新字典d使重建誤差最小化。更新字典的過程被稱為字典學(xué)習(xí),此時的目標(biāo)函數(shù)參照公式(5)
其中q(·)為量化函數(shù)。在量化時,為了減小總體量化誤差,采用非均勻量化,即對較大的稀疏系數(shù)使用大量化步長,對較小的稀疏系數(shù)使用小量化步長。為了實(shí)現(xiàn)上述目標(biāo),將稀疏系數(shù)矩陣a中的非零元素表示為(aij,idxij)的形式,aij表示非零元素,idxij表示其對應(yīng)的索引。首先,對aij進(jìn)行升序排序得到升序數(shù)列l(wèi)。隨后,將升序數(shù)列l(wèi)劃分成k個慣序子數(shù)列{l1,l2,…,lk},且使得劃分后的總體離差平方和最小,即滿足公式(6)
其中,
其中,
所有的
在整個字典學(xué)習(xí)的過程中,通過交替迭代優(yōu)化公式(3)和公式(5),求得最優(yōu)的字典d和原始信號矩陣的稀疏系數(shù)矩陣a。將學(xué)習(xí)到的字典和量化表分別存儲在編碼端和解碼端供圖像編碼、解碼時使用。
4.圖像編碼。
圖像編碼時,首先,將圖像按光柵掃描順序,無交疊地分為16×16的圖像塊。隨后,將圖像塊分為直流分量和交流分量兩部分。對直流分量用dpcm進(jìn)行編碼。對于交流分量,在學(xué)得的字典上進(jìn)行稀疏編碼,得到稀疏系數(shù)矩陣,并對稀疏系數(shù)矩陣在學(xué)得的量化表上進(jìn)行量化。最后,對經(jīng)過量化的稀疏系數(shù)矩陣中的非零元素及其索引進(jìn)行huffman編碼,形成碼流。
5.圖像解碼。
圖像解碼時,首先,從碼流恢復(fù)出直流分量和稀疏系數(shù)矩陣。隨后,通過字典與稀疏系數(shù)矩陣相乘重建出信號矩陣。最后,對信號矩陣每列加上對應(yīng)的直流分量并重新排列,從而恢復(fù)出圖像塊,通過圖像塊拼接恢復(fù)出原始圖像。