熊祥光,陳 熙,曹永鋒,歐衛華,劉 彬,夏道勛
貴州師范大學 大數據與計算機科學學院,貴陽 550001
無損信息隱藏技術采用無損的方式將待隱藏的秘密數據隱藏在載體信號中,當需要時不僅可從隱秘載體信號中提取隱藏的數據,而且同時能完全恢復得到原始的載體信號,對失真敏感領域非常有用[1]。目前,已提出一系列無損信息隱藏算法,其大致可歸為如下的3類:基于差值擴展[2-5]、基于直方圖平移[6-9]和插值技術[10-19]。一般地,采用差值擴展和直方圖平移的無損信息隱藏算法的隱秘圖像質量都較好,但從單重隱藏性能來看,秘密數據隱藏容量很難達到1 bit/pixel及以上,而基于插值技術的無損信息隱藏算法與基于差值擴展和直方圖平移的無損信息隱藏算法從原理上來說是不同的,該類算法直接在插值像素上進行,其主要思想是在圖像插值階段先對原始輸入圖像進行下采樣(事實上不進行下采樣操作也是可行的,進行下采樣的主要目的僅是為了方便評估經圖像插值和秘密數據隱藏操作后隱秘圖像的質量),之后采用某種圖像插值算法生成一幅插值圖像(大小與原始輸入圖像相同)作為待隱藏秘密數據的載體圖像;在隱藏秘密數據過程中,僅在插值圖像的部分像素中隱藏秘密數據,在隱秘圖像失真不可感知的條件下算法的秘密數據隱藏容量往往較大[10]。之后,文獻[11]對文獻[10]進行了改進,在相同條件下,可以隱藏更多的秘密數據,但這兩種算法存在一個缺陷,就是僅當兩個像素差值的絕對值不小于2時才能隱藏秘密數據,當差值為0或1時不能隱藏秘密數據,導致這兩種算法的秘密數據隱藏容量受到影響。事實上,當兩個像素差值為0或1時也是可以隱藏秘密數據的。文獻[12]僅在插值圖像部分像素中的每個像素隱藏1 bit秘密數據,與未隱藏秘密數據的插值圖像相比,隱秘圖像的質量較好,但秘密數據隱藏容量有限,最大僅為0.75 bit/pixel。文獻[13]在文獻[10-12]的基礎上進行了改進,算法的秘密數據隱藏容量和隱秘圖像質量都得到了提高,但是該算法的秘密數據隱藏容量和隱秘圖像質量還有進一步提升的空間。文獻[14-17]也是文獻[10]的一種改進,秘密數據隱藏容量有了提高,但是通過實驗發現,這四種算法都可能出現溢出現象。對于8 bit的灰度圖像來說,采用這四種算法生成的隱秘圖像像素的灰度值有時會出現溢出,使在秘密數據提取階段算法不能正確地提取隱藏的秘密數據。文獻[18-19]也分別提出基于插值技術的無損信息隱藏算法,但是這兩種算法的秘密數據隱藏方式與文獻[10-17]是不同的。實驗結果表明,這兩種算法的秘密數據隱藏容量和隱秘圖像質量都較好。
為了進一步提高基于插值技術無損信息隱藏算法的秘密數據隱藏容量、隱秘圖像質量和解決像素溢出問題,本文提出一種自適應的大容量無損信息隱藏算法,其創新之處主要是:(1)提出一種改進的圖像插值算法,提高了插值圖像的質量;(2)對插值圖像中的待隱藏秘密數據像素,算法能自適應計算各個像素能隱藏的最大數據容量,使算法的秘密數據隱藏容量得到進一步的提高;(3)設計了新的秘密數據隱藏算法和根據隱秘圖像與原始輸入圖像對應位置上像素差值絕對值的大小關系來自適應隱藏秘密數據,提高了隱秘圖像質量和解決了像素溢出問題。在兩個標準測試圖像數據庫上進行了大量的仿真實驗,結果表明采用本文算法生成的隱秘圖像不會出現像素溢出現象,可正確地提取在數據隱藏階段隱藏的秘密數據。與同類算法相比,本文算法的秘密數據隱藏容量和隱秘圖像質量都有了較大的提升。
基于插值技術的無損信息隱藏算法主要包含圖像插值和秘密數據隱藏兩個過程,其圖像插值過程示意圖如圖1所示[10]。
若原始輸入圖像X的大小為w×h,根據圖1的圖像插值過程示意圖,本文提出的圖像插值算法如下:
步驟1讀取原始輸入圖像X,對其進行下采樣操作,生成原始圖像Y,相應的下采樣操作可表示為:

