陳功平
(信陽師范學(xué)院 網(wǎng)絡(luò)信息與計算中心,河南 信陽 464000)
關(guān)于計算機圖像的可逆水印算法研究
陳功平
(信陽師范學(xué)院 網(wǎng)絡(luò)信息與計算中心,河南 信陽 464000)
隨著現(xiàn)代信息技術(shù)的迅猛發(fā)展,數(shù)字多媒體在眾多領(lǐng)域中得到應(yīng)用.隨之產(chǎn)生了一系列安全問題:開放式網(wǎng)絡(luò)中傳輸?shù)男畔⑷菀妆粩r截;多媒體軟件強大的編輯功能也讓信息的剪切、復(fù)制、拼接、刪除以及偽造變得極易發(fā)生.針對這些現(xiàn)狀,本文對多媒體圖像進行研究,針對當前數(shù)字水印方面的熱點問題可逆水印進行探討.
圖像;可逆水印法;研究
隨著計算機技術(shù)的發(fā)展,各種媒體內(nèi)容被轉(zhuǎn)化為數(shù)字形式,因為數(shù)字形式便于流傳,便于大家的分享與傳閱,以及它低廉的成本,幾乎可以讓創(chuàng)作者“一勞永逸”地享受創(chuàng)作帶來的收益,不過這也同時帶來了一個問題,就是數(shù)字內(nèi)容的安全問題,如何能享受網(wǎng)絡(luò)便利的同時依然保護數(shù)字內(nèi)容的安全,這變成了當下一個嚴峻的問題.這也是本文研究的目的所在,本文重點探討多媒體里的圖像問題,深入研究了對圖像的所有權(quán)、完整性、機密性的保護問題.
數(shù)字水印技術(shù)作為信息隱藏技術(shù)研究領(lǐng)域的重要分支,目前在多媒體信息安全研究領(lǐng)域異軍突起,已成為國際上的一個前沿?zé)狳c領(lǐng)域.它利用數(shù)字嵌入,將與載體內(nèi)容相關(guān)或不相關(guān)但具有特定意義的水印,隱藏到聲音、文檔、數(shù)字圖像、視頻、圖書等數(shù)字產(chǎn)品這樣的載體中.這些數(shù)字水印可以作為證據(jù)來鑒定、起訴非法侵權(quán),可以證明作品的所有權(quán)歸屬問題.并且針對數(shù)字水印的檢測和分析也可以保證數(shù)字信息的可靠性和完整性,對于知識產(chǎn)權(quán)的保護也能發(fā)揮很大作用.因而數(shù)字水印技術(shù)在對信息的保護以及完整性認證方面,有著廣闊的前景,當今在技術(shù)前沿領(lǐng)域發(fā)展迅速.本文對多媒體圖像的可逆水印進行研究,具有很強的現(xiàn)實意義,希望對應(yīng)用者有一定的實踐參考價值.
對于數(shù)字水印的研究起步于上世紀80年代,Komatsu運用預(yù)測編碼的方法實現(xiàn)了在圖像中嵌入水印.之后一系列研究數(shù)字水印的文章陸續(xù)出現(xiàn),Turner實現(xiàn)了在采樣點的非重要比特位點處嵌入認證碼.Cox在他的方案中使用了原始宿主圖像,而這種對圖像隨機擾動、掃描、剪切、壓縮這些操作具有一定的的魯棒性,基于擴頻通信思想,Cox實現(xiàn)了在圖像DCT變換后的中低頻系數(shù)中嵌入水印. Furon基于公鑰密碼學(xué)的思想,提出了非對稱水印方法,而這一方法可以滿足Kerckhoff準則.Cox等引入了通信領(lǐng)域中的邊信息,認為可以在嵌入水印時借助于宿主媒體自帶的信息.Moulin等研究了在數(shù)字水印中使用臟紙理論,如果宿主圖像不滿足加性高斯白噪聲的特征,臟紙理論仍然適用且有效.使用到了量化索引調(diào)制(QIM)理論,該理論能夠?qū)崿F(xiàn)傳輸信息的目的,其實它是針對臟紙理論的拓展.Eggers等提出了一種盲水印方法,這種方法簡化了Costa理論中使用到的碼本,是將Costa臟紙理論使用到信息隱藏中的一種次優(yōu)解.隨后自適應(yīng)數(shù)字水印借助于感知掩蔽現(xiàn)象進行信息隱藏.目前其他一些算法則針對DWT變換域內(nèi).
同時,在信息的完整性保護方面,脆弱/半脆弱水印收效頗豐.Zhu通過研究得出了利用失真度量而不是二值判斷的圖像認證法.Fridrich和Goljan將自身低畫質(zhì)版本的圖像嵌入到宿主圖像的最低比特位中,這是一種自嵌入的脆弱水印法. Wong則提出了剛夠檢測多處圖像篡改,卻對圖像壓縮處理很敏感的圖像認證算法,這種方法是基于修改圖像象素中最不重要比特位.這些方法大多是在空域中嵌入脆弱水印,另外還可在變幻域中嵌入水印,這樣的水印屬于半脆弱水印,因為它對適量的濾波處理和壓縮不敏感.此外有些學(xué)者修改含所有權(quán)的水印進行研究.還有人關(guān)注與圖像認證相關(guān)的的安全可靠性問題,并提出了一些攻擊方法. Holliman和Memon提出了把圖像中的水印拷貝到其它不含水印的圖像中的拷貝攻擊法.
1994年Barton提出可以將原始數(shù)據(jù)流進行無損壓縮從而擠出一定的空間來嵌入有用信息,這是關(guān)于可逆信息隱藏的思想最早可以追溯到的文獻.隨后Honsinger等使用Hash函數(shù)將原圖像生成認證信息,再與原圖像一起進行模256運算,進而生成水印圖像.但這種方法能夠?qū)е聢D像部分邊界元素異常.Fridrich設(shè)計出兩種可逆認證法,第一種方法在具有兩特性的數(shù)據(jù)塊中隱藏認證信息,并且數(shù)據(jù)塊具有一定的壓縮能力,對隨機處理不敏感.第二種方法使用hash運算對宿主圖像進行處理生成認證信息,再對平面進行無損壓縮,并嵌入認證信息.算法一能夠用到原始的多媒體數(shù)據(jù)中,但這兩種方法都有局限性.法一,對不敏感的數(shù)據(jù)塊進行處理時,信息隱藏量有限.方法二,當針對最不重要位平面時,信息隱藏量有限.當針對其它位平面時,圖像容易失真.
Celik等則利用自適應(yīng)無損圖像編碼進行壓縮,信息隱藏量更大,這個方法稱為G-LSB可逆信息隱藏算法.Xuan等經(jīng)研究提出了無損信息隱藏算法,這種方法基于可逆整數(shù)小波變換.該方法首先對圖像的灰度直方圖實行壓縮處理,并且記錄修改信息,從而避免了象素值的溢出.其次對這些圖像運用整數(shù)小波變換,對中低位平面實行壓縮,之后嵌入有用信息,再做一次逆整數(shù)小波變換,就可以得到需要的結(jié)果.Tian的研究則在信息隱藏容量方面做出很大提高,他運用可逆整數(shù)小波變換,把信息嵌入到高頻小波系數(shù)中.Alattar則使用了更為一般的可逆整數(shù)小波變換,他選擇相鄰的幾個象素如相鄰的四個象素作為一個變換單元來進行信息隱藏,相對于Tian的算法,Alattar可以隱藏更多的信息.象素間差值小的值都可用來進行信息隱藏.Thodi提出了一次對圖像作用最大可取得接近1bpp信息隱藏量的方法,該法首先選取一個預(yù)測算子對象素值預(yù)測,再加大預(yù)測誤差來處理信息.Chang和Lu通過提高象素和它之前幾個象素均值的差值,然后利用這些差值來隱藏信息.該方法僅僅分析比較了總信息隱藏量,沒有在性能分析時考慮到輔助數(shù)據(jù)對于有效信息隱藏量的影響.Kamstra借助于低頻系數(shù)在嵌入前后基本不變的特點,構(gòu)造出一個度量函數(shù),它與此處的象素近似關(guān)聯(lián),函數(shù)值越大相關(guān)性越小,反之則越大,按照函數(shù)值升值排序,再在處理后的象素對差值中隱藏信息.這個方法對紋理偏多的圖像效果不好,對低頻信息偏多的圖像效果好.Thodi在特征值擴展算法中引入調(diào)整直方圖這一思想收效頗為不錯.Kamstra和Thodi在減少位置圖的消極效應(yīng)方面收效明顯,信息隱藏量上比較顯著.Yang等則基于壓擴技術(shù)和整數(shù)離散余弦變換提出了可逆水印法.Bao等制定了兩種針對醫(yī)學(xué)圖像的可逆水印法.Chang和Lin提出了無需區(qū)分嵌入位置的可逆信息隱藏算法.Wang等探討了基于二維矢量圖的可逆信息隱藏法.還有學(xué)者設(shè)計出與音頻相關(guān)聯(lián)的大容量可逆水印法.Shi等則對這些算法分析后進行了歸類,將目前的可逆信息隱藏算法分為三種:脆弱認證、半脆弱認證、大數(shù)據(jù)量信息隱藏.
LSB是Least Significant Bit的縮寫,意思是最不重要比特位.LSB算法利用了數(shù)字圖像處理中位平面的原理,即改變圖像的最低位的信息,對圖像信息產(chǎn)生的影響非常小以至于人眼的視覺感知系統(tǒng)往往不能察覺.以一幅256灰度的圖像為例,256灰度共需要8個位來表示,但其中每一個位的作用是不一樣的,越高位對圖像的影響越大,反之越低的位影響越小,甚至不能被感知.
LSB算法實現(xiàn)較為簡單,嵌入水印步驟如下:
①將原始載體圖像的時/空域像素值由十進制轉(zhuǎn)換到二進制表示,下面以大小的塊圖像為例.
②用二進制秘密信息中的每一比特信息替換與之相對應(yīng)的載體數(shù)據(jù)的最低有效位,假設(shè)待嵌入的二進制秘密信息序列為[011000100],則替換過程如圖所示.
③將得到的含秘密信息的二進制數(shù)據(jù)轉(zhuǎn)換為十進制像素值,從而獲得含秘密信息的圖像,如圖所示.
LSB算法提取水印步驟如下:
○1將得到的隱藏有秘密信息的十進制像素值轉(zhuǎn)換為二進制數(shù)據(jù),如圖所示.
○2將二進制數(shù)據(jù)的最低有效位提取出來,即為秘密信息序列[011000100].如圖所示.
但是,對于上述思路,一個八位的二進制水印信息就需要載體作品用八個像素值空間去存儲.如果盲目照搬上述思路來進行水印嵌入,不僅在有限的作品容量中嵌入的信息量小,而且當嵌入的水印數(shù)據(jù)量多時,計算機的計算量會很大,也可能載體作品的容量不夠或為了使作品能夠存儲水印信息而將作品高位也進行數(shù)據(jù)置換,從而帶來嚴重的失真.因此,必須在上述思路的基礎(chǔ)上另辟蹊徑.
本文中,我是將一副灰度圖片嵌入到一副偏藍的RGB圖片中.這里我在嵌入前先將圖片進行了裁剪,使得載體圖片的R、G、B任何一個通道矩陣的行、列大小都大于的嵌入的灰度圖片矩陣的行、列大小.由于圖片偏藍,因此為了使得嵌入水印后,圖片失真較小,我選擇用色彩非常弱的紅色通道嵌入灰度圖片.
程序算法如下:
(1)取出RGB圖片的紅色通道,然后用mod這個函數(shù)將該通道與灰度圖片矩陣大小相等的部分的各個像素取模2值,那么像素值為奇數(shù)的就會余1,像素值為偶數(shù)的就為0,將取模余數(shù)用一個和灰度圖片矩陣等大小的矩陣存儲起來,然后將紅色通道被模2的像素與其對應(yīng)余數(shù)相減.那么,紅色通道取模2的那部分像素此刻值的二進制最后一位都為0.
(2)對要嵌入的灰度圖片,我們將其各個像素值都除以128,并將其商的整數(shù)部分和小數(shù)部分分別用一個和灰度圖片大小相同的矩陣存儲起來.那么,存儲整數(shù)的矩陣是一個二值矩陣,取值要么是0,要么是1.
(3)將RGB圖片的紅色通道中按1步驟處理的那部分像素值與存儲灰度圖片的矩陣對應(yīng)值相加,那么紅色通道就有了灰度圖片的信息,水印被嵌入.
(4)為無失真取出水印,可以將RGB圖片紅色通道按1及3步驟處理的那部分像素值再取mod 2值,并將余數(shù)組成的矩陣與2步驟中存儲小數(shù)部分的矩陣相加再乘以128,把所得矩陣顯示出來,就是原來嵌入的灰度圖片.
(5)為無失真還原RGB圖片,可以將嵌入水印的RGB圖片按1步驟的方式處理,再將處理后得到的矩陣與1步驟中存儲余數(shù)的矩陣相加,再將得到矩陣顯示出來,就是原來的RGB圖片了.
〔1〕張立凡,游福成,張勇斌.手寫數(shù)字識別系統(tǒng)設(shè)計.北京:印刷學(xué)院學(xué)報,2009(04).
〔2〕馮偉興.VisualC++數(shù)字圖像模式識別技術(shù)詳解.機械工業(yè)出版社,2010.
〔3〕張宏林.精通VisualC++數(shù)字圖像模式識別技術(shù)及工程實踐.人民郵電出版社,2008.
〔4〕章毓晉.圖像工程(中冊)圖像分析(第二版).北京:清華大學(xué)出版社.
〔5〕劉金春,蔣先剛.均值聚類在三維重構(gòu)圖像預(yù)處理中的應(yīng)用.微計算機信息,2007.
TP 302.4
A
1673-260X(2013)02-0025-03