本發(fā)明屬于圖像處理領(lǐng)域,更具體地,涉及一種基于可逆變長碼的圖像無損壓縮方法和系統(tǒng)。
背景技術(shù):
在大多數(shù)的空間探測技術(shù)中,將傳感器采集到的圖像傳輸?shù)降孛孢M(jìn)行研究是必不可少的。空間圖像傳感器采集到的圖像一般具有高分辨率、巨幅面、多波段的特點,直接導(dǎo)致海量的圖像數(shù)據(jù)和很高的原始碼速率,因此圖像壓縮技術(shù)對于圖像傳輸是至關(guān)重要的。
常見的數(shù)據(jù)壓縮技術(shù)包括無損壓縮和有損壓縮兩類。有損壓縮是在犧牲像元精度的情況下可以達(dá)到較高的壓縮比;而無損壓縮提供了不丟失信息的壓縮技術(shù),可以從壓縮數(shù)據(jù)準(zhǔn)確無誤地恢復(fù)原始圖像,但壓縮比不高。在信息細(xì)節(jié)要求較高的系統(tǒng)中,采用有損壓縮可能導(dǎo)致丟失重要信息,必須采用無損壓縮。
目前空間應(yīng)用中最常見的圖像無損壓縮算法是基于預(yù)測的無損壓縮算法?;陬A(yù)測的無損壓縮算法針對圖像局部區(qū)域像素間冗余關(guān)系,利用預(yù)測器來減小輸入圖像的圖像熵,實現(xiàn)圖像信息的數(shù)據(jù)壓縮。這種算法具有很低的實現(xiàn)復(fù)雜性,并能取得較好的壓縮效果。但是當(dāng)圖像數(shù)據(jù)采取基于預(yù)測的無損壓縮算法時,傳輸編碼碼流中某一位的誤碼不僅造成對應(yīng)像素的灰度信息錯誤,還會對所有后續(xù)碼流的解碼結(jié)果產(chǎn)生影響,這樣會形成誤碼的擴散,導(dǎo)致恢復(fù)出來的信號面目全非。當(dāng)基于預(yù)測的無損壓縮算法采用變長編碼時,誤碼造成的損害更嚴(yán)重,因為變長編碼會使得差錯擴散到以下各行,使以后的各點圖像數(shù)據(jù)發(fā)生錯誤,并使圖像數(shù)據(jù)個數(shù)發(fā)生錯誤,影響程度取決于出錯像素所在的位置。所以缺乏誤碼容忍能力是基于預(yù)測的無損壓縮算法主要的缺點。
圖像數(shù)字通信中,當(dāng)信道傳輸誤碼率超過一定限度,要保障正常通信,必須對誤碼實施糾錯處理,這需要將信息進(jìn)行信道編碼,即在信息碼元序列中加入監(jiān)督碼元。但是,當(dāng)圖像數(shù)據(jù)量很大時,監(jiān)督碼元的加入會造成較大的數(shù)據(jù)冗余,會大大降低壓縮的效率。同時,因為信道編碼是對待傳輸?shù)膲嚎s碼流進(jìn)行編碼,所以它們雖然具有較強的檢糾錯能力,但是仍然會使得接收端的壓縮數(shù)據(jù)存在一定的誤碼率,進(jìn)而影響解壓縮圖像數(shù)據(jù)的質(zhì)量。
由此可見,現(xiàn)有技術(shù)中基于預(yù)測的無損壓縮圖像的壓縮比較低、誤像素率較高、解壓縮圖像數(shù)據(jù)的質(zhì)量差,無法適應(yīng)遠(yuǎn)距離大數(shù)據(jù)量圖像的無損壓縮和傳輸。
技術(shù)實現(xiàn)要素:
針對現(xiàn)有技術(shù)的以上缺陷或改進(jìn)需求,本發(fā)明提供了一種基于可逆變長碼的圖像無損壓縮方法和系統(tǒng),其目的在于基于可逆變長碼構(gòu)造編碼碼表,進(jìn)而對圖像進(jìn)行壓縮,得到圖像壓縮碼流,利用圖像壓縮碼流,基于可逆變長碼,設(shè)計解碼碼表進(jìn)而得到解壓縮后的圖像,由此解決壓縮圖像的壓縮比較低、誤像素率較高、解壓縮圖像數(shù)據(jù)的質(zhì)量差,無法適應(yīng)遠(yuǎn)距離大數(shù)據(jù)量圖像的無損壓縮和傳輸?shù)募夹g(shù)問題。
為實現(xiàn)上述目的,按照本發(fā)明的一個方面,提供了一種基于可逆變長碼的圖像無損壓縮方法,包括圖像無損壓縮和圖像解壓縮部分:
圖像無損壓縮部分包括:
(s1)對待壓縮圖像的每一行像素點進(jìn)行差分處理得到像素點差分值,基于可逆變長碼,利用像素點差分值構(gòu)造待壓縮圖像每一行的編碼碼表,并得到碼表信息;
(s2)對待壓縮圖像的首行像素點,保留所有像素點灰度值并進(jìn)行編碼,得到首行編碼碼流,對待壓縮圖像的非首行像素點,利用待壓縮圖像的上一行的編碼碼表進(jìn)行編碼,得到非首行編碼碼流;
(s3)在每一行編碼碼流后加上行尾標(biāo)志信息和該行的碼表信息,得到圖像壓縮碼流,傳輸至圖像解壓縮部分;
圖像解壓縮部分包括:
(t1)接收圖像壓縮碼流,對首行圖像壓縮碼流直接獲取首行像素點灰度值并計算差分值,再基于可逆變長碼,利用首行像素點差分值設(shè)計解碼碼表,對非首行圖像壓縮碼流,根據(jù)行尾標(biāo)志信息依次獲取碼表信息和非首行編碼碼流;
(t2)對非首行編碼碼流,利用上一行解碼碼表進(jìn)行解碼,得到當(dāng)前行像素點差分值,并基于可逆變長碼,利用當(dāng)前行像素點差分值設(shè)計當(dāng)前行的解碼碼表,直至得到所有非首行像素點差分值;
(t3)根據(jù)像素點差分值,得到圖像像素點灰度值信息,進(jìn)而得到解壓縮后的圖像。
進(jìn)一步的,步驟(s1)還包括設(shè)置碼字之間的最小距離,進(jìn)而限制編碼碼表中碼字之間的相似度。
優(yōu)選的,設(shè)置碼字之間的最小距離是設(shè)置碼字間的最小漢明距離d,構(gòu)造碼字過程中保證所選碼字之間的漢明距離不小于d,通常d≥3。
由于在圖像無損壓縮過程中利用漢明距離限制了碼字之間的相似度,有效地降低了試錯法糾正誤碼過程中碼字混淆的可能性,進(jìn)一步提高了試錯法糾正誤碼的可靠性。
進(jìn)一步的,碼表信息包括碼表參數(shù)和像素點差分值,碼表參數(shù)包括碼字構(gòu)造初始值、像素點差分值個數(shù)、像素點差分值的表示位數(shù),像素點差分值包括符號位和像素點差分值的絕對值。
進(jìn)一步的,步驟(t2)包括:
(t21)對非首行編碼碼流,利用上一行解碼碼表進(jìn)行雙向解碼,得到解碼結(jié)果,若解碼結(jié)果無誤則進(jìn)入步驟(t23),若解碼結(jié)果有誤,則非首行編碼碼流存在誤碼,進(jìn)入步驟(t22);
(t22)對存在誤碼的非首行編碼碼流,利用碼表信息和雙向解碼結(jié)果進(jìn)行防誤碼擴散和誤碼糾正處理,得到誤碼糾正后的解碼結(jié)果;
(t23)解碼結(jié)果為當(dāng)前行像素點差分值,并基于可逆變長碼,利用當(dāng)前行像素點差分值設(shè)計當(dāng)前行的解碼碼表,直至得到所有非首行像素點差分值。
進(jìn)一步的,步驟(t21)還包括根據(jù)解碼正確的判定標(biāo)準(zhǔn)判斷解碼結(jié)果是否有誤,所述解碼正確的判定標(biāo)準(zhǔn)為:雙向解碼后得到的像素點差分值相同,像素點個數(shù)等于圖像列數(shù),且雙向解碼過程中不存在碼字無對應(yīng)像素點差分值的情況。
進(jìn)一步的,步驟(t22)中防誤碼擴散的具體實現(xiàn)方式為:對存在誤碼的非首行編碼碼流,根據(jù)上一行碼表信息,進(jìn)行第二次雙向解碼,得到第二次解碼結(jié)果,當(dāng)?shù)诙坞p向解碼結(jié)果無誤,直接將第二次雙向解碼結(jié)果作為解碼結(jié)果;當(dāng)?shù)诙坞p向解碼結(jié)果有誤,利用利用步驟(t21)所得雙向解碼結(jié)果對圖像行數(shù)據(jù)進(jìn)行部分恢復(fù)。
進(jìn)一步的,對圖像行數(shù)據(jù)進(jìn)行部分恢復(fù)的具體實現(xiàn)方式為:在雙向解碼過程中,通過正序解碼中間結(jié)果確定第一個誤碼區(qū)域[0,ef],通過逆序解碼中間結(jié)果確定最后一個誤碼區(qū)域[eb,l-1],其中,l是該行編碼碼流的總比特數(shù),ef為第一個誤碼區(qū)域的右邊界,eb為最后一個誤碼區(qū)域的左邊界;按照第一個誤碼區(qū)域和最后一個誤碼區(qū)域?qū)D像行數(shù)據(jù)進(jìn)行部分恢復(fù)。
進(jìn)一步的,解碼中間結(jié)果包括:解碼過程中第一次出現(xiàn)碼字無對應(yīng)像素點差分值情況時,碼字末尾對應(yīng)在該行編碼碼流中的位置p;解碼過程中,當(dāng)?shù)玫降南袼攸c個數(shù)大于圖像列數(shù)n時,第n個像素點對應(yīng)碼字末尾在該行編碼碼流中的位置q。
進(jìn)一步的,誤碼糾正包括:當(dāng)圖像編碼碼流中誤碼只出現(xiàn)在一個像素點差分值對應(yīng)的碼字內(nèi)時,誤碼區(qū)域為[eb,ef];在誤碼區(qū)域利用試錯法進(jìn)行雙向解碼,得到k組疑似像素點差分值,利用疑似像素點差分值得到疑似像素點灰度值;第m行疑似像素點灰度值與第m-1行像素點灰度值之間線性相關(guān)系數(shù)ρm,m-1為:
其中1≤m<m,0≤i≤n-1,m為圖像行數(shù),
選取線性相關(guān)系數(shù)最大的一組疑似像素點差分值作為當(dāng)前行解碼結(jié)果。
按照本發(fā)明的另一方面,提供了一種基于可逆變長碼的圖像無損壓縮系統(tǒng),包括圖像無損壓縮模塊和圖像解壓縮模塊:
圖像無損壓縮模塊包括:
編碼碼表子模塊,用于對待壓縮圖像的每一行像素點進(jìn)行差分處理得到像素點差分值,基于可逆變長碼,利用像素點差分值構(gòu)造待壓縮圖像每一行的編碼碼表,并得到碼表信息;
編碼碼流子模塊,用于對待壓縮圖像的首行像素點,保留所有像素點灰度值并進(jìn)行編碼,得到首行編碼碼流,對待壓縮圖像的非首行像素點,利用待壓縮圖像的上一行的編碼碼表進(jìn)行編碼,得到非首行編碼碼流;
壓縮碼流子模塊,用于在每一行編碼碼流后加上行尾標(biāo)志信息和該行的碼表信息,得到圖像壓縮碼流,傳輸至圖像解壓縮部分;
圖像解壓縮模塊包括:
解碼碼表子模塊,用于接收圖像壓縮碼流,對首行圖像壓縮碼流直接獲取首行像素點灰度值并計算差分值,再基于可逆變長碼,利用首行像素點差分值設(shè)計解碼碼表,對非首行圖像壓縮碼流,根據(jù)行尾標(biāo)志信息依次獲取碼表信息和非首行編碼碼流;
解碼子模塊,用于對非首行編碼碼流,利用上一行解碼碼表進(jìn)行解碼,得到當(dāng)前行像素點差分值,并基于可逆變長碼,利用當(dāng)前行像素點差分值設(shè)計當(dāng)前行的解碼碼表,直至得到所有非首行像素點差分值;
解壓縮子模塊,用于根據(jù)像素點差分值,得到圖像像素點灰度值信息,進(jìn)而得到解壓縮后的圖像。
總體而言,通過本發(fā)明所構(gòu)思的以上技術(shù)方案與現(xiàn)有技術(shù)相比,能夠取得下列有益效果:
(1)由于采用了圖像行內(nèi)差分處理,有效減少了圖像行內(nèi)像素間的信息冗余,并將預(yù)測信息相關(guān)性控制在圖像行內(nèi)以防止誤碼擴散;同時由于利用圖像上一行像素點的編碼碼表對當(dāng)前行進(jìn)行編碼,充分利用了可逆變長碼的雙向譯碼特性,結(jié)合弱噪聲圖像行間像素點灰度值高度正相關(guān)的特性,減少了圖像壓縮碼流的冗余,本發(fā)明得到的壓縮圖像的壓縮比高、誤像素率低、解壓縮圖像數(shù)據(jù)的質(zhì)量高,利用圖像壓縮碼流,基于可逆變長碼,設(shè)計解碼碼表進(jìn)而得到解壓縮后的圖像,可用于遠(yuǎn)距離大數(shù)據(jù)量圖像的無損壓縮和傳輸。
(2)優(yōu)選的,由于在圖像無損壓縮過程中設(shè)置碼字之間的最小距離,進(jìn)而限制編碼碼表中碼字之間的相似度,有效地降低了試錯法糾正誤碼過程中碼字混淆的可能性,進(jìn)一步提高了試錯法糾正誤碼的可靠性。
(3)優(yōu)選的,由于采用了兩次雙向解碼以及部分恢復(fù)圖像行數(shù)據(jù)的方法,有效地抑制了誤碼的擴散,減少了圖像像素的損失;同時,采用試錯法對誤碼區(qū)域進(jìn)行假設(shè)性恢復(fù),對于圖像行編碼碼流中僅出現(xiàn)一個誤碼的情形,能有效實現(xiàn)圖像的復(fù)原,解決了由于信道誤碼造成信宿端圖像解壓縮后錯誤擴散的問題。
附圖說明
圖1是本發(fā)明實施例提供的一種基于可逆變長碼的圖像無損壓縮方法的流程圖;
圖2是本發(fā)明實施例1的圖像無損壓縮處理流程圖
圖3是本發(fā)明實施例1中的待壓縮圖像;
圖4為本發(fā)明實施例1中圖像首行壓縮碼流格式示意圖;
圖5為本發(fā)明實施例1中圖像行碼表信息格式示意圖;
圖6為本發(fā)明實施例1的防誤碼擴散的處理流程圖;
圖7為本發(fā)明實施例1的誤碼糾正的處理流程圖;
圖8為本發(fā)明實施例1中受誤碼擴散影響的解壓縮圖像;
圖9為本發(fā)明實施例1中防誤碼擴散后的解壓縮圖像;
圖10為本發(fā)明實施例1中誤碼糾正后的解壓縮圖像。
具體實施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。此外,下面所描述的本發(fā)明各個實施方式中所涉及到的技術(shù)特征只要彼此之間未構(gòu)成沖突就可以相互組合。
如圖1所示,一種基于可逆變長碼的圖像無損壓縮方法,包括圖像無損壓縮和圖像解壓縮部分:
圖像無損壓縮部分包括:
(s1)對待壓縮圖像的每一行像素點進(jìn)行差分處理得到像素點差分值,基于可逆變長碼,利用像素點差分值構(gòu)造待壓縮圖像每一行的編碼碼表,并得到碼表信息;
(s2)對待壓縮圖像的首行像素點,保留所有像素點灰度值并進(jìn)行編碼,得到首行編碼碼流,對待壓縮圖像的非首行像素點,利用待壓縮圖像的上一行的編碼碼表進(jìn)行編碼,得到非首行編碼碼流;
(s3)在每一行編碼碼流后加上行尾標(biāo)志信息和該行的碼表信息,得到圖像壓縮碼流,傳輸至圖像解壓縮部分;
圖像解壓縮部分包括:
(t1)接收圖像壓縮碼流,對首行圖像壓縮碼流直接獲取首行像素點灰度值并計算差分值,再基于可逆變長碼,利用首行像素點差分值設(shè)計解碼碼表,對非首行圖像壓縮碼流,根據(jù)行尾標(biāo)志信息依次獲取碼表信息和非首行編碼碼流;
(t2)對非首行編碼碼流,利用上一行解碼碼表進(jìn)行解碼,得到當(dāng)前行像素點差分值,并基于可逆變長碼,利用當(dāng)前行像素點差分值設(shè)計當(dāng)前行的解碼碼表,直至得到所有非首行像素點差分值;
(t3)根據(jù)像素點差分值,得到圖像像素點灰度值信息,進(jìn)而得到解壓縮后的圖像。
進(jìn)一步的,步驟(s1)還包括設(shè)置碼字之間的最小距離,進(jìn)而限制編碼碼表中碼字之間的相似度。
優(yōu)選的,設(shè)置碼字之間的最小距離是設(shè)置碼字間的最小漢明距離d,構(gòu)造碼字過程中保證所選碼字之間的漢明距離不小于d,通常d≥3。
由于在圖像無損壓縮過程中利用漢明距離限制了碼字之間的相似度,有效地降低了試錯法糾正誤碼過程中碼字混淆的可能性,進(jìn)一步提高了試錯法糾正誤碼的可靠性。
進(jìn)一步的,碼表信息包括碼表參數(shù)和像素點差分值,碼表參數(shù)包括碼字構(gòu)造初始值、像素點差分值個數(shù)、像素點差分值的表示位數(shù),像素點差分值包括符號位和像素點差分值的絕對值。
進(jìn)一步的,步驟(t2)包括:
(t21)對非首行編碼碼流,利用上一行解碼碼表進(jìn)行雙向解碼,得到解碼結(jié)果,若解碼結(jié)果無誤則進(jìn)入步驟(t23),若解碼結(jié)果有誤,則非首行編碼碼流存在誤碼,進(jìn)入步驟(t22);
(t22)對存在誤碼的非首行編碼碼流,利用碼表信息和雙向解碼結(jié)果進(jìn)行防誤碼擴散和誤碼糾正處理,得到誤碼糾正后的解碼結(jié)果;
(t23)解碼結(jié)果為當(dāng)前行像素點差分值,并基于可逆變長碼,利用當(dāng)前行像素點差分值設(shè)計當(dāng)前行的解碼碼表,直至得到所有非首行像素點差分值。
進(jìn)一步的,步驟(t21)還包括根據(jù)解碼正確的判定標(biāo)準(zhǔn)判斷解碼結(jié)果是否有誤,所述解碼正確的判定標(biāo)準(zhǔn)為:雙向解碼后得到的像素點差分值相同,像素點個數(shù)等于圖像列數(shù),且雙向解碼過程中不存在碼字無對應(yīng)像素點差分值的情況。
進(jìn)一步的,步驟(t22)中防誤碼擴散的具體實現(xiàn)方式為:對存在誤碼的非首行編碼碼流,根據(jù)上一行碼表信息,進(jìn)行第二次雙向解碼,得到第二次解碼結(jié)果,當(dāng)?shù)诙坞p向解碼結(jié)果無誤,直接將第二次雙向解碼結(jié)果作為解碼結(jié)果;當(dāng)?shù)诙坞p向解碼結(jié)果有誤,利用利用步驟(t21)所得雙向解碼結(jié)果對圖像行數(shù)據(jù)進(jìn)行部分恢復(fù)。
進(jìn)一步的,對圖像行數(shù)據(jù)進(jìn)行部分恢復(fù)的具體實現(xiàn)方式為:在雙向解碼過程中,通過正序解碼中間結(jié)果確定第一個誤碼區(qū)域[0,ef],通過逆序解碼中間結(jié)果確定最后一個誤碼區(qū)域[eb,l-1],其中,l是該行編碼碼流的總比特數(shù),ef為第一個誤碼區(qū)域的右邊界,eb為最后一個誤碼區(qū)域的左邊界;按照第一個誤碼區(qū)域和最后一個誤碼區(qū)域?qū)D像行數(shù)據(jù)進(jìn)行部分恢復(fù)。
進(jìn)一步的,假設(shè)第一個誤碼區(qū)域正序解碼得到第1~n1個像素點的差分值,根據(jù)行首像素點灰度值和第1~n1-1個像素點的差分值,獲得圖像該行第0~n1-1個像素點的灰度值;假設(shè)最后一個誤碼區(qū)域逆序解碼得到第n2~n-1個像素點的差分值,根據(jù)圖像行末尾像素點的灰度值和第n2+1~n-1個像素點的差分值,獲得圖像該行第n2+1~n-1個像素點的灰度值,其中,n表示圖像列數(shù),n1表示第一個誤碼區(qū)域正序解碼得到的最后一個像素點,n2表示最后一個誤碼區(qū)域逆序解碼得到的第1個像素點。
進(jìn)一步的,解碼中間結(jié)果包括:解碼過程中第一次出現(xiàn)碼字無對應(yīng)像素點差分值情況時,碼字末尾對應(yīng)在該行編碼碼流中的位置p;解碼過程中,當(dāng)?shù)玫降南袼攸c個數(shù)大于圖像列數(shù)n時,第n個像素點對應(yīng)碼字末尾在該行編碼碼流中的位置q。
進(jìn)一步的,正序解碼中間結(jié)果為pf、qf,逆序解碼中間結(jié)果為pb、qb,對于碼流中存在多個誤碼的情況,通常有ef<eb,則第一個誤碼區(qū)域的右邊界為:
ef=min{pf,qf}
最后一個誤碼區(qū)域的左邊界為:
eb=l-1-min{pb,qb}
而當(dāng)ef≥eb時,表明誤碼只存在于一個像素對應(yīng)的碼字內(nèi),則按ef=l-1-min{pb,qb}和eb=min{pf,qf}部分恢復(fù)圖像行數(shù)據(jù)。
進(jìn)一步的,誤碼糾正包括:當(dāng)圖像編碼碼流中誤碼只出現(xiàn)在一個像素點差分值對應(yīng)的碼字內(nèi)時,誤碼區(qū)域為[eb,ef];在誤碼區(qū)域利用試錯法進(jìn)行雙向解碼,得到k組疑似像素點差分值,利用疑似像素點差分值得到疑似像素點灰度值;第m行疑似像素點灰度值與第m-1行像素點灰度值之間線性相關(guān)系數(shù)ρm,m-1為:
其中1≤m<m,0≤i≤n-1,m為圖像行數(shù),
選取線性相關(guān)系數(shù)最大的一組疑似像素點差分值作為當(dāng)前行解碼結(jié)果。
實施例1
如圖2所示,本發(fā)明提供了一種基于對稱可逆變長碼的圖像無損壓縮方法,包括以下步驟:
(1)圖像行內(nèi)差分處理步驟:
在信源端對如圖3所示512×512大小的待壓縮圖像的每一行作如下處理:首像素點保持原始灰度值,其他像素點灰度值依次前向差分。設(shè)某圖像行原始像素集為u={u0,u1,u2,u3,…,ucol-1},其中,uk表示第k個像素點灰度值,col為圖像列數(shù),k=0,1,2,…,col-1,則差分后該行像素集為u′={u0,u1-u0,u2-u1,u3-u2,…,ucol-1-ucol-2}。且對于圖像首行而言,需保留原始像素點灰度值,用于圖像首行數(shù)據(jù)的直傳編碼;而圖像首行的像素點差分值則用于編碼碼表設(shè)計。進(jìn)行步驟(2);
(2)編碼碼表逐行設(shè)計步驟:
在信源端,對圖像每一行除首像素外的所有像素差分值進(jìn)行統(tǒng)計,基于對稱可逆變長碼構(gòu)造圖像每一行的編碼碼表,設(shè)置最小漢明距離d=3,并設(shè)計一個備用碼字,進(jìn)行步驟(3);
(3)圖像首行直傳編碼步驟:
在信源端先判斷是否為圖像首行數(shù)據(jù),如果是則對圖像首行所有像素的灰度值按照圖像原始量化位數(shù)(b0=12)生成編碼碼流,并連續(xù)保存3份后得到如圖4所示的圖像首行壓縮碼流,再進(jìn)行傳輸,轉(zhuǎn)步驟(6);否則進(jìn)行步驟(4);
(4)圖像逐行編碼步驟:
在信源端從圖像第二行開始,利用步驟(2)所得圖像上一行的編碼碼表,對當(dāng)前行像素數(shù)值(包括首像素點灰度值和其他像素差分值)進(jìn)行編碼,進(jìn)行步驟(5)。其中編碼操作包括以下步驟:
(4.1)圖像行首像素點灰度值按照圖像原始量化位數(shù)(b0=12)生成碼流,并連續(xù)傳輸3份;
(4.2)圖像行其他像素點差分值的編碼,都依賴于圖像上一行的編碼碼表,對于碼表中存在的像素點差分值,直接將像素點差分值對應(yīng)的碼字作為其編碼結(jié)果;對于碼表中不存在的像素點差分值,將其碼字定義為“備用碼字+3份像素點差分值按照數(shù)據(jù)類型長度(b1=16)生成的碼流+備用碼字”格式;
(4.3)圖像行尾像素的灰度值按照圖像原始量化位數(shù)(b0=12)生成碼流,并連續(xù)傳輸3份。
(5)圖像行尾標(biāo)志信息編碼步驟:
在信源端從圖像第二行開始,在每一行編碼碼流的末尾加上行尾標(biāo)志信息。其中,行尾標(biāo)志信息由2個行尾定位單元組成,每個行尾定位單元由16比特的行尾搜索字段和16比特的行尾循環(huán)定位字段組成,且2份行尾定位單元的行尾搜索字段完全相同,均為0x96、0x1a;行尾循環(huán)定位字段不同,分別為0x82、0x5d,0xc1、0x2e。進(jìn)行步驟(6);
(6)圖像行碼表信息編碼步驟:
在信源端,在圖像每一行的碼流后加上該行的碼表信息再傳輸進(jìn)行步驟(7)。如圖5所示,碼表信息由碼表構(gòu)造所需關(guān)鍵參數(shù)和圖像行像素點差分值構(gòu)成,且碼表構(gòu)造所需關(guān)鍵參數(shù)需連續(xù)保存3份。其中,圖像行像素點差分值包括符號位和圖像行像素點差分值的絕對值;碼表構(gòu)造所需關(guān)鍵參數(shù)包括碼字構(gòu)造初始值、圖像行像素點差分值個數(shù)、圖像行像素點差分值的表示位數(shù),這三個參數(shù)的長度的具體計算方法如下:
假設(shè)碼表構(gòu)造初始值的表示位數(shù)為x比特,圖像行像素點差分值個數(shù)n的表示位數(shù)為y比特,圖像行像素點差分值的表示位數(shù)為m,值m的表示位數(shù)為z比特,圖像原始量化位數(shù)為q,圖像列數(shù)為c,圖像行像素差分值的正數(shù)最大值為max,負(fù)數(shù)最小值為min,則有
本實施例中,以圖像首行為例,q=12,c=512,max=1020,min=-1016,則有x=4,y=9,z=4,m=11。
(7)圖像首行數(shù)據(jù)提取步驟:
在信宿端,先判斷是否為圖像首行碼流,如果是則首先按照比特長度3×col×b0=3×512×12=18432從編碼碼流中提取3份圖像首行編碼碼流,然后按照比特位根據(jù)3選2的原則選出圖像首行數(shù)據(jù),然后轉(zhuǎn)步驟(9);否則進(jìn)行步驟(8);
(8)圖像行編碼碼流提取步驟:
在信宿端,首先根據(jù)圖像行尾標(biāo)志信息逐行提取圖像行壓縮碼流,然后按3(x+y+z)+mn比特長度提取圖像行碼表信息,再以固定比特長度3b0=3×12=36從后繼壓縮碼流中提取3份圖像行尾像素點灰度值的碼字,按照比特位根據(jù)3選2的原則確定圖像行尾像素點灰度值;此后剩余的壓縮碼流即為待解碼的圖像行編碼碼流,進(jìn)行步驟(10);
本實施例得到圖像壓縮比為2.0672621,壓縮碼流大小為190211字節(jié)=1521688比特。本實施例選取壓縮碼流第656001比特位進(jìn)行翻轉(zhuǎn),模擬誤碼情形進(jìn)行抗誤碼解壓縮方法說明。
(9)圖像行解碼碼表設(shè)計步驟:
在信宿端先判斷是否為圖像尾行,如果是則轉(zhuǎn)步驟(14);否則對該圖像行按照信源端編碼碼表設(shè)計的方法進(jìn)行解碼碼表設(shè)計,進(jìn)行步驟(10);
(10)圖像行雙向解碼步驟:
在信宿端從圖像第二行開始,利用步驟(9)所得圖像上一行的解碼碼表,對當(dāng)前行編碼碼流進(jìn)行雙向解碼,進(jìn)行步驟(11)。具體包括以下步驟:
(10.1)從圖像行編碼碼流中按照3b0=3×12=36比特長度提取3份圖像當(dāng)前行首像素點碼字,并按照比特位根據(jù)3選2的原則選出圖像當(dāng)前行首像素點灰度值;
(10.2)利用步驟(9)所得圖像上一行的解碼碼表,對圖像當(dāng)前行編碼碼流的后繼碼流分別進(jìn)行正序解碼和逆序解碼,得到對應(yīng)的解碼結(jié)果。解碼的具體方法如下:若提取得的碼字存在于解碼碼表中,則碼字對應(yīng)的圖像像素點差分值即為該像素的解碼結(jié)果;若提取到的碼字為備用碼字,則直接從后繼編碼碼流中提取3b1=3×16=48比特長度的3份該像素數(shù)值的碼流信息,然后對這3份碼流信息按照對應(yīng)比特位3選2的原則選出該像素點差分值。
(11)誤碼判斷步驟:
在信宿端,根據(jù)解碼正確的判定標(biāo)準(zhǔn),比較步驟(10)所得雙向解碼結(jié)果,判斷該編碼碼流是否解碼無誤,碼流內(nèi)是否存在誤碼,若存在誤碼則進(jìn)行步驟(12),否則轉(zhuǎn)步驟(9);
本實施例中,對圖像第201行的編碼碼流進(jìn)行解碼時,正序解碼得到的像元個數(shù)為508,逆序解碼得到的像元個數(shù)為513,二者均不等于圖像列數(shù)512,表示該行圖像編碼碼流中存在誤碼。
(12)防誤碼擴散步驟:
在信宿端對步驟(11)確定存在誤碼的編碼碼流,利用步驟(8)所得圖像上一行的碼表信息以及步驟(10)所得雙向解碼結(jié)果進(jìn)行防誤碼擴散處理,再進(jìn)行步驟(13)。如圖6所示,防誤碼擴散包括以下子步驟:
(12.1)圖像行編碼碼流第二次解碼:首先根據(jù)步驟(8)所得圖像上一行的碼表信息,按照信源端編碼碼表設(shè)計的方法構(gòu)造解碼碼表;然后按照步驟(10.2)所述解碼的具體方法,對存在誤碼的圖像當(dāng)前行編碼碼流進(jìn)行第二次雙向解碼,得到對應(yīng)的解碼結(jié)果;
(12.2)誤碼檢測:根據(jù)解碼正確的判定標(biāo)準(zhǔn),對步驟(12.1)所得雙向解碼結(jié)果進(jìn)行檢測,判斷解碼是否正確。
(12.3)部分恢復(fù)圖像行數(shù)據(jù):當(dāng)?shù)诙坞p向解碼過程正確時,直接將第二次雙向解碼結(jié)果作為圖像行解碼結(jié)果;當(dāng)兩次雙向解碼結(jié)果均存在錯誤時,利用步驟(10.2)所得雙向解碼結(jié)果對圖像行數(shù)據(jù)進(jìn)行部分恢復(fù),具體步驟包括:
(12.3.1)在每一行圖像編碼碼流雙向解碼過程中,通過正序解碼中間結(jié)果確定第一個誤碼在該行圖像編碼碼流中所在區(qū)域[0,ef],通過逆序解碼中間結(jié)果確定最后一個誤碼在該行圖像編碼碼流中所在區(qū)域[eb,l-1],l是該行編碼碼流的總比特數(shù)。
本實施例中,圖像行編碼碼流中僅存在一個誤碼且l=2704,則按ef=2332和eb=2392部分恢復(fù)圖像行數(shù)據(jù)。其中圖像行編碼碼流中[0,ef]正序解碼出的像素數(shù)值為第1~423個像素點差分值,[eb,2703]逆序解碼出的像素數(shù)值為第438~511像素點差分值;
(12.3.2)根據(jù)圖像行首灰度值和第1~422個像素解碼的差分值,獲得圖像該行第0~422個像素點灰度值;
(12.3.3)根據(jù)圖像行末尾像素(即第511個像素)的灰度值和第439~511像素的差分值,反向差分獲得圖像該行第439~511像素點灰度值。
(13)誤碼糾正步驟:
在信宿端利用對稱可逆變長碼解碼的特點及圖像特征,對存在誤碼的碼流進(jìn)行誤碼糾正處理,然后進(jìn)行步驟(9)。如圖7所示,誤碼糾正包括以下子步驟:
(13.1)誤碼區(qū)域確定:當(dāng)圖像該行編碼碼流中誤碼只出現(xiàn)在一個像素對應(yīng)的碼字內(nèi)時,利用解碼中間結(jié)果確定在該行編碼碼流中的誤碼區(qū)域為[le,re]。其中,誤碼區(qū)域的左邊界為le=l-1-min{pb,qb},右邊界為re=min{pf,qf};
本實施例中,le=2332,re=2392,l=2704。
(13.2)試錯法雙向解碼:當(dāng)圖像該行編碼碼流中僅存在一個誤碼時,根據(jù)步驟(13.1)所述誤碼區(qū)域[2332,2392],逐比特翻轉(zhuǎn)該行圖像編碼碼流中的對應(yīng)位,得到對應(yīng)61組新的編碼碼流,然后按照步驟(10.2)所述解碼的具體方法分別對這61組編碼碼流進(jìn)行雙向解碼,得到61組解碼結(jié)果,根據(jù)解碼正確的判定標(biāo)準(zhǔn),選出了7組疑似當(dāng)前行圖像數(shù)據(jù),分別對應(yīng)的比特位是第2350、2356、2363、2365、2376、2379、2381比特位;
(13.3)圖像行間相關(guān)性分析:首先將步驟(13.2)所述7組疑似當(dāng)前行圖像數(shù)據(jù)轉(zhuǎn)換成對應(yīng)疑似當(dāng)前行圖像灰度值,然后分別計算其與上一行圖像灰度值之間的線性相關(guān)系數(shù),得到的結(jié)果分別為-0.29557、0.98013、-0.29439、0.97943、0.97453、0.98055、-0.29886。
(13.4)誤碼定位及圖像行數(shù)據(jù)恢復(fù):選取線性相關(guān)系數(shù)最大的一組疑似圖像當(dāng)前行數(shù)據(jù)作為圖像當(dāng)前行解碼結(jié)果,其對應(yīng)的所翻轉(zhuǎn)的比特位即為誤碼位置。在本實施例中,最大線性相關(guān)系數(shù)為0.98055,對應(yīng)的比特位為第2379位。
(14)全圖恢復(fù)步驟:
在信宿端對圖像除首行外的其他行,根據(jù)圖像行首像素點灰度值以及圖像行解碼結(jié)果,正序恢復(fù)當(dāng)前行圖像灰度值信息,然后按照圖像行號,從上至下拼接還原成完整圖像。
本實施例中,在不進(jìn)行防誤碼擴散和誤碼糾正處理時,得到受誤碼擴散影響的解壓縮圖像如圖8所示,誤像素率為32.85599%。防誤碼擴散后的解壓縮圖像如圖9所示,誤像素率為0.00648%;誤碼糾正后的解壓縮圖像如圖10所示,誤像素率為0%。
圖像無損壓縮系統(tǒng)中兩個重要的指標(biāo)是:壓縮比和誤像素率。壓縮比越大,代表壓縮后的數(shù)據(jù)量越小,壓縮效率越好;誤像素率越低,表示圖像解壓縮后和原始圖像越接近,圖像信息恢復(fù)得越好,信息保持率越高。因此,本發(fā)明利用圖像信息實現(xiàn)了誤碼檢糾錯機制,有效地解決了由于信道誤碼造成信宿端圖像解壓縮后錯誤擴散的問題,圖像無損壓縮及解壓縮算法應(yīng)在提高圖像壓縮比的同時,增加防誤碼擴散和誤碼糾正機制,降低誤像素率,保證地面接收圖像的質(zhì)量,以適應(yīng)遠(yuǎn)距離大數(shù)據(jù)量圖像的無損壓縮和傳輸。
本領(lǐng)域的技術(shù)人員容易理解,以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。