谷玉瑩
摘 要:信息損失不可避免。為達(dá)到圖像的篡改容忍度與恢復(fù)質(zhì)量之間的平衡,基于糾錯編碼方法,對原始圖像采用SPIHT編碼進(jìn)行整體壓縮,再用RS糾錯編碼對SPIHT源碼流進(jìn)行保護(hù),將編碼后的RS碼流作為水印嵌入宿主圖像。實驗結(jié)果表明,該算法的圖像質(zhì)量和篡改容忍度均有所提高?;诩m錯編碼的圖像恢復(fù)技術(shù)能夠保證在篡改容忍度以內(nèi)恢復(fù)所有的壓縮碼流,大大降低接收端解壓的計算復(fù)雜度,提高圖像恢復(fù)效率。
關(guān)鍵詞:易碎水印;圖像篡改保護(hù);SPIHT編碼;RS編碼
DOI:10. 11907/rjdk. 181766
中圖分類號:TP317.4文獻(xiàn)標(biāo)識碼:A文章編號:1672-7800(2019)001-0197-04
Abstract: In order to achieve a balance between tolerance of tampering and restoration quality of image against endless information loss, this paper uses the method of error correction coding to compress the original image by SPIHT and protect the SPIHT out-stream by RS technology, and the RS stream is embedded into host image as watermark. Experimental results show that the quality of the restored image and the tolerance of tampering are improved. The image restoration technology based on error correction coding can guarantee the recovery of all compressed code streams within the tamper tolerance, and it can greatly reduce the computational complexity of the receiver decompression and improve the efficiency of image recovery.
Key Words: fragile watermarking; image tampering protection; SPIHT coding; RS coding
0 引言
數(shù)字圖像的完整性[1-2]需要運用復(fù)雜技術(shù)防止對圖像的惡意修改,常見方法是水印的自嵌入與自恢復(fù)。自恢復(fù)方法中水印通常分為兩類:校驗位和參考位[3-5]。校驗位用于定位篡改區(qū)域,參考位則用于恢復(fù)原始信息。為了內(nèi)容恢復(fù),通常某個塊的參考位總是嵌入到另一個塊中,然而這些方法 [6-7]的內(nèi)容恢復(fù)可能失敗,因為原始塊和包含其參考位的塊可能被誤判為篡改塊。為解決該問題,Zhang等[8-10]將一個塊的參考數(shù)據(jù)分散到整個圖像,有效解決了誤檢率的問題,但導(dǎo)致不必要的水印浪費。為此,TY Lee等[11]提出一種雙重水印方案解決該問題。本文算法參考源編碼圖像中,這些數(shù)據(jù)來源于整個圖像,然后分散在整個圖像中,以克服篡改和浪費問題。
本文算法先將原始圖像進(jìn)行SPIHT壓縮,輸出碼流用于恢復(fù)原始信息,然后用RS編碼進(jìn)行保護(hù),RS碼流用于決定篡改容忍度TTR[12-14]。為保證信息安全,在嵌入前還要用密鑰K將RS碼流進(jìn)行置亂[15]。實驗證明,在相同TTR下,圖像的恢復(fù)質(zhì)量高于之前算法。另外,本文算法除優(yōu)化恢復(fù)質(zhì)量和TTR的權(quán)衡外,還保證嵌入水印后的圖像質(zhì)量不會太差,這是自嵌入恢復(fù)算法的優(yōu)點所在。
1 SPIHT壓縮編碼算法
SPIHT算法[16]通過重要像素點鏈表(LSP)、不重要像素點鏈表(LIP)、不重要像素集合鏈表(LIS)等3張鏈表,把所有像素點按空間方向樹的結(jié)構(gòu)組織起來進(jìn)行編碼。重要像素點指小波系數(shù)的絕對值大于等于給定的門限T的像素點,賈志科等[17]對初始量化門限T0作了優(yōu)化。鏈表中每個元素包含4個相鄰像素。在LIS鏈表中,元素為D(i,j)(稱為A型LIS鏈表)或L(i,j)(稱為B型LIS鏈表),表示一棵空間方向樹,(i,j)為其根節(jié)點坐標(biāo)。
SPIHT算法步驟:①初始化:把鏈表LSP置空,把H中的所有節(jié)點坐標(biāo)(i,j)放入到鏈表LIP中并把H中所有后代的節(jié)點坐標(biāo)(i,j)放入LIS中,標(biāo)記為A型集合;②分類過程一:對LIP中的每一個節(jié)點坐標(biāo)(i,j),輸出Sn(i,j),輸出該節(jié)點C(i,j)的符號并將其移到LSP末尾;③分類過程二:對LIS中的每一個(i,j)來說,如果該集合屬于A類型,則輸出Sn(D(i,j)),如果Sn(D(i,j))=1,則有兩種情況:對O(i,j)中的每一個(k,1),輸出Sn(k,1),如果Sn(k,1)=1,則輸出該節(jié)點C(k,1)的符號并將其放到LSP末尾,否則將其放到LIP末尾。刪除這個集合,如果L(i,j)存在,則將(i,j)放到LIS的末尾并將該集合標(biāo)記為B類型。如果該集合屬于B類型則輸出Sn(L(i,j)),如果Sn(L(i,j))=1則刪除該集合,然后將其所有的(k,1)∈O(i,j))放到LIS末尾,并將這些集合均標(biāo)記為A類型;④精確過程:對LSP鏈表中的每一個(i,j)(除在本次掃描中產(chǎn)生的(i,j)外),輸出|c(i,j)|的第n位比特值;⑤終止結(jié)束:如果n=0則終止,否則取n-1,并轉(zhuǎn)到第②步繼續(xù)執(zhí)行。
2 RS通道糾錯編碼算法