熊祥光,陳 熙,曹永鋒,歐衛(wèi)華,劉 彬,夏道勛
貴州師范大學(xué) 大數(shù)據(jù)與計(jì)算機(jī)科學(xué)學(xué)院,貴陽 550001
無損信息隱藏技術(shù)采用無損的方式將待隱藏的秘密數(shù)據(jù)隱藏在載體信號(hào)中,當(dāng)需要時(shí)不僅可從隱秘載體信號(hào)中提取隱藏的數(shù)據(jù),而且同時(shí)能完全恢復(fù)得到原始的載體信號(hào),對(duì)失真敏感領(lǐng)域非常有用[1]。目前,已提出一系列無損信息隱藏算法,其大致可歸為如下的3類:基于差值擴(kuò)展[2-5]、基于直方圖平移[6-9]和插值技術(shù)[10-19]。一般地,采用差值擴(kuò)展和直方圖平移的無損信息隱藏算法的隱秘圖像質(zhì)量都較好,但從單重隱藏性能來看,秘密數(shù)據(jù)隱藏容量很難達(dá)到1 bit/pixel及以上,而基于插值技術(shù)的無損信息隱藏算法與基于差值擴(kuò)展和直方圖平移的無損信息隱藏算法從原理上來說是不同的,該類算法直接在插值像素上進(jìn)行,其主要思想是在圖像插值階段先對(duì)原始輸入圖像進(jìn)行下采樣(事實(shí)上不進(jìn)行下采樣操作也是可行的,進(jìn)行下采樣的主要目的僅是為了方便評(píng)估經(jīng)圖像插值和秘密數(shù)據(jù)隱藏操作后隱秘圖像的質(zhì)量),之后采用某種圖像插值算法生成一幅插值圖像(大小與原始輸入圖像相同)作為待隱藏秘密數(shù)據(jù)的載體圖像;在隱藏秘密數(shù)據(jù)過程中,僅在插值圖像的部分像素中隱藏秘密數(shù)據(jù),在隱秘圖像失真不可感知的條件下算法的秘密數(shù)據(jù)隱藏容量往往較大[10]。之后,文獻(xiàn)[11]對(duì)文獻(xiàn)[10]進(jìn)行了改進(jìn),在相同條件下,可以隱藏更多的秘密數(shù)據(jù),但這兩種算法存在一個(gè)缺陷,就是僅當(dāng)兩個(gè)像素差值的絕對(duì)值不小于2時(shí)才能隱藏秘密數(shù)據(jù),當(dāng)差值為0或1時(shí)不能隱藏秘密數(shù)據(jù),導(dǎo)致這兩種算法的秘密數(shù)據(jù)隱藏容量受到影響。事實(shí)上,當(dāng)兩個(gè)像素差值為0或1時(shí)也是可以隱藏秘密數(shù)據(jù)的。文獻(xiàn)[12]僅在插值圖像部分像素中的每個(gè)像素隱藏1 bit秘密數(shù)據(jù),與未隱藏秘密數(shù)據(jù)的插值圖像相比,隱秘圖像的質(zhì)量較好,但秘密數(shù)據(jù)隱藏容量有限,最大僅為0.75 bit/pixel。文獻(xiàn)[13]在文獻(xiàn)[10-12]的基礎(chǔ)上進(jìn)行了改進(jìn),算法的秘密數(shù)據(jù)隱藏容量和隱秘圖像質(zhì)量都得到了提高,但是該算法的秘密數(shù)據(jù)隱藏容量和隱秘圖像質(zhì)量還有進(jìn)一步提升的空間。文獻(xiàn)[14-17]也是文獻(xiàn)[10]的一種改進(jìn),秘密數(shù)據(jù)隱藏容量有了提高,但是通過實(shí)驗(yàn)發(fā)現(xiàn),這四種算法都可能出現(xiàn)溢出現(xiàn)象。對(duì)于8 bit的灰度圖像來說,采用這四種算法生成的隱秘圖像像素的灰度值有時(shí)會(huì)出現(xiàn)溢出,使在秘密數(shù)據(jù)提取階段算法不能正確地提取隱藏的秘密數(shù)據(jù)。文獻(xiàn)[18-19]也分別提出基于插值技術(shù)的無損信息隱藏算法,但是這兩種算法的秘密數(shù)據(jù)隱藏方式與文獻(xiàn)[10-17]是不同的。實(shí)驗(yàn)結(jié)果表明,這兩種算法的秘密數(shù)據(jù)隱藏容量和隱秘圖像質(zhì)量都較好。
為了進(jìn)一步提高基于插值技術(shù)無損信息隱藏算法的秘密數(shù)據(jù)隱藏容量、隱秘圖像質(zhì)量和解決像素溢出問題,本文提出一種自適應(yīng)的大容量無損信息隱藏算法,其創(chuàng)新之處主要是:(1)提出一種改進(jìn)的圖像插值算法,提高了插值圖像的質(zhì)量;(2)對(duì)插值圖像中的待隱藏秘密數(shù)據(jù)像素,算法能自適應(yīng)計(jì)算各個(gè)像素能隱藏的最大數(shù)據(jù)容量,使算法的秘密數(shù)據(jù)隱藏容量得到進(jìn)一步的提高;(3)設(shè)計(jì)了新的秘密數(shù)據(jù)隱藏算法和根據(jù)隱秘圖像與原始輸入圖像對(duì)應(yīng)位置上像素差值絕對(duì)值的大小關(guān)系來自適應(yīng)隱藏秘密數(shù)據(jù),提高了隱秘圖像質(zhì)量和解決了像素溢出問題。在兩個(gè)標(biāo)準(zhǔn)測(cè)試圖像數(shù)據(jù)庫(kù)上進(jìn)行了大量的仿真實(shí)驗(yàn),結(jié)果表明采用本文算法生成的隱秘圖像不會(huì)出現(xiàn)像素溢出現(xiàn)象,可正確地提取在數(shù)據(jù)隱藏階段隱藏的秘密數(shù)據(jù)。與同類算法相比,本文算法的秘密數(shù)據(jù)隱藏容量和隱秘圖像質(zhì)量都有了較大的提升。
基于插值技術(shù)的無損信息隱藏算法主要包含圖像插值和秘密數(shù)據(jù)隱藏兩個(gè)過程,其圖像插值過程示意圖如圖1所示[10]。
若原始輸入圖像X的大小為w×h,根據(jù)圖1的圖像插值過程示意圖,本文提出的圖像插值算法如下:
步驟1讀取原始輸入圖像X,對(duì)其進(jìn)行下采樣操作,生成原始圖像Y,相應(yīng)的下采樣操作可表示為:
其中,1≤p≤w/2,1≤q≤h/2。需要注意的是,進(jìn)行下采樣操作僅僅是為了便于測(cè)試經(jīng)圖像插值和秘密數(shù)據(jù)隱藏操作后的隱秘圖像與原始輸入圖像X的失真情況。在實(shí)際應(yīng)用時(shí),可直接將輸入圖像X作為原始圖像Y進(jìn)行插值處理,此時(shí)生成的插值圖像I大小為輸入圖像X的4倍。
Fig.1 Schematic diagram of image interpolation圖1 圖像插值過程示意圖
步驟2根據(jù)圖1和步驟1得到的原始圖像Y,生成插值圖像I的算法如下:
步驟3對(duì)于插值圖像I的邊界像素,采用周圍的像素填充即可。
定義1將插值圖像I中的像素劃分為基準(zhǔn)像素和非基準(zhǔn)像素兩類。對(duì)于如圖1所示的圖像,“”位置上的像素稱為基準(zhǔn)像素,在圖像插值和秘密數(shù)據(jù)隱藏過程中都不會(huì)發(fā)生改變,也就是說它與輸入圖像對(duì)應(yīng)位置上像素的灰度值相同。除“”位置上的像素外,其他像素稱為非基準(zhǔn)像素。在數(shù)據(jù)隱藏過程中,即在該類像素中隱藏秘密數(shù)據(jù)。
定義2對(duì)插值圖像I,設(shè)基準(zhǔn)像素為I(s,t),與該基準(zhǔn)像素相連的非基準(zhǔn)像素I(u,v)與選擇的基準(zhǔn)像素I(s,t)差值的絕對(duì)值可表示為:
其中,I(u,v)∈{I(s,t+1),I(s+1,t),I(s+1,t+1)},分別表示與基準(zhǔn)像素I(s,t)相連的水平方向、垂直方向和對(duì)角方向上的3個(gè)非基準(zhǔn)像素,表示求絕對(duì)值運(yùn)算。非基準(zhǔn)像素I(u,v)能隱藏的秘密數(shù)據(jù)量大小可表示為:
定理1對(duì)非基準(zhǔn)像素I(u,v),要使在秘密數(shù)據(jù)隱藏過程中它隱藏的數(shù)據(jù)容量nuv達(dá)到最大,則它與選擇的基準(zhǔn)像素I(s,t)的差值的絕對(duì)值duv就要取得最大值。
證明從式(8)可以看出,對(duì)于非基準(zhǔn)像素I(u,v),它能隱藏的秘密數(shù)據(jù)容量nuv為1或,與選擇基準(zhǔn)像素的差值duv大小相關(guān)。duv與nuv的關(guān)系如圖2所示。從圖2可以看出,差值duv和隱藏?cái)?shù)據(jù)容量nuv雖不是嚴(yán)格的遞增關(guān)系(因在計(jì)算各個(gè)非基準(zhǔn)像素的隱藏容量nuv時(shí),對(duì)其進(jìn)行了向下取整運(yùn)算),但要使非基準(zhǔn)像素隱藏的數(shù)據(jù)容量nuv達(dá)到最大值,則在選擇差值duv時(shí)就要選擇最大的(若duv不是選擇最大值,則nuv不一定能取得最大值)。
Fig.2 Relationship between difference and amount of data that can be hidden圖2 差值與可隱藏?cái)?shù)據(jù)量之間的關(guān)系
從式(8)和定理1可知,要使非基準(zhǔn)像素能隱藏最多的秘密數(shù)據(jù),非基準(zhǔn)像素與選擇的基準(zhǔn)像素之間的差值就得最大。經(jīng)圖像插值運(yùn)算后在非基準(zhǔn)像素一定的條件下,要使它們之間的差值最大,選擇的基準(zhǔn)像素只能是所有基準(zhǔn)像素的最大值或最小值。若未對(duì)插值圖像進(jìn)行分塊,則插值圖像中所有基準(zhǔn)像素的最大值或最小值都是各個(gè)非基準(zhǔn)像素的候選基準(zhǔn)像素,在此情況下秘密數(shù)據(jù)隱藏容量應(yīng)該取得最大值,但是隱秘圖像質(zhì)量失真也較嚴(yán)重。為了平衡秘密數(shù)據(jù)隱藏容量大小和隱秘圖像質(zhì)量間的關(guān)系,利用圖像鄰域像素的相關(guān)性,對(duì)插值后生成的圖像I進(jìn)行大小為m×m的分塊處理。在秘密數(shù)據(jù)隱藏和提取過程中都是以各個(gè)獨(dú)立的分塊作為處理單元。大小為2×2、3×3和5×5的分塊示意圖如圖3所示。在圖3中,對(duì)于大小為2×2的分塊,僅包含一個(gè)基準(zhǔn)像素,對(duì)非基準(zhǔn)像素計(jì)算差值時(shí),該基準(zhǔn)像素即為被選擇的基準(zhǔn)像素;對(duì)于大小為3×3的分塊,包含4個(gè)基準(zhǔn)像素,對(duì)非基準(zhǔn)像素計(jì)算差值時(shí),4個(gè)基準(zhǔn)像素的最大值或最小值被選擇作為各個(gè)非基準(zhǔn)像素的基準(zhǔn)像素;對(duì)于大小為5×5的分塊,包含9個(gè)基準(zhǔn)像素,對(duì)非基準(zhǔn)像素計(jì)算差值時(shí),9個(gè)基準(zhǔn)像素的最大值或最小值被選擇作為各個(gè)非基準(zhǔn)像素的基準(zhǔn)像素。需要注意的是,在對(duì)插值圖像進(jìn)行分塊時(shí)應(yīng)采用重疊的分塊方式,且在秘密數(shù)據(jù)隱藏過程中每次僅對(duì)分塊中與左上角基準(zhǔn)像素相連的3個(gè)非基準(zhǔn)像素進(jìn)行操作。
Fig.3 Schematic diagram of block圖3 分塊示意圖
定義3對(duì)于非基準(zhǔn)像素I(u,v),從待隱藏的秘密數(shù)據(jù)中提取nuvbit的二進(jìn)制數(shù)據(jù),并將其轉(zhuǎn)換為十進(jìn)制數(shù)buv,隱藏秘密數(shù)據(jù)的公式可表示為:
或
其中,round(·)表示四舍五入運(yùn)算,非基準(zhǔn)像素隱藏秘密數(shù)據(jù)后的像素灰度值S(u,v)=S1(u,v)或S(u,v)=S2(u,v)。
定理2在秘密數(shù)據(jù)隱藏過程中,無論是采用式(9)或式(10)隱藏?cái)?shù)據(jù),在秘密數(shù)據(jù)提取階段,都能正確地提取出隱藏的秘密數(shù)據(jù),計(jì)算buv的公式可表示為:
證明因?yàn)樵诿孛軘?shù)據(jù)提取階段,隱秘圖像中基準(zhǔn)像素的灰度值與原始輸入圖像對(duì)應(yīng)位置上的灰度值相同,所以采用相同的圖像插值算法后能生成相同的非基準(zhǔn)像素I(u,v)。根據(jù)式(7)和式(8),各個(gè)非基準(zhǔn)像素I(u,v)數(shù)據(jù)提取階段和隱藏階段的數(shù)據(jù)隱藏量nuv相同。從式(9)和式(10)可以分別得到buv=,也就是。在已知nuv和buv的條件下,將buv轉(zhuǎn)換為nuvbit的二進(jìn)制數(shù)據(jù),即可得到隱藏的秘密數(shù)據(jù)。
定理3對(duì)于隱藏秘密數(shù)據(jù)后的隱秘圖像S,與原始輸入圖像X相比,要使失真取得最小值,則隱秘圖像分塊中的非基準(zhǔn)像素S(u,v)與輸入圖像對(duì)應(yīng)分塊中的像素X(u,v)的差值應(yīng)取得最小值。
證明從定義3可以看出,隱秘圖像中的非基準(zhǔn)像素S(u,v)=S1(u,v)或S(u,v)=S2(u,v)。根據(jù)峰值信噪比(peak signal-to-noise rate,PSNR)的計(jì)算公式可知,PSNR值與輸入圖像和隱秘圖像差值的平方成反比。因此,要使隱秘圖像S具有較小的失真(更高的PSNR值),則隱秘圖像S與原始輸入圖像X對(duì)應(yīng)像素灰度值的差值就應(yīng)該取得最小值。
在秘密數(shù)據(jù)隱藏過程中,為了使隱秘圖像S與原始輸入圖像X對(duì)應(yīng)像素灰度值的差值取得最小值,首先分別計(jì)算原始輸入圖像對(duì)應(yīng)位置的像素灰度值與S1(u,v)和S2(u,v)的差值如下:
之后選擇絕對(duì)值最小的修改方法作為該非基準(zhǔn)像素的秘密數(shù)據(jù)隱藏方法。也就是說,若S1(u,v)與X(u,v)差值的絕對(duì)值小,則S(u,v)=S1(u,v);否則S(u,v)=S2(u,v)。同時(shí),為了使隱藏秘密數(shù)據(jù)后像素的灰度值不出現(xiàn)溢出現(xiàn)象(大于255或小于0),隱藏秘密數(shù)據(jù)的公式可表示為:
定理4對(duì)于8 bit的灰度圖像,采用本文提出的圖像插值和秘密數(shù)據(jù)隱藏算法后,隱秘圖像像素的灰度值不會(huì)出現(xiàn)溢出現(xiàn)象。
證明對(duì)于8 bit的灰度圖像X,其像素灰度值的范圍為[0,255]。從圖像插值過程可知,對(duì)于“”位置上的像素,與圖像X對(duì)應(yīng)位置上的灰度值相同,不會(huì)出現(xiàn)溢出現(xiàn)象;對(duì)于“”位置上的像素,其灰度值為圖像X中相連兩個(gè)像素灰度值的平均值,不會(huì)出現(xiàn)溢出;對(duì)于“”位置上的像素,均值A(chǔ)45和A135的范圍為[0,255],從式(4)和式(5)可知,W45和W135的范圍為[0,1],故采用式(6)得到的像素灰度值范圍為[0,255]。從式(13)可知,無論S(u,v)=S1(u,v)或S(u,v)=S2(u,v),其范圍都在[0,255]之內(nèi),故隱秘圖像中的像素灰度值不會(huì)出現(xiàn)溢出現(xiàn)象。
基于第2章的定義和定理,本章首先介紹本文算法的詳細(xì)實(shí)施方案,主要包括秘密數(shù)據(jù)隱藏過程、原始圖像恢復(fù)過程和秘密數(shù)據(jù)提取過程。然后,從秘密數(shù)據(jù)隱藏容量、隱秘圖像質(zhì)量、算法的時(shí)間復(fù)雜度和空間復(fù)雜度四方面來對(duì)算法的性能進(jìn)行理論分析。
秘密數(shù)據(jù)隱藏過程的基本步驟如下:
步驟1讀取原始輸入圖像X,采用本文提出的圖像插值算法作用于下采樣后的圖像Y生成插值圖像I,插值圖像I作為待隱藏秘密數(shù)據(jù)的載體圖像。
步驟2對(duì)輸入圖像X和插值圖像I,按照從上到下,從左到右的順序分別將其劃分為m×m大小的重疊分塊。需要注意的是,在對(duì)輸入圖像X和插值圖像I分塊的過程中,若載體圖像的邊界區(qū)域不能構(gòu)成大小為m×m的分塊,則這些邊界區(qū)域不屬于任何一個(gè)分塊,在隱藏秘密數(shù)據(jù)時(shí),這些邊界區(qū)域可以隱藏秘密數(shù)據(jù),也可以不隱藏秘密數(shù)據(jù),對(duì)整個(gè)插值圖像I可隱藏的秘密數(shù)據(jù)容量大小影響較小,可以忽略不計(jì)。
步驟3計(jì)算各個(gè)分塊中所有基準(zhǔn)像素的方差,根據(jù)所有分塊方差的大小對(duì)其進(jìn)行升序排序,得到所有分塊對(duì)應(yīng)的索引。在隱藏和提取秘密數(shù)據(jù)時(shí),以此索引作為處理各個(gè)分塊的順序。需要注意的是,因?yàn)榉謮K中的基準(zhǔn)像素不會(huì)發(fā)生改變,所以在數(shù)據(jù)提取階段計(jì)算各個(gè)分塊的方差時(shí),得到的結(jié)果與該步驟計(jì)算得到的結(jié)果相同,使在數(shù)據(jù)提取階段處理各個(gè)分塊的順序與隱藏階段相一致,確保能按順序正確地提取隱藏的秘密數(shù)據(jù)。
步驟4利用步驟3得到的分塊索引,按順序每次讀取一個(gè)分塊,首先計(jì)算分塊中所有基準(zhǔn)像素的最大值Max與最小值Min,然后分別計(jì)算分塊中非基準(zhǔn)像素I(u,v)與最大值Max和最小值Min差值的絕對(duì)值如下:
步驟5對(duì)于分塊中的非基準(zhǔn)像素I(u,v),它的差值duv可表示為:
該非基準(zhǔn)像素能隱藏的秘密數(shù)據(jù)容量大小采用式(8)來進(jìn)行計(jì)算。
步驟6對(duì)于分塊中的非基準(zhǔn)像素I(u,v),采用式(13)來自適應(yīng)隱藏秘密數(shù)據(jù)。
步驟7重復(fù)步驟4~步驟6,當(dāng)所有待隱藏的秘密數(shù)據(jù)或分塊都處理完畢,秘密數(shù)據(jù)隱藏過程就結(jié)束,得到隱藏秘密數(shù)據(jù)后的隱秘圖像S。
原始圖像恢復(fù)和秘密數(shù)據(jù)提取過程的基本步驟如下:
步驟1讀取大小為w×h的隱秘圖像S,按照從上到下、從左到右的順序在隱秘圖像S中位置為(2p-1,2q-1)(1≤p≤w/2,1≤q≤h/2)的像素點(diǎn)進(jìn)行采樣,即可生成大小為(w/2)×(h/2)的原始圖像Y。
步驟2將提出的圖像插值算法應(yīng)用于步驟1恢復(fù)得到原始圖像Y,生成與秘密數(shù)據(jù)隱藏過程相同的插值圖像I。
步驟3與秘密數(shù)據(jù)隱藏過程中的步驟2和步驟3相同,得到所有分塊的索引。
步驟4利用得到的分塊索引,按順序選擇各個(gè)分塊,首先計(jì)算分塊中所有基準(zhǔn)像素的最大值和最小值,然后分別利用式(16)和式(8)計(jì)算分塊中各個(gè)非基準(zhǔn)像素相應(yīng)的差值大小duv和能隱藏的秘密數(shù)據(jù)容量大小nuv。
步驟5利用S(u,v)和I(u,v),計(jì)算秘密數(shù)據(jù)隱藏過程中對(duì)I(u,v)的修改量大小,相應(yīng)的計(jì)算公式可表示為:
步驟6先將buv轉(zhuǎn)換為nuvbit的二進(jìn)制數(shù)據(jù),再將nuvbit的二進(jìn)制數(shù)據(jù)按順序連接,即可得到各個(gè)分塊在秘密數(shù)據(jù)隱藏過程中隱藏的秘密數(shù)據(jù)。
步驟7重復(fù)步驟4~步驟6,將從各個(gè)分塊中提取的二值數(shù)據(jù)按順序進(jìn)行連接,即可得到秘密數(shù)據(jù)隱藏過程中隱藏的秘密數(shù)據(jù)。
需要注意的是,步驟1生成的是輸入圖像X經(jīng)下采樣操作后生成的圖像Y,而不是原始的輸入圖像X。實(shí)際應(yīng)用時(shí),可在圖像插值階段直接基于輸入圖像X進(jìn)行圖像插值操作,這樣在圖像恢復(fù)階段即可完整地恢復(fù)原始的輸入圖像X。
基于圖像插值技術(shù)的無損信息隱藏算法其基本過程大致相同,一般都是由圖像插值和秘密數(shù)據(jù)隱藏兩個(gè)過程來組成。為了對(duì)不同算法的性能進(jìn)行比較,從秘密數(shù)據(jù)隱藏容量大小、隱秘圖像質(zhì)量、算法的空間復(fù)雜度和時(shí)間復(fù)雜度等四方面對(duì)本文算法和文獻(xiàn)[10-11,13]中的算法進(jìn)行比較(文獻(xiàn)[12]中的秘密數(shù)據(jù)隱藏算法與本文不同,文獻(xiàn)[14-17]在隱藏秘密數(shù)據(jù)后有時(shí)會(huì)出現(xiàn)溢出現(xiàn)象,故未與這五種算法進(jìn)行比較)。
3.3.1 數(shù)據(jù)隱藏容量
設(shè)輸入圖像X的大小為w×h,則經(jīng)過圖像插值后生成的圖像大小也為w×h。在插值圖像I中,非基準(zhǔn)像素個(gè)數(shù)為(3×w×h)/4,在插值圖像中可隱藏的總的數(shù)據(jù)容量為:
3.3.2 隱秘圖像質(zhì)量
基于圖像插值技術(shù)無損信息隱藏算法的隱秘圖像質(zhì)量不僅由秘密數(shù)據(jù)隱藏操作來決定,而且圖像插值操作對(duì)隱秘圖像質(zhì)量的影響也較大。一般地,對(duì)于紋理豐富的輸入圖像,因相連像素間的差異較大,根據(jù)圖像插值算法生成的插值圖像像素與輸入圖像像素的差異就較大,插值圖像的質(zhì)量下降較嚴(yán)重;反之,對(duì)于較平滑的輸入圖像,相連像素間的差異較小,根據(jù)圖像插值算法生成的插值圖像像素與輸入圖像像素的差異就較小,插值圖像的質(zhì)量下降就不是很明顯。同時(shí),該類算法在原始圖像恢復(fù)過程中,僅需對(duì)隱秘圖像進(jìn)行下采樣操作。因此,在秘密數(shù)據(jù)隱藏過程中,若考慮隱秘圖像像素與原始輸入圖像對(duì)應(yīng)位置像素間的大小關(guān)系,自適應(yīng)地隱藏秘密數(shù)據(jù),可能會(huì)提高隱秘圖像的質(zhì)量。文獻(xiàn)[10-11,13]在隱藏秘密數(shù)據(jù)的過程中,都未考慮采用自適應(yīng)的方式來隱藏秘密數(shù)據(jù)。因此,在相同的條件下,本文算法因?yàn)椴捎昧俗赃m應(yīng)的秘密數(shù)據(jù)隱藏算法,所以本文算法的隱秘圖像質(zhì)量應(yīng)該是最好的。
3.3.3 空間復(fù)雜度
基于圖像插值技術(shù)的無損信息隱藏算法主要由圖像插值過程和秘密數(shù)據(jù)隱藏過程組成。在圖像插值過程中,文獻(xiàn)[10-11,13]和本文算法的空間復(fù)雜度都為O(w×h);在秘密數(shù)據(jù)隱藏過程中,文獻(xiàn)[10-11,13]和本文算法都是直接在插值圖像空間域中進(jìn)行操作,空間復(fù)雜度都為O(w×h)。然而本文算法還需保存插值圖像中所有分塊的方差,空間復(fù)雜度為O(w×h)。因此,雖然這四種算法的空間復(fù)雜度都為O(w×h),但是本文算法的空間復(fù)雜度是略高于文獻(xiàn)[10-11,13]的。
3.3.4 時(shí)間復(fù)雜度
文獻(xiàn)[10-11,13]和本文算法的時(shí)間復(fù)雜度都是取決于圖像插值過程和秘密數(shù)據(jù)隱藏過程。在圖像插值過程中,這四種圖像插值算法的時(shí)間復(fù)雜度都為O(w×h);在秘密數(shù)據(jù)隱藏過程中,這四種秘密數(shù)據(jù)隱藏算法的時(shí)間復(fù)雜度也都為O(w×h)。然而本文算法首先還需對(duì)插值圖像中所有分塊的方差進(jìn)行計(jì)算,然后再進(jìn)行排序操作,時(shí)間復(fù)雜度為O(w×h)。因此,雖然這四種算法的時(shí)間復(fù)雜度都為O(w×h),但是本文算法的時(shí)間復(fù)雜度是略高于文獻(xiàn)[10-11,13]的。
為了驗(yàn)證本文算法性能,實(shí)驗(yàn)平臺(tái)為Windows 7操作系統(tǒng)和Matlab 2010a開發(fā)環(huán)境,待隱藏在插值圖像中的秘密數(shù)據(jù)為偽隨機(jī)產(chǎn)生的二進(jìn)制數(shù)據(jù)。選擇在非壓縮圖像數(shù)據(jù)庫(kù)(never-compressedimagedatabase,NCID)[20]和南加利福尼亞大學(xué)信號(hào)與圖像處理研究所圖像數(shù)據(jù)庫(kù)(USC-SIPI image database,SIPI)[21]中隨機(jī)選擇100幅載體圖像進(jìn)行實(shí)驗(yàn)。為了提高算法的運(yùn)行效率,若圖像數(shù)據(jù)庫(kù)中的原始載體圖像為彩色圖像,則先將其轉(zhuǎn)換為灰度圖像。顯然,在彩色圖像的各個(gè)通道中都隱藏秘密數(shù)據(jù)也是可以的;若原始載體圖像的大小不是256×256,則先將其轉(zhuǎn)換為256×256,兩個(gè)圖像數(shù)據(jù)庫(kù)中載體圖像的基本參數(shù)如表1所示。在NCID和SIPI圖像數(shù)據(jù)庫(kù)中隨機(jī)選擇100幅載體圖像驗(yàn)證了采用本文算法生成的隱秘圖像沒有出現(xiàn)像素溢出現(xiàn)象,能正確地提取隱藏的秘密數(shù)據(jù)。
為了能定量評(píng)估本文算法的性能,采用比特率(bit per pixel,BPP)來客觀評(píng)判秘密數(shù)據(jù)隱藏算法真正能隱藏在一幅載體圖像中的數(shù)據(jù)容量大小。計(jì)算BPP值的公式可表示為:
Table 1 Basic parameters of cover image in NCID and SIPI image databases表1 NCID和SIPI圖像數(shù)據(jù)庫(kù)中載體圖像的基本參數(shù)
本文算法在隱藏秘密數(shù)據(jù)的過程中需對(duì)插值后生成的插值圖像進(jìn)行重疊分塊。為了測(cè)試不同分塊大小對(duì)本文算法性能的影響,實(shí)驗(yàn)過程中,分別將插值后生成的插值圖像分成互不重疊的2×2、重疊的3×3和5×5進(jìn)行實(shí)驗(yàn),相應(yīng)的實(shí)驗(yàn)結(jié)果如表2所示。從表2可以看出:(1)當(dāng)分塊大小為2×2和3×3時(shí),在插值圖像中隱藏最大容量的秘密數(shù)據(jù)后,隱秘圖像質(zhì)量比未隱藏秘密數(shù)據(jù)的插值圖像質(zhì)量還好,其原因主要是因?yàn)樵陔[藏秘密數(shù)據(jù)過程中,算法考慮了隱秘像素與輸入圖像對(duì)應(yīng)位置像素之間的關(guān)系選擇了自適應(yīng)的隱藏方法。(2)分塊大小越大,隱藏的秘密數(shù)據(jù)量BPP值也就越大,但隱秘圖像的PSNR值相應(yīng)地下降了,其原因主要是因?yàn)榉謮K越大,分塊中候選的基準(zhǔn)像素就越多,可隱藏秘密數(shù)據(jù)的非基準(zhǔn)像素與候選基準(zhǔn)像素最大值或最小值的差值就越大,使隱藏的秘密數(shù)據(jù)容量BPP值增大,但是因?yàn)榛鶞?zhǔn)像素與選擇的非基準(zhǔn)像素的差值較大,導(dǎo)致對(duì)非基準(zhǔn)像素的修改量也較大,使隱秘圖像的PSNR值下降了。當(dāng)分塊大小為2×2時(shí),隱秘圖像的PSNR值最高,但秘密數(shù)據(jù)量BPP值較低;當(dāng)分塊大小為3×3時(shí),隱秘圖像的平均PSNR值與分塊大小為2×2時(shí)相比約下降了0.5 dB,但平均BPP值約提高了0.8;當(dāng)分塊大小為5×5時(shí),平均BPP值約提高了0.5,但平均PSNR值與分塊大小為3×3時(shí)相比約下降了1.7 dB。
在相同的實(shí)驗(yàn)條件下,首先對(duì)插值圖像分別進(jìn)行大小為2×2、3×3和5×5的分塊,之后以BPP值0.1為初值和0.1為步長(zhǎng)進(jìn)行實(shí)驗(yàn)測(cè)試,相應(yīng)的實(shí)驗(yàn)結(jié)果如圖4所示。從圖4可以看出,在NCID和SIPI圖像數(shù)據(jù)庫(kù)隨機(jī)選擇的100幅載體圖像中當(dāng)BPP小于0.9時(shí),分塊大小為2×2的PSNR值最好,但是隨著BPP不斷增大,PSNR值下降較快;對(duì)大小為3×3和5×5的分塊,多數(shù)情況下PSNR值較接近。因此,綜合表2和圖4的實(shí)驗(yàn)結(jié)果,本文算法在對(duì)插值圖像進(jìn)行分塊時(shí)將分塊的大小設(shè)置為3×3。
Table 2 Effect of different block sizes on proposed algorithm performance表2 不同分塊大小對(duì)算法性能的影響
Fig.4 Effect of different block sizes on proposed algorithm performance圖4 不同分塊大小對(duì)算法性能的影響
為了測(cè)試本文算法的優(yōu)越性,將本文算法與文獻(xiàn)[10-13,18-19]中的算法進(jìn)行比較。表3給出了本文算法和這六種相似算法分別在NCID和SIPI圖像數(shù)據(jù)庫(kù)上隨機(jī)選擇100幅圖像的實(shí)驗(yàn)結(jié)果。從表3可以看出,與文獻(xiàn)[10-13,18-19]中的算法相比,本文算法的PSNR值和BPP值都是最高的,表明本文算法具有更優(yōu)越的性能。
Table 3 Performance comparisons of proposed algorithm and other algorithms表3 本文算法與其他算法的性能比較
表4給出了本文算法和文獻(xiàn)[10-13,18-19]分別在NCID和SIPI標(biāo)準(zhǔn)測(cè)試圖像數(shù)據(jù)庫(kù)上的性能提高情況。從表4可以看出,與文獻(xiàn)[10-13,18-19]中的算法相比,平均PSNR值分別提高了約8%、12%、3%、12%、8%和10%,平均BPP值約分別提高了95%、25%、232%、4%、9%和174%。就其平均值而言,與這六種算法相比,平均PSNR值和平均BPP值約分別提高了9%和90%。
為了測(cè)試PSNR值和BPP值的離散程度,表5給出了本文算法與文獻(xiàn)[10-13,18-19]分別在NCID和SIPI標(biāo)準(zhǔn)測(cè)試圖像數(shù)據(jù)庫(kù)上隨機(jī)選擇100幅圖像實(shí)驗(yàn)結(jié)果標(biāo)準(zhǔn)方差的平均值。從表5可以看出,這七種算法在兩個(gè)標(biāo)準(zhǔn)測(cè)試圖像數(shù)據(jù)庫(kù)上的標(biāo)準(zhǔn)方差都很相似,PSNR值和BPP值的離散程度都很好。
Table 4 Increase rate of proposed algorithm compared with other algorithms表4 本文算法與其他算法相比的提高率 %
Table 5 Standard deviation of proposed algorithm and other algorithms表5 本文算法與其他算法的標(biāo)準(zhǔn)方差
另外,在相同的實(shí)驗(yàn)條件下,以BPP值0.1為初值和0.1為步長(zhǎng),將本文算法和文獻(xiàn)[10-13,18-19]分別在NCID和SIPI標(biāo)準(zhǔn)測(cè)試圖像數(shù)據(jù)庫(kù)上進(jìn)行性能比較,相應(yīng)的實(shí)驗(yàn)結(jié)果如圖5所示。需要注意的是,在實(shí)驗(yàn)過程中當(dāng)計(jì)算某一個(gè)BPP值對(duì)應(yīng)的平均PSNR值時(shí),不是計(jì)算隨機(jī)選擇的100幅載體圖像的平均值,而是僅計(jì)算能隱藏相應(yīng)BPP值的隱秘圖像的平均值。例如,當(dāng)BPP為2.0時(shí),若僅有30幅載體圖像能隱藏此容量的秘密數(shù)據(jù),則在計(jì)算平均PSNR值時(shí),就只計(jì)算這30幅隱秘圖像的平均PSNR值,而不是所有100幅載體圖像的平均值。從圖5可以看出,無論是在NCID或SIPI標(biāo)準(zhǔn)測(cè)試圖像數(shù)據(jù)庫(kù),對(duì)于絕大多數(shù)的BPP,本文算法的PSNR值都是最高的,進(jìn)一步表明本文算法性能更好。
Fig.5 Performance comparisons for different algorithms on interpolated images圖5 插值圖像上不同算法的性能比較
Fig.6 Performance comparisons for different algorithms on input images圖6 輸入圖像上不同算法的性能比較
Table 6 Performance comparisons for different interpolated algorithms表6 不同插值算法的性能比較 dB
與圖5在插值圖像上進(jìn)行秘密數(shù)據(jù)隱藏操作不同,圖6給出的是本文算法與文獻(xiàn)[10-13,18-19]在NCID和SIPI標(biāo)準(zhǔn)測(cè)試圖像數(shù)據(jù)庫(kù)輸入圖像上的性能比較(圖像插值操作和秘密數(shù)據(jù)隱藏操作同時(shí)進(jìn)行)。從圖6可以看出,與這六種算法相比,無論是在NCID或SIPI標(biāo)準(zhǔn)測(cè)試圖像數(shù)據(jù)庫(kù),對(duì)于絕大多數(shù)的BPP,本文算法的PSNR值都是最高的,表明本文算法具有更優(yōu)越的性能。
為了進(jìn)一步測(cè)試本文圖像插值算法的性能,將本文圖像插值算法與文獻(xiàn)[10-12,14-16]中的圖像插值算法進(jìn)行比較,相應(yīng)的實(shí)驗(yàn)結(jié)果如表6所示。從表6可以看出,無論是哪個(gè)圖像數(shù)據(jù)庫(kù),在相同的條件下本文圖像插值算法的PSNR值都是最高的,表明本文圖像插值性能更好。
圖7給出在相同圖像插值算法條件下,采用本文秘密數(shù)據(jù)隱藏算法與文獻(xiàn)[10-12]的比較。從圖7可以看出,無論是哪個(gè)圖像數(shù)據(jù)庫(kù),采用本文秘密數(shù)據(jù)隱藏算法后,隱秘圖像的PSNR值都得到了提升,進(jìn)一步表明本文提出的秘密數(shù)據(jù)隱藏算法具有更好的性能。
Fig.7 Performance comparisons for different hiding methods on interpolated images圖7 插值圖像上不同隱藏算法的性能比較
本文算法和文獻(xiàn)[10-13,18-19]中的算法都是在圖像插值空間域中隱藏秘密數(shù)據(jù),主要包含圖像插值和秘密數(shù)據(jù)隱藏兩個(gè)基本過程。為測(cè)試這七種算法的平均運(yùn)行時(shí)間,在Windows 7和Matlab R2010a平臺(tái)上進(jìn)行實(shí)驗(yàn),CPU為Intel?CoreTMi5-4200U,主頻為1.60 GHz和2.30 GHz,內(nèi)存容量為4.00 GB(2.45 GB可用),硬盤容量為500 GB的測(cè)試環(huán)境下,分別在NCID和SIPI圖像數(shù)據(jù)庫(kù)中隨機(jī)選擇100幅圖像(若原始圖像為彩色圖像,則先將其轉(zhuǎn)換為灰度圖像;若原始圖像的大小不是256×256,則先將圖像的大小調(diào)整為256×256)進(jìn)行實(shí)驗(yàn)。在相同條件下,各種算法運(yùn)行10次的平均運(yùn)行時(shí)間如表7所示。從表7可以看出,文獻(xiàn)[12]的平均運(yùn)行時(shí)間最小,本文算法的平均運(yùn)行時(shí)間最大,與第3.3.4小節(jié)中的理論分析是相一致的。
Table 7 Running time for different algorithms表7 不同算法的運(yùn)行時(shí)間 s
與基于差值擴(kuò)展和直方圖平移的無損信息隱藏算法不同,本文基于圖像插值技術(shù),提出一種自適應(yīng)的大容量無損信息隱藏算法,具有如下的特點(diǎn):
(1)提出一種改進(jìn)的圖像插值算法,與相似的圖像插值算法相比,具有更好的性能。
(2)對(duì)待隱藏秘密數(shù)據(jù)的插值圖像進(jìn)行重疊分塊,然后對(duì)分塊中的各個(gè)非基準(zhǔn)像素自適應(yīng)計(jì)算它能隱藏的最大秘密數(shù)據(jù)容量大小,提高了各個(gè)非基準(zhǔn)像素能隱藏的秘密數(shù)據(jù)容量。
(3)采用自適應(yīng)的秘密數(shù)據(jù)隱藏算法來隱藏秘密數(shù)據(jù),提高了隱秘圖像的質(zhì)量和解決了像素溢出問題。
在NCID和SIPI標(biāo)準(zhǔn)測(cè)試圖像數(shù)據(jù)庫(kù)上進(jìn)行了大量的仿真實(shí)驗(yàn),結(jié)果表明與相似的無損信息隱藏算法相比,本文算法的平均BPP值提升了約90%,平均PSNR值提升了約9%,在相同的BPP值條件下,本文算法具有更高的PSNR值;將本文提出的秘密數(shù)據(jù)隱藏算法應(yīng)用于其他圖像插值算法生成的插值圖像,隱秘圖像的PSNR值也得到了提高,進(jìn)一步表明本文提出的秘密數(shù)據(jù)隱藏算法具有更優(yōu)越的性能。