版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院</p><p> 信科專業(yè)綜合實(shí)踐設(shè)計(jì)報(bào)告</p><p> 專 業(yè): 電子信息科學(xué)與技術(shù) </p><p> 班 級(jí): 信科07-4班 </p><p> 設(shè)計(jì)題目: VC實(shí)現(xiàn)數(shù)字水印的加入與提取
2、 </p><p> 成 員: </p><p> 指導(dǎo)教師: </p><p> 2010年 10月 14日</p><p> 課程設(shè)計(jì)指導(dǎo)教師評(píng)閱書</p><p&g
3、t;<b> 指導(dǎo)教師評(píng)語:</b></p><p> 成 績(jī): 指導(dǎo)教師簽字:</p><p> 年 月 日</p><p><b> 【摘要】:</b></p><p> 當(dāng)前,數(shù)字圖像技術(shù)的主要研究熱點(diǎn)之一是數(shù)字水印的
4、應(yīng)用 。本文介紹了LSB算法的思想 ,利用 VC技術(shù)對(duì)數(shù)字圖像水印LSB算法進(jìn)行實(shí)現(xiàn),并總結(jié)LSB算法的利弊 ,提 出了可行的改進(jìn)措施。</p><p> 關(guān)鍵詞:VC;圖像處理;數(shù)字水?。籐SB算法</p><p><b> 一、前言9</b></p><p><b> 1.1背景9</b></p>
5、<p> 1.2數(shù)字水印的現(xiàn)狀10</p><p> 2.3數(shù)字水印的應(yīng)用12</p><p> 二、數(shù)字水印技術(shù)14</p><p> 2.1數(shù)字水印的起源、概念和基本原理14</p><p> 2.2數(shù)字水印的嵌入和提取14</p><p> 三、數(shù)字水印的典型算法15<
6、/p><p> 3.1最低有效位算法(LSB)16</p><p> 3.2 Patchwork 算法16</p><p> 3.3紋理塊映射編碼16</p><p><b> 3.4 其他16</b></p><p> 四、LSB算法的VC實(shí)現(xiàn)16</p><
7、p> 五 、實(shí)驗(yàn)體會(huì)20</p><p><b> 參考書目:21</b></p><p> 附錄1:算法設(shè)計(jì)說明書21</p><p> 附錄二:主要原程序23</p><p><b> 一、前言 </b></p><p><b> 1
8、.1背景</b></p><p> 隨著網(wǎng)絡(luò)通信的普及,許多傳統(tǒng)媒體內(nèi)容都向數(shù)字化轉(zhuǎn)變,并且在電子商務(wù)中即將占據(jù)巨大的市場(chǎng)份額,如mP3的網(wǎng)上銷售,數(shù)字影院的大力推行,網(wǎng)上圖片、電子書籍銷售等等。在無線領(lǐng)域,隨著移動(dòng)網(wǎng)絡(luò)由第二代到第三代的演變,移動(dòng)用戶將能方便快速的訪問因特網(wǎng)上數(shù)字媒體內(nèi)容,基于有線或無線網(wǎng)絡(luò)的數(shù)字媒體內(nèi)容的影院即將是信息時(shí)代新的趨勢(shì)。但是,數(shù)字媒體內(nèi)容的安全問題恰恰制約著信息化進(jìn)程
9、,雖然成熟的密碼學(xué)可以解決安全傳遞和訪問控制,但是一旦解密后,數(shù)字媒體內(nèi)容便可以隨意的被拷貝、傳播,它給媒體內(nèi)容制造商造成了巨大的損失;同時(shí),密文信息的傳遞也容易引起攻擊者的注意。因此如何安全的傳送信息就成了其中的關(guān)鍵,數(shù)字水印技術(shù)就成為開啟這一難點(diǎn)的鑰匙。</p><p> 數(shù)字水印(digital water marking)是實(shí)現(xiàn)版權(quán)保護(hù)的有效辦法,已成為多媒體信息安全研究領(lǐng)域的一個(gè)熱點(diǎn),也是信息隱藏技術(shù)
10、研究領(lǐng)域的重要分支。它通過在原始數(shù)據(jù)中嵌入秘密信息—水印(water mark)來證實(shí)該數(shù)據(jù)的所有權(quán)。被嵌入的水印可以是一段文字、標(biāo)識(shí)、序列號(hào)等。水印通常是不可見的或不可察的,它與原始數(shù)據(jù)(如圖像、音頻、視頻數(shù)據(jù)等)緊密結(jié)合并隱藏其中,成為源數(shù)據(jù)不可分離的一部分,并可以經(jīng)歷一些不破壞源數(shù)據(jù)使用價(jià)值或商用價(jià)值的操作而存活下來。</p><p> 數(shù)字水印技術(shù)除具備信息隱藏技術(shù)的一般特點(diǎn)外,還有著其固有的特點(diǎn)和研究
11、方法。例如,從信息安全的保密角度而言,隱藏的信息如果被破壞掉,系統(tǒng)可以視為安全的,因?yàn)槊孛苄畔⒉⑽葱孤?但是,在數(shù)字水印系統(tǒng)中,隱藏信息的丟失意味著版權(quán)信息的丟失,從而失去了版權(quán)保護(hù)的功能,這一系統(tǒng)就是失敗的。因此數(shù)字水印技術(shù)必須具有以下特性:安全性(嵌入在宿主數(shù)據(jù)中的水印是不可刪除的,且能夠提供完全的版權(quán)證據(jù))、魯棒性(水印對(duì)有意或無意的圖像操作與失真具有一定的抵抗力)以及不可覺察性(水印對(duì)人的感覺器官應(yīng)是不可覺察的,或者說是透明的)
12、。水印算法識(shí)別被嵌入到保護(hù)對(duì)象中的所有者的有關(guān)信息(如注冊(cè)的用戶號(hào)碼、產(chǎn)品標(biāo)志或有意義的文字等),并能在需要的時(shí)候?qū)⑵涮崛〕鰜?。水印可以用來判別對(duì)象是否受到保護(hù),并能夠監(jiān)視被保護(hù)數(shù)據(jù)的傳播、真?zhèn)舞b別以及非法拷貝控制等,這實(shí)際上是發(fā)展數(shù)字水印的基本動(dòng)力。盡管版權(quán)保護(hù)是發(fā)展數(shù)字水印最重要的源動(dòng)力,事實(shí)上人們還發(fā)現(xiàn)數(shù)字水印在真?zhèn)舞b別、隱藏通信、篡改提示、使用控制、標(biāo)題與注釋等領(lǐng)域都有重要應(yīng)用。數(shù)字水印術(shù)與古老的信息隱藏和數(shù)據(jù)加密技術(shù)關(guān)系非常密
13、切,這些技術(shù)的發(fā)展以及融合為今后信息技術(shù)的發(fā)展提供必</p><p> 1.2數(shù)字水印的現(xiàn)狀</p><p> 自從第一篇在主要會(huì)議上發(fā)表的關(guān)于數(shù)字水印的文章,即VanSchyndel在xexP’94上發(fā)表的題為“Adigitalwatermark”的文章以來,對(duì)數(shù)字水印的研究興趣在不斷的增長。這既可以從學(xué)術(shù)界也可以從工業(yè)界看出來。學(xué)術(shù)界的熱情反映在水印方面的文章還在大幅度增長,且有關(guān)
14、數(shù)字水印和數(shù)據(jù)隱藏的會(huì)議也增長很快,幾個(gè)有影響的國際會(huì)議(如IEEE ICIP、IEEE ICASSP、ACM Multimedia等)以及一些國際權(quán)威雜志(如Proceedings of IEEE Signal processing,IEEE Journal of Selected Areas on Communication,Communications of ACM等)相繼出版了數(shù)字水印的專輯。并且,國際上還成立了一些專門的研究機(jī)
15、構(gòu),如拷貝保護(hù)技術(shù)工作組(CPTWG,Copy protection Technique Working Group)從1995年開始致力于基于DVD的視頻版權(quán)保護(hù)研究,安全數(shù)字音樂創(chuàng)始(SDMI,Secure Digital Music Initiative)從1999年開始研究音</p><p> 一項(xiàng)由德國人開發(fā)出來的數(shù)字水印技術(shù)已經(jīng)在比利時(shí)開始商業(yè)應(yīng)用,這項(xiàng)技術(shù)據(jù)稱可以防止在線音樂的非法復(fù)制。首個(gè)應(yīng)用該
16、技術(shù)的是比利時(shí)歌手SoulBob的新專輯,該專輯將很快可以在網(wǎng)絡(luò)上下載。不過購買者的姓名以及住址等個(gè)人信息將加入到數(shù)字水印中。這樣非法復(fù)制的音樂將可以很快找到源頭。目前國際上的劍橋大學(xué)、IBM研究中心、NEC美國研究所、麻省理工學(xué)院等都進(jìn)行了廣泛深入的研究;國際標(biāo)準(zhǔn)組織也對(duì)數(shù)字水印技術(shù)深感興趣。如歐洲的TALISMAN的目標(biāo)是建立一個(gè)在歐洲范圍內(nèi)對(duì)大規(guī)模的商業(yè)侵權(quán)和盜版行為提供一個(gè)版權(quán)保護(hù)機(jī)制。TALIMAN希望能夠?yàn)橐曨l產(chǎn)品以增加標(biāo)識(shí)
17、和水印的</p><p> 方法提高保護(hù)手段。OCEAUS則是TALIMAN和OKAPI的后續(xù)項(xiàng)目,其主要目的是將有條件的訪問機(jī)制和版權(quán)保護(hù)機(jī)制整合起來。即將發(fā)布的數(shù)字視頻壓縮標(biāo)準(zhǔn)MPEG-4,提供一個(gè)框架允許結(jié)合簡(jiǎn)單的加密方法和水印嵌入方法。DVD工業(yè)標(biāo)準(zhǔn)將利用水印技術(shù)提供復(fù)制控制和復(fù)制保護(hù)機(jī)制,如“復(fù)制一次”或“不允許復(fù)制”等等。</p><p> 我國學(xué)術(shù)界對(duì)數(shù)字水印技術(shù)的研究也
18、方興未艾,已經(jīng)有相當(dāng)一批有實(shí)力的科研機(jī)構(gòu)投入到這一領(lǐng)域的研究中來,有的已經(jīng)取得了重要研究成果。為推動(dòng)我國在數(shù)字水印這一國際前沿計(jì)算機(jī)技術(shù)的發(fā)展,促進(jìn)我國研究人員在此領(lǐng)域的交流與合作,國家863計(jì)劃智能計(jì)算機(jī)專家,會(huì)同中科院自動(dòng)化所模式識(shí)別國家重點(diǎn)實(shí)驗(yàn)室和北京郵電大學(xué)信息安全中心,于2000年年初召開了國內(nèi)首次數(shù)字水印學(xué)術(shù)研討會(huì)。來自全國20多家重點(diǎn)高校和科研單位計(jì)算機(jī)、自動(dòng)化、電子學(xué)</p><p> 科及數(shù)學(xué)
19、學(xué)科的80多名科研一線專家與青年工作者,參加了這次研討會(huì)。眾多的學(xué)術(shù)成果表明,我國科研工作者在數(shù)字水印方面的研究處于國際先進(jìn)水平。同時(shí),他們表示要盡快把研究成果轉(zhuǎn)化為生產(chǎn)力,解決與每個(gè)人切身利益密切相關(guān)的數(shù)字產(chǎn)品保護(hù)問題。</p><p> 但是,我國在該領(lǐng)域的研究尚不普及,隨著數(shù)字化產(chǎn)品在中國的廣泛開展,特別是今后幾年因特網(wǎng)用戶將成倍增長,電子商務(wù)會(huì)加速發(fā)展,在網(wǎng)絡(luò)上直接銷售數(shù)字化產(chǎn)品將給廠家?guī)順O大的商機(jī),
20、也是中國產(chǎn)品走向世界的極佳途徑,其時(shí)如何有效保護(hù)產(chǎn)品的產(chǎn)權(quán)將成為廠商極為關(guān)心的問題。</p><p> 到目前為止,數(shù)字水印從研究對(duì)象上看主要涉及圖像水印、視頻水印、音頻水印、文本水印和三維網(wǎng)格數(shù)據(jù)水印等幾個(gè)方面,其中大部分的水印研究和論文都集中在圖像研究上,其原因在于圖像是最基本的多媒體數(shù)據(jù),且互聯(lián)網(wǎng)的發(fā)展為圖像水印的應(yīng)用提供了直接大量的應(yīng)用需求。另外視頻水印也吸引了一些研究人員,由于視頻可以看成時(shí)一空域上的
21、連續(xù)圖像序列,從某種意義上講,它與圖像水印的原理非常類似,許多圖像水印的研究結(jié)果可以直接應(yīng)用于視頻水印上。但兩者有一個(gè)重要的差別在于處理信號(hào)的數(shù)量級(jí)上,特別是視頻水印需要考慮實(shí)時(shí)性問題。</p><p> 2.3數(shù)字水印的應(yīng)用</p><p> 數(shù)字水印的應(yīng)用研究成為了國內(nèi)外公司和學(xué)術(shù)界的研究焦點(diǎn)。大部分的工作致力于尋求同時(shí)滿足保真度、魯棒性、嵌入容量和經(jīng)濟(jì)約束的平衡點(diǎn)。針對(duì)幾何和時(shí)間
22、上失真的研究,也有穩(wěn)步進(jìn)展,出現(xiàn)了大量不同變換域的實(shí)驗(yàn)結(jié)果,如頻域變換有DCT,F(xiàn)FT,DWT和Fourier-Mellin等算法,還有大量的算法在MPEG和JPEG編碼中進(jìn)行,因?yàn)檫@樣可以節(jié)省昂貴的水印解碼負(fù)荷,有利于大批量的應(yīng)用,如DVD拷貝控制應(yīng)用等.目前數(shù)字水印的應(yīng)用主要集中在以下幾個(gè)方面:</p><p> 1) 版權(quán)保護(hù) 版權(quán)標(biāo)識(shí)水印是目前研究最多的一類數(shù)字水印。由于數(shù)字作品的拷貝、修改非常容易,而
23、且可以做到與原作完全相同,所以原創(chuàng)者不得不采用一些嚴(yán)重?fù)p害作品質(zhì)量的辦法來加上版權(quán)標(biāo)志,而這種明顯可見的標(biāo)志很容易被篡改。數(shù)字作品的所有者可用密鑰產(chǎn)生一個(gè)水印,并將其嵌入原始數(shù)據(jù),然后公開發(fā)布其水印版本作品。當(dāng)該作品被盜版或出現(xiàn)版權(quán)糾紛時(shí),所有者即可從盜版作品或水印版作品中獲取水印信號(hào)作為依據(jù),從而保護(hù)所有者的權(quán)益。</p><p> 2) 加指紋 如果嵌入到數(shù)字媒體中的數(shù)字水印用以標(biāo)一記媒體的使用者,當(dāng)出現(xiàn)侵
24、權(quán)行為時(shí),通過檢測(cè)水印信息便可跟蹤盜版。此時(shí)數(shù)字水印稱之為數(shù)字指紋。它要求水印信息具有很高的高魯棒性、高容量。為避免未經(jīng)授權(quán)的拷貝制作和發(fā)行,出品人可以將不同用戶的ID或序列號(hào)作為數(shù)字指紋嵌入作品的合法拷貝中。一旦發(fā)現(xiàn)未經(jīng)授權(quán)的拷貝,就可以根據(jù)此拷貝所恢復(fù)出的指紋來確定它的來源。美國TTR公司用DiscGuard防盜版技術(shù)來保護(hù)軟件出版商的知識(shí)產(chǎn)權(quán)、防止軟件被盜版或非法復(fù)制。這種技術(shù)在CD一ROM和DVD盤片上嵌入一個(gè)不可復(fù)制的“數(shù)字指
25、紋,利用這個(gè)“數(shù)字指紋”可以鑒別出光盤是正版還是盜版,從而控制軟件的運(yùn)行,即有“指紋”才能運(yùn)行,沒“指紋”不能運(yùn)行。這個(gè)“數(shù)字指紋”是在母版制作(Mastering)過程中,通過在現(xiàn)有母版制作的激光系統(tǒng)上加入一個(gè)插件或者通過增強(qiáng)型光盤刻錄機(jī)實(shí)現(xiàn)的。用這個(gè)刻有“數(shù)字指紋”的母版復(fù)制出的每一張CD一ROM都含有“數(shù)字指紋,這個(gè)“數(shù)字指紋,不能夠再被復(fù)制的。無論是利用光盤刻錄機(jī)或者用這張CD一ROM再做母版,都不能復(fù)制“數(shù)字指紋”,也就是非法
26、復(fù)制的CD一ROM不含“數(shù)字指紋”,盜版的軟</p><p> 3) 標(biāo)題與注釋 即將作品的標(biāo)題、注釋等內(nèi)容(如,一幅照片的拍攝時(shí)間和地點(diǎn)等)以水印形式嵌入該作品中,這種隱式注釋不需要額外的帶寬,且不易丟失。</p><p> 4) 篡改提示 當(dāng)數(shù)字作品被用于法庭、醫(yī)學(xué)、新聞及商業(yè)時(shí),常需確定它們的內(nèi)容是否被修改、偽造或特殊處理過。為實(shí)現(xiàn)該目的,通常可將原始圖像分成多個(gè)立塊,再將每個(gè)塊
27、加入不同的水印。同時(shí)可通過檢測(cè)每個(gè)數(shù)據(jù)塊中的水印信號(hào),來確定作品的完整性。與其他水印不同的是,這類水印必須是脆弱的,并且檢測(cè)水印信號(hào)時(shí),不需要原始數(shù)據(jù)。</p><p> 5) 使用控制 這種應(yīng)用的一個(gè)典型的例子是DVD 防拷貝系統(tǒng),即將水印信息加入OVO數(shù)據(jù)中,這樣OVO播放機(jī)即可通過檢測(cè)OVO數(shù)據(jù)中的水印信息而判斷其合法性和可拷貝性。從而保護(hù)制造商的商業(yè)利益。</p><p> 6
28、)內(nèi)容認(rèn)證 如果數(shù)字水印不具有魯棒性,則當(dāng)數(shù)字媒體受到處理時(shí),嵌入到其中的水印信息不可避免被破壞;根據(jù)水印被破壞的情況可以對(duì)數(shù)字媒體進(jìn)行內(nèi)容認(rèn)證。此時(shí),數(shù)字水印具有易碎性(或是半易碎性):對(duì)改變媒體內(nèi)容的處理不具有任何魯棒性,對(duì)不改變媒體內(nèi)容的處理具有一定的魯棒性,在此方面優(yōu)于數(shù)字簽名技術(shù)。這方面的研究已經(jīng)有很長時(shí)間了,并且己經(jīng)取得了豐碩的成果。目前主要分為可逆數(shù)字水印和不可逆數(shù)字水印。</p><p> 7)
29、隱蔽通信及其對(duì)抗 數(shù)字水印所依賴的信息隱藏技術(shù)不僅提供了非密碼的安全途徑,可以實(shí)現(xiàn)網(wǎng)絡(luò)情報(bào)戰(zhàn)的革命。網(wǎng)絡(luò)情報(bào)戰(zhàn)是信息戰(zhàn)的重要組成部分,其核心內(nèi)容是利用公用網(wǎng)絡(luò)進(jìn)行保密數(shù)據(jù)傳送。由于經(jīng)過加密的文件往往是混亂無序的,容易引起攻擊者的注意。網(wǎng)絡(luò)多媒體技術(shù)的廣泛應(yīng)用使得利用公用網(wǎng)絡(luò)進(jìn)行保密通信有了新的思路,利用數(shù)字化聲像信號(hào)相對(duì)于人的視覺、聽覺冗余,可以進(jìn)行各種信息隱藏,從而實(shí)現(xiàn)隱蔽通信。</p><p><b&g
30、t; 二、數(shù)字水印技術(shù)</b></p><p> 2.1數(shù)字水印的起源、概念和基本原理</p><p> 信息隱藏,也稱為信息偽裝(StegaflograPhy),該單詞來源于古希臘,意思是將有用或重要的信息隱藏于其他信息里面以掩飾其存在,也就是將機(jī)密信息秘密地隱藏于另一非機(jī)密的文件內(nèi)容之中。密碼學(xué)是研究如何保護(hù)消息內(nèi)容的,而偽裝術(shù)(密寫術(shù))是專門研究如何隱藏它們的存在性
31、。</p><p> 數(shù)字水印技術(shù)的基本思想源于古代的偽裝術(shù),古希臘的斯巴達(dá)人曾將軍事情報(bào)刻在普通的木板上,用石蠟填平,收信的一方只要用火烤熱木板,融化石蠟后就可以看到密信。使用最廣泛的密寫方法恐怕要算化學(xué)密寫了,牛奶、白礬、果汁等都曾充當(dāng)過密寫藥水的角色。大約700年前,在手工造紙技術(shù)中出現(xiàn)了紙張上的水印。</p><p> 2.2數(shù)字水印的嵌入和提取</p><
32、p> 數(shù)字水印是向多媒體數(shù)據(jù)中添加某些數(shù)字信息以達(dá)到文件真?zhèn)舞b別 、版權(quán)保護(hù)等功能。嵌入的水印信息隱藏于宿主文件中,不影響原始文件的可觀性和完整性。數(shù)字圖像水印處理過程主要包括水印生成、嵌入和檢測(cè)三個(gè)步驟。而整個(gè)水印系統(tǒng)還應(yīng)包括外界的攻擊過程。整個(gè)數(shù)字圖像水印系統(tǒng)的基本模型如圖1所示。</p><p> 數(shù)字水印生成過程G的輸入為原始信息m、原始圖像X和水印生成密鑰K1,輸出為待嵌入的數(shù)字水?。住H藗兺?/p>
33、常采用的水印形式是二進(jìn)制序列。有時(shí),數(shù)字水印并不通過生成算法生成 ,而直接給定有意義的圖形或圖標(biāo)作為數(shù)字水印。在水印嵌入過程中,原始圖像X、水?。滓约扒度朊荑€K2經(jīng)過嵌入函數(shù)E的作用,生成含水印圖像 Y。通常 ,嵌入 函數(shù) E用 插入操作符作用在一組特征集F(X)來描述 :F(Y) =F(X) W。根據(jù)水印所嵌入的特征集類型的不同 ,數(shù)字圖像水印算法一般分為空域算法和變換域算法兩類。 另外,一旦生成含水印圖像 ,該圖像將在一定的媒介中傳
34、輸或流通 ,一定會(huì)受到一些有意或無意的攻擊 ,從而得到可疑圖像, 關(guān)于水印檢測(cè),把根據(jù)檢測(cè)密鑰K3(有時(shí)還需要原始圖像X和原始水?。祝┡袛嗫梢蓤D像是否存在水印的過程稱為水印檢測(cè),而把根據(jù)提取密鑰 K3提取可疑圖像中的水印的過程稱為水印提取。</p><p> 三、數(shù)字水印的典型算法</p><p> 數(shù)字水印技術(shù)橫跨了信號(hào)處理、數(shù)字通信、密碼學(xué)、模式識(shí)別等多種學(xué)科,各專業(yè)領(lǐng)域的研究者均
35、有獨(dú)特的研究角度,其算法可謂是五花八門,無所不用,主要的有以下幾種:</p><p> 3.1最低有效位算法(LSB)</p><p> 最低有效位算法(LSB)是L.F.Turner 和 R.G.van Schyndel 等人提出的第一個(gè)數(shù)字水印算法,是一種典型的空間域信息隱藏算法。LSB 算法使用特定的密鑰通過m序列發(fā)生器產(chǎn)生隨機(jī)信號(hào),然后按一定的規(guī)則排列成 2 維水印信號(hào),并逐一
36、插入到原始圖像相應(yīng)像素值的最低幾位。由于水印信號(hào)隱藏在最低位,相當(dāng)于疊加了一個(gè)能量微弱的信號(hào),因而在視覺和聽覺上很難察覺。LSB 水印的檢測(cè)是通過待測(cè)圖像與水印圖像的相關(guān)運(yùn)算和統(tǒng)計(jì)決策實(shí)現(xiàn)的。Stego Dos 、White Noise Storm 、 STools 等早期數(shù)字水印算法都采用了 LSB 算法。LSB 算法雖然可以隱藏較多的信息,但隱藏的信息可以被輕易移去,無法滿足數(shù)字水印的魯棒性要求,因此現(xiàn)在的數(shù)字水印軟件已經(jīng)很少采用L
37、SB 算法了。不過,作為一種大數(shù)據(jù)量的信息隱藏方法, LSB 在隱蔽通信中仍占據(jù)著相當(dāng)重要的地位。</p><p> 本次實(shí)驗(yàn)我所采用就是LSB算法。</p><p> 3.2 Patchwork 算法</p><p> Patchwork 是麻省理工學(xué)院媒體實(shí)驗(yàn)室 Walter Bander 等人提出的一種數(shù)字水印算法,主要用于打印票據(jù)的防偽。Patchwo
38、rk 數(shù)字水印隱藏在特定圖像區(qū)域的統(tǒng)計(jì)特性中,其魯棒性很強(qiáng),可以有效地抵御剪切、灰度校正、有損壓縮等攻擊,其缺陷是數(shù)據(jù)量較低,對(duì)仿射變換敏感,對(duì)多拷貝平均攻擊的抵抗力較弱。</p><p> 3.3紋理塊映射編碼</p><p> 紋理塊映射將水印信息隱藏在圖像的隨機(jī)紋理區(qū)域中,利用紋理間的相似性掩蓋水印信息。該算法對(duì)濾波、壓縮和扭轉(zhuǎn)等操作具有抵抗能力,但需要人工干預(yù)。</p&g
39、t;<p><b> 3.4 其他</b></p><p> 文本微調(diào)算法、DCT 變換域數(shù)字水印算法、直接序列擴(kuò)頻水印算法等</p><p> 四、LSB算法的VC實(shí)現(xiàn)</p><p> LSB(最低有效位)算法是一種典型的空間域數(shù)據(jù)隱藏方法,該方法將特定的標(biāo)記隱藏于數(shù)字音頻和數(shù)字圖像內(nèi) 。 在灰度圖像中,每個(gè)像素通常為
40、8位 ,每一位的取值為0或1。在數(shù)字圖像中,每個(gè)像素的各個(gè)位對(duì)圖像的貢獻(xiàn)是不同的 。對(duì)于8位的灰度圖像每個(gè)像素的數(shù)據(jù)可用公式表示為 : 式中:i表示像素的第幾位;表示第i位的取值,{0,1}。</p><p> 這樣,便可以把整個(gè)圖像分解為8?jìng)€(gè)位平面,從LSB(最低有效位 )MSB(最高有效位 )。從位平面的分布來看 ,隨著位平面從低位到高(即 從位平面0到位平面 7),位平面圖像的特征逐漸變得復(fù)雜 ,細(xì)節(jié)不斷
41、增加。 到了比較低的位平面時(shí),單純從一 幅位平面上已經(jīng)逐漸不能看出和測(cè)試圖像的信息了。由于低位所代表的能量很少, 改變低位對(duì)圖像的質(zhì)量沒有太大的影響。LSB方法正是利用這一點(diǎn)在圖像低位隱藏水印信息。</p><p><b> 水印嵌入算法: </b></p><p> 本文采用VC技術(shù)來開發(fā)實(shí)現(xiàn)。所用的嵌入與提取密鑰將明文逐位轉(zhuǎn)換成密文,它是將密鑰流Ki與明文流P
42、i進(jìn)行異或運(yùn)算產(chǎn)生密文比特流;Ci=PiKi ;在解密端 ,密文流與完全相同的密鑰流異或運(yùn)算恢復(fù)出明文流:Pi=CiKi 遮掩消息的LSB 直接被待隱消息的比特位或兩者之間經(jīng)過某種邏輯運(yùn)算的結(jié)果所代替 ,在此用的是異或運(yùn)算。 </p><p><b> 主要代碼如下:</b></p><p> void CDib::Embed()//嵌入</p>
43、<p><b> {</b></p><p> unsigned char bmdata;//bitmap data</p><p> unsigned char efdata;//embeddedfile data</p><p> int t = 7;</p><p> int x[8];
44、</p><p><b> int s[8];</b></p><p> int last_bit; //記錄字節(jié)最低位本來的bit</p><p> for(UINT i1 = 0, i2 = 0; i1 <= bitmap_size - 1, i2 <= embfile_size - 1; i1++)</p>
45、<p><b> {</b></p><p> bmdata = *p;</p><p> for (int j = 0; j <= 7; j++) //計(jì)算各bit位</p><p><b> {</b></p><p> x[j] = bmdata & 1;
46、</p><p> bmdata >>= 1;</p><p><b> }</b></p><p> last_bit = x[0];</p><p> x[0] = x[1] ^ x[2] ^ x[3] ^ x[4] ^ x[5] ^ x[6] ^ x[7];</p><p&g
47、t; if (t == 7) //宿主圖片每走過八個(gè)字節(jié),計(jì)算一次s[]</p><p><b> {</b></p><p> efdata = *q;</p><p> for (j = 0; j <= 7; j++)</p><p><b> {</b></p>
48、;<p> s[j] = efdata & 1;</p><p> efdata >>= 1;</p><p><b> }</b></p><p><b> }</b></p><p> x[0] ^= s[t];//隱藏信息</p>&l
49、t;p> if (last_bit == 0) //嵌入隱藏信息</p><p><b> {</b></p><p> *p |= x[0];</p><p><b> }</b></p><p><b> else</b></p><p
50、><b> {</b></p><p> *p &= 254 + x[0];</p><p><b> }</b></p><p><b> p++;</b></p><p><b> t--;</b></p><
51、;p> if (t == -1) //需要計(jì)算一次s[]</p><p><b> {</b></p><p><b> t = 7;</b></p><p><b> q++;</b></p><p><b> i2++;</b><
52、;/p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> 設(shè)計(jì)中不僅可以把水印嵌入到最低位,而且將水印分別嵌入到第1位,第2位等。通過對(duì)比,可以驗(yàn)證水印嵌入到最低為具有更好的不可見性,當(dāng)水印逐漸嵌入到
53、高位時(shí),水印的不可見性越來越不好,甚至影響到圖片的視覺效果。</p><p><b> 水印提取算法設(shè)計(jì):</b></p><p><b> 主要代碼:</b></p><p> void CDib::Pick()//提取</p><p><b> {</b></
54、p><p> m_pFile = new unsigned char [embfile_size];</p><p> unsigned char *q = m_pFile;</p><p> unsigned char bmdata;//bitmap data</p><p> int x[8];</p><p&g
55、t;<b> int s[8];</b></p><p> int t = 7;</p><p> for (UINT i1 = 0, i2 = 0; i1 <= bitmap_size - 1, i2 <= embfile_size - 1; i1++)</p><p><b> {</b></
56、p><p> bmdata = *p;</p><p> for (int j = 0; j <= 7; j++) //計(jì)算各bit位</p><p><b> {</b></p><p> x[j] = bmdata & 1;</p><p> bmdata >>
57、= 1;</p><p><b> }</b></p><p> s[t] = x[0] ^ x[1] ^ x[2] ^ x[3] ^ x[4] ^ x[5] ^ x[6] ^ x[7];</p><p><b> t--;</b></p><p> if (t == -1) //s[7]到
58、s[0]組成一個(gè)字節(jié)</p><p><b> {</b></p><p> *q = s[7] * 128 + s[6] * 64 + s[5] * 32 + s[4] * 16 + </p><p> s[3] * 8 + s[2] * 4 + s[1] * 2 + s[0];</p><p><b>
59、; t = 7;</b></p><p><b> i2++;</b></p><p><b> q++;</b></p><p><b> }</b></p><p><b> p++;</b></p><p&g
60、t;<b> }</b></p><p> } </p><p> 對(duì)于水印的圖像提取,也就是將嵌入水印后的圖片的每個(gè)像素的R,G,B分量的最后一位還原成水印對(duì)引的二進(jìn)制序列,即用8個(gè)連續(xù)的最低位通過異或運(yùn)算獲取。</p><p><b> 五 、實(shí)驗(yàn)體會(huì)</b></p><
61、p> 本文通過VC技術(shù)實(shí)現(xiàn)了數(shù)字圖像水印LSB算法 ,嵌入與提取密鑰是對(duì)稱密鑰算法中的序列密碼算法。通過設(shè)計(jì)可以方便地在宿主圖像中嵌人大量數(shù)字信息 ,在嵌入水 印容量上能實(shí)現(xiàn)較高容量和在最低位嵌入時(shí)有較好的不可見性。LSB算法的優(yōu)點(diǎn)是其算法簡(jiǎn)單,計(jì)算速度比較快。但是對(duì)圖像的各種操作如壓縮、剪切等 ,都會(huì)使算法的可靠性受到影響,也有可能通過噪聲增加或有損 壓縮而消除水印,即魯棒性較差 ?!?針對(duì)LSB算法的特點(diǎn),我們可以
62、提出改進(jìn):把水印信息先進(jìn)行壓縮、加密編碼 ,通過相應(yīng)函數(shù)重新排序,打亂正常序列,隨機(jī)形式加入印信息 ,來提高水印算法的魯棒性和安全性。因此,LSB算法需要結(jié)合加密等方法提高其魯棒性和安全性。藏較多的信息,但隱藏的信息可以被輕易移去,無法滿足數(shù)字水印的魯棒性要求,因此現(xiàn)在的數(shù)字水印軟件已經(jīng)很少采用LSB 算法了。不過,作為一種大數(shù)據(jù)量的信息隱藏方法, LSB 在隱蔽通信中仍占據(jù)著相當(dāng)重要的地位。</p><p>&
63、lt;b> 參考書目:</b></p><p> 【1】數(shù)字水印理論與技術(shù) 金聰編著 清華大學(xué)出版社</p><p> 【2】數(shù)字水印理論與技術(shù) 楊義先 鈕心忻 編著 高等教育出版社</p><p> 【3】Visual C++圖形用戶界面開發(fā)指南 李傅軒等編著 清華大學(xué)出 版社</p><p> 【4】胡榮
64、,陳健.數(shù)字圖像的水印技術(shù).上海交通大學(xué)學(xué)報(bào),2001</p><p> 附錄1:算法設(shè)計(jì)說明書</p><p> 數(shù)字水印是向多媒體數(shù)據(jù)中添加某些數(shù)字信息以達(dá)到文件真?zhèn)舞b別 、版權(quán)保護(hù)等功能。嵌入的水印信息隱藏于宿主文件中,不影響原始文件的可觀性和完整性。數(shù)字圖像水印處理過程主要包括水印生成、嵌入和檢測(cè)三個(gè)步驟。而整個(gè)水印系統(tǒng)還應(yīng)包括外界的攻擊過程。整個(gè)數(shù)字圖像水印系統(tǒng)的基本模型如圖
65、1所示。</p><p> 數(shù)字水印生成過程G的輸入為原始信息m、原始圖像X和水印生成密鑰K1,輸出為待嵌入的數(shù)字水?。住H藗兺ǔ2捎玫乃⌒问绞嵌M(jìn)制序列。有時(shí),數(shù)字水印并不通過生成算法生成 ,而直接給定有意義的圖形或圖標(biāo)作為數(shù)字水印。在水印嵌入過程中,原始圖像X、水印W以及嵌入密鑰K2經(jīng)過嵌入函數(shù)E的作用,生成含水印圖像 Y。通常 ,嵌入 函數(shù) E用 插入操作符作用在一組特征集F(X)來描述 :F(Y) =
66、F(X) W。根據(jù)水印所嵌入的特征集類型的不同 ,數(shù)字圖像水印算法一般分為空域算法和變換域算法兩類。 另外,一旦生成含水印圖像 ,該圖像將在一定的媒介中傳輸或流通 ,一定會(huì)受到一些有意或無意的攻擊 ,從而得到可疑圖像, 關(guān)于水印檢測(cè),把根據(jù)檢測(cè)密鑰K3(有時(shí)還需要原始圖像X和原始水?。祝┡袛嗫梢蓤D像是否存在水印的過程稱為水印檢測(cè),而把根據(jù)提取密鑰 K3提取可疑圖像中的水印的過程稱為水印提取。</p><p>
67、LSB(最低有效位)算法是一種典型的空間域數(shù)據(jù)隱藏方法,該方法將特定的標(biāo)記隱藏于數(shù)字音頻和數(shù)字圖像內(nèi) 。 在灰度圖像中,每個(gè)像素通常為8位 ,每一位的取值為0或1。在數(shù)字圖像中,每個(gè)像素的各個(gè)位對(duì)圖像的貢獻(xiàn)是不同的 。對(duì)于8位的灰度圖像每個(gè)像素的數(shù)據(jù)可用公式表示為 : 式中:i表示像素的第幾位;表示第i位的取值,{0,1}。</p><p> 這樣,便可以把整個(gè)圖像分解為8?jìng)€(gè)位平面,從LSB(最低有效位 )MS
68、B(最高有效位 )。從位平面的分布來看 ,隨著位平面從低位到高(即 從位平面0到位平面 7),位平面圖像的特征逐漸變得復(fù)雜 ,細(xì)節(jié)不斷增加。 到了比較低的位平面時(shí),單純從一 幅位平面上已經(jīng)逐漸不能看出和測(cè)試圖像的信息了。由于低位所代表的能量很少, 改變低位對(duì)圖像的質(zhì)量沒有太大的影響。LSB方法正是利用這一點(diǎn)在圖像低位隱藏水印信息。</p><p> 本文采用VC技術(shù)來開發(fā)實(shí)現(xiàn)。所用的嵌入與提取密鑰將明文逐位轉(zhuǎn)換
69、成密文,它是將密鑰流Ki與明文流Pi進(jìn)行異或運(yùn)算產(chǎn)生密文比特流;Ci=PiKi ;在解密端 ,密文流與完全相同的密鑰流異或運(yùn)算恢復(fù)出明文流:Pi=CiKi 遮掩消息的LSB 直接被待隱消息的比特位或兩者之間經(jīng)過某種邏輯運(yùn)算的結(jié)果所代替 ,在此用的是異或運(yùn)算。</p><p><b> 附錄二:主要原程序</b></p><p> // DIB.cpp</p&
70、gt;<p> #include "stdafx.h"</p><p> #include "DIB.h"</p><p> CDib::CDib()</p><p><b> {</b></p><p> m_pDib = NULL;</p>
71、<p> m_pWordData = NULL;</p><p> m_pFile = NULL;</p><p> m_pOldDibShow = NULL;</p><p><b> }</b></p><p> CDib::~CDib()</p><p><b&g
72、t; {</b></p><p> if( m_pDib != NULL )</p><p> delete [] m_pDib;</p><p> if( m_pWordData != NULL )</p><p> delete [] m_pWordData;</p><p> if (m_
73、pFile != NULL)</p><p> delete [] m_pFile;</p><p> if (m_pOldDibShow != NULL)</p><p> delete [] m_pOldDibShow;</p><p><b> }</b></p><p> BOO
74、L CDib::Load( const char *pszFilename )</p><p><b> {</b></p><p><b> CFile cf;</b></p><p> if( !cf.Open( pszFilename, CFile::modeRead ) )</p><p&
75、gt; return( FALSE );</p><p> DWORD dwDibSize;</p><p> dwDibSize =</p><p> cf.GetLength() - sizeof( BITMAPFILEHEADER );</p><p> unsigned char *pDib;</p><
76、p> pDib = new unsigned char [dwDibSize];</p><p> if( pDib == NULL )</p><p> return( FALSE );</p><p> BITMAPFILEHEADER BFH;</p><p><b> try{</b></p
77、><p> if( cf.Read( &BFH, sizeof( BITMAPFILEHEADER ) )</p><p> != sizeof( BITMAPFILEHEADER ) ||</p><p> BFH.bfType != 'MB' ||</p><p> cf.Read( pDib, dwDibSi
78、ze ) != dwDibSize ){</p><p> delete [] pDib;</p><p> return( FALSE );</p><p><b> }</b></p><p><b> }</b></p><p> catch( CFileEx
79、ception *e ){</p><p> e->Delete();</p><p> delete [] pDib;</p><p> return( FALSE );</p><p><b> }</b></p><p> cf.Close();</p><
80、;p> if( m_pDib != NULL )</p><p> delete m_pDib;</p><p> if (BFH.bfReserved1 != 0) //含有隱藏信息,保存其大小</p><p><b> {</b></p><p> if (BFH.bfReserve
81、d2 == 0)</p><p> embfile_size = BFH.bfReserved1;</p><p><b> else</b></p><p> embfile_size = BFH.bfReserved1 + 65535;</p><p><b> }</b></p&
82、gt;<p> m_pDib = pDib;</p><p> m_dwDibSize = dwDibSize;</p><p> m_pBIH = (BITMAPINFOHEADER *) m_pDib;</p><p> m_pPalette =</p><p> (RGBQUAD *) &m_pDib[s
83、izeof(BITMAPINFOHEADER)];</p><p> m_nPaletteEntries = 1 << m_pBIH->biBitCount;</p><p> if( m_pBIH->biBitCount > 8 ) </p><p> m_nPaletteEntries = 0;</p&g
84、t;<p> else if( m_pBIH->biClrUsed != 0 )</p><p> m_nPaletteEntries = m_pBIH->biClrUsed;</p><p> m_pDibBits = </p><p> &m_pDib[sizeof(BITMAPI
85、NFOHEADER)+</p><p> m_nPaletteEntries*sizeof(RGBQUAD)];</p><p> if( m_Palette.GetSafeHandle() != NULL )</p><p> m_Palette.DeleteObject();</p><p> if( m_nPaletteEntr
86、ies != 0 ){ </p><p> LOGPALETTE *pLogPal = (LOGPALETTE *) new char</p><p> [sizeof(LOGPALETTE)+</p><p> m_nPaletteEntries*sizeof(PALETTEENTRY)];</p><p> if( pL
87、ogPal != NULL ){</p><p> pLogPal->palVersion = 0x300;</p><p> pLogPal->palNumEntries = m_nPaletteEntries;</p><p> for( int i=0; i<m_nPaletteEntries; i++ ){</p>&l
88、t;p> pLogPal->palPalEntry[i].peRed =</p><p> m_pPalette[i].rgbRed;</p><p> pLogPal->palPalEntry[i].peGreen =</p><p> m_pPalette[i].rgbGreen;</p><p> pLogP
89、al->palPalEntry[i].peBlue =</p><p> m_pPalette[i].rgbBlue;</p><p><b> }</b></p><p> m_Palette.CreatePalette( pLogPal );</p><p> delete [] pLogPal;<
90、;/p><p><b> }</b></p><p><b> }</b></p><p> m_BitCount = 24; //24位位圖</p><p> p = m_pDibBits; //指向位圖數(shù)據(jù)的指針,用來執(zhí)行處理操作用</
91、p><p> bitmap_size = m_dwDibSize - (m_pDibBits - m_pDib);//真正的位圖數(shù)據(jù)的大?。闯^結(jié)構(gòu)外)</p><p> tag = BFH.bfReserved1;</p><p> return( TRUE );</p><p><b> }</b></p
92、><p> BOOL CDib::Save( const char *pszFilename ) //保存含有隱藏信息的bmp</p><p><b> {</b></p><p> if( m_pDib == NULL )</p><p> return( FALSE );</p><p>
93、<b> CFile cf;</b></p><p> if( !cf.Open( pszFilename,</p><p> CFile::modeCreate | CFile::modeWrite ) )</p><p> return( FALSE );</p><p><b> try{<
94、;/b></p><p> BITMAPFILEHEADER BFH;</p><p> memset( &BFH, 0, sizeof( BITMAPFILEHEADER ) );</p><p> BFH.bfType = 'MB';</p><p> BFH.bfSize = sizeof( BIT
95、MAPFILEHEADER ) + m_dwDibSize;</p><p> BFH.bfOffBits = sizeof( BITMAPFILEHEADER ) +</p><p> sizeof( BITMAPINFOHEADER ) +</p><p> m_nPaletteEntries * sizeof( RGBQUAD );</p>
96、<p> if (embfile_size <= 65535) //由于bfReserved1是unsigned short型的,大小可能不能滿足要求,可能要用到reserved2</p><p> BFH.bfReserved1 = embfile_size; </p><p><b> else</b></p><
97、;p><b> {</b></p><p> BFH.bfReserved1 = embfile_size - 65535;</p><p> BFH.bfReserved2 = 1; //標(biāo)記</p><p><b> }</b></p><p> cf.Write( &B
98、FH, sizeof( BITMAPFILEHEADER ) );</p><p> cf.Write( m_pDib, m_dwDibSize );</p><p><b> }</b></p><p> catch( CFileException *e ){</p><p> e->Delete();&
99、lt;/p><p> return( FALSE );</p><p><b> }</b></p><p> return( TRUE );</p><p><b> }</b></p><p> BOOL CDib::Draw( CDC *pDC, int nX,
100、int nY, int nWidth, int nHeight, int Style )</p><p><b> {</b></p><p> if( m_pDib == NULL )</p><p> return( FALSE );</p><p> long vWidth = m_pBIH->biW
101、idth;</p><p> if( nWidth == -1 )</p><p> nWidth = m_pBIH->biWidth;</p><p> if( nHeight == -1 )</p><p> nHeight = m_pBIH->biHeight;</p><p> if (S
102、tyle) </p><p><b> {</b></p><p> StretchDIBits( pDC->m_hDC, nX, nY,</p><p> nWidth, nHeight,</p><p><b> 0, 0,</b></p><p>
103、m_pBIH->biWidth, m_pBIH->biHeight,</p><p> m_pDibBits,</p><p> (BITMAPINFO *) m_pBIH,</p><p> BI_RGB, SRCCOPY );</p><p><b> }</b></p><p
104、><b> else</b></p><p><b> {</b></p><p> SetDIBitsToDevice( pDC->m_hDC, nX, nY,</p><p> m_pBIH->biWidth, m_pBIH->biHeight,</p><p>
105、<b> 0, 0,</b></p><p> 0, m_pBIH->biHeight,</p><p> m_pDibBits,</p><p> (BITMAPINFO *) m_pBIH,</p><p><b> BI_RGB);</b></p><p&g
106、t;<b> }</b></p><p> return( TRUE );</p><p><b> }</b></p><p> BOOL CDib::LoadEmbFile(const char * pszFilename)</p><p><b> {</b>
107、</p><p><b> CFile cf;</b></p><p> if( !cf.Open( pszFilename, CFile::modeRead ) )</p><p> return( FALSE );</p><p> DWORD dwFileSize;</p><p>
108、 dwFileSize = cf.GetLength();</p><p> embfile_size = dwFileSize;</p><p> unsigned char *pFile;</p><p> pFile = new unsigned char [dwFileSize];</p><p> cf.Read( pFi
109、le, dwFileSize ); //將文件中內(nèi)容讀入數(shù)組,解下來就開始嵌入操作</p><p> m_pFile = pFile;</p><p> q = pFile; //記錄下位置</p><p> return true;</p><p><b> }</b></p&g
110、t;<p> void CDib::Embed()//嵌入</p><p><b> {</b></p><p> unsigned char bmdata;//bitmap data</p><p> unsigned char efdata;//embeddedfile data</p><p>
111、; int t = 7;</p><p> int x[8];</p><p><b> int s[8];</b></p><p> int last_bit; //記錄字節(jié)最低位本來的bit</p><p> for(UINT i1 = 0, i2 = 0; i1 <= bitmap_size
112、- 1, i2 <= embfile_size - 1; i1++)</p><p><b> {</b></p><p> bmdata = *p;</p><p> for (int j = 0; j <= 7; j++) //計(jì)算各bit位</p><p><b> {</b&g
113、t;</p><p> x[j] = bmdata & 1;</p><p> bmdata >>= 1;</p><p><b> }</b></p><p> last_bit = x[0];</p><p> x[0] = x[1] ^ x[2] ^ x[3]
114、^ x[4] ^ x[5] ^ x[6] ^ x[7];</p><p> if (t == 7) //宿主圖片每走過八個(gè)字節(jié),計(jì)算一次s[]</p><p><b> {</b></p><p> efdata = *q;</p><p> for (j = 0; j <= 7; j++)</
115、p><p><b> {</b></p><p> s[j] = efdata & 1;</p><p> efdata >>= 1;</p><p><b> }</b></p><p><b> }</b></p>
116、;<p> x[0] ^= s[t];//隱藏信息</p><p> if (last_bit == 0) //嵌入隱藏信息</p><p><b> {</b></p><p> *p |= x[0];</p><p><b> }</b></p><
117、p><b> else</b></p><p><b> {</b></p><p> *p &= 254 + x[0];</p><p><b> }</b></p><p><b> p++;</b></p>&l
118、t;p><b> t--;</b></p><p> if (t == -1) //需要計(jì)算一次s[]</p><p><b> {</b></p><p><b> t = 7;</b></p><p><b> q++;</b><
119、;/p><p><b> i2++;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> void CDib::Pick()//提取<
120、;/p><p><b> {</b></p><p> m_pFile = new unsigned char [embfile_size];</p><p> unsigned char *q = m_pFile;</p><p> unsigned char bmdata;//bitmap data</p&
121、gt;<p> int x[8];</p><p><b> int s[8];</b></p><p> int t = 7;</p><p> for (UINT i1 = 0, i2 = 0; i1 <= bitmap_size - 1, i2 <= embfile_size - 1; i1++)<
122、;/p><p><b> {</b></p><p> bmdata = *p;</p><p> for (int j = 0; j <= 7; j++) //計(jì)算各bit位</p><p><b> {</b></p><p> x[j] = bmdata &
123、amp; 1;</p><p> bmdata >>= 1;</p><p><b> }</b></p><p> s[t] = x[0] ^ x[1] ^ x[2] ^ x[3] ^ x[4] ^ x[5] ^ x[6] ^ x[7];</p><p><b> t--;</b&g
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)字視頻水印的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)設(shè)計(jì)(論文)
- 畢業(yè)設(shè)計(jì)(論文)數(shù)字視頻水印的設(shè)計(jì)與實(shí)現(xiàn)
- 畢業(yè)設(shè)計(jì)(論文)數(shù)字視頻水印的設(shè)計(jì)與實(shí)現(xiàn)
- 數(shù)字水印畢業(yè)設(shè)計(jì)
- 數(shù)字水印畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---抗幾何攻擊數(shù)字水印算法
- 數(shù)字圖像的水印嵌入研究【畢業(yè)設(shè)計(jì)】
- 圖像水印技術(shù)研究與實(shí)現(xiàn)【畢業(yè)設(shè)計(jì)】
- 圖片文字提取系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)設(shè)計(jì)】
- 混沌數(shù)字水印技術(shù)的原理與發(fā)展現(xiàn)狀畢業(yè)設(shè)計(jì)
- 數(shù)字水印實(shí)驗(yàn)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 混沌數(shù)字水印系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 雙重?cái)?shù)字水印的設(shè)計(jì)與實(shí)現(xiàn).pdf
- vc象棋游戲畢業(yè)設(shè)計(jì)---智能中國象棋系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 畢業(yè)設(shè)計(jì)---數(shù)字溫度計(jì)設(shè)計(jì)與實(shí)現(xiàn)
- 畢業(yè)設(shè)計(jì)開題報(bào)告—基于vc++的餐飲管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 網(wǎng)頁正文提取系統(tǒng)的詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)論文-基于vc++的工資管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 基于vb的數(shù)字圖像實(shí)現(xiàn)與設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---用vc++實(shí)現(xiàn)圖像的離散余弦變換
評(píng)論
0/150
提交評(píng)論