其中,1≤p≤w/2,1≤q≤h/2。需要注意的是,進行下采樣操作僅僅是為了便于測試經圖像插值和秘密數據隱藏操作后的隱秘圖像與原始輸入圖像X的失真情況。在實際應用時,可直接將輸入圖像X作為原始圖像Y進行插值處理,此時生成的插值圖像I大小為輸入圖像X的4倍。

Fig.1 Schematic diagram of image interpolation圖1 圖像插值過程示意圖
步驟2根據圖1和步驟1得到的原始圖像Y,生成插值圖像I的算法如下:




步驟3對于插值圖像I的邊界像素,采用周圍的像素填充即可。
定義1將插值圖像I中的像素劃分為基準像素和非基準像素兩類。對于如圖1所示的圖像,“”位置上的像素稱為基準像素,在圖像插值和秘密數據隱藏過程中都不會發生改變,也就是說它與輸入圖像對應位置上像素的灰度值相同。除“”位置上的像素外,其他像素稱為非基準像素。在數據隱藏過程中,即在該類像素中隱藏秘密數據。
定義2對插值圖像I,設基準像素為I(s,t),與該基準像素相連的非基準像素I(u,v)與選擇的基準像素I(s,t)差值的絕對值可表示為:

其中,I(u,v)∈{I(s,t+1),I(s+1,t),I(s+1,t+1)},分別表示與基準像素I(s,t)相連的水平方向、垂直方向和對角方向上的3個非基準像素,表示求絕對值運算。非基準像素I(u,v)能隱藏的秘密數據量大小可表示為:

定理1對非基準像素I(u,v),要使在秘密數據隱藏過程中它隱藏的數據容量nuv達到最大,則它與選擇的基準像素I(s,t)的差值的絕對值duv就要取得最大值。
證明從式(8)可以看出,對于非基準像素I(u,v),它能隱藏的秘密數據容量nuv為1或,與選擇基準像素的差值duv大小相關。duv與nuv的關系如圖2所示。從圖2可以看出,差值duv和隱藏數據容量nuv雖不是嚴格的遞增關系(因在計算各個非基準像素的隱藏容量nuv時,對其進行了向下取整運算),但要使非基準像素隱藏的數據容量nuv達到最大值,則在選擇差值duv時就要選擇最大的(若duv不是選擇最大值,則nuv不一定能取得最大值)。

Fig.2 Relationship between difference and amount of data that can be hidden圖2 差值與可隱藏數據量之間的關系
從式(8)和定理1可知,要使非基準像素能隱藏最多的秘密數據,非基準像素與選擇的基準像素之間的差值就得最大。經圖像插值運算后在非基準像素一定的條件下,要使它們之間的差值最大,選擇的基準像素只能是所有基準像素的最大值或最小值。若未對插值圖像進行分塊,則插值圖像中所有基準像素的最大值或最小值都是各個非基準像素的候選基準像素,在此情況下秘密數據隱藏容量應該取得最大值,但是隱秘圖像質量失真也較嚴重。為了平衡秘密數據隱藏容量大小和隱秘圖像質量間的關系,利用圖像鄰域像素的相關性,對插值后生成的圖像I進行大小為m×m的分塊處理。在秘密數據隱藏和提取過程中都是以各個獨立的分塊作為處理單元。大小為2×2、3×3和5×5的分塊示意圖如圖3所示。在圖3中,對于大小為2×2的分塊,僅包含一個基準像素,對非基準像素計算差值時,該基準像素即為被選擇的基準像素;對于大小為3×3的分塊,包含4個基準像素,對非基準像素計算差值時,4個基準像素的最大值或最小值被選擇作為各個非基準像素的基準像素;對于大小為5×5的分塊,包含9個基準像素,對非基準像素計算差值時,9個基準像素的最大值或最小值被選擇作為各個非基準像素的基準像素。需要注意的是,在對插值圖像進行分塊時應采用重疊的分塊方式,且在秘密數據隱藏過程中每次僅對分塊中與左上角基準像素相連的3個非基準像素進行操作。

