錢華山 田麗華 李 晨
(西安交通大學軟件學院 陜西 西安 710049)
基于三像素塊差值的多層可逆圖像水印算法
錢華山 田麗華 李 晨*
(西安交通大學軟件學院 陜西 西安 710049)
數(shù)字圖像可逆水印算法在水印嵌入容量和不可感知性方面要求越來越高。為了滿足圖像可逆水印算法的需求,提出一種基于三像素差值的多層可逆圖像水印算法。該算法首先把原始圖像按照三種類型進行水平分塊,同時計算相鄰三像素塊的絕對差值,對差值進行分組,求出水平分塊中的最大峰值點,將生成的二值水印嵌入在第一個像素和第三個像素的LSB中,同時記錄最大峰值點所在塊的索引和嵌入水印信息像素的最低有效位。其次,按照同樣的方法對原始圖像按照三種類型進行垂直分塊,嵌入水印信息。實驗仿真結(jié)果表明,該算法在不可見性、水印容量等方面較同類算法有顯著提高。
圖像水印 可逆水印 像素塊 絕對差值 LSB
對于圖像、音頻、視頻等多媒體數(shù)據(jù)而言,版權(quán)的保護和內(nèi)容完整性認證對于創(chuàng)作者來說至關重要。雖然傳統(tǒng)的數(shù)字水印技術(shù),對多媒體的版權(quán)保護起到一定的作用,但是在一些對精度認證要求較高的領域,比如法律、醫(yī)學和軍事系統(tǒng)等領域,在不提供恢復信息的情況下,加密的多媒體數(shù)據(jù)輕微的改變,都會對真實的結(jié)果產(chǎn)生很大影響,為了使隱藏的數(shù)據(jù)被提取后,無損地恢復原始圖像信息,可逆數(shù)字水印技術(shù)應運而生。由于可逆數(shù)字水印技術(shù)能夠無失真地恢復原始圖像,因此在一些敏感領域得到了很廣泛的應用[1-2],比如在法律取證和醫(yī)療圖像處理領域,通常要求提取水印后含水印的圖像還能夠無失真的恢復。
在可逆數(shù)字水印技術(shù)中,水印的嵌入容量和不可見性是衡量圖像水印算法最主要的兩個方面,因此如何提高水印嵌入容量和不可見性一直是各國學者研究的熱點。通常,不可見性客觀上可以通過PSNR(Peak Signal to Noise Ratio)來衡量。嵌入容量可以用原始圖像中嵌入水印信息的比特數(shù)來衡量。但是,目前存在的一些可逆水印算法在嵌入容量和不可見性兩個方面不能兼顧,有時只能以犧牲圖像質(zhì)量為代價來獲取較大的嵌入容量,或者為了獲得較好的圖像質(zhì)量,但嵌入容量很小。
目前,國內(nèi)外對可逆圖像水印算法的研究也有很多,大體上可分為四類:基于差值擴展的可逆水印算法,是利用像素之間的差異值來取代圖像的特征,然后通過擴展這些值的最不重要位來實現(xiàn)水印的嵌入,最早是由Tian[3]提出來的;基于壓縮的可逆數(shù)字水印算法,通過壓縮要嵌入的數(shù)據(jù),減少了水印信息嵌入容量,通常只能做認證之用,比較好的算法是由MEHMET Utku Celik[4]提出來的;基于頻域的可逆圖像水印方案,對原始圖像進行小波變換后,分別把水印信息嵌入在得到的三個高頻系數(shù)中,比較好的算法是由Xuan[5]提出的;基于直方圖平移的可逆水印算法,利用直方圖平移的思想來改變像素值,實現(xiàn)水印信息的嵌入,如文獻[6]提出一個基于三像素塊差值的無損數(shù)據(jù)隱藏方案,對圖像進行分塊后,找出最大的差值,然后改變像素塊中的像素來嵌入水印信息,在嵌入水印的過程中要考慮到像素是否溢出,對于附加信息也是分成幾個不同的區(qū)域進行嵌入,雖然嵌入容量有了很大的提高,但是圖像的PSNR比較低,嵌入和提取的規(guī)則過于復雜。文獻[7]提出一種基于雙層嵌入的可逆灰度圖像水印算法。利用直方圖平移的思想來解決嵌入時可能出現(xiàn)的溢出問題,計算每一個分塊兩像素的差值,選擇差值直方圖最大的峰值點來嵌入水印信息和互補嵌入的方法來提高嵌入容量。雖然該算法在水印嵌入和提取之后嵌入容量和PSNR較好,但是在嵌入和提取的規(guī)則中可以看到,只在塊的第一個像素嵌入水印信息,同時平移像素會改變沒有嵌入水印信息的像素,這樣做沒有必要,而且會影響圖像的質(zhì)量,除此之外,嵌入的水印信號是隨機生成的二值水印序列,沒有實際的意義。文獻[8]也是利用了分塊和直方圖平移的思想。文獻[9-11]利用圖像相鄰像素點差值直方圖的特征來嵌入水印信息。由于此算法選擇在最大峰值點出嵌入水印信息,當在選擇多層嵌入時,由于固定的峰值點,所以算法的性能下降很快。
在以上問題的基礎上,本文針對水印的嵌入容量和不可見性,利用雙層嵌入的方法,將原始圖像劃分成不同類型的水平和垂直分塊,求出三種分塊類型中的最大峰值對應的絕對差值,由于像素的LSB位對圖像的質(zhì)量影響較小,因此選擇將水印信息嵌入在差值對應塊的第一個像素和第三個像素的LSB中,同時記錄所在塊的索引。嵌入的水印信息是有實際意義的水印圖像二值化生成的0和1序列,如果嵌入的水印信息和像素的最低有效位相等,則此像素并不會發(fā)生改變,從而保證了圖像的質(zhì)量。采用多層嵌入和求像素的絕對差值來嵌入水印信息,保證了水印信息的嵌入容量。仿真試驗表明:本方案算法簡單,不僅能夠?qū)崿F(xiàn)原始圖像的無損恢復,而且在水印嵌入容量和不可見性方面達到了很好的效果。
1.1 劃分圖像分塊類型
為了在保證圖像質(zhì)量的前提下嵌入更多的水印信息,對原始圖像進行分塊,根據(jù)最大峰值對應的差值對每一塊進行嵌入操作。按照水平和垂直的方向?qū)υ紙D像進行三種不同類型的分塊,分塊的大小分別是1×3和3×1。對于塊的類型,Type=0,表示分塊是從一行或一列的第一個像素開始逐次分塊,如圖1(a)所示;Type=1,表示分塊是從一行或者一列的第二個像素開始逐次分塊,如圖1(b)所示;Type=2,表示分塊是從一行或一列的第三個像素開始逐次分塊,如圖1(c)所示。具體的分塊類型如圖1所示。
圖1 圖像分塊類型
1.2 水印的嵌入
水印的嵌入首先按照圖1所示的類型對原始圖像進行分塊,計算三種分塊類型中差值的最大峰值點,按照最大峰值點對差值進行分組,分組之后與最大峰值點進行比較,若是與最大峰值點相等,則表示是要嵌入水印信息的像素,按照水平嵌入算法進行水印信息的嵌入,記錄此塊的索引,在嵌入水印信息之前,記錄將要嵌入水印的像素的LSB,作為密鑰進行保存;在水平嵌入的基礎上,對水印圖像按照與水平分塊同樣的方法進行垂直水印的嵌入,最終得到含水印的圖像,總體的嵌入流程如圖2所示。
圖2 水印的嵌入總體流程圖
本文的水印信號采用有實際意義的水印圖像二值化生成的0、1序列作為將要嵌入的水印信息,大小采用M×M的二值圖像,同時把二值水印序列由二維降成一維的形式,用W2B表示,如式(1)所示,便于后續(xù)水印的嵌入。
W2B={W2B(i),1≤i≤M×M}
(1)
為了使嵌入的過程與思路清晰明了,水印信息的嵌入分別從水平嵌入和垂直嵌入兩個方面來具體介紹。
1) 水平嵌入
按照圖2所示的流程圖對原始圖像進行水平分塊操作,求取差值特征,然后進行水印的嵌入操作,具體的步驟如下:
步驟1 按照圖1所示圖像的三種類型的分塊方法,對大小是W×W的灰度圖像進行互不重疊的大小為1×3的分塊,設第k塊用Blockk(pixel1,pixel2,pixel3)來表示,其中,pixel1、pixel2、pixel3表示塊k中的連續(xù)的三個像素值,分別計算第一個像素pixel1(Blockk(1))和第二個像素pixel2(Blockk(2)),第二個像素pixel2(Blockk(2))和第三個像素pixel3(Blockk(3))的絕對差值,如式(2)和式(3)所示;同時保存絕對差值。
(2)
(3)
步驟2 分別求出三種類型水平分塊差值的最大峰值,對三個峰值進行比較,同時記錄最大的峰值對應的差值和水平分塊的類型,分別用MP和Type表示。
步驟3 根據(jù)MP和Type分別對第1步生成的差值集合按照每塊中第一個差值和第二個差值進行分組,分別用firstValue和secondValue來表示;依次遍歷兩個差值集合,判斷集合中的差值是否與最大峰值對應的差值相等,若相等,表示是要嵌入水印的塊,同時記錄此塊的索引,分別用集合firstindex和secondindex來存儲;反之,則不記錄塊索引,所記錄塊的索引作為密鑰傳送到接收方。
步驟4 若第一個差值與最大峰值所對應的差值相等,則在塊的第一個像素的LSB嵌入1比特水印信息,同時在嵌入之前記錄此像素的LSB,用bitSave集合來存儲,便于后面原始圖像的恢復;同理,若第二個差值與最大峰值對應的差值相等,則在塊的第三個像素的LSB嵌入1比特水印信息,同時在嵌入之前記錄此像素的LSB,用bitSave集合來表示。嵌入規(guī)則如式(4)和式(5)所示:
(4)
(5)
其中,W2B(i)表示的是二值水印序列中的一位水印比特,bitSave作為密鑰信息發(fā)送給接受方。
步驟5 為了減少密鑰的傳送,把以上步驟中記錄的分塊類型用附加信息的形式進行存儲。在本文中附加信息的長度總共占12位,其中標志附加信息T的長度占據(jù)8位,水平分塊的類型Type占據(jù)2位,垂直分塊的類型Type1占據(jù)2位。把T,Type和Type1轉(zhuǎn)換成二進制后按照T--->Type--->Type1的順序?qū)Ω郊有畔⑦M行存儲。附加信息將會在垂直分塊中作為秘密信息進行嵌入。
2) 垂直嵌入
按照圖2所示的流程圖對原始圖像進行垂直分塊操作,求取差值特征,然后進行水印的嵌入操作,具體的步驟如下:
(6)
(7)
步驟2 分別求出三種類型垂直分塊差值的最大峰值,對三個峰值進行比較,同時記錄最大的峰值對應的差值和垂直分塊的類型,分別用MP1和Type1表示。
步驟3 根據(jù)MP1和Type1分別對第1步生成的差值集合按照每塊中第一個差值和第二個差值進行分組,分別用firstValue1和secondValue1來存儲;依次遍歷兩個差值集合,判斷集合中的差值是否與最大峰值對應的差值相等,若相等,表示是要嵌入水印的塊,同時記錄此塊的索引,分別用firstindex1和secondindex1來存儲;反之,則不記錄塊索引。所記錄塊的索引作為密鑰信息傳送到接收方。
步驟4 采用和水平嵌入相同的嵌入規(guī)則,若第一個差值與最大峰值所對應的差值相等,則在塊的第一個像素的LSB嵌入1比特水印信息,在嵌入之前記錄此像素的LSB,用bitSave1集合來存儲;同理,若第二個差值與最大峰值對應的差值相等,則在塊的第三個像素的LSB嵌入1比特水印,在嵌入之前記錄此像素的LSB,用bitSave1集合來存儲。嵌入規(guī)則如式(8)和式(9)所示:
(8)
(9)
其中,W2B′(i)表示的是二值水印序列中的一位水印比特,bitSave1作為密鑰信息發(fā)送給接收方。
步驟5 根據(jù)水平分塊中存儲的附加信息,將第1步中提取像素的最低有效位用附加信息替換,得到最終含水印圖像。
根據(jù)水印嵌入的總體流程圖(圖2),本文在Matlab環(huán)境下對水印的嵌入算法進行了編程實現(xiàn),其中水平嵌入(以Type=0為例)過程的算法核心編程抽象描述及注釋如下:
1: read the source image I1; %大小是wxw
2: if type==0
%判斷分塊類型
3: for i=1:w
4: for j=1:3:w-2
5: Block=int32(I1(i,j:j+2));
%對圖像分塊,大小為1×3
6: calculate D1 using formula (2);
%計算第一個差值
7: if D1==MP
%如果差值等于峰值MP
8: get and save the LSB then embed the watermark using formula(4);
%獲取和保存LSB,然后嵌入水印信息
9: end
10: calculate D2 using formula (3);
%計算第二個差值
11: if D2==MP
%如果差值等于峰值MP
12: get and save the LSB then embed the watermark using formula (5);
%獲取和保存LSB,然后嵌入水印信息
13: end
14: end
15: end
16:end
17:output watermark image;
%輸出含水印圖像
接收方根據(jù)發(fā)送方秘密傳送過來的密鑰信息進行水印信號的提取以及原始圖像的恢復。密鑰信息分別為水平分塊中第一個和第二個差值集合中嵌入水印信息的塊的索引(firstindex和secondindex)、垂直分塊中第一個和第二個差值集合中嵌入水印信息的塊的索引(firstindex1和secondindex1)以及水平和垂直嵌入水印信息的像素最低有效位集合(bitSave和bitSave1)??傮w的流程如圖3所示。
圖3 水印的提取與圖像的恢復流程圖
水印提取和原始圖像恢復的具體步驟:
步驟1 首先提取第1列的前8個像素,解碼得到附加信息的長度,按照附加信息的長度提取灰度圖像像素的LSB,得到相應的附加信息,由十進制轉(zhuǎn)換成二進制得到水平分塊的類型Type3,垂直分塊的類型Type4。
步驟2 第1列不提取水印信息,根據(jù)Type4對應的分塊類型對原始圖像從第2列進行3×1的垂直分塊,當所分塊的索引與密鑰中的索引值相等時,就從相應像素的LSB位提取一位水印信息,同時將此像素的LSB位用密鑰bitSave1中保存像素的LSB位進行替換,得到恢復的圖像;不相等時就跳過,不對水印圖像做任何操作。分塊的索引用Blockindex來表示,具體按照如式(10)和式(11)的規(guī)則進行水印的提取和原始圖像的恢復。
ifBlockindex=firstindex1(p)
(10)
ifBlockindex=firstindex1(q)
(11)
其中,對于塊索引Blockindex每循環(huán)一次就會增加1;p、q、index表示的是集合中的索引值,當一個條件滿足后,他們都會自動增加1,water2表示提取出的水印信息。
步驟3 在步驟2提取出的水印信號中,取出與附加信息長度相等的水印信息,并將此附加信息替換原來提取像素的最低有效位,得到垂直恢復后的圖像。
步驟4 根據(jù)Type3對應的分塊類型對步驟3中恢復之后的圖像進行1×3的水平分塊,當所分塊的索引與密鑰中的索引值相等時,就從相應像素的LSB位提取一位水印信息,同時將此像素的LSB位用密鑰bitSave中保存的像素的LSB位進行替換,得到恢復的圖像;不相等時就跳過,不對水印圖像做任何操作。分塊的索引用Blockindex來表示。具體按照如式(12)和式(13)的規(guī)則進行水印的提取和原是圖像的恢復。
ifBlockindex=firstindex(p)
(12)
ifBlockindex=firstindex(q)
(13)
其中,對于塊索引Blockindex每循環(huán)一次就會增加1,p,q,index表示的是集合中的索引值,當每一個條件滿足后,他們都會自動增加1,water1表示提取出的水印信息。
步驟5 從垂直提取的水印信息中去除附加信息后,組合步驟3剩余的水印信息和步驟4中提取出的水印信息,得到最后提取出的水印信號。
步驟6 把提取出的二值水印信息序列轉(zhuǎn)換成二值水印圖像,可以得到原始的水印圖像。
利用接收端收到的密鑰信息可以進行水印的提取,本文在Matlab環(huán)境下實現(xiàn)了水印圖像的提取和原始圖像的恢復算法,分塊仍然按照圖1所示的類型進行,算法的核心編程抽象描述以及注釋如下(以垂直提取Type4=0為例來說明):
1:read watermark image I2;
%讀取水印圖像
2:extract secret key and decode according to Step 1;
%根據(jù)步驟1 提取密鑰并解碼
3:Blockindex=0;
%用于記錄分塊的索引
4:
if typ4==0
5: for j=(c+1):W
%c表示前c列不提取水印信息
6: for i=1:3:W-2
7: Block=int32(I2(i,j:j+2));
%對圖像分塊,大小為3×1
8: Blockindex==Blockindex+1;
%用于記錄分塊的索引
9: if Blockindex==firstindex1(p)
%如果塊索引與第一個密鑰中的索引值相等
10: get and save the LSB then recover the LSB using formula (10);
%獲取和保存LSB,然后恢復最低位
11: end
12: if Blockindex==secondindex1(q)
%如果塊索引與第二個密鑰中的索引值相等
13: get and save the LSB then recover the LSB using formula (11);
%獲取和保存LSB,然后恢復最低位
14: end
15: end
16: end
17:end
18:output image after vertical recovery;
本文主要從水印嵌入容量和不可見性兩個方面來客觀衡量可逆水印算法的性能。利用Matlab R2014a在Windows操作系統(tǒng)環(huán)境下進行仿真測試,在測試過程中,從標準灰度圖像庫中分別采用大小為512×512和256×256的經(jīng)典灰度圖像(Lena、Pepper、Airplane、Boat)進行實驗,如圖5(a-h)所示;它們的紋理復雜程度不同,其中,Lena圖像和Airplane圖像屬于紋理簡單圖像,Pepper和Boat圖像屬于紋理復雜的圖像。水印圖像為有意義的大小為512×512的二值圖像,如圖4(a)所示。
用提取前后載體圖像的歸一化系數(shù)(NC)來衡量算法的可逆性,公式如下所示:
(14)
其中,w1和w2分別表示原始載體和恢復后的載體,l1和l2表示提取前后載體的大小。
3.1 可逆性測試
本文首先對可逆性進行了測試,通過比較嵌入和提取水印前后載體圖像之間的NC值來驗證算法的可逆性。表1給出了可逆性測試結(jié)果。從中可以看出原始載體圖像和提取水印后恢復的載體圖像的歸一化系數(shù)NC都為1,說明了算法的可逆性,即提取水印后恢復的圖像和原始圖像是一樣的。從恢復后的二值水印圖像和原始水印圖像對比中可以看出,兩者沒有任何區(qū)別(如圖4所示)。
表1 本文算法可逆性測試
圖4 二值水印圖像
3.2 不可見性和水印容量測試
接下來從水印的不可見性、水印的嵌入容量以及與相關文獻算法的對比來進行說明。首先,從不可見性方面來進行分析,其一,從原始圖像和含水印圖像(如圖5所示)中可以看出,嵌入水印前后圖像從主觀上來看,沒有任何的不同,用肉眼幾乎是看不到圖像中含有水印信息,說明水印不可見性很好。其二,從峰值信噪比(PSNR)上來看,本文算法在水平方向上進行水印的嵌入時,對于Lena圖像來說,其PSNR為59.369 3dB,Pepper圖像的PSNR為58.317 7dB,Airplane圖像的PSNR是59.382 8dB,Boat圖像的PSNR是59.231 8dB,PSNR都在58dB以上,再從垂直方向上水印嵌入的峰值信噪比來看,其PSNR都在55dB以上。與其他同類算法相比,本文的峰值信噪比都高于其他算法,如表2和表3所示,從這幾個方面可以看出,本文算法不可見性很好。
圖5 原始圖像與含水印圖像
其次,從水印的嵌入容量上來看,由于所采用的載體圖像的紋理不同,所以嵌入的水印信息的容量也是不一樣的。但是,無論對于哪一種載體圖像,不管是在水平方向上進行嵌入,還是在垂直方向上進行嵌入,本文算法的嵌入容量都明顯大于文獻[7]算法的嵌入容量,最終從水平和垂直方向上嵌入水印比特數(shù)的總量上可以看出,本文總的嵌入容量高于文獻[7]算法,表2、表3給出了本文算法和文獻[7]的對比情況。本文和文獻[6]也進行了對比,雖然低于文獻[6]三像素差值算法的嵌入水印總?cè)萘浚窃赑SNR上遠遠高于文獻[6]算法,如表4所示。
表2 水平嵌入后圖像的PSNR和嵌入容量
表3 垂直嵌入后圖像的PSNR和嵌入容量
表4 與三像素差值算法在總?cè)萘亢蚉SNR上的比較
為了說明不同的圖像由于大小、紋理不同而對嵌入的水印容量的影響,本文給出了大小為256×256的一組圖像的實驗結(jié)果,如表5所示。
表5 256×256圖像在本算法中的PSNR和總嵌入容量
從表5中的數(shù)據(jù)與表4中的數(shù)據(jù)對比中可以看出, 512×512圖像和256×256圖像在嵌入的水印總?cè)萘可嫌泻艽蟮牟顒e。另外對于紋理復雜的圖像,如Pepper和Boat圖像,在相同大小情況下,其水印嵌入的總?cè)萘肯鄬y理簡單圖像來說較大。
最后本文給出了在相同嵌入水印容量的情況下,本文算法和文獻[7]的對比情況。由于文獻[7]產(chǎn)生的二值水印序列是隨機產(chǎn)生,為了使測試環(huán)境一樣,利用與本文生成二值水印序列相同的方法產(chǎn)生文獻[7]要嵌入的水印序列。在同樣的測試環(huán)境下,兩種算法在相同的嵌入容量下,對水平嵌入和垂直嵌入水印信息后本文算法與文獻[7]算法的PSNR的大小進行了測試,其算法性能對比的結(jié)果如圖6和圖7所示。從水平嵌入和垂直嵌入的算法性能對比圖中可以看出,兩種算法在相同的嵌入容量下,雖然隨著嵌入容量增加,峰值信噪比不斷降低,但是總體上來看,本文算法的PSNR都明顯高于文獻[7]中的PSNR。
圖6 水平嵌入后算法的性能對比圖
圖7 垂直嵌入后算法的性能對比圖
總之,不管是從圖像的不可見性、嵌入容量還是與其他算法對比的結(jié)果中可以看出,本文算法采用對原始圖像進行不同的類型分塊,求三個像素的絕對差值,利用絕對差值求最大峰值點和雙層嵌入水印信息的方法,從而使嵌入容量明顯高于文獻[7]的算法。這是因為這些算法采用的是固定分塊類型,求取每兩個像素差值的最大峰值點嵌入水印信息,因此限制了水印的嵌入容量。另外,本文算法采用的二值水印圖像并不是隨機生成的,而是由有意義的圖像二值化生成的水印序列,這樣能夠保證產(chǎn)生的水印序列是有意義的水印序列。由于像素的最低有效位對圖像的影響較小,同時本文算法采用把水印信息嵌入在像素的LSB中,當嵌入水印信息位與像素的最低有效位一致時,并不改變像素的值,從而保證了圖像的質(zhì)量,所以在峰值信噪比上明顯高于文獻[7]。文獻[7]中的算法在嵌入水印的過程中要對溢出的像素進行處理,利用直方圖平移的思想嵌入水印信息,對沒有嵌入水印信息的像素有所改變,進而影響了圖像的質(zhì)量。另外,從本文算法與文獻[7]的對比圖中可以看出,在相同的嵌入容量下,本文算法峰值信噪比明顯高于文獻[7]中的算法。和文獻[6]三像素差值的無損數(shù)據(jù)隱藏算法相比,盡管嵌入容量偏低,但是PSNR很高。當然,本文算法在水印信息提取的過程中和其他算法相比更簡單,提取時不需要載體圖像,只需知道提取出的密鑰和接收的密鑰就可以對原始圖像進行無損恢復。
本文所提出的多層可逆水印算法,利用三像素塊絕對差值把二值化生成的水印序列分層嵌入在像素的最低有效位中。仿真實驗結(jié)果表明:采用雙層嵌入的思想,不僅使嵌入容量有了很大的提高,同時嵌入在像素的最低有效位對圖像的不可見性也有了極大的改善,兼顧了圖像水印不可見性和嵌入容量兩個方面,能夠?qū)崿F(xiàn)對水印的盲提取和原始圖像的無損恢復,從而能夠更好地實現(xiàn)對圖像的版權(quán)保護和內(nèi)容完整性的認證。該方法可用于法律、醫(yī)療領域中圖像的信息隱藏和載體圖像無損恢復,能夠很好地解決圖像中信息嵌入容量小和無損恢復原始圖像的問題。
[1] 尚冠宇,郭凡新,鄧小鴻.基于采樣預測和差值變換的醫(yī)學圖像可逆水印算法[J].計算機應用與軟件,2012,29(6):22-24.
[2] 高海波,鄧小鴻,陳志剛.基于可逆可見水印的醫(yī)學圖像隱私保護算法[J].計算機應用,2014,34(1):119-123,157.
[3]TianJun.ReversibleDataEmbeddingUsingaDifferenceExpansion[J].IEEETransactionsonCircuitsandSystemsforVedioTechnology,2003,13(8):890-896.
[4]MehmetUtkuCelik,GauravSharma,AhmetMuratTekalp,etal.LosslessGeneralized-LSBDataEmbedding[J].IEEETransactionsonmageProcessing,2005,14(2):253-266.
[5]XuanGuorong,YangChenyun,ZhenYizhan.ReversibleDataHidingBasedonWaveletSpreadSpectrum[J].IEEE6thWorkshoponMultimediaSignalProcessing,2004:211-214.
[6]ChingChiuanLin,NienLinHsueh.Alosslessdatahidingschemebasedonthree-pixelblockdifference[J].PatternRecognition,2008,4:1415-1425.
[7] 熊祥光,韋立.基于直方圖平移和互補嵌入的可逆圖像水印方案[J].計算機工程,2015,41(8):180-185.
[8] 鄭淑麗,邢慧芬,王美玲,等.基于直方圖平移和差分直方圖的可逆水印[J].系統(tǒng)仿真學報,2013,11(8):2717-2722.
[9] 文家福,王嘉禎,張政保,等.一種基于可逆數(shù)字水印的圖像認證方案[J].計算機應用與軟件,2010,27(4):121-123.
[10] 王繼軍.圖像插值空間大容量可逆數(shù)字水印算法[J].中國圖像圖形學報,2014,19(4):527-533.
[11] 黃志強,王美清.基于鄰域預測差值直方圖平移的可逆信息隱藏[J].計算機工程,2014,40(4):117-119.
[12] 宋偉,侯建軍,李趙紅.一種基于塊分類和差值擴展的可逆數(shù)據(jù)隱藏算法[J].中南大學學報:自然科學版,2011,42(3):694-702.
[13] 張秋余,孫媛,晏燕.基于分塊自適應壓縮感知的可逆水印算法[J].電子與信息學報,2013,35(4):798-804.
[14] 劉芳,汪玉凱.一種基于差值直方圖平移的多層可逆水印算法[J].計算機應用與軟件,2014,31(1):304-307.
[15] 皇甫大恩,劉曉斐.基于小波域的篡改定位可逆水印算法[J].計算機工程與設計,2014,35(5):1584-1587.
[16] 高曉琴,晏勇,唐琦.基于可逆數(shù)字水印的圖像認證新方法[J].西南師范大學學報:自然科學報,2015,40(7):120-123.
[17] 姜傳賢,楊鐵軍,董明剛,等.基于線性空間隱藏模型的可逆圖像水印算法[J].自動化學報,2014,40(10):2325-2333.
MULTILAYER REVERSIBLE IMAGE WATERMARK ALGORITHM BASED ONTHREE-PIXEL BLOCK DIFFERENCES
Qian Huashan Tian Lihua Li Chen*
(SchoolofSoftwareEngineering,Xi’anJiaotongUniversity,Xi’an710049,Shaanxi,China)
The requirements of digital image reversible watermarking algorithms become exigent in watermark embedding capacity and imperceptibility. In order to meet the requirements, a multilayer reversible image watermark algorithm based on three-pixel block differences is proposed. Firstly, the original image is divided into horizontal blocks according to three types. The absolute difference of adjacent three-pixel block is calculated simultaneously, then they should be grouped so that the maximum peak point of horizontal blocks can be obtained. The binary watermark is embedded in LSB of the first pixel and the third pixel. At the same time, the index of the block with the maximum peak point and LSB of embedding watermark is recorded. Then, the original image is divided into three types of vertical blocks, and watermark is embedded in the same way. Simulation result shows that the proposed algorithm has made a significant improvement in the aspects of invisibility and watermark capacity compared with other similar algorithms.
Image watermark Reversible watermark Pixel block Absolute difference LSB
2016-02-29。國家自然科學
61403302);西安交通大學科研業(yè)務
基金項目(XJJ2016029)。錢華山,碩士生,主研領域:數(shù)字圖像水印。田麗華,高工。李晨,講師。
TP3
A
10.3969/j.issn.1000-386x.2017.03.046