本發(fā)明涉及圖像壓領(lǐng)域,尤其涉及一種基于圖像平坦區(qū)域特征的壓縮方法和裝置。
背景技術(shù):
單幅圖像壓縮的概念是減少表示單幅數(shù)字圖像時需要的數(shù)據(jù)量。因此壓縮后的圖像,在存儲圖像時會減少占用的存儲空間,在傳輸圖像時所需要占用的流量/帶寬就會更小。因此圖像壓縮有廣泛的應(yīng)用。
單幅圖像壓縮的基本原理如下:
圖像數(shù)據(jù)之所以能被壓縮,就是因為數(shù)據(jù)中存在著冗余。單幅圖像數(shù)據(jù)的冗余主要表現(xiàn)為:圖像中相鄰像素間的相關(guān)性引起的空間冗余;不同彩色平面或頻譜帶的相關(guān)性引起的頻譜冗余。數(shù)據(jù)壓縮的目的就是通過去除這些數(shù)據(jù)冗余來減少表示數(shù)據(jù)所需的比特數(shù)。由于圖像數(shù)據(jù)量的龐大,在存儲、傳輸、處理時非常困難,因此圖像數(shù)據(jù)的壓縮就顯得非常重要。
單幅圖像壓縮是數(shù)據(jù)壓縮技術(shù)在數(shù)字圖像上的應(yīng)用,它的目的是減少圖像數(shù)據(jù)中的冗余信息從而用更加高效的格式存儲和傳輸數(shù)據(jù)。
單幅圖像壓縮的方法有很多,例如:無損圖像壓縮方法有:1、行程長度編碼,2、熵編碼法,3、自適應(yīng)字典算法等;有損壓縮方法有:1、將色彩空間化減到圖像中常用的顏色。所選擇的顏色定義在壓縮圖像頭的調(diào)色板中,圖像中的每個像素都用調(diào)色板中顏色索引表示。這種方法可以與抖動一起使用以模糊顏色邊界。2、色度抽樣,這利用了人眼對于亮度變化的敏感性遠(yuǎn)大于顏色變化,這樣就可以將圖像中的顏色信息減少一半甚至更多。3、變換編碼,這是最常用的方法。首先使用如離散余弦變換DCT或者小波變換這樣的傅立葉相關(guān)變換,然后進(jìn)行量化和用熵編碼法壓縮。單幅圖像壓縮算法很多,在此不再一一列舉。
在現(xiàn)有單幅圖像壓縮算法中,人們一直更關(guān)注細(xì)節(jié)較多、信息量較大的紋理區(qū)域的壓縮;平坦區(qū)域由于信息量較少,在碼流中所占的比例較小,沒有得到足夠的重視。一般認(rèn)為,平坦區(qū)域像素值分布集中,圖像復(fù)雜度低,只需要消耗很少的碼流便可以較好地描述該區(qū)域;但是實際情況是,較大的分塊和較小的碼率下的平坦區(qū)域重建圖像質(zhì)量并不高,容易出現(xiàn)較為明顯的塊效應(yīng)。
一般認(rèn)為,圖像編碼中平坦區(qū)域的塊效應(yīng)是由量化引起的,碼率較低時采用的較大的量化步長會導(dǎo)致更大的量化噪聲,從而產(chǎn)生更嚴(yán)重的塊效應(yīng)。
實際上,宏觀上像素值變化較為平緩的平坦區(qū)域,對圖像劃分小塊進(jìn)行編碼時,原始圖像中的噪聲會對編碼器產(chǎn)生很大的干擾,導(dǎo)致編碼器對編碼塊的像素分布情況做出有利于保留噪聲影響的錯誤判斷,造成編碼效率和編碼質(zhì)量的下降。
在現(xiàn)有的圖像編碼標(biāo)準(zhǔn)中,平坦區(qū)域的壓縮都是以局部分塊中沿著某方向所有像素值相等的方式進(jìn)行描述的,忽略了平坦區(qū)域中像素的整體的漸變模式在圖像局部多個分塊中的體現(xiàn)。
研究能保留平坦區(qū)域宏觀漸變特征、對隨機(jī)噪聲有較強(qiáng)魯棒性且能對大范圍平坦區(qū)域進(jìn)行統(tǒng)一描述的單幀圖像壓縮算法,是很有意義的。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于提供一種基于視頻單幀和單幅圖像中平坦區(qū)域特征的單幅圖像壓縮方法及裝置,充分考慮了平坦區(qū)域像素漸變的特性,應(yīng)用于具有漸變規(guī)律的平坦區(qū)域的圖像時,能獲得更好的壓縮效果。
為了達(dá)到上述目的,本發(fā)明所采用的技術(shù)方案如下:一種基于圖像平坦區(qū)域特征的壓縮方法,具體包括如下步驟:
(1)利用視頻單幀或單幅圖片信息,獲得平坦區(qū)域并建立平坦區(qū)域的像素漸變模型,根據(jù)像素漸變模型劃分平坦區(qū)域,獲得平坦區(qū)域分塊;
(2)利用平坦區(qū)域分塊內(nèi)的像素信息,獲得平坦區(qū)域分塊的梯度分布模型,利用梯度分布模型將平坦區(qū)域分塊內(nèi)包含的像素進(jìn)行分類,得到像素集以及像素集對應(yīng)的像素集描述算子;
(3)對像素集以及像素集對應(yīng)的像素集描述算子進(jìn)行壓縮,生成描述碼流;
(4)利用描述碼流獲得像素集的預(yù)測圖像;對像素集原始圖像和預(yù)測圖像進(jìn)行作差,得到殘差圖像;對殘差圖像進(jìn)行壓縮,獲得殘差碼流;
(5)對描述碼流和殘差碼流進(jìn)行復(fù)用壓縮處理,生成壓縮圖像碼流或文件。
進(jìn)一步的,所述步驟(1)具體為:
(1.1)獲取原始圖像像素信息;
(1.2)使用低通濾波器與原始圖像進(jìn)行卷積濾除原始圖像干擾信號;
(1.3)對濾除了干擾信號的圖像中所有像素進(jìn)行下述連通域判斷:若某像素與其相鄰像素的值相差小于閾值,則認(rèn)為這些像素屬于同一個連通域,通過連通域判斷,可將濾除了干擾信號的圖像中所有的像素劃分成多個連通域;
(1.4)面積大于閾值的連通域即為平坦區(qū)域;
(1.5)建立平坦區(qū)域在二維坐標(biāo)系中的像素漸變模型,過程如下:
將平坦區(qū)域分割成大小為M×M的規(guī)則塊,其中M為正整數(shù),若該規(guī)則塊內(nèi)的像素值沿著與二維坐標(biāo)系橫軸正方向的夾角為β的方向一直遞增,則可以認(rèn)為該規(guī)則塊的方向為β,漸變方向α的計算公式如下:
若該規(guī)則塊內(nèi)的像素值不沿著統(tǒng)一的方向遞增,則對該規(guī)則塊進(jìn)行四等分操作,即將該規(guī)則塊劃分為大小為的四個小塊,如果某個小塊內(nèi)的像素值沿著統(tǒng)一的方向遞增,則認(rèn)為該小塊的方向為βj,其中j為該小塊的編號,j為自然數(shù);如果某個小塊內(nèi)的像素值不沿著統(tǒng)一的方向遞增,則重復(fù)上述四等分操作,獲得更小的小塊,直到所有小塊內(nèi)的像素沿著統(tǒng)一的方向遞增,從而建立各小塊的劃分方式和漸變方向構(gòu)成平坦區(qū)域的像素漸變模型;
(1.6)根據(jù)像素漸變模型劃分平坦區(qū)域獲得平坦區(qū)域分塊,過程如下;
按順序掃描平坦區(qū)域的像素漸變模型中所有的小塊,若兩個相鄰小塊的漸變方向差值小于閾值,則將這兩個小塊歸入同一個平坦區(qū)域分塊,對所有的小塊進(jìn)行上述操作即可將平坦區(qū)域劃分為一個或多個平坦區(qū)域分塊;
3、根據(jù)權(quán)利要求1所述的基于圖像平坦區(qū)域特征的壓縮方法,其特征在于,所述步驟(2)具體為:
(2.1)利用平坦區(qū)域分塊內(nèi)的像素信息,獲得平坦區(qū)域分塊的梯度分布模型,過程如下:
依據(jù)平坦區(qū)域分塊內(nèi)的像素信息生成平坦區(qū)域分塊的梯度方向圖,將平坦區(qū)域分塊的梯度方向圖分割成大小為N×N的規(guī)則塊,N為正整數(shù);統(tǒng)計規(guī)則塊中梯度幅值為0的像素在所有像素中的比例;統(tǒng)計規(guī)則塊中梯度方向直方圖,獲得出現(xiàn)頻率最高的g個梯度方向值,g為正整數(shù);每個規(guī)則塊中梯度幅值為0的像素在所有像素中的比例和出現(xiàn)頻率最高的g個梯度方向值構(gòu)成該規(guī)則塊的梯度分布模型;所有規(guī)則塊的劃分方式和梯度分布模型構(gòu)成平坦區(qū)域分塊的梯度分布模型;
(2.2)當(dāng)相鄰規(guī)則塊的梯度分布模型相似度高于閾值Tg,則將這兩個相鄰塊歸并到同一個像素集;對所有規(guī)則塊進(jìn)行上述歸并操作,即可得到一個或多個所述像素集,像素集的方向α0等于所在的平坦區(qū)域分塊的漸變方向;
(2.3)將每個像素集對應(yīng)的原始圖像沿著像素集的方向α0分解成只含有單行像素的線段;以該線段上所有像素與線段的最左下頂點之間的距離為橫坐標(biāo)x,以該像素的值為縱坐標(biāo)y建立二維坐標(biāo)系(x,y),對線段上所有像素在該二維坐標(biāo)系中使用最小二乘法進(jìn)行線性擬合,獲得這根線段對應(yīng)的漸變描述函數(shù)表達(dá)式y(tǒng)=kx+b,式中與x,y無關(guān)的k,b就是該線段的漸變描述函數(shù)的參數(shù);所有線段對應(yīng)的參數(shù)k,b按順序組成的矩陣[KB]即為該像素集的漸變描述矩陣,矩陣K由所有線段的參數(shù)k按順序排列構(gòu)成,矩陣B的由所有線段的參數(shù)b按順序排列構(gòu)成,矩陣K和矩陣B的列數(shù)為1,行數(shù)等于像素集分解得到的線段的個數(shù)l。像素集的漸變描述矩陣[KB]和像素集的方向α0構(gòu)成該像素集的像素集描述算子。
進(jìn)一步的,所述步驟(3)具體為:
對像素集進(jìn)行壓縮的過程如下:
對像素集的最外圍輪廓進(jìn)行描述,如果該輪廓內(nèi)部有孔洞,則需要使用該孔洞的輪廓描述最外圍輪廓內(nèi)部需要去除的區(qū)域;像素集的最外圍輪廓和孔洞的輪廓上所有像素的坐標(biāo)構(gòu)成像素集輪廓描述;像素集輪廓描述的壓縮采用頂點描述壓縮法,將輪廓近似為多條首尾相接的線段,保留所有線段的頂點坐標(biāo)作為壓縮后的輪廓描述;
對像素集對應(yīng)的像素集描述算子進(jìn)行壓縮的過程如下:
對像素集描述算子包含的方向α0以步長Δα進(jìn)行量化;對像素集描述算子包含的漸變描述矩陣使用增量壓縮方式進(jìn)行壓縮,對增量壓縮后的信息采用算術(shù)編碼進(jìn)行壓縮;記像素集描述算子行的參數(shù)矩陣各行的值分別為P0,P1,P2,…,Pl,其中下標(biāo)0,1,…,l為參數(shù)矩陣的行號,即原始的漸變描述矩陣[KB]可表示為[P0 P1 P2 … Pl]T,可記D0=P1-P0,D1=P2-P1,…,Dl-1=Pl-Pl-1,則經(jīng)過增量壓縮后的漸變描述矩陣為[P0 D0 D1 … Dl-1]T;
量化后的方向α0和增量壓縮后的漸變描述矩陣構(gòu)成壓縮后的像素集描述算子,對壓縮后的像素集描述算子使用算術(shù)編碼進(jìn)行壓縮,得到所述特征描述碼流。
進(jìn)一步的,所述步驟(4)具體為:
利用描述碼流獲得像素集的預(yù)測圖像;對像素集原始圖像和預(yù)測圖像進(jìn)行作差,得到殘差圖像;對殘差圖像進(jìn)行壓縮的過程如下:
對殘差采用大小為T×T的DCT變換,對DCT變換后的系數(shù)進(jìn)行量化,量化時,需要減少低頻系數(shù)的量化步長,增加中高頻系數(shù)的量化步長,對量化后的系數(shù)使用Huffman編碼或算術(shù)編碼進(jìn)行壓縮,獲得殘差碼流。
進(jìn)一步的,所述復(fù)用壓縮處理使用熵編碼方式。
本發(fā)明還提供一種基于圖像平坦區(qū)域特征的壓縮的裝置,包括圖像獲取單元、圖像分析單元、圖像處理單元、區(qū)域劃分單元、區(qū)域特征描述單元、像素集及像素集描述算子壓縮單元、殘差壓縮單元和復(fù)用壓縮單元,其中:
所述圖像獲取單元,用于以滑動窗口模式或逐點掃描模式,讀取視頻單幀或讀取圖片生成單幅圖像;
所述圖像分析單元,用于對圖像獲取單元中獲取的圖像進(jìn)行分區(qū)域分析,分析干擾信號種類和分布。
所述圖像處理單元,用于消除圖像分析單元分析出的干擾信號和噪聲。
所述區(qū)域劃分單元,用于識別平坦區(qū)域,建立平坦區(qū)域的像素漸變模型,并按照像素漸變模型進(jìn)行劃分平坦區(qū)域獲得平坦區(qū)域分塊。
所述區(qū)域特征描述單元,用于獲取區(qū)域劃分單元劃分出的分塊的梯度分布模型,并將劃分出的平坦區(qū)域分塊內(nèi)的像素進(jìn)行進(jìn)一步劃分,得到像素集以及像素集對應(yīng)的像素集描述算子;
所述像素集及像素集描述算子壓縮單元,用于對像素集和像素集對應(yīng)的像素集描述算子進(jìn)行壓縮,生成描述碼流;
所述殘差壓縮單元,用于利用描述碼流獲得像素集的預(yù)測圖像,對像素集原始圖像和預(yù)測圖像進(jìn)行作差,得到殘差圖像,對殘差圖像進(jìn)行壓縮,獲得殘差碼流;
所述復(fù)用壓縮單元,用于對描述碼流和殘差碼流進(jìn)行復(fù)用壓縮處理,生成壓縮圖像碼流或文件。
從以上技術(shù)方案可以看出,本發(fā)明實施例具有以下優(yōu)點:
1、利用視頻單幀或單幅圖片信息,獲得平坦區(qū)域,這些平坦區(qū)域具有較大的面積;對較大范圍的平坦區(qū)域建立像素漸變模型,可以避免傳統(tǒng)的圖像編碼中劃分規(guī)則小塊進(jìn)行編碼時塊劃分?jǐn)?shù)據(jù)較大、小塊的編碼容易受到塊內(nèi)噪聲影響的缺點,獲得平坦區(qū)域較大范圍內(nèi)的像素值宏觀變化規(guī)律;根據(jù)像素漸變模型劃分平坦區(qū)域,獲得平坦區(qū)域分塊,從而保證各分塊內(nèi)部像素的漸變方向保持較高的一致性;
2、利用平坦區(qū)域分塊內(nèi)的梯度分布模型劃分像素集,可以使得各像素集內(nèi)部具有高度的一致性,有利于使用參數(shù)更少的描述算子表述整個像素集,通過控制閾值,可以控制分塊內(nèi)像素集的大小、像素集描述算子的復(fù)雜度和描述質(zhì)量,從而比傳統(tǒng)的圖像編碼算法具有更高的靈活性;使用的線段描述算子矩陣,保留了像素集內(nèi)的部分噪聲,在不增加描述算子的比特數(shù)的情況下,使得描述更接近原始圖像。
3、分別對像素集、像素集的像素集描述算子、殘差進(jìn)行壓縮,可以根據(jù)不同數(shù)據(jù)類型的需要采用不同的壓縮算法,在保證一定的壓縮比的情況獲得更好的壓縮圖像。像素集描述算子采用的是無損的增量壓縮,完全保留了描述的精度;殘差采用的是有損的量化方式進(jìn)行壓縮,對低頻系數(shù)采用較小的量化步長,充分保留了色彩偏移的信息,對中高頻系數(shù)采用較大的量化步長,減小了中高頻噪聲消耗的比特數(shù)。
4、對描述碼流和殘差碼流進(jìn)行復(fù)用壓縮處理,生成單幅圖像壓縮文件,在對各部分?jǐn)?shù)據(jù)進(jìn)行分別壓縮后,再采用熵編碼的方式消除各部分?jǐn)?shù)據(jù)間存在的冗余,可以在完全不損失任何信息的情況下獲得比單次壓縮更高的壓縮比。
因此本發(fā)明實施例與現(xiàn)有的圖像編碼算法相比,在多個方面具有優(yōu)越性。
附圖說明
圖1為本發(fā)明一種實施例的基于圖像平坦區(qū)域特征的壓縮方法流程圖;
圖2為本發(fā)明實施例的于圖像平坦區(qū)域特征的壓縮方法的具體流程圖;
圖3為本發(fā)明的基于圖像平坦區(qū)域特征的壓縮裝置的結(jié)構(gòu)框圖。
具體實施方式
為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例。
本發(fā)明實施例提供了一種圖像壓縮方法,
如圖1所示,該方法主要包括以下幾個步驟:
步驟S102,獲取包含需要壓縮的平坦區(qū)域的單幅圖像;上述單幅圖像需要包含有大面積的平坦區(qū)域;
步驟S104,濾除原始圖像干擾信號;由于獲得的原始圖像往往帶有噪聲和壞點,這些干擾信號有可能對平坦區(qū)域的識別、劃分和描述產(chǎn)生影響,因此需要使用濾波器與原始圖像進(jìn)行卷積,盡可能消除這些干擾信號的影響;
步驟S106,識別平坦區(qū)域并劃分平坦區(qū)域分塊;識別消除了干擾信號的圖像中面積較大的平坦區(qū)域,并將這些平坦區(qū)域根據(jù)像素漸變模型進(jìn)行分塊;
步驟S108,劃分并描述像素集;利用平坦區(qū)域分塊內(nèi)的像素信息,獲得平坦區(qū)域分塊的梯度分布模型,依據(jù)該梯度模型將步驟S106獲得的平坦區(qū)域分塊中的所有像素劃分成一個或多個像素集,并生成各個像素集對應(yīng)的像素集描述算子;
步驟S110,生成漸變模式描述碼流;對像素集和像素集描述算子進(jìn)行壓縮,獲得漸變模式描述碼流;
步驟S112,生成殘差碼流;使用壓縮后的漸變模式描述碼流對各像素集中的像素進(jìn)行預(yù)測,與原始圖像作差得到預(yù)測殘差;對獲得的殘差進(jìn)行壓縮獲得殘差碼流;
步驟S114,生成壓縮圖像碼流;對漸變模式碼流和殘差碼流進(jìn)行復(fù)用壓縮,獲得壓縮后的圖像碼流或文件。
圖2是根據(jù)本發(fā)明實施例的圖像壓縮方法流程圖以及優(yōu)選實施例對上述實施例提供的單幅圖像壓縮方法進(jìn)行更加詳細(xì)的說明。如圖2所示,該流程圖包括以下步驟(步驟S202-步驟S214)。
步驟S202,使用滑動窗口或逐點掃描的方式獲取原始圖像像素信息;本發(fā)明實施例中,需要進(jìn)行壓縮的圖像,可以來自于相機(jī),或者其他任意圖像源。原始圖像中需要有大面積的平坦區(qū)域。
步驟S204,使用低通濾波器與原始圖像卷積濾除原始圖像干擾信號;本實施例中,對步驟S202中獲得的單幅圖像所有像素信息使用低通濾波器進(jìn)行濾波以消除干擾信號。濾除平坦區(qū)域的壞點采用5×5的中值濾波器;濾除平坦區(qū)域的隨機(jī)噪聲采用高斯濾波器。在本發(fā)明實施例中,濾波器的各項參數(shù)是技術(shù)人員預(yù)先設(shè)定的值;這些參數(shù)也可以依據(jù)后續(xù)采用的識別和描述算法的要求進(jìn)行調(diào)整。一般來說,低通濾波器設(shè)定的平滑尺度越大,圖像的平滑程度越高,保留的中高頻信息越少,后續(xù)識別出的平坦區(qū)域越多;低通濾波器設(shè)定的平滑尺度越小,保留的中高頻信息越多,一部分含有較大噪聲的平坦區(qū)域會被后續(xù)的識別算法判定為非平坦區(qū)域。
步驟S206,識別平坦區(qū)域并建立平坦區(qū)域的像素漸變模型,根據(jù)像素漸變模型劃分平坦區(qū)域分塊;本實施例中,對濾除了干擾信號的圖像中所有像素進(jìn)行下述連通域判斷:若某像素與其相鄰像素的值相差小于閾值1,則認(rèn)為這些像素屬于同一個連通域,通過連通域判斷,可將濾除了干擾信號的圖像中所有的像素劃分成多個連通域;面積大于閾值10000的連通域即為平坦區(qū)域;
本實施例中,建立平坦區(qū)域在二維坐標(biāo)系中的像素漸變模型的過程如下:
優(yōu)選對圖像采用量化的方法進(jìn)行平坦區(qū)域的劃分;將濾波后的圖像量化為色彩深度為4比特的圖像;將量化后的平坦區(qū)域分割成大小為64×64的規(guī)則塊,分別計算所有規(guī)則塊的方向β,本實施例中,對方向β的計算在笛卡爾坐標(biāo)系中完成;規(guī)則塊B的方向的計算通過fB⊥β:B→Lβ映射完成,其中Lβ代表經(jīng)過所述色彩深度為4比特的圖像原點,且與x軸正方向夾角為β∈[0,π)的直線;映射fB⊥β代表的映射方法等價于將規(guī)則塊B內(nèi)所有的像素點對直線Lβ作垂直映射操作,方法如下:
若規(guī)則塊B內(nèi)的像素值不著統(tǒng)一的方向遞增,則將規(guī)則塊B內(nèi)所有像素點映射到經(jīng)過該像素的Lβ的法線與直線Lβ的交點;最終直線Lβ上有對應(yīng)映射像素點的點組成的線段的長度稱為投影面積,投影面積可用像素點個數(shù)進(jìn)行度量,記為N(fB⊥β),使得N(fB⊥β)最小的β則認(rèn)為是規(guī)則塊B的角度β。
本實施例為了獲得更好的漸變方向,分別計算規(guī)則塊B內(nèi)像素值相等區(qū)域的各N(fB⊥β),其中Bi是規(guī)則塊B中像素值為i的像素構(gòu)成的子集。此時漸變方向為的聯(lián)合最優(yōu)解,詳細(xì)計算步驟如下:
將區(qū)間[0,π)進(jìn)行N等分,N為經(jīng)驗值,一般可取7或9。得到N個區(qū)間:
將像素集內(nèi)所有像素對直線Lβ做垂直投影映射,β取①中獲得的N個區(qū)間的左邊界,得到對應(yīng)的投影面積之和找出所有Nβ的最小值Nβ0和次最小值Nβ1,分別對應(yīng)漸變直線Lβ0和Lβ1;當(dāng)出現(xiàn)最小值或次最小值對應(yīng)多個β的情況時,取這些β中位數(shù)作為結(jié)果。如果|β0-β1|<thresh,即最小值和次最小值對應(yīng)的角度差小于設(shè)定的精度閾值時,跳轉(zhuǎn)步驟⑤;
如果β0和β1所屬的區(qū)間不相鄰,跳轉(zhuǎn)步驟④。以為區(qū)間,重復(fù)步驟①~步驟③;
找出步驟②算得的Nβ中除Nβ0和Nβ1外最小值Nβ2,將β的取值區(qū)間設(shè)為如果該區(qū)間超出[0,π),則將取值范圍約束到[0,π)之內(nèi),然后重復(fù)步驟①~步驟③。
該規(guī)則塊的方向與x軸正方向的夾角定為β0,算法結(jié)束。
若某規(guī)則塊的方向為β,則該規(guī)則塊漸變方向α的計算公式如下:
若規(guī)則塊B內(nèi)的像素值不沿著統(tǒng)一的方向遞增,則對該規(guī)則塊進(jìn)行四等分操作,即將該規(guī)則塊劃分為大小為的四個小塊,如果某個小塊內(nèi)的像素值沿著統(tǒng)一的方向遞增,則認(rèn)為該小塊的方向為βj,其中j為該小塊的編號;如果某個小塊內(nèi)的像素值不沿著統(tǒng)一的方向遞增,則重復(fù)上述四等分操作,獲得更小的小塊,直到所有小塊內(nèi)的像素沿著統(tǒng)一的方向遞增,從而建立各小塊的劃分方式和漸變方向構(gòu)成平坦區(qū)域的像素漸變模型;
根據(jù)像素漸變模型劃分平坦區(qū)域獲得平坦區(qū)域分塊,過程如下:
按順序掃描平坦區(qū)域的像素漸變模型中所有的小塊,若兩個相鄰小塊的漸變方向差值小于閾值,則將這兩個小塊歸入同一個平坦區(qū)域分塊,對所有的小塊進(jìn)行上述操作即可將平坦區(qū)域劃分為一個或多個平坦區(qū)域分塊;
這里應(yīng)說明的是,量化只是平坦區(qū)域識別和分割的一種實施方案,其他可選的方案還有劃分為規(guī)則矩形塊后計算塊內(nèi)所有像素值的平均值和判斷塊內(nèi)像素的標(biāo)準(zhǔn)差或方差是否小于閾值等,閾值可以在劃分前由技術(shù)人員指定,也可以在劃分過程中根據(jù)平坦區(qū)域分塊的大小進(jìn)行等比例計算獲得;
步驟S208,依據(jù)梯度分布模式劃分像素集并獲得像素集描述算子;本實施例中,采用統(tǒng)計量化后梯度圖中梯度方向的分布模式的方法劃分平坦區(qū)域及分塊中的像素集。操作步驟為:將平坦區(qū)域分塊的梯度方向圖分割成大小為64×64的規(guī)則塊;統(tǒng)計規(guī)則塊中梯度幅值為0的像素在所有像素中的比例;統(tǒng)計規(guī)則塊中梯度方向直方圖,獲得出現(xiàn)頻率最高的3個梯度方向值,3為正整數(shù);每個規(guī)則塊中梯度幅值為0的像素在所有像素中的比例和出現(xiàn)頻率最高的3個梯度方向值構(gòu)成該規(guī)則塊的梯度分布模型;所有規(guī)則塊的劃分方式和梯度分布模型構(gòu)成平坦區(qū)域分塊的梯度分布模型;
當(dāng)相鄰規(guī)則塊的梯度分布模型相似度高于閾值Tg,則將這兩個相鄰塊歸并到同一個像素集;梯度分布模型相似度由兩個規(guī)則塊中梯度幅值為0的像素在所有像素中的比例之差和兩個規(guī)則塊中出現(xiàn)頻率最高的3個梯度方向值中相同方向值所占比例進(jìn)行加權(quán)得到;對所有規(guī)則塊進(jìn)行上述歸并操作,即可得到一個或多個所述像素集,像素集的方向α0等于所在的平坦區(qū)域分塊的漸變方向α;
將每個像素集對應(yīng)的原始圖像沿著像素集的方向α0分解成只含有單行像素的線段;以該線段上所有像素與線段的最左下頂點之間的距離為橫坐標(biāo)x,以該像素的值為縱坐標(biāo)y建立二維坐標(biāo)系(x,y),對線段上所有像素在該二維坐標(biāo)系中使用最小二乘法進(jìn)行線性擬合,獲得這根線段對應(yīng)的漸變描述函數(shù)表達(dá)式y(tǒng)=kx+b,式中與x,y無關(guān)的k,b就是該線段的漸變描述函數(shù)的參數(shù);所有線段對應(yīng)的參數(shù)k,b按順序組成的矩陣[KB]即為該像素集的漸變描述矩陣,矩陣K由所有線段的參數(shù)k按順序排列構(gòu)成,矩陣B的由所有線段的參數(shù)b按順序排列構(gòu)成,矩陣K和矩陣B的列數(shù)為1,行數(shù)等于像素集分解得到的線段的個數(shù)l。像素集的漸變描述矩陣[KB]和像素集的方向α0構(gòu)成該像素集的像素集描述算子。
步驟S210,對像素集以及像素集對應(yīng)的像素集描述算子進(jìn)行壓縮獲得描述碼流;
對像素集進(jìn)行壓縮的過程如下:
對像素集的最外圍輪廓進(jìn)行描述,如果該輪廓內(nèi)部有孔洞,則需要使用該孔洞的輪廓描述最外圍輪廓內(nèi)部需要去除的區(qū)域;像素集的最外圍輪廓和孔洞的輪廓上所有像素的坐標(biāo)構(gòu)成像素集輪廓描述;像素集輪廓描述的壓縮采用頂點描述壓縮法,將輪廓近似為多條首尾相接的線段,保留所有線段的頂點坐標(biāo)作為壓縮后的輪廓描述;
對像素集對應(yīng)的像素集描述算子進(jìn)行壓縮的過程如下:
對像素集描述算子包含的方向α0以步長Δα進(jìn)行量化;對像素集描述算子包含的漸變描述矩陣使用增量壓縮方式進(jìn)行壓縮,對增量壓縮后的信息采用算術(shù)編碼進(jìn)行壓縮;記像素集描述算子行的參數(shù)矩陣各行的值分別為P0,P1,P2,…,Pl,其中下標(biāo)0,1,…,l為參數(shù)矩陣的行號,即原始的漸變描述矩陣[KB]可表示為[P0 P1 P2 … Pl]T,可記D0=P1-P0,D1=P2-P1,…,Dl-1=Pl-Pl-1,則經(jīng)過增量壓縮后的漸變描述矩陣為[P0 D0 D1 … Dl-1]T;
量化后的方向α0和增量壓縮后的漸變描述矩陣構(gòu)成壓縮后的像素集描述算子,對壓縮后的像素集描述算子使用算術(shù)編碼進(jìn)行壓縮,得到所述描述碼流。
步驟S212,對殘差應(yīng)用變換、量化和熵編碼算法生成殘差碼流;將所有的像素集使用步驟S210所述壓縮后的描述碼流進(jìn)行預(yù)測,得到所有像素集對應(yīng)像素的預(yù)測圖像,將預(yù)測圖像與原始圖像作差可得到平坦區(qū)域的殘差。對本實施例中獲得的殘差優(yōu)選與使用現(xiàn)有的圖像壓縮算法相似的壓縮方法獲得殘差碼流??蛇x的圖像壓縮算法有很多,比如HEVC、H.264的幀內(nèi)壓縮算法,JPEG圖像壓縮算法等。在本實施例中,對殘差采用大小為32×32的DCT變換;對DCT變換后的系數(shù)進(jìn)行量化時,需要減少后低頻系數(shù)的量化步長,增加高頻系數(shù)的量化步長;最后使用Huffman編碼或算術(shù)編碼進(jìn)行熵編碼得到最后的殘差碼流。
步驟S214,對描述碼流和殘差碼流進(jìn)行復(fù)用壓縮生成壓縮圖像碼流或文件;在本實施例中,將所述描述碼流和殘差碼流使用熵編碼方式進(jìn)行復(fù)用壓縮,即可得到原始圖像壓縮后的碼流或文件。優(yōu)選的,熵編碼方式可以采用自適應(yīng)上下文二進(jìn)算術(shù)編碼(CABAC)、自適應(yīng)上下文變長編碼(CAVLC)等。
本發(fā)明實施例還提供了一種圖像壓縮裝置,如圖3所示,該裝置用于實現(xiàn)上述實施例提供的基于圖像平坦區(qū)域特征的壓縮方法,該裝置主要包括:
步驟S402,圖像獲取單元,該單元用于從各圖像源獲得待壓縮的圖像;圖像源可以是各種帶攝像頭的終端,如手機(jī)、平板電腦、照相機(jī)等,也可以是互聯(lián)網(wǎng)或本地存儲器中已通過其他圖像壓縮方法壓縮后的重建圖像。該單元用于以滑動窗口模式或逐點掃描模式,讀取圖像源所有像素的信息生成待處理圖像。
步驟S404,圖像分析單元,用于對圖像獲取單元中獲取的圖像進(jìn)行分區(qū)域分析,分析干擾信號種類和分布。本實施例中,所述干擾信號為可能對所述區(qū)域識別單元造成影響的干擾信號,包括但不限于噪聲、圖像壞點及圖像壞塊。本實施例中,當(dāng)某個像素點與其5×5領(lǐng)域內(nèi)像素作差,獲得差的平均值和方差,若平均值大于閾值且方差小于閾值則認(rèn)為該像素點為壞點;
步驟S406,圖像處理單元,用于對圖像進(jìn)行預(yù)處理操作,主要包括消除圖像分析單元中分析出的干擾信號和將圖像處理為后續(xù)單元較易識別出平坦區(qū)域的圖像。
本實施例中,對整幅圖像應(yīng)用中值濾波器去除可能存在的壞點;應(yīng)用高斯濾波器減弱或消除隨機(jī)噪聲。在本實施例中,將消除干擾信號后的圖像進(jìn)行4bit量化操作以獲得較易識別出平坦區(qū)域的預(yù)處理圖像。
步驟S408,區(qū)域劃分單元,識別平坦區(qū)域,建立平坦區(qū)域的像素漸變模型,并按照像素漸變模型進(jìn)行劃分平坦區(qū)域獲得平坦區(qū)域分塊。本實施例中,對濾除了干擾信號并進(jìn)行了4bit量化操作的圖像中所有像素進(jìn)行下述連通域判斷:若某像素與其相鄰像素的值相差小于閾值1,則認(rèn)為這些像素屬于同一個連通域,通過連通域判斷,可將濾除了干擾信號的圖像中所有的像素劃分成多個連通域;面積大于閾值10000的連通域即為平坦區(qū)域;
本實施例中,建立平坦區(qū)域在二維坐標(biāo)系中的像素漸變模型的過程如下:
優(yōu)選對圖像采用量化的方法進(jìn)行平坦區(qū)域的劃分;將濾波后的圖像量化為色彩深度為4比特的圖像;將量化后的平坦區(qū)域分割成大小為64×64的規(guī)則塊,分別計算所有規(guī)則塊的方向β,本實施例中,對方向β的計算在笛卡爾坐標(biāo)系中完成;規(guī)則塊B的方向的計算通過fB⊥β:B→Lβ映射完成,其中Lβ代表經(jīng)過所述色彩深度為4比特的圖像原點,且與x軸正方向夾角為β∈[0,π)的直線;映射fB⊥β代表的映射方法等價于將規(guī)則塊B內(nèi)所有的像素點對直線Lβ作垂直映射操作,方法如下:
若規(guī)則塊B內(nèi)的像素值不著統(tǒng)一的方向遞增,則將規(guī)則塊B內(nèi)所有像素點映射到經(jīng)過該像素的Lβ的法線與直線Lβ的交點;最終直線Lβ上有對應(yīng)映射像素點的點組成的線段的長度稱為投影面積,投影面積可用像素點個數(shù)進(jìn)行度量,記為N(fB⊥β),使得N(fB⊥β)最小的β則認(rèn)為是規(guī)則塊B的角度β。
本實施例為了獲得更好的漸變方向,分別計算規(guī)則塊B內(nèi)像素值相等區(qū)域的各N(fB⊥β),其中Bi是規(guī)則塊B中像素值為i的像素構(gòu)成的子集。此時漸變方向為的聯(lián)合最優(yōu)解,詳細(xì)計算步驟如下:
將區(qū)間[0,π)進(jìn)行N等分,N為經(jīng)驗值,一般可取7或9。得到N個區(qū)間:
將像素集內(nèi)所有像素對直線Lβ做垂直投影映射,β取①中獲得的N個區(qū)間的左邊界,得到對應(yīng)的投影面積之和找出所有Nβ的最小值Nβ0和次最小值Nβ1,分別對應(yīng)漸變直線Lβ0和Lβ1;當(dāng)出現(xiàn)最小值或次最小值對應(yīng)多個β的情況時,取這些β中位數(shù)作為結(jié)果。如果|β0-β1|<thresh,即最小值和次最小值對應(yīng)的角度差小于設(shè)定的精度閾值時,跳轉(zhuǎn)步驟⑤;
如果β0和β1所屬的區(qū)間不相鄰,跳轉(zhuǎn)步驟④。以為區(qū)間,重復(fù)步驟①~步驟③;
找出步驟②算得的Nβ中除Nβ0和Nβ1外最小值Nβ2,將β的取值區(qū)間設(shè)為如果該區(qū)間超出[0,π),則將取值范圍約束到[0,π)之內(nèi),然后重復(fù)步驟①~步驟③。
該規(guī)則塊的方向與x軸正方向的夾角定為β0,算法結(jié)束。
若某規(guī)則塊的方向為β,則該規(guī)則塊漸變方向α的計算公式如下:
若規(guī)則塊B內(nèi)的像素值不沿著統(tǒng)一的方向遞增,則對該規(guī)則塊進(jìn)行四等分操作,即將該規(guī)則塊劃分為大小為的四個小塊,如果某個小塊內(nèi)的像素值沿著統(tǒng)一的方向遞增,則認(rèn)為該小塊沿著方向βj漸變,其中j為該小塊的編號;如果某個小塊內(nèi)的像素值不沿著統(tǒng)一的方向遞增,則重復(fù)上述四等分操作,獲得更小的小塊,直到所有小塊內(nèi)的像素沿著統(tǒng)一的方向遞增,各小塊的劃分方式和漸變方向構(gòu)成平坦區(qū)域的像素漸變模型;
根據(jù)像素漸變模型劃分平坦區(qū)域獲得平坦區(qū)域分塊,過程如下:
按順序掃描平坦區(qū)域的像素漸變模型中所有的小塊,若兩個相鄰小塊的漸變方向差值小于閾值,則將這兩個小塊歸入同一個平坦區(qū)域分塊,對所有的小塊進(jìn)行上述操作即可將平坦區(qū)域劃分為一個或多個平坦區(qū)域分塊;
步驟S410,區(qū)域特征描述單元,用于獲取區(qū)域劃分單元劃分出的平坦區(qū)域分塊的梯度分布模型,并將劃分出的平坦區(qū)域分塊內(nèi)的像素進(jìn)行進(jìn)一步劃分,得到像素集以及像素集對應(yīng)的像素集描述算子;本實施例中,采用統(tǒng)計量化后梯度圖中梯度方向的分布模式的方法劃分平坦區(qū)域及分塊中的像素集。操作步驟為:將平坦區(qū)域分塊的梯度方向圖分割成大小為64×64的規(guī)則塊;統(tǒng)計規(guī)則塊中梯度幅值為0的像素在所有像素中的比例;統(tǒng)計規(guī)則塊中梯度方向直方圖,獲得出現(xiàn)頻率最高的3個梯度方向值,3為正整數(shù);每個規(guī)則塊中梯度幅值為0的像素在所有像素中的比例和出現(xiàn)頻率最高的3個梯度方向值構(gòu)成該規(guī)則塊的梯度分布模型;所有規(guī)則塊的劃分方式和梯度分布模型構(gòu)成平坦區(qū)域分塊的梯度分布模型;
當(dāng)相鄰規(guī)則塊的梯度分布模型相似度高于閾值Tg,則將這兩個相鄰塊歸并到同一個像素集;梯度分布模型相似度由兩個規(guī)則塊中梯度幅值為0的像素在所有像素中的比例之差和兩個規(guī)則塊中出現(xiàn)頻率最高的3個梯度方向值中相同方向值所占比例進(jìn)行加權(quán)得到;對所有規(guī)則塊進(jìn)行上述歸并操作,即可得到一個或多個所述像素集,像素集的方向α0等于所在的平坦區(qū)域分塊的漸變方向α;
將每個像素集對應(yīng)的原始圖像沿著像素集的方向α0分解成只含有單行像素的線段;以該線段上所有像素與線段的最左下頂點之間的距離為橫坐標(biāo)x,以該像素的值為縱坐標(biāo)y建立二維坐標(biāo)系(x,y),對線段上所有像素在該二維坐標(biāo)系中使用最小二乘法進(jìn)行線性擬合,獲得這根線段對應(yīng)的漸變描述函數(shù)表達(dá)式y(tǒng)=kx+b,式中與x,y無關(guān)的k,b就是該線段的漸變描述函數(shù)的參數(shù);所有線段對應(yīng)的參數(shù)k,b按順序組成的矩陣[KB]即為該像素集的漸變描述矩陣,矩陣K由所有線段的參數(shù)k按順序排列構(gòu)成,矩陣B的由所有線段的參數(shù)b按順序排列構(gòu)成,矩陣K和矩陣B的列數(shù)為1,行數(shù)等于像素集分解得到的線段的個數(shù)l。像素集的漸變描述矩陣[KB]和像素集的方向α0構(gòu)成該像素集的像素集描述算子。
步驟S412,像素集及像素集描述算子壓縮單元,于對像素集和像素集對應(yīng)的像素集描述算子進(jìn)行壓縮,生成描述碼流;對像素集進(jìn)行壓縮的過程如下:
對像素集的最外圍輪廓進(jìn)行描述,如果該輪廓內(nèi)部有孔洞,則需要使用該孔洞的輪廓描述最外圍輪廓內(nèi)部需要去除的區(qū)域;像素集的最外圍輪廓和孔洞的輪廓上所有像素的坐標(biāo)構(gòu)成像素集輪廓描述;像素集輪廓描述的壓縮采用頂點描述壓縮法,將輪廓近似為多條首尾相接的線段,保留所有線段的頂點坐標(biāo)作為壓縮后的輪廓描述;
對像素集對應(yīng)的像素集描述算子進(jìn)行壓縮的過程如下:
對像素集描述算子包含的方向α0以步長Δα進(jìn)行量化;對像素集描述算子包含的漸變描述矩陣使用增量壓縮方式進(jìn)行壓縮,對增量壓縮后的信息采用算術(shù)編碼進(jìn)行壓縮;記像素集描述算子行的參數(shù)矩陣各行的值分別為P0,P1,P2,…,Pl,其中下標(biāo)0,1,…,l為參數(shù)矩陣的行號,即原始的漸變描述矩陣[KB]可表示為[P0 P1 P2 … Pl]T,可記D0=P1-P0,D1=P2-P1,…,Dl-1=Pl-Pl-1,則經(jīng)過增量壓縮后的漸變描述矩陣為[P0 D0 D1 … Dl-1]T;
量化后的方向α0和增量壓縮后的漸變描述矩陣構(gòu)成壓縮后的像素集描述算子,對壓縮后的像素集描述算子使用算術(shù)編碼進(jìn)行壓縮,得到所述描述碼流。
步驟S414,殘差壓縮單元,利用區(qū)域特征描述單元獲得的描述碼流獲得像素集的預(yù)測圖像,對像素集原始圖像和預(yù)測圖像進(jìn)行作差,得到殘差圖像,對殘差圖像進(jìn)行壓縮,獲得殘差碼流,步驟為:將所有的像素集使用步驟S412所述壓縮后的描述碼流進(jìn)行預(yù)測,得到所有像素集對應(yīng)像素的預(yù)測圖像,將預(yù)測圖像與原始圖像作差可得到平坦區(qū)域的殘差。對本實施例中獲得的殘差優(yōu)選與使用現(xiàn)有的圖像壓縮算法相似,的壓縮方法獲得殘差碼流??蛇x的圖像壓縮算法有很多,比如HEVC、H.264的幀內(nèi)壓縮算法,JPEG圖像壓縮算法等。在本實施例中,對殘差采用大小為32×32的DCT變換;對DCT變換后的系數(shù)進(jìn)行量化時,需要減少后低頻系數(shù)的量化步長,增加高頻系數(shù)的量化步長;最后使用Huffman編碼或算術(shù)編碼進(jìn)行熵編碼得到最后的殘差碼流。
步驟S416,復(fù)用壓縮單元,用于對描述碼流和殘差碼流進(jìn)行復(fù)用壓縮處理,生成單幅圖像壓縮文件。在本實施例中,將像素集及像素集描述算子壓縮單元生成的描述碼流和殘差壓縮單元生成的殘差碼流使用熵編碼方式進(jìn)行復(fù)用壓縮,即可得到原始圖像壓縮后的碼流或文件。優(yōu)選的,熵編碼方式可以采用自適應(yīng)上下文二進(jìn)算術(shù)編碼(CABAC)、自適應(yīng)上下文變長編碼(CAVLC)等。
值得注意的是,上述裝置實施例中,所包括的各個單元只是按照功能邏輯進(jìn)行劃分的,但并不限于上述的劃分,只要能夠?qū)崿F(xiàn)相應(yīng)的功能即可;另外,各功能單元的具體名稱也只是為了便于相互區(qū)分,并不用于限制本發(fā)明的保護(hù)范圍。
最后應(yīng)說明的是:以上實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。