Fig.3 Schematic diagram of block圖3 分塊示意圖
定義3對于非基準像素I(u,v),從待隱藏的秘密數據中提取nuvbit的二進制數據,并將其轉換為十進制數buv,隱藏秘密數據的公式可表示為:

或

其中,round(·)表示四舍五入運算,非基準像素隱藏秘密數據后的像素灰度值S(u,v)=S1(u,v)或S(u,v)=S2(u,v)。
定理2在秘密數據隱藏過程中,無論是采用式(9)或式(10)隱藏數據,在秘密數據提取階段,都能正確地提取出隱藏的秘密數據,計算buv的公式可表示為:

證明因為在秘密數據提取階段,隱秘圖像中基準像素的灰度值與原始輸入圖像對應位置上的灰度值相同,所以采用相同的圖像插值算法后能生成相同的非基準像素I(u,v)。根據式(7)和式(8),各個非基準像素I(u,v)數據提取階段和隱藏階段的數據隱藏量nuv相同。從式(9)和式(10)可以分別得到buv=,也就是。在已知nuv和buv的條件下,將buv轉換為nuvbit的二進制數據,即可得到隱藏的秘密數據。
定理3對于隱藏秘密數據后的隱秘圖像S,與原始輸入圖像X相比,要使失真取得最小值,則隱秘圖像分塊中的非基準像素S(u,v)與輸入圖像對應分塊中的像素X(u,v)的差值應取得最小值。
證明從定義3可以看出,隱秘圖像中的非基準像素S(u,v)=S1(u,v)或S(u,v)=S2(u,v)。根據峰值信噪比(peak signal-to-noise rate,PSNR)的計算公式可知,PSNR值與輸入圖像和隱秘圖像差值的平方成反比。因此,要使隱秘圖像S具有較小的失真(更高的PSNR值),則隱秘圖像S與原始輸入圖像X對應像素灰度值的差值就應該取得最小值。
在秘密數據隱藏過程中,為了使隱秘圖像S與原始輸入圖像X對應像素灰度值的差值取得最小值,首先分別計算原始輸入圖像對應位置的像素灰度值與S1(u,v)和S2(u,v)的差值如下:

之后選擇絕對值最小的修改方法作為該非基準像素的秘密數據隱藏方法。也就是說,若S1(u,v)與X(u,v)差值的絕對值小,則S(u,v)=S1(u,v);否則S(u,v)=S2(u,v)。同時,為了使隱藏秘密數據后像素的灰度值不出現溢出現象(大于255或小于0),隱藏秘密數據的公式可表示為:

