李添正,王春桃
(華南農(nóng)業(yè)大學(xué)數(shù)學(xué)與信息學(xué)院,廣州510642)
(?通信作者電子郵箱wangct@scau.edu.cn)
實(shí)際應(yīng)用中,為了節(jié)省帶寬并保證圖像在傳輸過程的安全,發(fā)送方在傳輸圖像至公共信道前通常會(huì)先對(duì)圖像進(jìn)行壓縮,然后再進(jìn)行加密,但在云計(jì)算、分布式計(jì)算等環(huán)境中,由于計(jì)算資源有限(如傳感器)或無利益驅(qū)動(dòng)進(jìn)行壓縮,發(fā)送方通常不會(huì)在加密前先進(jìn)行壓縮,僅將圖像進(jìn)行加密后發(fā)送至云端。而云端為了節(jié)省存儲(chǔ)空間或傳輸帶寬,往往需要在無法獲取加密密鑰的情況下對(duì)加密圖像進(jìn)行壓縮。接收方則在獲得加密密鑰及加密壓縮圖像的情況下,通過聯(lián)合解壓縮解密來重構(gòu)原始圖像。這種應(yīng)用場(chǎng)景發(fā)展的系統(tǒng)通常稱為先加密后壓縮(Encryption-Then-Compression,ETC)系統(tǒng)。
盡管直覺上加密信號(hào)是無法壓縮的,但Johnson等[1]通過把加密信號(hào)的壓縮問題表征為帶邊信息的分布式信源編碼問題,用信息論證明了加密圖像壓縮的可行性,且其理論壓縮效率及安全性與先壓縮后加密的系統(tǒng)性能一致;Schonberg等[2]通過引入馬爾可夫信源模型,進(jìn)一步提高了加密圖像的壓縮性能;Lazzeretti等[3]通過在加密前利用灰度或彩色圖像空域、位平面間及不同色彩通道間的相關(guān)性,進(jìn)一步提高了加密圖像的壓縮效率。通過先產(chǎn)生預(yù)測(cè)誤差然后再進(jìn)行加密及壓縮的方式,Kumar等[4]較為顯著地提升了無損壓縮的性能;Liu等[5]借助截?cái)郥urbo碼以及在接收方以分辨率演進(jìn)的方式來提升加密圖像壓縮的性能;Zhou等[6]對(duì)預(yù)測(cè)誤差進(jìn)行聚類及隨機(jī)置亂加密,獲得接近以原始未加密圖像作為輸入的最優(yōu)壓縮算法的性能;Wang等[7]利用二維馬爾可夫隨機(jī)場(chǎng)(Markov Random Field,MRF)表征二值圖像空域特征,并構(gòu)建重構(gòu)因子圖來進(jìn)行聯(lián)合解壓縮和解密,較大幅度地提高了二值圖像的壓縮效率。隨后,他們將此思想推廣到加密灰度圖像的壓縮[8]。
為了在一定質(zhì)量損失的情況下獲得更大的壓縮率,研究人員也開展了加密圖像的有損壓縮算法研究。根據(jù)所采用的壓縮技術(shù),這些算法大致可以分為三類:第一類采用壓縮傳感技術(shù)[9-11],即利用傳統(tǒng)的壓縮傳感測(cè)量矩陣[9]、梯度投影矩陣[10]或者學(xué)習(xí)得到的詞典[11]作為測(cè)量矩陣?yán)脡嚎s傳感技術(shù)來實(shí)施壓縮,并用改進(jìn)的基追蹤(Basis Pursuit,BP)算法進(jìn)行重構(gòu);第二類采用量化技術(shù)[12-18]進(jìn)行壓縮,即利用標(biāo)量量化器對(duì)加密信號(hào)進(jìn)行量化來進(jìn)行壓縮,其中量化步長(zhǎng)通過多種策略進(jìn)行優(yōu)化,接收方通過解密和反量化方式來重構(gòu)原圖像;第三類利用均勻下抽樣技術(shù)[5,19-21]來進(jìn)行壓縮,并在接收方利用內(nèi)容自適應(yīng)插值算法重構(gòu)圖像。
當(dāng)前加密圖像壓縮算法可分有損壓縮及無損壓縮兩類。由上述的文獻(xiàn)分析可知,當(dāng)前已有針對(duì)加密二值[1-2,7]、灰圖[2-6,8]及彩色像[4]的無損壓縮與重構(gòu)算法,但所有相關(guān)的加密圖像有損壓縮算法都是針對(duì)灰度或彩色圖像的,并沒有針對(duì)加密二值圖像的壓縮與重構(gòu)算法。而諸如簽名、合同、指紋圖像、黑白圖像等二值圖像在日常生活中仍舊有大量的應(yīng)用,盡管當(dāng)前有眾多二值圖像的壓縮算法,但這些算法并不能直接用于加密二值圖像的壓縮。因此,開展針對(duì)加密二值圖像的壓縮與重構(gòu)仍然具有重要的理論和實(shí)踐意義,當(dāng)前仍鮮有這方面的研究。針對(duì)此情況,并考慮MRF在表征二值圖像空域統(tǒng)計(jì)特性方面的優(yōu)勢(shì)[7],本文提出針一種基于MRF的加密二值圖像的有損壓縮算法。具體而言,發(fā)送端利用流密碼對(duì)二值圖像進(jìn)行加密;云端對(duì)加密圖像分塊后用隨機(jī)抽樣方式進(jìn)行下抽樣,對(duì)下抽樣后留下的像素進(jìn)一步用低密度奇偶校驗(yàn)(Low-Density Parity-Check,LDPC)碼進(jìn)行壓縮;最后在接收端聯(lián)合MRF因子圖、加解密復(fù)用因子圖和LDPC解碼因子圖形成聯(lián)合的重構(gòu)因子圖,以有損重構(gòu)二值圖像。實(shí)驗(yàn)仿真時(shí),本文算法與針對(duì)原始未加密二值圖像的、具有優(yōu)秀壓縮性能的國(guó)際通用標(biāo)準(zhǔn)JBIG2方法進(jìn)行性能比較。這是因?yàn)楦鶕?jù)對(duì)文獻(xiàn)盡可能的掌握,當(dāng)前并未發(fā)現(xiàn)針對(duì)加密二值圖像的有損壓縮算法;且根據(jù)Johnson等[1]的研究,先加密后壓縮系統(tǒng)的壓縮及安全性能與先壓縮后加密系統(tǒng)的一致,因此可以通過與傳統(tǒng)壓縮方法性能的比較來等價(jià)地評(píng)估加密圖像壓縮算法的性能。實(shí)驗(yàn)結(jié)果表明,本文算法獲得了較高的加密二值圖像壓縮效率,并與JBIG2算法壓縮性能相當(dāng)??紤]到JBIG2是針對(duì)原始未加密二值圖像進(jìn)行壓縮的,而本算法則是針對(duì)加密二值圖像的壓縮算法,上述實(shí)驗(yàn)結(jié)果印證了Johnson等[1]的理論證明,與JBIG2壓縮性能相當(dāng)也充分表明了本文算法的可行性和有效性。
本文主要貢獻(xiàn):1)針對(duì)基于MRF的重構(gòu)方法特點(diǎn),提出了一種基于分塊隨機(jī)抽樣的下抽樣方法,既能使下抽樣后的序列盡可能均勻分布,又能方便實(shí)現(xiàn)任意的下抽樣率;2)構(gòu)造了包含LDPC解碼、解密及MRF重構(gòu)因子圖的聯(lián)合重構(gòu)因子圖及相應(yīng)的和-積算法,以實(shí)現(xiàn)加密壓縮二值圖像的有損重構(gòu);3)提出一種新的加密二值圖像壓縮算法,獲得較高的壓縮效率,且跟以原始未加密二值圖為輸入的JBIG2算法壓縮性能相當(dāng)甚至更好。
因子圖[22]是用來表示全局函數(shù)f(x1,x2,…,xn)和局部函數(shù)fj(X j)的圖模型,其中,X j是集合{x1,x2,…,xn}的真子集,索引j用于區(qū)分不同子集。
設(shè)全局函數(shù)可分解為若干局部函數(shù)的積,即有:
對(duì)于式(1),若用圓圈表示變量節(jié)點(diǎn)xi,用小正方形表示因子節(jié)點(diǎn)fj,且每個(gè)fj都與其對(duì)應(yīng)的自變量集合Xj內(nèi)的變量節(jié)點(diǎn)xi有連接邊,就構(gòu)成了因子圖,如圖1所示。
圖1 消息更新示意圖Fig.1 Schematic diagramof messageupdate
因子圖中,對(duì)于每一個(gè)變量節(jié)點(diǎn)xi,都有與之對(duì)應(yīng)的邊緣函數(shù)f i(xi),定義為:
其中~{xi}表示除變量xi以外的所有變量集合。對(duì)于邊緣函數(shù),可以用和-積算法進(jìn)行高效計(jì)算。該算法可高效同時(shí)地計(jì)算從變量節(jié)點(diǎn)到因子節(jié)點(diǎn)的消息(記作vx→f(x)),并更新從因子節(jié)點(diǎn)到變量節(jié)點(diǎn)的消息(記作μf→x(x))。其中,vx→f(x)用“積”方式計(jì)算,即有:
其中,h∈N(x)f代表x除f外的所有相鄰節(jié)點(diǎn)。μf→x(x)用“和”方式計(jì)算,即有:
然后,將所有傳給變量節(jié)點(diǎn)x的消息進(jìn)行累乘,即可得到該節(jié)點(diǎn)的邊緣函數(shù),即:
馬爾可夫隨機(jī)場(chǎng)(MRF)具有良好的圖像空間統(tǒng)計(jì)特性表征能力,并獲得了廣泛應(yīng)用[23-24]。首先介紹隨機(jī)場(chǎng)的概念。設(shè)I(x,y)是像素深度為Q、大小為W×H的圖像,其每一個(gè)位于s∈L(L={(x,y)|x∈ [1,W],y∈ [1,H]})的像素都對(duì)應(yīng)一個(gè)隨機(jī)變量Fs,取值空間為Φ(Φ={0,1,…,2Q-1}),則這些隨機(jī)變量的集合就是隨機(jī)場(chǎng)?,即有:
設(shè)I(x,y)在坐標(biāo)集合L上的鄰域?yàn)棣?s)={s'|‖ ‖ss'≤d,s≠s',{s,s'}?L},則鄰域系統(tǒng)表示滿足圖像I(x,y)上任一點(diǎn)到坐標(biāo)s的距離小于或等于d的點(diǎn)的集合,但不包括點(diǎn)s。圖2示例了二維空間中到參考點(diǎn)(a,b)距離小于等于5的所有集合,方格數(shù)字代表到參考點(diǎn)的距離。
圖2 鄰域系統(tǒng)Fig.2 Neighborhood system
如果隨機(jī)場(chǎng)?滿足下面兩個(gè)條件:
1)非負(fù)性:
2)馬爾可夫性:
則該隨機(jī)場(chǎng)稱為馬爾可夫隨機(jī)場(chǎng)。文獻(xiàn)[25-27]發(fā)現(xiàn)馬爾可夫隨機(jī)場(chǎng)與吉布斯(Gibbs)隨機(jī)場(chǎng)等價(jià),因此可得到MRF的具體計(jì)算公式,即有:
其中:E(X)為能量函數(shù),U是鄰域內(nèi)所有基團(tuán)的集合,Vu(?)是通過給定基團(tuán)的簇勢(shì)函數(shù),Ω={F=(F1=f1,F(xiàn)2=f2,…,F(xiàn)WH=f WH|fs∈Φ}。勢(shì)函數(shù)的階為n時(shí),則MRF的階為n-1。
根據(jù)式(10)可得出MRF條件轉(zhuǎn)移概率:
因此,勢(shì)函數(shù)對(duì)MRF的構(gòu)建起到了決定性作用。換言之,可以通過對(duì)勢(shì)函數(shù)研究來代替對(duì)MRF的研究。
為在保證一定圖像質(zhì)量的前提下進(jìn)一步提高壓縮率,本文設(shè)計(jì)一種針對(duì)加密二值圖像的有損壓縮算法。鑒于云端實(shí)際上無法獲取加密密鑰,因此本文采用了下抽樣方式來對(duì)加密二值圖像進(jìn)行壓縮。為了充分利用載體信號(hào)間的統(tǒng)計(jì)依賴關(guān)系,抽樣后留下來的像素要盡可能在空間上呈現(xiàn)均勻分布;為了方便實(shí)現(xiàn)任意的下抽樣率,每一塊內(nèi)采用隨機(jī)抽樣。為此,本文設(shè)計(jì)了一種適應(yīng)各種壓縮率的分塊隨機(jī)下抽樣方法。對(duì)于下抽樣后的序列,利用LDPC進(jìn)一步進(jìn)行壓縮。接收方收到加密壓縮序列后,構(gòu)造包含LDPC解碼、解密及MRF重構(gòu)部分的重構(gòu)因子圖,實(shí)現(xiàn)原始圖像的有損重構(gòu),其中,下抽樣后的序列可以無誤地進(jìn)行重構(gòu),但下抽樣過程中被丟棄的像素則需要通過其他輔助手段來進(jìn)行有損重構(gòu)。最直接的方式是利用插值法來重構(gòu)下抽樣過程中被丟棄的像素,但此法重構(gòu)性能較差??紤]到MRF能很好地表征圖像的空域統(tǒng)計(jì)分布,因此若能在無誤重構(gòu)的下抽樣序列基礎(chǔ)上進(jìn)一步借助MRF,則將能更好地實(shí)現(xiàn)其他像素的有損重構(gòu)。鑒于MRF能良好地表征圖像的空域統(tǒng)計(jì)特性,上述方法將能在一定的壓縮率下獲得較好的重構(gòu)質(zhì)量。
圖3給出了本文提出的基于MRF的加密二值圖像有損重構(gòu)算法。本文算法包含3個(gè)部分,即發(fā)送方的加密操作,云端的分塊隨機(jī)下抽樣,以及接收方的聯(lián)合解壓、解密和有損重構(gòu)操作。各部分的具體細(xì)節(jié)分別描述如下。
圖3 本文算法流程Fig.3 Flowchart of the proposed algorithm
設(shè)二值圖像I(x,y)的大小為W×H,按逐行掃描的方式得到一維二值序列I={I i|i=1,2,…,WH},然后用流密碼對(duì)I進(jìn)行加密,具體如下。
偽隨機(jī)數(shù)發(fā)生器通過密鑰種子KEY1生成長(zhǎng)度為WH的一串隨機(jī)密鑰K={K i|i=1,2,…,WH}。為了保證加密的安全,每次加密一幅二值圖像時(shí),都生成不同的密鑰K,以實(shí)現(xiàn)“一次一密”。根據(jù)香農(nóng)的理論證明,“一次一密”的加密方法具有可保障的安全性。產(chǎn)生密鑰后,采用異或運(yùn)算對(duì)二值圖像進(jìn)行加密,即有:
加密后,得到加密二值圖像序列C={C i|i=1,2,…,WH}。該加密二值圖像看上去是一幅隨機(jī)二值圖像,隨后,加密圖像序列C通過公共信道傳給云端,密鑰種子KEY1則通過安全信道傳給接收方。
為了節(jié)省存儲(chǔ)空間或者傳輸帶寬,云端需要在無法獲得加密密鑰的情況下對(duì)接收到的加密圖像進(jìn)行壓縮。如前所述,為了便于盡可能高質(zhì)量重構(gòu),云端采用下抽樣的方式進(jìn)行壓縮,且下抽樣后的像素盡可能在空間上進(jìn)行均勻分布。為此,本文采用基于分塊的隨機(jī)下抽樣方法,具體介紹如下。
云端把加密二值圖像序列C重新構(gòu)成W×H的加密二值圖像I'(x,y)。為了能在盡可能均勻的情況還易于操作,本算法采用基于分塊的隨機(jī)下抽樣。即把I'(x,y)劃分成互不重疊的塊,每塊的大小為B×B。對(duì)于每一塊,按下抽樣率P(P∈[0,1])進(jìn)行隨機(jī)抽取,抽取位置由種子密鑰KEY2控制下生成的隨機(jī)數(shù)來確定。因此每塊下抽樣后得到長(zhǎng)度為B2P長(zhǎng)的序列,其中?代表向上取整函數(shù)。這樣I'(x,y)下抽樣后得到長(zhǎng)度為N=WHP的序列,2,…,N}。
為了進(jìn)一步提高壓縮率,本文基于Johnson的ETC框架[1],對(duì)下抽樣序列Cˉ利用LDPC進(jìn)行壓縮。設(shè)LDPC的碼率為R(R∈[0,1]),碼長(zhǎng)為N,對(duì)應(yīng)的校驗(yàn)矩陣為N(1-R)×N大小的A,則基于LDPC的壓縮[28]為:
根據(jù)式(12),密鑰K與加密序列C是相關(guān)的,因此可以把密鑰K作為C的邊信息;類似地,下抽樣密鑰Kˉ與Cˉ也是相關(guān)的。如果原始二值圖像中非零比特較多,則Kˉ與Cˉ的相關(guān)性變小,有可能會(huì)導(dǎo)致LDPC解碼失敗。此時(shí),需利用位摻雜技術(shù)來應(yīng)對(duì)。
所謂摻雜技術(shù),即是云端向接收方提供未壓縮的加密比特消息。這樣接收方利用該摻雜比特直接重構(gòu)相應(yīng)的像素,從而可以提高邊信息的質(zhì)量而提高解碼成功率。由于發(fā)送1個(gè)未壓縮的加密比特,就等價(jià)于校驗(yàn)矩陣A中增加一個(gè)度為1的行,這樣就可以把比特?fù)诫s與校驗(yàn)矩陣進(jìn)行等效處理。即設(shè)摻雜率為dp_rate,則重新構(gòu)造校驗(yàn)矩陣如下:
其中,矩陣D的大小為(dp_rate?N?(1-R))?N,且每行有且只有一個(gè)1。
當(dāng)采用摻雜技術(shù)時(shí),云端用新構(gòu)造的Aˉ壓縮Cˉ,即:
S=Aˉ?Cˉ (15)
采用上述方法壓縮后,得到加密壓縮序列S={S i|i=1,2,…,M'},其中M'=(1+dp_rate)?N?(1-R)?;诖?,壓縮率可以計(jì)算為:
云端完成分塊抽樣和編碼后,將聯(lián)合壓縮后的加密序列S及密鑰種子KEY2發(fā)送到接收方。
當(dāng)接收方收到壓縮加密序列S、加密種子密鑰KEY1、隨機(jī)下抽樣種子密鑰KEY2后,進(jìn)行聯(lián)合解壓縮、解密及基于MRF的重構(gòu)。為了能充分地利用邊信息以提升重構(gòu)質(zhì)量,本文利用因子圖理論[22]把基于LDPC解碼的解壓縮、解密及基于MRF的重構(gòu)操作都表征成因子圖,并將這些因子圖無縫整合在一起形成一個(gè)在聯(lián)合解壓縮、解密及MRF的重構(gòu)用因子圖(Joint Factor Graph for Decompression,Decryption,and MRF-based reconstruction,JFG-DDM)。設(shè)計(jì)好JFG-DDM后,通過在該重構(gòu)因子圖上運(yùn)行和-積算法而實(shí)現(xiàn)有損重構(gòu)。
圖4給出了JFG-DDM的示意圖,包含LDPC解碼因子圖、加解密復(fù)用因子圖及MRF因子圖,其中,LDPC解碼因子圖實(shí)現(xiàn)LDPC解碼,即根據(jù)校正子S還原下抽樣后的加密序列Cˉ;加解密復(fù)用因子圖用于在迭代解碼過程中,對(duì)傳遞的LLR(Log-Likelihood Ratio)消息進(jìn)行明文狀態(tài)和密文狀態(tài)的轉(zhuǎn)換,其中在MRF因子圖下傳遞的是明文狀態(tài)下的消息,在LDPC解碼因子圖中傳遞的是密文狀態(tài)下的消息;MRF因子圖用于為L(zhǎng)DPC的迭代解碼過程中,間接地、動(dòng)態(tài)地提供額外的邊信息,且用于重構(gòu)那些因下抽樣而丟失的像素。下面分別給出這3個(gè)因子圖的具體設(shè)計(jì)及針對(duì)JFG-DDM的和-積算法。
1)LDPC解碼因子圖。
設(shè)S j(j=1,2,…,M,…,M')為接收到的校正子元素,其中S k(k=M+1,M+2,…,M')為摻雜比特(即只加密未壓縮的比特),可根據(jù)加密特點(diǎn)直接確定該比特的原始未加密未壓縮時(shí)的值,故可以在迭代譯碼開始時(shí)提供高質(zhì)量的邊信息;Y?i(i=1,2,…,N)為L(zhǎng)DPC解碼過程中得到的加密下抽樣序列;A j為校驗(yàn)矩陣A的第j行。那么,基于LDPC的壓縮可以表示為:
為 經(jīng) LDPC 解 碼 但 未 解 密 的序列。
圖4 JFG-DDM示意圖Fig.4 Schematic diagram of JFG-DDM
根據(jù)因子圖理論,若用圓圈代表S j和Y?i,用方框代表式(17)的函數(shù)約束關(guān)系,則可構(gòu)造圖5所示的LDPC解碼因子圖。其中,只要A j的第i列為1,就與因子節(jié)點(diǎn)gj連線。對(duì)于摻雜比特,根據(jù)其特點(diǎn)可知,S j和Y?i都只有一條線連接至對(duì)應(yīng)的因子節(jié)點(diǎn)gj,即有Y?i=S j,這樣就能在解碼初始化時(shí)提供高質(zhì)量的邊信息,促進(jìn)解碼的收斂。摻雜比特對(duì)應(yīng)的變量節(jié)點(diǎn)與常規(guī)變量/因子節(jié)點(diǎn)一樣,無需區(qū)別對(duì)待。
圖5 LDPC解碼因子圖Fig.5 Factor graph of LDPCdecoding
根據(jù)LDPC解碼原理,對(duì)于此LDPC解碼因子圖,和-積算的消息更新方式如下:
其中,消息μ?→Y?i表示其他因子圖中因子節(jié)點(diǎn)向LDPC因子圖中傳遞的消息。
2)加解密復(fù)用因子圖。
加解密復(fù)用因子圖用于迭代解碼過程中,轉(zhuǎn)換LLR消息在明文域與密文域之間的狀態(tài)。
發(fā)送端采用流密碼的方式對(duì)二值圖像進(jìn)行加密,因此流密碼加/解密復(fù)用的全局函數(shù)可構(gòu)造如下:
圖6 本算法加解密復(fù)用因子圖Fig.6 Multiplexingfactor graph of encryption and decryption
針對(duì)此因子圖,加密過程消息更新為:
解密過程消息更新為:
此外,由于接收端已知密鑰Kˉi,因此無需向Kˉi節(jié)點(diǎn)更新消息。
3)MRF因子圖。
為了在復(fù)雜性和便利性間取得折中,本文采用一階的MRF來表征二值圖像的空域統(tǒng)計(jì)特性。后續(xù)的實(shí)驗(yàn)結(jié)果表明,采用一階MRF是可行的。
具體來說,由于加密操作掩蓋了二值圖像原有的相關(guān)性,在不知道密鑰的情況下,加密序列可以看成是離散無記憶信源。但是由于接收方已知密鑰,而實(shí)際上圖像像素間是存在統(tǒng)計(jì)依賴關(guān)系的,因此可以借助于加解密復(fù)用因子圖的消息轉(zhuǎn)換作用,構(gòu)建MRF因子圖來表達(dá)加密序列隱含的內(nèi)在關(guān)系。MRF因子圖有助于在LDPC迭代解碼過程起到正反饋?zhàn)饔?,加速解碼收斂。即利用MRF表征的圖像的統(tǒng)計(jì)依賴關(guān)系,來修正LDPC解碼因子圖中每次迭代解碼結(jié)束時(shí)的消息,間接地、動(dòng)態(tài)地為下一次迭代解碼提供高質(zhì)量的邊信息。
由于本算法引入隨機(jī)下抽樣方法對(duì)圖像進(jìn)行有損壓縮,因此存在兩類像素,第一類對(duì)應(yīng)加密下抽樣序列經(jīng)過LDPC解壓及解密后得到的像素,第二類對(duì)應(yīng)下抽樣過程中被丟棄掉的像素。由此構(gòu)造兩種MRF因子圖,分別如圖7和圖8所示,其中,圖7表示MRF因子圖會(huì)與相鄰的加解密復(fù)用因子圖進(jìn)行連接,但圖8表示MRF因子圖不會(huì)與加解密復(fù)用因子圖進(jìn)行連接,以此對(duì)應(yīng)下抽樣后的二類像素的重構(gòu)特點(diǎn)。
圖7所示為第一類像素對(duì)應(yīng)的因子圖,此MRF因子圖模型中的變量節(jié)點(diǎn)與文獻(xiàn)[7]中的類似。以中間變量節(jié)點(diǎn)F?x,y為例,其他第一類像素類似于此情況。在圖7所示的MRF因子圖中,方框Px,y代表像素的先驗(yàn)概率約束,ti代表相鄰加解密復(fù)用因子圖中的因子節(jié)點(diǎn),Mx,y和Nx,y分別代表水平及垂直方向相鄰像素之間的勢(shì)函數(shù)約束。
圖8為第二類像素對(duì)應(yīng)的因子圖,以中心變量節(jié)點(diǎn)F?x,y為例,其他第二類像素類似于此情況。由于不與加解密復(fù)用因子圖進(jìn)行連接,因此與圖7的最大不同之處是不與因子節(jié)點(diǎn)ti相連。圖8是針對(duì)本文算法特有的MRF因子圖。
圖7 一般二值圖像的MRF因子圖Fig.7 Conventional factor graph for MRFof abinary image
圖8 本文算法MRF因子圖Fig.8 Factor graph for MRFof the proposed algorithm
對(duì)于本文MRF因子圖中的第二類變量節(jié)點(diǎn),因其未與相鄰加解密復(fù)用因子圖相連,因此只要把式(23)中的、來自于加解密復(fù)用因子圖的消息μt(i)→F?x,y去掉即可,得到下列的消息更新規(guī)則:
此外,v F?x,y→Mx,y、v F?x,y→Nx,y+1及v F?x,y→Nx,y可類似處理。
對(duì)于消息μMx,y+1→F?x,y、μMx,y→F?x,y、μN(yùn)x,y+1→F?x,y及μN(yùn)x,y→F?x,y,則無需改變。
將2.3節(jié)中的LDPC解碼因子圖、加解密復(fù)用因子圖及MRF因子圖中相同的變量節(jié)點(diǎn)進(jìn)行合并,即可得到本文算法用于加密二值圖像有損重構(gòu)的因子圖JFG-DDM。在此因子圖上運(yùn)行和-積算法即可實(shí)現(xiàn)二值圖像的有損重構(gòu)。
基于和-積算法思想,針對(duì)本文算法重構(gòu)因子圖JFGDDM的和-積算法流程如圖9所示。
圖9 針對(duì)JFG-DDM的和-積算法流程Fig.9 Flowchart of sum-product algorithmfor JFG-DDM
具體描述如下。
1)初始化變量節(jié)點(diǎn)發(fā)出的消息。
結(jié)合分布式信源編碼理論,利用加密密鑰以及云端提供的摻雜比特信息,為解碼初始化提供高質(zhì)量的邊信息,并初始化JFG-DDM中變量節(jié)點(diǎn)發(fā)出的消息。
當(dāng)不采用摻雜比特時(shí),用對(duì)應(yīng)下抽樣序列的加密密鑰Kˉi直接生成邊信息。此時(shí)在LDPC解碼因子圖中,變量節(jié)點(diǎn)Y?i(i=1,2,…,N)向因子節(jié)點(diǎn)gj(j=1,2,…,M)發(fā)出的消息初始化方式如下:
若采用摻雜比特,因子圖中的Y?i與摻雜比特S k對(duì)應(yīng),其對(duì)應(yīng)關(guān)系由前面KEY2決定,可得Y?i=S k。摻雜比特S k作用在于,用于為解碼開始時(shí),進(jìn)一步提高邊信息質(zhì)量。對(duì)于此部分由KEY2決定的關(guān)系,進(jìn)而可知v Y?i→gj的值為:
LDPC解碼因子圖中,變量節(jié)點(diǎn)Y?i向加解密復(fù)用因子圖發(fā)出的消息v Y?i→ti可類似于v Y?i→gj的初始化方式進(jìn)行初始化。
若能確定S j為摻雜比特,可以確定=S j,進(jìn)一步可以確定 像 素的 值 為在 這 種 情 況 下 ,消 息νF?x,y→Mx,y可初始化為:
νF?x,y→Mx,y+1、νF?x,y→Nx+1,y、νF?x,y→Nx,y和νF?x,y→ti亦可類似地初始化。若Y?i的值無法確定,則根據(jù)先驗(yàn)概率經(jīng)驗(yàn)值Px,y進(jìn)行初始化。例如,νF?x,y→Mx,y可初始化為:
其他消息νF?x,y→Mx,y+1、νF?x,y→Nx+1,y、νF?x,y→Nx,y和νF?x,y→ti也可以類似地初始化。
2)更新因子節(jié)點(diǎn)向變量節(jié)點(diǎn)發(fā)出的消息。
前面已經(jīng)計(jì)算出變量節(jié)點(diǎn)發(fā)出的消息,此步利用和-積算法中的“和”操作更新因子節(jié)點(diǎn)(Factor Node,F(xiàn)N)到變量節(jié)點(diǎn)(Variable Node,VN)的消息。
MRF因子圖中,F(xiàn)N向VN的更新公式參考2.3節(jié)的式(24)。加解密復(fù)用因子圖中,F(xiàn)N向VN的更新公式參考2.3節(jié)的式(21)和(22)。對(duì)于LDPC解碼因子圖,F(xiàn)N向VN的更新公式參考2.3節(jié)的式(19)。
3)更新變量節(jié)點(diǎn)向因子節(jié)點(diǎn)發(fā)出的消息。
接下來應(yīng)用和-積算法更新變量節(jié)點(diǎn)VN到因子節(jié)點(diǎn)FN的消息。對(duì)于MRF因子圖,因子圖內(nèi)部的VN向FN的更新消息參考式(23)和(25)。對(duì)于LDPC解碼因子圖,因子圖內(nèi)部的VN向FN的更新消息參考式(18)。
在加解密復(fù)用因子圖中,當(dāng)消息由LDPC解碼因子圖中的變量節(jié)點(diǎn)流向加解密因子節(jié)點(diǎn)ti時(shí),ν?更新方法為:
Y i→ti
當(dāng)消息由MRF因子圖中的變量節(jié)點(diǎn)F?x,y流向加解密復(fù)用因子節(jié)點(diǎn)ti時(shí),更新方法如下:
4)Y?的最佳估計(jì)。
經(jīng)過新一輪的迭代(即FN向VN更新以及VN向FN更新)后,為了判斷LDPC解碼是否收斂,需要對(duì)LDPC解碼因子圖中變量節(jié)點(diǎn)Y?i的邊緣概率進(jìn)行軟判決。即首先累加各個(gè)變量節(jié)點(diǎn)Y?i的所有消息,即:
考慮到消息傳遞采用了對(duì)數(shù)似然率(Log Likelihood Ratio,LLR),然后再進(jìn)行如下的軟判決,即:
5)判斷迭代是否繼續(xù)。
獲得軟判決的重構(gòu)序列?后,計(jì)算校正子S完全等于云端發(fā)送到接收方的校正子序列S,則表明LDPC解碼成功,因此迭代重構(gòu)算法結(jié)束。否則,繼續(xù)進(jìn)行前述的步驟2)~步驟4),直到LDPC解碼成功或者達(dá)到最大的預(yù)設(shè)迭代次數(shù)為止。
6)重構(gòu)估計(jì)圖像。
若LDPC解碼成功,則MRF因子圖的第一類變量節(jié)點(diǎn)(即下抽樣后被保留下來的像素節(jié)點(diǎn))重構(gòu)值為:
對(duì)于第二類變量節(jié)點(diǎn)(即下抽樣過程中被丟棄的像素節(jié)點(diǎn)),首先類似于式(32)計(jì)算傳到該變量節(jié)點(diǎn)的所有消息之和,然后再按照式(33)進(jìn)行軟判決。值得指出的是,盡管第一類節(jié)點(diǎn)也可以按照第二類節(jié)點(diǎn)進(jìn)行重構(gòu),但可能存在因MRF因子圖中更新的消息不甚準(zhǔn)確而導(dǎo)致軟判決錯(cuò)誤的可能性。
實(shí)驗(yàn)仿真中采用了6幅大小為100×100、具有不同紋理特性的二值圖像Baboon、Barb、Boat、F16、Lena和Tree作為測(cè)試圖像,如圖10所示。
圖10 實(shí)驗(yàn)測(cè)試圖像Fig.10 Test imagesfor experiments
考慮到本文算法為加密二值圖像的有損重構(gòu)算法,因此實(shí)驗(yàn)中采用bpp(bit per pixel)和BER(Bit Error Rate)作為算法性能的評(píng)估指標(biāo),其中,bpp表示每個(gè)像素壓縮后的比特?cái)?shù),用壓縮后的總比特?cái)?shù)除以總像素來計(jì)算;BER為重構(gòu)的二值圖像與原始二值圖像間的比特誤差率,用兩圖像不相同比特的數(shù)量除于總像素?cái)?shù)量來進(jìn)行計(jì)算。在同等bpp情況下,BER越小表明重構(gòu)質(zhì)量越好;反之亦然。值得指出的是,根據(jù)BER可以計(jì)算得到相應(yīng)的峰值信噪比(Peak Signal-to-Noise Ratio,PSNR),但BER的數(shù)值能更具體地反映重構(gòu)圖像的誤差情況,故本文采用BER。
本文算法是在前期加密二值圖像無損壓縮研究[7]的基礎(chǔ)上,進(jìn)一步提出的針對(duì)加密二值圖像的有損壓縮方法。根據(jù)對(duì)文獻(xiàn)盡可能全面的掌握,當(dāng)前有為數(shù)眾多的二值圖像無損及有損壓縮方法,但尚未發(fā)現(xiàn)加密二值圖像的有損壓縮方法。因此為了評(píng)估本文算法的bpp-BER性能,根據(jù)Johnson等[1]的先加密后壓縮系統(tǒng)壓縮及安全性能與先壓縮后加密系統(tǒng)的壓縮及安全性能一致的理論研究,本文主要與前期的加密二值圖像無損壓縮算法以及加密原始二值圖像作為輸入的JBIG2(Joint Bi-level Image Experts Group version 2)有損壓縮算法進(jìn)行性能比較,以此等價(jià)地評(píng)估本文算法的性能。下面分別給出本文算法及JBIG2算法的參數(shù)設(shè)置。
1)本文參數(shù)設(shè)置。
為了進(jìn)一步探究均勻性與隨機(jī)性間之間的關(guān)系,本節(jié)采用分塊隨機(jī)抽樣(參考2.2節(jié))、整幅加密二值圖像隨機(jī)抽樣及均勻抽樣三種抽樣方式,然后在相同實(shí)驗(yàn)參數(shù)設(shè)置下比較它們的壓縮性能。對(duì)于分塊隨機(jī)下抽樣,為了盡可能保留二值圖像在空域上的局部特征,分塊的大小不應(yīng)設(shè)置過大;本文根據(jù)實(shí)驗(yàn)情況折中設(shè)置分塊大小為B=10。對(duì)于整幅圖像隨機(jī)抽樣,利用偽隨機(jī)序列確定抽取位置;對(duì)于整幅圖像的均勻抽樣,則根據(jù)抽樣率確定抽樣步長(zhǎng),然后根據(jù)步長(zhǎng)均勻地抽取像素。
不論采用哪種抽樣方式,當(dāng)不采用比特?fù)诫s方法(即dp_rate=0)時(shí) ,MRF的 參 數(shù) 設(shè) 置 為δ=45、P=0.35和T=0.000 49;當(dāng)采用比特?fù)诫s方法時(shí),MRF的參數(shù)設(shè)置為δ=45、P=0.5和T=0.000 49。根據(jù)前期的研究工作[7],這些是較優(yōu)的參數(shù)。另最優(yōu)摻雜率dp_rate通過折半搜索獲得。
實(shí)驗(yàn)仿真時(shí),通過Matlab與C結(jié)合的方式實(shí)現(xiàn)本文算法。bpp用式(16)進(jìn)行計(jì)算。
2)JBIG2參數(shù)設(shè)置。
JBIG2是一種針對(duì)未加密二值圖像的、支持無損及有損壓縮的國(guó)際標(biāo)準(zhǔn)[29-30]。雖然JBIG2允許進(jìn)行有損壓縮,但并未規(guī)定有損壓縮的具體方法,而是通過在無損壓縮前額外增加有損壓縮預(yù)處理模塊來實(shí)現(xiàn)。為了與本文的加密二值圖像有損壓縮算法進(jìn)行比較,實(shí)驗(yàn)仿真中采用了JPEG作為有損壓縮預(yù)處理模塊。具體而言,實(shí)驗(yàn)仿真中先對(duì)二值圖像進(jìn)行灰度化預(yù)處理,即首先把二值圖像的0和1分別映射成取值為0和255的灰度圖像;然后對(duì)此灰度化圖像實(shí)施量化因子為QF的有損壓縮,得到相應(yīng)的JPG圖像;最后再以此有損壓縮后的灰度圖像作為JBIG2編碼器(內(nèi)置圖像二值化功能)的真正輸入。當(dāng)該JPG圖像輸入JBIG2后,首先進(jìn)行閾值為128的二值化,然后獲得JBIG2壓縮后的JB2文件數(shù)據(jù)流,以此實(shí)現(xiàn)有損壓縮。
對(duì)于JBIG2算法,bpp計(jì)算方式如下:
其中:FileSize表示使用JBIG2算法得到的壓縮文件的大小;W和H表示圖像的寬度和高度。
為了演示本文算法的重構(gòu)過程,本節(jié)以二值Lena圖為例,該圖大小為100×100,像素值為1的百分比為50.6%。實(shí)驗(yàn)仿真時(shí),采用碼率R=0.525的LDPC碼,并經(jīng)折半搜索得到最優(yōu)摻雜比特率。根據(jù)實(shí)驗(yàn)結(jié)果,采用最優(yōu)摻雜比特率時(shí)對(duì)應(yīng)的壓縮率為0.507。圖11(a)~(f)展示了二值Lena原圖、流密碼加密圖以及迭代11、21、41和51次時(shí)的重構(gòu)二值圖。其中,迭代到51次時(shí)LDPC能無誤解碼,獲得有損重構(gòu)后的Lena,相應(yīng)的BER為0.006。由圖11可知,在近一半壓縮率的情況下,無論是BER還是視覺效果,有損重構(gòu)圖像11(f)幾乎逼近原始二值圖像11(a)。
圖11 Lena重構(gòu)過程演示圖Fig.11 Schematic diagramof reconstruction processof Lena
3.3.1 抽樣方式對(duì)壓縮性能的影響
為評(píng)估本文算法性能,本節(jié)比較3.1節(jié)中設(shè)置的3種不同抽樣方式時(shí)本文算法的性能,其中,采用分塊隨機(jī)抽樣的本文算法記作MRF_BlkRnd,采用整幅圖像隨機(jī)抽樣和均勻抽樣的本文算法分別記作RANDOM和EVEN。
實(shí)驗(yàn)仿真時(shí),采用具有不同紋理特征的二值圖像Tree、Lena、Baboon和F16作為測(cè)試圖像。對(duì)于步長(zhǎng)為10%的每一個(gè) 下 抽 樣 率P∈[30%,100%],分 別 采 用 分 塊 隨 機(jī)(MRF_BlkRnd)、整幅圖像隨機(jī)(RANDOM)、整幅圖像均勻抽樣(EVEN)方式進(jìn)行抽樣;接收方在接收到加密壓縮序列后,利用JF-DDM進(jìn)行重構(gòu)。對(duì)于每一個(gè)下抽樣率P,都遍歷LDPC的碼率范圍R∈[0.425,0.725]以找到最小的壓縮率,遍歷時(shí)的碼率步長(zhǎng)為0.025。對(duì)于所獲得的三組實(shí)驗(yàn)數(shù)據(jù),為便于比較,將壓縮率bpp以0.025為間隔進(jìn)行劃分,并挑選每一區(qū)間內(nèi)最小的BER值?;诖耍玫綀D12所示的針對(duì)三種抽樣方式的bpp-BER性能曲線。值得指出的是,當(dāng)P=100%時(shí),本文算法就等價(jià)于針對(duì)加密二值圖像的無損壓縮算法[7],此時(shí)可以獲得BER=0的結(jié)果。
圖12 三種算法在不同圖像間的bpp-BER性能比較Fig.12 Comparison of bpp-BER performance of three algorithms between different images
圖12所示的實(shí)驗(yàn)仿真結(jié)果表明,MRF_BlkRnd總體上優(yōu)于EVEN和RANDOM。這是因?yàn)镸RF_BlkRnd采用了均勻分塊而塊內(nèi)隨機(jī)的下抽樣方法,能較好地在均勻性和隨機(jī)性間保持較好的折中,從而有利于借助解壓解密重構(gòu)的像素及MRF推斷其他在下抽樣過程中被丟棄的像素,重構(gòu)性能較為穩(wěn)定。然而,RANDOM的隨機(jī)性較強(qiáng),解壓解密重構(gòu)的像素有可能堆在一個(gè)局部而不利于借助MRF推斷其他下抽樣時(shí)被丟棄的像素;EVEN的均勻性雖然非常好,但有可能會(huì)因邊緣紋理區(qū)域下抽樣的像素?cái)?shù)量少而影響重構(gòu)質(zhì)量。因此,采用分塊隨機(jī)進(jìn)行下抽樣是一種較好的選擇。
3.3.2 與相關(guān)算法的性能比較
為進(jìn)一步評(píng)估本文算法性能,本節(jié)比較本文算法(即MRF_BlkRnd)與有損JBIG2算法,其中,有損JBIG2算法借助于JPEG壓縮方法來實(shí)現(xiàn)有損壓縮,具體見3.1節(jié)描述。實(shí)驗(yàn)仿真中,JPEG壓縮的QF設(shè)置為[1:100],步長(zhǎng)為1。若相鄰QF導(dǎo)致相同的bpp,則取BER較小的那個(gè)結(jié)果。
考慮到本文算法是針對(duì)加密二值圖像的壓縮,而JBIG2是針對(duì)原始未加密二值圖像的壓縮,本節(jié)還分別以原始未加密二值圖像以及對(duì)應(yīng)的加密二值圖像作為有損JBIG2算法的輸入,以便更好地評(píng)估各算法的bpp-BER性能。為簡(jiǎn)便起見,這兩種情形分別記作ORI_JBIG2和ENC_JBIG2。
利用3.1節(jié)及上述的實(shí)驗(yàn)參數(shù)設(shè)置,對(duì)6幅測(cè)試圖像開展實(shí)驗(yàn)。首先評(píng)估不同方法的重構(gòu)質(zhì)量,圖13中給出了MRF_BlkRnd和ORI_JBIG2在近似壓縮率情況時(shí)的有損重構(gòu)圖像;但因ENC_JBIG2的壓縮率大于1,難于進(jìn)行比較,故圖13中并未給出該方法的重構(gòu)圖像。鑒于篇幅限制,圖13中以Barb和F16為例,除Baboon外的其他圖像有類似情況;對(duì)Baboon而言,MRF_BlkRnd的壓縮率都比ORI_JBIG2的低,因此難于進(jìn)行同等壓縮率下的重構(gòu)質(zhì)量比較。由圖13可知,MRF_BlkRnd和ORI_JBIG2的重構(gòu)圖像都具有較好的視覺效果,且與原始圖像相近;MRF_BlkRnd與ORI_JBIG2間的重構(gòu)圖像質(zhì)量近似一致,差別不明顯??紤]到ORI_JBIG2是針對(duì)原始未加密二值圖像的壓縮方法,而本文是針對(duì)加密二值圖像的壓縮算法,這就表明了本文算法的可行性。
圖13 重構(gòu)圖像質(zhì)量評(píng)估Fig.13 Evaluation of reconstructed images
其次評(píng)估算法MRF_BlkRnd、ORI_JBIG2和ENC_JBIG2針對(duì)6幅二值圖像的bpp-BER性能,如圖14所示。由圖可知,MRF_BlkRnd算法的BER隨著bpp的增加而逐漸減小,這是因?yàn)閎pp的增大意味著壓縮率的減小,從而使得重構(gòu)誤差也相應(yīng)地減小。不過,MRF_BlkRnd的變化趨勢(shì)并不是非常平滑,主要是因?yàn)榉謮K內(nèi)進(jìn)行不同的隨機(jī)抽樣時(shí),會(huì)呈現(xiàn)波動(dòng),如圖14中Boat和F16的情況。此外,圖14也表明,測(cè)試圖像的壓縮率落在0.2~0.4 bpp范圍內(nèi),BER最多不超過0.05,這表明本文算法具有良好的率失真性能。
由圖14可知,在相同BER情況下,MRF_BlkRnd相比ORI_JBIG2和ENC_JBIG2普遍具有更低的bpp。這主要是因?yàn)楸疚乃惴ń柚贛RF更好地利用了像素間的統(tǒng)計(jì)依賴關(guān)系,能更好地重構(gòu)因壓縮而丟失的像素,進(jìn)而獲得更高的壓縮效率。
圖14 MRF_BlkRnd、ENC_JBIG2和ORI_JBIG2的bpp-BER性能比較Fig.14 Performance comparison in bpp-BERbetween MRF_BlkRnd,ENC_JBIG2 and ORI_JBIG2
根據(jù)圖14,ENC_JBIG2算法的性能遠(yuǎn)差于ORI_JBIG2和MRF_BlkRnd。這是因?yàn)镋NC_JBIG2的輸入圖像是加密后的二值圖像,JBIG2算法無法利用圖像的統(tǒng)計(jì)特性進(jìn)行壓縮,自然沒有辦法獲得好的壓縮性能,從而比ORI_JBIG2和MRF_BlkRnd的性能差。
此外,對(duì)于ORI_JBIG2,在不同JPEGQF時(shí)的壓縮率差別不大,BER通常隨著QF的增加而減小。這是因?yàn)閷⒃级祱D映射成取值為0和255的灰度圖并經(jīng)過JPEGQF有損壓縮預(yù)處理后,無論采用什么樣的QF,經(jīng)過這些操作后的像素值大多數(shù)仍然分布在0或255的附近。這樣當(dāng)把JPEG壓縮后的圖輸入到JBIG2壓縮算法中,并以128作為閾值處理得到的二值圖IJPEG(x,y),與原始二值圖I(x,y)差別較小,從而使得經(jīng)過JBIG2壓縮后的bpp相差不大。但當(dāng)QF變小時(shí),IJPEG(x,y)與I(x,y)的差別相對(duì)增大,導(dǎo)致解碼后的BER也相應(yīng)地增大。
再者,對(duì)于ENC_JBIG2中的加密二值圖像,采用與ORI_JBIG2相同的處理流程。由于加密操作掩蓋了載體圖像的統(tǒng)計(jì)特性,因此JBIG2算法根本無法發(fā)揮其壓縮優(yōu)勢(shì),從而基本上無法進(jìn)行壓縮。再加上在JBIG2編碼前進(jìn)行了JPEG壓縮,在編碼后生成的jb2文件尚需要保存一部分輔助信息,導(dǎo)致壓縮率略大于1.0 bpp。綜合上述分析可知,相較于ORI_JBIG2,本文算法在不同bpp時(shí)的性能有好有差,但總體上性能相當(dāng)甚至略好,即本算法壓縮加密二值圖像的壓縮效率,能夠達(dá)到JBIG2算法壓縮常規(guī)二值圖像的壓縮效率。
由于ORI_JBIG2是以未加密圖像作為輸入進(jìn)行壓縮的,而本文算法是針對(duì)加密二值圖像進(jìn)行壓縮的,因此本文算法是可行的和有效的。
本文提出了一種基于MRF的加密二值圖像有損壓縮算法。其中,發(fā)送方用流密碼進(jìn)行加密;云端采用基于分塊隨機(jī)下抽樣方法進(jìn)行壓縮,分塊的目的在于令下抽樣后的序列在空域中盡可能均勻分布,隨機(jī)的目的在于方便實(shí)現(xiàn)任意的下抽樣率;下抽樣后的序列進(jìn)一步利用LDPC校正子編碼進(jìn)行壓縮;接收方構(gòu)造包含LDPC解碼、解密及MRF重構(gòu)的重構(gòu)因子圖,以便在運(yùn)行經(jīng)適配的和-積算法時(shí)能實(shí)現(xiàn)加密二值圖像的有損重構(gòu)。實(shí)驗(yàn)仿真結(jié)果表明,本文算法具有較好的加密二值圖像壓縮效率,且bpp-BER性能總體上與以未加密原始二值圖作為輸入的JBIG2算法性能相當(dāng)甚至更好。這就充分表明了本文算法的有效性和可行性。
本文算法設(shè)計(jì)的分塊隨機(jī)下抽樣方法,雖然基本上是可行的,但在不同隨機(jī)抽樣情形下,bpp-BER性能卻會(huì)有一定的波動(dòng),因此,后續(xù)研究中需進(jìn)一步設(shè)計(jì)更好的下抽樣方式。