基于直方圖的可逆水印方法
【技術(shù)領(lǐng)域】
[0001] 該發(fā)明屬于計(jì)算機(jī)視覺(jué)、計(jì)算機(jī)圖像處理、計(jì)算機(jī)安全、計(jì)算機(jī)應(yīng)用、電子商務(wù)、電 子政務(wù)等領(lǐng)域。
【背景技術(shù)】
[0002] 可逆數(shù)字水印是指在載體圖像內(nèi)嵌入一個(gè)特定的信息,該信息能夠在需要的時(shí)候 被完整地提取出來(lái),同時(shí)載體圖像能夠在提取出該特定信息后被完全復(fù)原。該技術(shù)能夠滿 足對(duì)圖像進(jìn)行認(rèn)證,或在其中隱藏信息的目的。傳統(tǒng)的水印算法在完成信息隱藏時(shí)先對(duì)原 始載體信息進(jìn)行修改再完成信息嵌入,當(dāng)需要使用隱藏信息時(shí),再將隱藏信息從載體信息 中提取出來(lái),此時(shí)載體圖像會(huì)存在一定程度的失真,無(wú)法完全復(fù)原。因此,這種信息隱藏方 式關(guān)注的往往是隱藏信息的安全性,但是對(duì)于像醫(yī)學(xué)、軍事圖像等對(duì)載體圖像要求較高的 場(chǎng)合,該加密數(shù)字水印具有一定的局限性,無(wú)法完全滿足需求。傳統(tǒng)的水印算法在完成圖像 認(rèn)證時(shí),往往采用零水印方案或修改認(rèn)證圖像完成,零水印方案需要保存大量的附加信息, 而修改認(rèn)證圖像的方案需要保存原始載體圖像,這兩種方案都需要額外的數(shù)據(jù)庫(kù)來(lái)滿足要 求,運(yùn)算量較大,同時(shí)帶來(lái)大量的安全隱患??赡鏀?shù)字水印很好地解決了信息隱藏和圖像認(rèn) 證時(shí)所遇到的上述問(wèn)題。近年來(lái),學(xué)者針對(duì)可逆數(shù)字水印進(jìn)行了大量的研究,主要包括:查 分?jǐn)U展法、整數(shù)小波變換法、可逆對(duì)比映射(RCM,reversible contrast mapping)、整數(shù)離 散余弦變換、位平面壓縮法、直方圖法等多種方法。
[0003] 直方圖可逆數(shù)字水印是指利用圖像直方圖中峰值點(diǎn)與零值點(diǎn)之間進(jìn)行相應(yīng)運(yùn)算 來(lái)達(dá)到隱藏水?。ㄕJ(rèn)證)信息的目的,其重要特征是當(dāng)水印信息從載體圖像內(nèi)被提取出來(lái) 后,載體圖像能夠完全復(fù)原。例如,Wang等提出了基于馬爾可夫模型的直方圖可逆水印方 法,較好地在嵌入容量和透明性之間取得了平衡。Huang提出了一種應(yīng)用于醫(yī)學(xué)圖像的直方 圖可逆水印方法,該方法通過(guò)分塊的方式在圖像內(nèi)完成信息的嵌入,對(duì)各種情況下的透明 性和嵌入容量進(jìn)行了細(xì)致的分析。Tsai提出了一種結(jié)合預(yù)測(cè)編碼和直方圖的可逆水印方 式,有效提高了嵌入容量。高鐵杠等提出了增大嵌入容量的可逆數(shù)字水印方案,分別采用在 峰值點(diǎn)與多個(gè)鄰近零值點(diǎn)匹配、多對(duì)峰值點(diǎn)與零值點(diǎn)匹配的方式完成,實(shí)驗(yàn)結(jié)果顯示這兩 種方案比傳統(tǒng)方案能嵌入更多的信息,但算法未考慮如何提高系統(tǒng)安全性。李立宗等提出 了針對(duì)直方圖可逆水印算法的安全解決方案,分別利用混沌系統(tǒng)和公鑰系統(tǒng)提高了系統(tǒng)的 安全性。
[0004] 嵌入容量、透明性、安全性是可逆水印算法的關(guān)鍵技術(shù)指標(biāo)。上述文獻(xiàn)大多局限于 對(duì)某個(gè)技術(shù)指標(biāo)的改進(jìn)或優(yōu)化,未考慮算法的整體技術(shù)指標(biāo)。在大多數(shù)情況下,嵌入容量和 透明性被作為一對(duì)矛盾體進(jìn)行考慮,嵌入的容量越大,透明性越低;如果要求有較高的透明 性,則需要嵌入更少的信息。這里提出了一種綜合考慮嵌入容量、透明性、安全性的算法,算 法首先對(duì)水印信息進(jìn)行壓縮,然后將該信息與混沌系統(tǒng)所產(chǎn)生的密鑰進(jìn)行異或后嵌入到載 體圖像內(nèi)。該算法通過(guò)壓縮水印信息達(dá)到了提高嵌入容量的目的,保證了在提高嵌入容量 的同時(shí)不改變透明性,通過(guò)混沌系統(tǒng)保證了系統(tǒng)的高安全性。
【發(fā)明內(nèi)容】
[0005] 提出了一種新的基于直方圖的可逆水印。針對(duì)待嵌入的水印信息,首先對(duì)其進(jìn)行 壓縮,然后使用混沌系統(tǒng)對(duì)經(jīng)過(guò)壓縮的水印信息進(jìn)行加密以提高系統(tǒng)的整體安全性。針 對(duì)載體圖像,首先找出其峰值點(diǎn),然后將其峰值點(diǎn)和圖像中的三個(gè)特定的零值點(diǎn)進(jìn)行運(yùn)算 (位移),以使載體圖像達(dá)到能夠嵌入水印信息的狀態(tài)。最后,將該峰值點(diǎn)進(jìn)行總共四種可 能的狀態(tài)變換,以完成二位水印信息的嵌入。該方法的特點(diǎn)是針對(duì)水印信息進(jìn)行單獨(dú)壓縮 處理,保證了嵌入容量獨(dú)立于透明性,不同于傳統(tǒng)的算法需要在透明性和嵌入容量之間取 得平衡,因此該方法能夠在保持較高嵌入容量的情況下仍舊具有較好的透明性。本發(fā)明專 利采用了混沌系統(tǒng)對(duì)水印信息進(jìn)行加密,由混沌系統(tǒng)的敏感性和不可預(yù)測(cè)性,確保該系統(tǒng) 具有較高的安全性。
【附圖說(shuō)明】
[0006] 圖1是灰度直方圖。
【具體實(shí)施方式】
[0007] I. 1基本描述
[0008] 基于直方圖的可逆數(shù)字水印基本方法,利用數(shù)字圖像內(nèi)像素值個(gè)數(shù)最多的像素與 當(dāng)前灰度值較低的若干個(gè)像素值的個(gè)數(shù)均為零之間的關(guān)系實(shí)現(xiàn)隱藏信息。為了敘述上的方 便,這里以512X512像素大小的圖像boat, bmp作為示例進(jìn)行說(shuō)明。
[0009] 1. 1. 1水印信息嵌入
[0010] 1)分析載體圖像灰度直方圖
[0011] 讀取原始載體圖像boat, bmp,繪制該圖像的灰度直方圖,如圖1所示。對(duì)該圖及 其灰度直方圖進(jìn)行分析得出,載體圖像的灰度直方圖中灰度級(jí)值為148的像素值處于峰值 點(diǎn),其值為5769,灰度級(jí)值為0至5以及253至255的像素值個(gè)數(shù)為0。這說(shuō)明在載體圖像 中,不存在像素值為〇至5, 253至255的像素點(diǎn),在圖中像素值為148的像素點(diǎn)個(gè)數(shù)最多, 共有5769個(gè)像素點(diǎn)均是該值。
[0012] 2)更改載體圖像像素值
[0013] 通過(guò)分析發(fā)現(xiàn)一些灰度級(jí)在載體圖像內(nèi)并不存在,可以利用該特點(diǎn)將灰度圖像內(nèi) 的灰度級(jí)進(jìn)行調(diào)整以方便進(jìn)行嵌入信息。遍歷原始載體圖像boat, bmp中的每一個(gè)像素點(diǎn), 如果當(dāng)前像素點(diǎn)的像素值在[6, 148]之間,則將當(dāng)前像素點(diǎn)的像素值做減1處理。處理完圖 像內(nèi)所有像素點(diǎn)后,圖像內(nèi)不再存在像素值為148點(diǎn)像素點(diǎn),新增若干個(gè)值為5的像素點(diǎn)。
[0014] 3)嵌入水印信息
[0015] 再次遍歷修改后的載體圖像像素點(diǎn),在每一個(gè)像素值為147的像素點(diǎn)嵌入一個(gè)二 進(jìn)制的水印信息〇或1。當(dāng)需要嵌入的二進(jìn)制水印信息為1時(shí),將當(dāng)前像素值147加1處理 為148 ;當(dāng)需要嵌入的二進(jìn)制水印信息為0時(shí),將當(dāng)前像素值147保留。完成當(dāng)前像素點(diǎn)處 理后繼續(xù)處理下一個(gè)像素值為147的像素點(diǎn),以完成水印信息的嵌入。
[0016] I. 1. 2水印信息提取及圖像恢復(fù)
[0017] 1)提取水印信息
[0018] 遍歷嵌入了水印信息的載體圖像。當(dāng)遇到像素值為147的像素點(diǎn),提取一位二進(jìn) 制水印信息〇,當(dāng)遇到像素值為148的像素點(diǎn)時(shí),提取一位二進(jìn)制水印信息1。遍歷圖像內(nèi) 像素值為147的像素點(diǎn)后,提取出來(lái)的二進(jìn)制信息串即為嵌入的完整水印信息。
[0019] 2)恢