定理4對于8 bit的灰度圖像,采用本文提出的圖像插值和秘密數據隱藏算法后,隱秘圖像像素的灰度值不會出現溢出現象。
證明對于8 bit的灰度圖像X,其像素灰度值的范圍為[0,255]。從圖像插值過程可知,對于“”位置上的像素,與圖像X對應位置上的灰度值相同,不會出現溢出現象;對于“”位置上的像素,其灰度值為圖像X中相連兩個像素灰度值的平均值,不會出現溢出;對于“”位置上的像素,均值A45和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]之內,故隱秘圖像中的像素灰度值不會出現溢出現象。
基于第2章的定義和定理,本章首先介紹本文算法的詳細實施方案,主要包括秘密數據隱藏過程、原始圖像恢復過程和秘密數據提取過程。然后,從秘密數據隱藏容量、隱秘圖像質量、算法的時間復雜度和空間復雜度四方面來對算法的性能進行理論分析。
秘密數據隱藏過程的基本步驟如下:
步驟1讀取原始輸入圖像X,采用本文提出的圖像插值算法作用于下采樣后的圖像Y生成插值圖像I,插值圖像I作為待隱藏秘密數據的載體圖像。
步驟2對輸入圖像X和插值圖像I,按照從上到下,從左到右的順序分別將其劃分為m×m大小的重疊分塊。需要注意的是,在對輸入圖像X和插值圖像I分塊的過程中,若載體圖像的邊界區域不能構成大小為m×m的分塊,則這些邊界區域不屬于任何一個分塊,在隱藏秘密數據時,這些邊界區域可以隱藏秘密數據,也可以不隱藏秘密數據,對整個插值圖像I可隱藏的秘密數據容量大小影響較小,可以忽略不計。
步驟3計算各個分塊中所有基準像素的方差,根據所有分塊方差的大小對其進行升序排序,得到所有分塊對應的索引。在隱藏和提取秘密數據時,以此索引作為處理各個分塊的順序。需要注意的是,因為分塊中的基準像素不會發生改變,所以在數據提取階段計算各個分塊的方差時,得到的結果與該步驟計算得到的結果相同,使在數據提取階段處理各個分塊的順序與隱藏階段相一致,確保能按順序正確地提取隱藏的秘密數據。
步驟4利用步驟3得到的分塊索引,按順序每次讀取一個分塊,首先計算分塊中所有基準像素的最大值Max與最小值Min,然后分別計算分塊中非基準像素I(u,v)與最大值Max和最小值Min差值的絕對值如下:

步驟5對于分塊中的非基準像素I(u,v),它的差值duv可表示為:

該非基準像素能隱藏的秘密數據容量大小采用式(8)來進行計算。
步驟6對于分塊中的非基準像素I(u,v),采用式(13)來自適應隱藏秘密數據。
步驟7重復步驟4~步驟6,當所有待隱藏的秘密數據或分塊都處理完畢,秘密數據隱藏過程就結束,得到隱藏秘密數據后的隱秘圖像S。
原始圖像恢復和秘密數據提取過程的基本步驟如下:
步驟1讀取大小為w×h的隱秘圖像S,按照從上到下、從左到右的順序在隱秘圖像S中位置為(2p-1,2q-1)(1≤p≤w/2,1≤q≤h/2)的像素點進行采樣,即可生成大小為(w/2)×(h/2)的原始圖像Y。
步驟2將提出的圖像插值算法應用于步驟1恢復得到原始圖像Y,生成與秘密數據隱藏過程相同的插值圖像I。
步驟3與秘密數據隱藏過程中的步驟2和步驟3相同,得到所有分塊的索引。
步驟4利用得到的分塊索引,按順序選擇各個分塊,首先計算分塊中所有基準像素的最大值和最小值,然后分別利用式(16)和式(8)計算分塊中各個非基準像素相應的差值大小duv和能隱藏的秘密數據容量大小nuv。
步驟5利用S(u,v)和I(u,v),計算秘密數據隱藏過程中對I(u,v)的修改量大小,相應的計算公式可表示為:

步驟6先將buv轉換為nuvbit的二進制數據,再將nuvbit的二進制數據按順序連接,即可得到各個分塊在秘密數據隱藏過程中隱藏的秘密數據。
步驟7重復步驟4~步驟6,將從各個分塊中提取的二值數據按順序進行連接,即可得到秘密數據隱藏過程中隱藏的秘密數據。
需要注意的是,步驟1生成的是輸入圖像X經下采樣操作后生成的圖像Y,而不是原始的輸入圖像X。實際應用時,可在圖像插值階段直接基于輸入圖像X進行圖像插值操作,這樣在圖像恢復階段即可完整地恢復原始的輸入圖像X。
基于圖像插值技術的無損信息隱藏算法其基本過程大致相同,一般都是由圖像插值和秘密數據隱藏兩個過程來組成。為了對不同算法的性能進行比較,從秘密數據隱藏容量大小、隱秘圖像質量、算法的空間復雜度和時間復雜度等四方面對本文算法和文獻[10-11,13]中的算法進行比較(文獻[12]中的秘密數據隱藏算法與本文不同,文獻[14-17]在隱藏秘密數據后有時會出現溢出現象,故未與這五種算法進行比較)。
3.3.1 數據隱藏容量
設輸入圖像X的大小為w×h,則經過圖像插值后生成的圖像大小也為w×h。在插值圖像I中,非基準像素個數為(3×w×h)/4,在插值圖像中可隱藏的總的數據容量為:

