本發(fā)明屬于圖像壓縮技術(shù)領(lǐng)域,更具體地,涉及一種基于混合熵編碼的衛(wèi)星序列圖像無(wú)損壓縮方法及系統(tǒng)。
背景技術(shù):
遙感技術(shù)在軍事偵察、環(huán)境監(jiān)測(cè)、地球資源管理等方面發(fā)揮著舉足輕重的作用,特別是遙感圖像有著直觀、信息量豐富的特點(diǎn)。隨著空間技術(shù)的發(fā)展,特別是太空軍事技術(shù)的發(fā)展,對(duì)太空遙感提出了更高的要求,主要包括圖像分辨率、光譜分辨率和時(shí)間分辨率的提高,導(dǎo)致星上圖像數(shù)據(jù)量直線上升。而將圖像數(shù)據(jù)從空間實(shí)時(shí)傳送到地面,是大部分衛(wèi)星的主要任務(wù)。在某些應(yīng)用領(lǐng)域,需要無(wú)損壓縮,因此,面臨空間遙感圖像數(shù)據(jù)的劇增,亟需一種具有更高壓縮性能的無(wú)損壓縮方法。
圖像數(shù)據(jù)不僅在空間上有一定的相關(guān)性,隨著幀頻的提高,在時(shí)間上也存在冗余。在無(wú)損壓縮方法中,不僅要解決空間和時(shí)間的冗余,還要解決編碼冗余,綜合兩者才能提高無(wú)損壓縮性能。
目前已有的無(wú)損壓縮標(biāo)準(zhǔn)如jpeg-ls、jpeg2000、jpeg等或相關(guān)文獻(xiàn),在解決空間和時(shí)間冗余時(shí)或者計(jì)算復(fù)雜度較高,不能適應(yīng)星上計(jì)算資源有限的缺陷,或者不能實(shí)現(xiàn)無(wú)損壓縮;針對(duì)編碼,不能充分發(fā)揮編碼算法的性能,所以編碼后的結(jié)果還存在一定信息冗余。因此,在預(yù)測(cè)和編碼兩方面亟需一種相輔相成的無(wú)損壓縮方法。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)現(xiàn)有技術(shù)的以上缺陷或改進(jìn)需求,本發(fā)明提供了一種基于混合熵編碼的衛(wèi)星序列圖像無(wú)損壓縮方法及系統(tǒng),其目的在于根據(jù)序列圖像空間冗余和時(shí)間冗余特性自動(dòng)切換幀內(nèi)預(yù)測(cè)和幀間預(yù)測(cè)模式,并采用自適應(yīng)混合熵編碼進(jìn)行編碼,由此解決現(xiàn)有星上圖像壓縮技術(shù)中壓縮算法復(fù)雜度高和信息冗余度高的技術(shù)問(wèn)題。
為實(shí)現(xiàn)上述目的,按照本發(fā)明的一個(gè)方面,提供了一種基于混合熵編碼的衛(wèi)星序列圖像無(wú)損壓縮方法及系統(tǒng),該方法包括:
(1)梯度計(jì)算:輸入圖像,判斷是否有參考幀,若沒(méi)有參考幀,則計(jì)算輸入像素周邊兩兩像素之間的幀內(nèi)梯度,進(jìn)入步驟(3);否則計(jì)算輸入像素周邊像素點(diǎn)和參考幀對(duì)應(yīng)像素點(diǎn)之間的幀間梯度并同時(shí)計(jì)算輸入像素的幀內(nèi)梯度;
(2)幀間預(yù)測(cè)及修正:若幀間梯度絕對(duì)值的和小于設(shè)定閾值則利用幀間梯度和參考幀對(duì)應(yīng)像素預(yù)測(cè)輸入點(diǎn)像素得到預(yù)測(cè)值,并量化幀間梯度對(duì)預(yù)測(cè)值進(jìn)行修正;否則進(jìn)入步驟(3)
(3)幀內(nèi)預(yù)測(cè)及修正:利用輸入像素點(diǎn)周邊像素預(yù)測(cè)輸入點(diǎn)像素得到預(yù)測(cè)值,并量化幀內(nèi)梯度對(duì)預(yù)測(cè)值進(jìn)行修正;
(4)殘差值計(jì)算及處理:輸入像素值減預(yù)測(cè)值得到殘差值,將殘差值限制在預(yù)設(shè)范圍內(nèi),再映射到非負(fù)區(qū)域得到映射值maperrval;
(5)混合熵編碼:利用拉布拉斯分布對(duì)區(qū)間[0,th]進(jìn)行概率初始化,拉布拉斯分布:
得到算術(shù)編碼初始化概率模型,其中,p(t)為概率,σ為設(shè)定的分布參數(shù),th為設(shè)定值;之后若maperrval∈[0,th],則根據(jù)概率模型進(jìn)行算術(shù)編碼,并按整字節(jié)補(bǔ)齊編碼結(jié)果,隨后用maperrval更新概率模型;若maperrval∈(th,maxval],則對(duì)maperrval進(jìn)行定長(zhǎng)編碼;最后將編碼結(jié)果整合輸出。
進(jìn)一步地,所述步驟(1)具體包括:
(11)輸入圖像,判斷是否有參考幀,若沒(méi)有參考幀,則進(jìn)入步驟(12);否則進(jìn)入步驟(13);
(12)計(jì)算輸入像素的幀內(nèi)梯度,
其中,p9、p3、p8和p2兩兩相鄰,p3和p2與輸入像素點(diǎn)邊相鄰,p9和p8與輸入像素點(diǎn)角相鄰,進(jìn)入步驟(3);
(13)計(jì)算幀內(nèi)梯度并同時(shí)計(jì)算輸入像素的幀間梯度,幀間梯度為:
其中,p5、p4和p10為參考幀中和p3、p2和p8對(duì)應(yīng)像素點(diǎn)。
進(jìn)一步地,所述步驟(2)包括:
(21)判斷(|d4|+|d5|+|d6|)≤t1是否成立,其中,t1為預(yù)測(cè)閾值;若是則進(jìn)入步驟(22);否則進(jìn)入步驟(3);
(22)所述輸入像素的預(yù)測(cè)值為:
其中,
(23)計(jì)算g(inter)=|d4|+|d5|+|d6|,在區(qū)間[0,maxval]內(nèi)將g(inter)量化為10個(gè)等級(jí),即設(shè)置10個(gè)上下文模型對(duì)預(yù)測(cè)值
進(jìn)一步地,所述步驟(3)包括:
(31)預(yù)測(cè)值為:
(32)對(duì)d1、d2和d3進(jìn)行量化得到上下文索引值,通過(guò)上下文索引值對(duì)預(yù)測(cè)值進(jìn)行修正。
進(jìn)一步地,所述步驟(4)包括:
(41)計(jì)算輸入像素的預(yù)測(cè)殘差值
(42)若errval<0,則更新errval=errval+range;再次判斷errval≥((range+1)/2)是否成立,是則更新errval=errval-range,其中,range=maxval+1;
(43)將errval映射到非負(fù)區(qū)域,映射值為:
按照本發(fā)明的另一方面,提供了一種基于混合熵編碼的衛(wèi)星序列圖像無(wú)損壓縮系統(tǒng),所述系統(tǒng)包括:
梯度計(jì)算模塊,用于輸入圖像,判斷是否有參考幀,若沒(méi)有參考幀,則計(jì)算輸入像素周邊兩兩像素之間的幀內(nèi)梯度,進(jìn)入幀內(nèi)預(yù)測(cè)及修正模塊;否則計(jì)算輸入像素周邊像素點(diǎn)和參考幀對(duì)應(yīng)像素點(diǎn)之間的幀間梯度并同時(shí)計(jì)算輸入像素的幀內(nèi)梯度;
幀間預(yù)測(cè)及修正模塊,用于判斷,若幀間梯度絕對(duì)值的和小于設(shè)定閾值,則利用幀間梯度和參考幀對(duì)應(yīng)像素預(yù)測(cè)輸入點(diǎn)像素得到預(yù)測(cè)值,并量化幀間梯度對(duì)預(yù)測(cè)值進(jìn)行修正;否則進(jìn)入幀內(nèi)預(yù)測(cè)及修正模塊;
幀內(nèi)預(yù)測(cè)及修正模塊,用于利用輸入像素點(diǎn)周邊像素預(yù)測(cè)輸入點(diǎn)像素得到預(yù)測(cè)值,并量化幀內(nèi)梯度對(duì)預(yù)測(cè)值進(jìn)行修正;
殘差值計(jì)算及處理模塊,用于輸入像素值減預(yù)測(cè)值得到殘差值,將殘差值限制在預(yù)設(shè)范圍內(nèi),再映射到非負(fù)區(qū)域得到映射值maperrval;
混合熵編碼模塊,用于利用拉布拉斯分布對(duì)區(qū)間[0,th]進(jìn)行概率初始化,拉布拉斯分布:
得到算術(shù)編碼初始化概率模型,其中,p(t)為概率,σ為設(shè)定的分布參數(shù),th為設(shè)定值;之后若maperrval∈[0,th],則根據(jù)概率模型進(jìn)行算術(shù)編碼,并按整字節(jié)補(bǔ)齊編碼結(jié)果,隨后用maperrval更新概率模型;若maperrval∈(th,maxval],則對(duì)maperrval進(jìn)行定長(zhǎng)編碼;最后將編碼結(jié)果整合輸出。
進(jìn)一步地,所述梯度計(jì)算模塊具體包括:
參考幀判斷單元,用于輸入圖像,判斷是否有參考幀,若沒(méi)有參考幀,則進(jìn)入幀內(nèi)梯度計(jì)算單元;否則進(jìn)入幀間幀內(nèi)梯度計(jì)算單元;
幀內(nèi)梯度計(jì)算單元,用于計(jì)算輸入像素的幀內(nèi)梯度,
其中,p9、p3、p8和p2兩兩相鄰,p3和p2與輸入像素點(diǎn)邊相鄰,p9和p8與輸入像素點(diǎn)角相鄰,進(jìn)入幀內(nèi)預(yù)測(cè)及修正模塊;
幀間幀內(nèi)梯度計(jì)算單元,用于計(jì)算幀內(nèi)梯度并同時(shí)計(jì)算輸入像素的幀間梯度,幀間梯度為:
其中,p5、p4和p10為參考幀中和p3、p2和p8對(duì)應(yīng)像素點(diǎn)。
進(jìn)一步地,其特征在于,所述幀間預(yù)測(cè)及修正模塊包括:
預(yù)測(cè)判斷單元,用于判斷(|d4|+|d5|+|d6|)≤t1是否成立,其中,t1為預(yù)測(cè)閾值;若是則進(jìn)入幀間預(yù)測(cè)單元;否則進(jìn)入幀內(nèi)預(yù)測(cè)及修正模塊;
幀間預(yù)測(cè)單元,用于計(jì)算幀間預(yù)測(cè)值,所述輸入像素的預(yù)測(cè)值為:
其中,
幀間預(yù)測(cè)修正單元,用于計(jì)算g(inter)=|d4|+|d5|+|d6|,在區(qū)間[0,maxval]內(nèi)將g(inter)量化為10個(gè)等級(jí),即設(shè)置10個(gè)上下文模型對(duì)預(yù)測(cè)值
進(jìn)一步地,所述幀內(nèi)預(yù)測(cè)及修正模塊包括:
幀內(nèi)預(yù)測(cè)單元,用于計(jì)算幀內(nèi)預(yù)測(cè)值,預(yù)測(cè)值為:
幀內(nèi)預(yù)測(cè)修正單元,用于對(duì)d1、d2和d3進(jìn)行量化得到上下文索引值,通過(guò)上下文索引值對(duì)預(yù)測(cè)值進(jìn)行修正。
進(jìn)一步地,所述殘差值計(jì)算及處理模塊包括:
殘差計(jì)算單元,用于計(jì)算輸入像素的預(yù)測(cè)殘差值
殘差限定單元,用于將殘差值限定在預(yù)設(shè)范圍內(nèi),若errval<0,則更新errval=errval+range;再次判斷errval≥((range+1)/2)是否成立,是則更新errval=errval-range,其中,range=maxval+1;
殘差映射單元,用于將errval映射到非負(fù)區(qū)域,映射值為:
總體而言,通過(guò)本發(fā)明所構(gòu)思的以上技術(shù)方案與現(xiàn)有技術(shù)相比,具有以下技術(shù)特征及有益效果:
(1)本發(fā)明根據(jù)空間和時(shí)間冗余特性,建立時(shí)空上下文對(duì)幀間和幀內(nèi)預(yù)測(cè)值進(jìn)行修正,在jpeg-ls幀內(nèi)上下文的基礎(chǔ)上豐富了上下文環(huán)境情況,優(yōu)化了預(yù)測(cè)模型,使得預(yù)測(cè)值更加接近像素真實(shí)值,更大程度的減小空間和時(shí)間冗余;
(2)本發(fā)明設(shè)計(jì)的基于算術(shù)編碼的混合自適應(yīng)算術(shù)編碼能更好的適應(yīng)編碼對(duì)象的分布特性,更加發(fā)揮算術(shù)編碼的性能,使得編碼結(jié)果進(jìn)一步接近信源的熵,提高無(wú)損壓縮比;
(3)按照本發(fā)明提出的基于混合熵編碼的衛(wèi)星序列圖像無(wú)損壓縮方法,能有效解決星地傳輸帶寬與大數(shù)據(jù)量的矛盾。在獲得高壓縮比的同時(shí),實(shí)現(xiàn)復(fù)雜度也能滿(mǎn)足星上計(jì)算能力的要求。
附圖說(shuō)明
圖1是本發(fā)明的方法流程圖;
圖2本發(fā)明實(shí)施例菱形搜索算法示意圖;
圖3為本發(fā)明實(shí)施例幀間和幀內(nèi)的預(yù)測(cè)模板;
圖4為拉布拉斯分布示意圖;
圖5為本發(fā)明實(shí)施例預(yù)測(cè)值直方圖;
圖6為本發(fā)明實(shí)施例預(yù)測(cè)值映射后的直方圖;
圖7為本發(fā)明實(shí)施例混合自適應(yīng)算術(shù)編碼框圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。此外,下面所描述的本發(fā)明各個(gè)實(shí)施方式中所涉及到的技術(shù)特征只要彼此之間未構(gòu)成沖突就可以相互組合。
如圖1所示,本實(shí)施方案有如下流程:
(1)梯度計(jì)算:輸入圖像,判斷是否有參考幀,若沒(méi)有參考幀,則計(jì)算輸入像素周邊兩兩像素之間的幀內(nèi)梯度,進(jìn)入步驟(3),否則計(jì)算輸入像素周邊像素點(diǎn)和參考幀對(duì)應(yīng)像素點(diǎn)之間的幀間梯度并同時(shí)計(jì)算輸入像素的幀內(nèi)梯度;
(11)輸入圖像,判斷是否有參考幀,若沒(méi)有參考幀,則進(jìn)入步驟(12);否則進(jìn)入步驟(13);所述參考幀即為當(dāng)前幀的前幾幀中任意一幀,優(yōu)選前一幀,一組圖像序列中的第一幀沒(méi)有參考幀;
(12)計(jì)算輸入像素的幀內(nèi)梯度,
其中,p9、p3、p8和p2兩兩相鄰,p3和p2與輸入像素點(diǎn)邊相鄰,p9和p8與輸入像素點(diǎn)角相鄰,進(jìn)入步驟(3);
(13)計(jì)算幀內(nèi)梯度并同時(shí)計(jì)算輸入像素的幀間梯度,幀間梯度為:
d4=p3-p5
d5=p2-p4
d6=p8-p10,
其中,p5、p4和p10為參考幀中和p3、p2和p8對(duì)應(yīng)像素點(diǎn);所述對(duì)應(yīng)像素點(diǎn)采用圖2所示菱形搜索方法,依據(jù)最小絕對(duì)差和準(zhǔn)則計(jì)算相鄰兩幀之間的運(yùn)動(dòng)矢量,運(yùn)動(dòng)矢量加所選像素點(diǎn)坐標(biāo)記為參考幀對(duì)應(yīng)像素點(diǎn);按如圖3所示本發(fā)明實(shí)施例幀間和幀內(nèi)的預(yù)測(cè)模板進(jìn)行梯度計(jì)算。
(2)幀間預(yù)測(cè)及修正:若幀間梯度絕對(duì)值的和小于設(shè)定閾值則利用幀間梯度和參考幀對(duì)應(yīng)像素預(yù)測(cè)輸入點(diǎn)像素得到預(yù)測(cè)值,并量化幀間梯度對(duì)預(yù)測(cè)值進(jìn)行修正;否則進(jìn)入步驟(3);
(21)判斷(|d4|+|d5|+|d6|)≤t1是否成立,其中,t1為預(yù)測(cè)閾值;若是則進(jìn)入步驟(22);否則進(jìn)入步驟(3);
(22)所述輸入像素的預(yù)測(cè)值為:
其中,
(23)計(jì)算g(inter)=|d4|+|d5|+|d6|,在區(qū)間[0,maxval]內(nèi)將g(inter)量化為10個(gè)等級(jí),即設(shè)置10個(gè)上下文模型對(duì)預(yù)測(cè)值
(3)幀內(nèi)預(yù)測(cè)及修正:利用輸入像素點(diǎn)周邊像素預(yù)測(cè)輸入點(diǎn)像素得到預(yù)測(cè)值,并量化幀內(nèi)梯度對(duì)預(yù)測(cè)值進(jìn)行修正;
(31)預(yù)測(cè)值為:
(32)對(duì)d1、d2和d3進(jìn)行量化得到上下文索引值,通過(guò)上下文索引值對(duì)預(yù)測(cè)值進(jìn)行修正;如圖4所示為本實(shí)施例預(yù)測(cè)值集合的直方圖。
(4)殘差值計(jì)算及處理:輸入像素值減預(yù)測(cè)值得到殘差值,將殘差值限制在預(yù)設(shè)范圍內(nèi),再映射到非負(fù)區(qū)域得到映射值maperrval;如圖5所示為實(shí)施例的映射值;
(41)計(jì)算輸入像素的預(yù)測(cè)殘差值
(42)若errval<0,則更新errval=errval+range;再次判斷errval≥((range+1)/2)是否成立,是則更新errval=errval-range,其中,range=maxval+1;
(43)將errval映射到非負(fù)區(qū)域,映射值為:
(5)混合熵編碼:如圖6所示,實(shí)施例混合自適應(yīng)算術(shù)編碼具體為:利用拉布拉斯分布對(duì)區(qū)間[0,th]進(jìn)行概率初始化,得到算術(shù)編碼初始化概率模型,拉布拉斯分布為:
如圖7所示為拉布拉斯分布的分布曲線;其中,p(t)為概率,σ為設(shè)定的分布參數(shù),th為設(shè)定值;之后若maperrval∈[0,th],則根據(jù)概率模型進(jìn)行算術(shù)編碼,并按整字節(jié)補(bǔ)齊編碼結(jié)果,隨后用maperrval更新概率模型;若maperrval∈(th,maxval],則對(duì)maperrval進(jìn)行定長(zhǎng)編碼;最后將編碼結(jié)果整合輸出。
本領(lǐng)域的技術(shù)人員容易理解,以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。