信息隱藏基礎(chǔ)實(shí)驗(yàn)
實(shí)驗(yàn)一 基于圖像的LSB信息隱藏算法一、 實(shí)驗(yàn)?zāi)康?、 了解和熟悉數(shù)字圖像的讀入和顯示等基本操作。2、 了解不同“位平面”對(duì)圖像質(zhì)量的影響。3、 掌握不同圖像格式之間的轉(zhuǎn)換方法。4、 熟悉和掌握基于圖像的LSB信息隱藏算法。5、 掌握對(duì)LSB算法的不可感知性的客觀評(píng)價(jià)。6、 掌握LSB提取算法。二、實(shí)驗(yàn)內(nèi)容1、結(jié)合EXZAMPLE.M,查看不同“位平面”對(duì)圖像質(zhì)量的影響。(1)運(yùn)行example.m程序,將“位平面”的第7、8位設(shè)置為0,得到如下結(jié)果,如圖所示:由圖分析得:去掉第7、8為,此兩位(低位)對(duì)圖像質(zhì)量沒有明顯影響,沒有攜帶圖像的有用信息。(2)運(yùn)行example.m程序,將“位平面”的第3、4位設(shè)置為0,得到如下結(jié)果,如圖所示:由上圖分析:對(duì)比左右兩幅圖像,可以看出去掉第3、4位對(duì)圖像質(zhì)量有較為明顯的影響,攜帶有圖像的有用信息。(2)運(yùn)行example.m程序,將“位平面”的第1、2位設(shè)置為0,得到如下結(jié)果,如圖所示:由圖分析:對(duì)比左右兩幅圖像,可以看出去掉第1、2位對(duì)圖像質(zhì)量產(chǎn)生非常大的影響,攜帶有圖像的大量有用信息。由此程序可以得出,不同“位平面”對(duì)圖像的質(zhì)量有不同程度的影響,第1、2位攜帶有有用信息,而第7、8位不含有圖像的有用信息。2、運(yùn)行water.m程序,理解不同圖像格式之間的轉(zhuǎn)換方法。運(yùn)行water.m程序,得到如下結(jié)果,如圖所示:分析:可以在圖像不同格式(RGB、灰度、二值)之間進(jìn)行轉(zhuǎn)換。3、閱讀并 "完善" imbed.m內(nèi)容,掌握基于圖像的LSB信息隱藏算法。(1)填寫完善imbed.m程序,填寫部分如下所示:(2)運(yùn)行已完善的imbed.m程序,得到如下結(jié)果,如下圖所示:分析:將水印嵌入灰度圖像的“位平面”第N=6位,得到上圖右圖所示,與原圖視覺效果沒有區(qū)別,嵌入成功。4、編寫matlab函數(shù):sse(f,f0)、mse(f,f0)、psnr(f,f0),實(shí)現(xiàn)對(duì)上述算法不可感知性的客觀評(píng)價(jià)。(1)編寫完成see(f,f0)函數(shù),編寫完畢如下所示:然后,在command窗口輸入如下程序:Img_imbeded=imread(Img_imbeded.bmp);Img_cover=imread(lena.bmp);Img_sse = sse(Img_imbeded,Img_cover) 運(yùn)行得到圖像的總方差值:(2)編寫完成mse(f,f0)函數(shù),編寫完畢如下所示:然后,在command窗口輸入如下程序:Img_mse = mse(Img_imbeded,Img_cover) 運(yùn)行得到圖像的總方差值:(3)編寫完成psnr(f,f0)函數(shù),編寫完畢如下所示:然后,在command窗口輸入如下程序:Img_psnr = psnr(Img_imbeded,Img_cover) 運(yùn)行得到圖像的峰值信噪比值:?jiǎn)挝粸?dB(分貝)分析:對(duì)偽裝后的圖像和載體圖像進(jìn)行不可感知性的客觀評(píng)價(jià),可以看出這種隱藏的峰值信噪比比較大,效果不是很好!5運(yùn)行detect.m程序,理解和掌握LSB提取算法的實(shí)現(xiàn)。 運(yùn)行detect.m程序,得到如下結(jié)果:容易看出所隱藏的信息被成功的提取出來,算法正確?。?)當(dāng)取“位平面”N=8,運(yùn)行Imbeddedm.m和dectect.m程序,得到如下結(jié)果,如圖所示:嵌入效果稍比N=6好些,提取出的秘密信息也正確!進(jìn)行不可感知性評(píng)價(jià),運(yùn)行sse(f,f0)、mse(f,f0)、psnr(f,f0)函數(shù),得到如下結(jié)果:與N=6相比其峰值信噪比增大,不可感知性更加好。故可得出,將秘密信息隱藏在最低位效果比較能取得較好的嵌入效果。三、分析及討論通過這個(gè)實(shí)驗(yàn),了解和掌握了LSB的隱藏算法以及提取算法,這是將每個(gè)像素點(diǎn)化為8位的“位平面”,在低位嵌入秘密信息,以達(dá)到隱藏信息的目的。此方法存在一種缺陷,即提取信息時(shí)須知道信息隱藏“位”,抗攻擊能力不高。此外,在編程中應(yīng)特別注意變量的類型,否則會(huì)造成錯(cuò)誤。實(shí)驗(yàn)二 基于變換域的信息隱藏算法一、 實(shí)驗(yàn)?zāi)康?、 復(fù)習(xí)理解基于變換域的信息隱藏技術(shù)相關(guān)內(nèi)容。2、 掌握基于變換域的信息隱藏方法。3、 了解DCT變換及其系數(shù)分布。4、 了解掌握相應(yīng)的秘密信息提取思路,并編寫提取程序。5、 總結(jié)DCT變換信息隱藏的思想并改進(jìn)之。二、實(shí)驗(yàn)內(nèi)容1、復(fù)習(xí)教材中基于變換域的信息隱藏(數(shù)字水印)技術(shù)相關(guān)內(nèi)容。目前主要使用的變換域方法有:離散余弦變換(DCT)、離散小波變換(DWT)、離散傅里葉變換(DFT)等。本實(shí)驗(yàn)主要探討離散余弦變換(DCT),DCT變換首先將載體圖像分為8x8的像素塊,然后進(jìn)行而為DCT變換,得到8x8的DCT系數(shù)這些DCT系數(shù)從低頻到高頻按照Zig-Zag次序排列,左上角部分為直流和低頻系數(shù),右下角部分為高頻系數(shù),中間區(qū)域?yàn)橹蓄l系數(shù)。一般將隱藏信息嵌入在載體中的中頻部分,保持了圖像的可視性。2、認(rèn)真閱讀,并運(yùn)行調(diào)試dct_imbed.m內(nèi)容,并思考該方法能否實(shí)現(xiàn)秘密信息的盲檢測(cè)?調(diào)試運(yùn)行程序,得到如下結(jié)果如圖所示:分析:該程序的核心語句如下:在選定的中頻系數(shù)中疊加秘密信息并沒有采用所選擇的DCT系數(shù),而是直接對(duì)秘密信息編碼后乘以嵌入強(qiáng)度,因此可以判斷出嵌入秘密信息時(shí)不需要載體圖像的參與,為盲檢測(cè)。3、對(duì)應(yīng)dct_imbed.m編程思路,編寫相應(yīng)的秘密信息提取程序dct_detect.m,實(shí)現(xiàn)watermarked_image.bmp中所嵌秘密信息的提取。編寫程序完畢,如下:運(yùn)行該程序,得到提取信息的結(jié)果,如下圖所示:秘密信息提取成功,說明算法是正確的。4、在dct_imbed.m和dct_detect.m的基礎(chǔ)上進(jìn)一步改進(jìn)該DCT域隱藏算法。 嵌入秘密信息和提取信息(1)嵌入信息程序編寫完畢其中關(guān)鍵部分如下:運(yùn)行程序,得到如下結(jié)果:實(shí)現(xiàn)了秘密信息的嵌入。(2)提取信息程序編寫完畢,其中關(guān)鍵部分如下:運(yùn)行程序得到如下結(jié)果:秘密信息提取成功,說明程序正確。(3)可通過改變嵌入信息強(qiáng)度k值來改善偽裝圖像的質(zhì)量,若令k=50,則得到如下結(jié)果:圖像質(zhì)量較以前有所改觀。運(yùn)行秘密信息提取程序,得到如下結(jié)果如圖示:由圖可以看出,提取信息過程中出現(xiàn)了一些錯(cuò)誤,故此條件下秘密信息嵌入強(qiáng)度較低。三、分析及討論通過這個(gè)實(shí)驗(yàn),了解和掌握了基于DCT變換域的秘密信息的隱藏和提取算法,將秘密信息隱藏在中頻部分,既不較大影響圖像質(zhì)量,也具有一定的抗攻擊能力。嵌入中也需考慮嵌入強(qiáng)度的影響,若選擇不當(dāng)就影響了圖像的提取和傳輸中的抗攻擊能力。實(shí)驗(yàn)三 回聲隱藏算法一、實(shí)驗(yàn)?zāi)康?1、了解“回聲隱藏”的基本原理和數(shù)學(xué)模型。2、了解“倒譜”的計(jì)算方法。3、了解音頻信號(hào)在matlab環(huán)境里的讀、寫、顯示。4、掌握在“回聲隱藏”基礎(chǔ)上進(jìn)行秘密信息的隱藏和提取方法。二、實(shí)驗(yàn)內(nèi)容1、復(fù)習(xí)教材中有關(guān)“回聲隱藏”的基本原理和數(shù)學(xué)模型的相關(guān)知識(shí)。在數(shù)字聲音中隱藏信息有一種方法是回聲隱藏發(fā),它主要是利用了人耳在一個(gè)較強(qiáng)聲音后的極短時(shí)間內(nèi)的較弱聲音的不可覺察性?;芈曤[藏方法是在數(shù)字聲音信號(hào)中引入回聲,引入回聲的不同方法就代表了秘密信息。生成的偽裝信號(hào)為,通過選擇不同的延遲來達(dá)到對(duì)秘密信息編碼的目的,比如,秘密信息為“0”,選擇延遲為;秘密信息為“1”,選擇延遲為。為了在一段語音信號(hào)中隱藏多個(gè)秘密信息比特,需要把連續(xù)載體語音信號(hào)先分成L(m)個(gè)短序列塊,每一個(gè)語音塊利用回聲隱藏方法隱藏一比特秘密信息。在每一塊之間用一些不用的取樣點(diǎn)隔開,并且間隔大小事隨機(jī)選取的,這些間隔不會(huì)引起聽者的察覺,并使得檢測(cè)和提取秘密信息更加困難。在接受端提取秘密信息時(shí),必須采取某種同步措施,使得接受者能夠得到L(m)個(gè)信號(hào)塊的起止位置,然后,在每一個(gè)信號(hào)塊中采用快速傅里葉變換得方法,求得信號(hào)的自相關(guān)函數(shù),自相關(guān)函數(shù)在延遲時(shí)間或者上出現(xiàn)峰值,就得到了隱藏的秘密信息。2、熟悉并掌握“倒譜”的計(jì)算方法。由于每段隱寫聲音信號(hào)都是一個(gè)卷積性組合信號(hào),直接從時(shí)域或頻域確定回聲延時(shí)存在一定困難,可采用卷積同態(tài)濾波系統(tǒng)來處理,將這個(gè)卷積性組合信號(hào)變?yōu)榧有越M合信號(hào)。傳統(tǒng)方法大都用倒譜分析來確定回聲延時(shí):其中:F和分別為傅立葉變換和逆變換。在信號(hào)的倒譜中,延遲時(shí)間d處會(huì)出現(xiàn)幅度為a的峰值,然后根據(jù)峰值出現(xiàn)位置的不同可確定嵌入回聲的延時(shí)大小,從而進(jìn)一步確定隱藏信息是“0”或是“1”。3、閱讀“myecho.m”,實(shí)現(xiàn)“回聲隱藏”法。將myecho.m程序填寫完整,如下所示:運(yùn)行此程序,得到如下結(jié)果: 由圖可以看出,采用回聲隱藏并沒有太大影響語音波形,并可以看到最后一個(gè)采樣點(diǎn)的倒譜峰值。4、在回聲隱藏的基礎(chǔ)上編寫程序,實(shí)現(xiàn)回聲隱藏算法。編程將20bit秘密信息隱藏在manvoice.wav中,編程完畢如下所示:運(yùn)行此程序,得到如下結(jié)果:由圖可以看出,秘密信息隱藏前后語音波形并沒有產(chǎn)生太大的變化,提取出的秘密信息中發(fā)生了一位誤碼,說明這種隱藏算法也存在著不足。三、分析及討論通過此次實(shí)驗(yàn),熟悉和掌握了基于回聲隱藏的語音信號(hào)的信息隱藏算法,了解了語音信號(hào)的讀入、寫和顯示,通過嵌入秘密信息前后語音質(zhì)量的對(duì)比,沒有對(duì)語音質(zhì)量造成太大的影響;但在提取過程中出現(xiàn)了一位的錯(cuò)誤信息,說明語音信號(hào)的隱藏比圖像隱藏要更困難些。