3.3.2 隱秘圖像質量
基于圖像插值技術無損信息隱藏算法的隱秘圖像質量不僅由秘密數據隱藏操作來決定,而且圖像插值操作對隱秘圖像質量的影響也較大。一般地,對于紋理豐富的輸入圖像,因相連像素間的差異較大,根據圖像插值算法生成的插值圖像像素與輸入圖像像素的差異就較大,插值圖像的質量下降較嚴重;反之,對于較平滑的輸入圖像,相連像素間的差異較小,根據圖像插值算法生成的插值圖像像素與輸入圖像像素的差異就較小,插值圖像的質量下降就不是很明顯。同時,該類算法在原始圖像恢復過程中,僅需對隱秘圖像進行下采樣操作。因此,在秘密數據隱藏過程中,若考慮隱秘圖像像素與原始輸入圖像對應位置像素間的大小關系,自適應地隱藏秘密數據,可能會提高隱秘圖像的質量。文獻[10-11,13]在隱藏秘密數據的過程中,都未考慮采用自適應的方式來隱藏秘密數據。因此,在相同的條件下,本文算法因為采用了自適應的秘密數據隱藏算法,所以本文算法的隱秘圖像質量應該是最好的。
3.3.3 空間復雜度
基于圖像插值技術的無損信息隱藏算法主要由圖像插值過程和秘密數據隱藏過程組成。在圖像插值過程中,文獻[10-11,13]和本文算法的空間復雜度都為O(w×h);在秘密數據隱藏過程中,文獻[10-11,13]和本文算法都是直接在插值圖像空間域中進行操作,空間復雜度都為O(w×h)。然而本文算法還需保存插值圖像中所有分塊的方差,空間復雜度為O(w×h)。因此,雖然這四種算法的空間復雜度都為O(w×h),但是本文算法的空間復雜度是略高于文獻[10-11,13]的。
3.3.4 時間復雜度
文獻[10-11,13]和本文算法的時間復雜度都是取決于圖像插值過程和秘密數據隱藏過程。在圖像插值過程中,這四種圖像插值算法的時間復雜度都為O(w×h);在秘密數據隱藏過程中,這四種秘密數據隱藏算法的時間復雜度也都為O(w×h)。然而本文算法首先還需對插值圖像中所有分塊的方差進行計算,然后再進行排序操作,時間復雜度為O(w×h)。因此,雖然這四種算法的時間復雜度都為O(w×h),但是本文算法的時間復雜度是略高于文獻[10-11,13]的。
為了驗證本文算法性能,實驗平臺為Windows 7操作系統和Matlab 2010a開發環境,待隱藏在插值圖像中的秘密數據為偽隨機產生的二進制數據。選擇在非壓縮圖像數據庫(never-compressedimagedatabase,NCID)[20]和南加利福尼亞大學信號與圖像處理研究所圖像數據庫(USC-SIPI image database,SIPI)[21]中隨機選擇100幅載體圖像進行實驗。為了提高算法的運行效率,若圖像數據庫中的原始載體圖像為彩色圖像,則先將其轉換為灰度圖像。顯然,在彩色圖像的各個通道中都隱藏秘密數據也是可以的;若原始載體圖像的大小不是256×256,則先將其轉換為256×256,兩個圖像數據庫中載體圖像的基本參數如表1所示。在NCID和SIPI圖像數據庫中隨機選擇100幅載體圖像驗證了采用本文算法生成的隱秘圖像沒有出現像素溢出現象,能正確地提取隱藏的秘密數據。
為了能定量評估本文算法的性能,采用比特率(bit per pixel,BPP)來客觀評判秘密數據隱藏算法真正能隱藏在一幅載體圖像中的數據容量大小。計算BPP值的公式可表示為:


Table 1 Basic parameters of cover image in NCID and SIPI image databases表1 NCID和SIPI圖像數據庫中載體圖像的基本參數
本文算法在隱藏秘密數據的過程中需對插值后生成的插值圖像進行重疊分塊。為了測試不同分塊大小對本文算法性能的影響,實驗過程中,分別將插值后生成的插值圖像分成互不重疊的2×2、重疊的3×3和5×5進行實驗,相應的實驗結果如表2所示。從表2可以看出:(1)當分塊大小為2×2和3×3時,在插值圖像中隱藏最大容量的秘密數據后,隱秘圖像質量比未隱藏秘密數據的插值圖像質量還好,其原因主要是因為在隱藏秘密數據過程中,算法考慮了隱秘像素與輸入圖像對應位置像素之間的關系選擇了自適應的隱藏方法。(2)分塊大小越大,隱藏的秘密數據量BPP值也就越大,但隱秘圖像的PSNR值相應地下降了,其原因主要是因為分塊越大,分塊中候選的基準像素就越多,可隱藏秘密數據的非基準像素與候選基準像素最大值或最小值的差值就越大,使隱藏的秘密數據容量BPP值增大,但是因為基準像素與選擇的非基準像素的差值較大,導致對非基準像素的修改量也較大,使隱秘圖像的PSNR值下降了。當分塊大小為2×2時,隱秘圖像的PSNR值最高,但秘密數據量BPP值較低;當分塊大小為3×3時,隱秘圖像的平均PSNR值與分塊大小為2×2時相比約下降了0.5 dB,但平均BPP值約提高了0.8;當分塊大小為5×5時,平均BPP值約提高了0.5,但平均PSNR值與分塊大小為3×3時相比約下降了1.7 dB。
在相同的實驗條件下,首先對插值圖像分別進行大小為2×2、3×3和5×5的分塊,之后以BPP值0.1為初值和0.1為步長進行實驗測試,相應的實驗結果如圖4所示。從圖4可以看出,在NCID和SIPI圖像數據庫隨機選擇的100幅載體圖像中當BPP小于0.9時,分塊大小為2×2的PSNR值最好,但是隨著BPP不斷增大,PSNR值下降較快;對大小為3×3和5×5的分塊,多數情況下PSNR值較接近。因此,綜合表2和圖4的實驗結果,本文算法在對插值圖像進行分塊時將分塊的大小設置為3×3。

Table 2 Effect of different block sizes on proposed algorithm performance表2 不同分塊大小對算法性能的影響

Fig.4 Effect of different block sizes on proposed algorithm performance圖4 不同分塊大小對算法性能的影響
為了測試本文算法的優越性,將本文算法與文獻[10-13,18-19]中的算法進行比較。表3給出了本文算法和這六種相似算法分別在NCID和SIPI圖像數據庫上隨機選擇100幅圖像的實驗結果。從表3可以看出,與文獻[10-13,18-19]中的算法相比,本文算法的PSNR值和BPP值都是最高的,表明本文算法具有更優越的性能。

Table 3 Performance comparisons of proposed algorithm and other algorithms表3 本文算法與其他算法的性能比較
表4給出了本文算法和文獻[10-13,18-19]分別在NCID和SIPI標準測試圖像數據庫上的性能提高情況。從表4可以看出,與文獻[10-13,18-19]中的算法相比,平均PSNR值分別提高了約8%、12%、3%、12%、8%和10%,平均BPP值約分別提高了95%、25%、232%、4%、9%和174%。就其平均值而言,與這六種算法相比,平均PSNR值和平均BPP值約分別提高了9%和90%。
為了測試PSNR值和BPP值的離散程度,表5給出了本文算法與文獻[10-13,18-19]分別在NCID和SIPI標準測試圖像數據庫上隨機選擇100幅圖像實驗結果標準方差的平均值。從表5可以看出,這七種算法在兩個標準測試圖像數據庫上的標準方差都很相似,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 本文算法與其他算法的標準方差
另外,在相同的實驗條件下,以BPP值0.1為初值和0.1為步長,將本文算法和文獻[10-13,18-19]分別在NCID和SIPI標準測試圖像數據庫上進行性能比較,相應的實驗結果如圖5所示。需要注意的是,在實驗過程中當計算某一個BPP值對應的平均PSNR值時,不是計算隨機選擇的100幅載體圖像的平均值,而是僅計算能隱藏相應BPP值的隱秘圖像的平均值。例如,當BPP為2.0時,若僅有30幅載體圖像能隱藏此容量的秘密數據,則在計算平均PSNR值時,就只計算這30幅隱秘圖像的平均PSNR值,而不是所有100幅載體圖像的平均值。從圖5可以看出,無論是在NCID或SIPI標準測試圖像數據庫,對于絕大多數的BPP,本文算法的PSNR值都是最高的,進一步表明本文算法性能更好。

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在插值圖像上進行秘密數據隱藏操作不同,圖6給出的是本文算法與文獻[10-13,18-19]在NCID和SIPI標準測試圖像數據庫輸入圖像上的性能比較(圖像插值操作和秘密數據隱藏操作同時進行)。從圖6可以看出,與這六種算法相比,無論是在NCID或SIPI標準測試圖像數據庫,對于絕大多數的BPP,本文算法的PSNR值都是最高的,表明本文算法具有更優越的性能。
為了進一步測試本文圖像插值算法的性能,將本文圖像插值算法與文獻[10-12,14-16]中的圖像插值算法進行比較,相應的實驗結果如表6所示。從表6可以看出,無論是哪個圖像數據庫,在相同的條件下本文圖像插值算法的PSNR值都是最高的,表明本文圖像插值性能更好。
圖7給出在相同圖像插值算法條件下,采用本文秘密數據隱藏算法與文獻[10-12]的比較。從圖7可以看出,無論是哪個圖像數據庫,采用本文秘密數據隱藏算法后,隱秘圖像的PSNR值都得到了提升,進一步表明本文提出的秘密數據隱藏算法具有更好的性能。

Fig.7 Performance comparisons for different hiding methods on interpolated images圖7 插值圖像上不同隱藏算法的性能比較
本文算法和文獻[10-13,18-19]中的算法都是在圖像插值空間域中隱藏秘密數據,主要包含圖像插值和秘密數據隱藏兩個基本過程。為測試這七種算法的平均運行時間,在Windows 7和Matlab R2010a平臺上進行實驗,CPU為Intel?CoreTMi5-4200U,主頻為1.60 GHz和2.30 GHz,內存容量為4.00 GB(2.45 GB可用),硬盤容量為500 GB的測試環境下,分別在NCID和SIPI圖像數據庫中隨機選擇100幅圖像(若原始圖像為彩色圖像,則先將其轉換為灰度圖像;若原始圖像的大小不是256×256,則先將圖像的大小調整為256×256)進行實驗。在相同條件下,各種算法運行10次的平均運行時間如表7所示。從表7可以看出,文獻[12]的平均運行時間最小,本文算法的平均運行時間最大,與第3.3.4小節中的理論分析是相一致的。

Table 7 Running time for different algorithms表7 不同算法的運行時間 s
與基于差值擴展和直方圖平移的無損信息隱藏算法不同,本文基于圖像插值技術,提出一種自適應的大容量無損信息隱藏算法,具有如下的特點:
(1)提出一種改進的圖像插值算法,與相似的圖像插值算法相比,具有更好的性能。
(2)對待隱藏秘密數據的插值圖像進行重疊分塊,然后對分塊中的各個非基準像素自適應計算它能隱藏的最大秘密數據容量大小,提高了各個非基準像素能隱藏的秘密數據容量。
(3)采用自適應的秘密數據隱藏算法來隱藏秘密數據,提高了隱秘圖像的質量和解決了像素溢出問題。
在NCID和SIPI標準測試圖像數據庫上進行了大量的仿真實驗,結果表明與相似的無損信息隱藏算法相比,本文算法的平均BPP值提升了約90%,平均PSNR值提升了約9%,在相同的BPP值條件下,本文算法具有更高的PSNR值;將本文提出的秘密數據隱藏算法應用于其他圖像插值算法生成的插值圖像,隱秘圖像的PSNR值也得到了提高,進一步表明本文提出的秘密數據隱藏算法具有更優越的性能。