版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
chap.5
數(shù)字水印編程網(wǎng)絡信息安全本章內(nèi)容要點概述
空間域圖像數(shù)字水印
變換域圖像水印編程
信息隱藏技術(shù)(InformationHidingTechnology),也稱為信息偽裝技術(shù),是將秘密信息隱藏到一般的非秘密的多媒體載體信號(圖像、聲音、文本文檔等)中,從而不讓攻擊者發(fā)現(xiàn)的一種技術(shù)。
信息隱藏技術(shù)隱藏秘密信息的存在,表面上看起來與一般的非保密信息沒有兩樣,因而十分容易跳過攻擊者的破解(與生物學上的保護色相似)。
道法自然2024/12/304信息隱藏與信息加密的區(qū)別在于:通過把秘密信息隱藏于可以公開的媒體信息中,來達到傳遞秘密信息的目的,它將秘密信息的傳遞過程進行了掩蓋,攻擊者無法判斷所截獲的媒體信息中是否有秘密信息的存在,難以實施攻擊。信息隱藏技術(shù)所解決的安全有兩方面的含義:一是通過把秘密信息永久地隱藏在可公開的媒體信息中,可以確保公開媒體信息(非秘密信息)在版權(quán)和使用權(quán)上的安全;二是秘密信息在傳輸和存儲中的安全。信息隱藏技術(shù)可以實現(xiàn):防竊聽、防篡改、防偽造和防抵賴。
可以看出,Alice和Bob想要成功商討逃跑計劃,必須設(shè)計一個具有認證功能的閾下信道通信方案。simmons囚犯問題與閾下信道設(shè)有Alice和Bob已經(jīng)入獄,他們唯一的通信方式是通過傳遞文電,但看守Warden充當傳遞文電的中間人,他監(jiān)視著所有傳遞的文電,并要求文電不能加密,以檢查Alice和Bob是否正在商討逃跑計劃.信息隱藏技術(shù)原理1.信息隱藏的定義信息隱藏技術(shù),也稱為信息偽裝技術(shù),是將秘密信息隱藏到一般的非秘密的多媒體載體信號(圖像、聲音、文本文檔等)中,從而不讓攻擊者發(fā)現(xiàn)的一種技術(shù)。信息隱藏技術(shù)利用宿主信息中具有隨機特性的冗余部分,將重要信息嵌入宿主信息中,使其不被其他人發(fā)現(xiàn)。信息隱藏技術(shù)隱藏秘密信息的存在,表面上看起來與一般的非保密信息沒有兩樣,因而十分容易逃過攻擊者的破解(這與生物學上的保護色相似)。信息隱藏不能與密碼學混為一談,因為二者區(qū)別在于:密碼技術(shù)僅僅隱藏了信息的內(nèi)容,而信息隱藏技術(shù)不但隱藏了信息的內(nèi)容而且隱藏了信息的存在。一般而言,信息隱藏采用的隱蔽通信比加密通信更安全,因為它隱藏了通信的發(fā)送方、接收方及通信過程的存在,不易引起懷疑。5.1概述2.信息隱藏的過程3.信息隱藏的分類信息隱藏的分類方法有多種,可以從隱藏的載體來劃分為:基于圖像、音頻、視頻、文本等媒體技術(shù)的信息隱藏;也可以按照信息隱藏的目的來劃分為:秘密消息隱藏和數(shù)字水印,其中秘密消息是用來進行秘密傳輸,數(shù)字水印是用來版權(quán)維護;還可以從技術(shù)實現(xiàn)上來劃分為:掩蔽信道、匿名技術(shù)、隱寫術(shù)和數(shù)字水印技術(shù)。下面將對數(shù)字水印編程技術(shù)進行重點探討。
根據(jù)近幾年發(fā)展,依據(jù)算法,數(shù)據(jù)隱寫術(shù)可以分成6類:(1)替換系統(tǒng):使用秘密信息隱蔽宿主的冗余信息部分;(2)變換域技術(shù):在信號的變換域中嵌入秘密信息(比如在頻域或時域中);(3)擴展頻普技術(shù):利用信息擴頻通信的原理來實現(xiàn)秘密信息隱藏;
(4)失真技術(shù):通過信號處理過程中的失真來保存信息,在解密時通過測量與原始信息載體的偏差以恢復秘密信息;
(5)載體生成方法:通過對信息進行編碼以生成用于秘密通信的偽裝載體,以隱蔽秘密信息;
(6)統(tǒng)計方法:通過改裝偽裝載體的若干統(tǒng)計特性對信息進行編碼,并在提取過程中使用假設(shè)檢驗方法來達到恢復秘密信息。
2024/12/309①魯棒性:不因宿主文件的某種改動而導致信息丟失②透明性:隱藏信息的透明性或不可感知性③不可檢測性:偽裝載體與原始載體具有一致的特性④安全性:隱藏算法有較強的抗攻擊能力⑤自恢復性:恢復過程不需要宿主信號⑥對稱性:隱藏和提取過程具有對稱性⑦可糾錯性:經(jīng)過各種操作和變換后仍能很好地恢復信息隱藏的特性4.信息隱藏的應用信息隱藏技術(shù)所解決的安全問題包含兩方面的意義:一是通過把秘密信息永久地隱藏在可公開的媒體信息中,可以確保公開媒體信息(非秘密信息)在版權(quán)和使用權(quán)上的安全;二是確保秘密信息在傳輸和存儲中的安全。信息隱藏技術(shù)可以實現(xiàn)信息的防竊聽、防篡改、防偽造和防抵賴,目前信息隱藏技術(shù)在信息安全的各個領(lǐng)域中所發(fā)揮的作用可以系統(tǒng)地總結(jié)為以下幾個方面。(1)保密通信(2)所有權(quán)認定和版權(quán)保護(3)多媒體數(shù)據(jù)認證和完整性保護(4)隱含標注信息隱藏技術(shù)的應用
1.保密通信信息隱藏技術(shù)則是把秘密信息隱藏于難以引起敵對方注意的可公開的信息中,它試圖掩蓋的是通信存在的事實。與密碼算法加密的區(qū)別。密碼通信示意圖信息隱藏通信示意圖
2.所有權(quán)認定和版權(quán)保護數(shù)字媒體信息的所有權(quán)保護和認定是數(shù)字水印的重要應用領(lǐng)域,應用數(shù)字水印可以做到:(1)辨別數(shù)字媒體信息的所有權(quán)。(2)數(shù)字媒體產(chǎn)品的數(shù)字指紋。(3)防護非法復制。
3.多媒體數(shù)據(jù)認證和完整性保護
數(shù)字媒體的認證和完整性保護的典型例子包括防數(shù)據(jù)篡改、數(shù)字媒體真?zhèn)蔚蔫b別等。
4.隱含標注隱含標注是在數(shù)字媒體信息中隱藏附加信息,可能有:(1)在網(wǎng)絡瀏覽器中應用水印技術(shù),可以實現(xiàn)智能瀏覽,應用于網(wǎng)上信息的搜索和數(shù)字媒體新鮮服務中。(2)多語種電影系統(tǒng)和電影分級系統(tǒng)。(3)數(shù)字媒體附加描述和參考信息的攜帶。1.數(shù)字水印的定義與分類數(shù)字水印技術(shù)就是將數(shù)字、序列號、文字、圖像標志等版權(quán)信息嵌入到多媒體數(shù)據(jù)中,以起到版權(quán)跟蹤及版權(quán)保護的作用。數(shù)字水印實現(xiàn)包括三步,即:水印嵌入、水印檢測和水印提取。2.數(shù)字水印的實現(xiàn)方法在數(shù)字水印中,根據(jù)水印嵌入域的不同,可以分為兩類:空間域和變換域兩種方法。(1)空間域信息隱藏這種方法在空間域來實現(xiàn)信息隱藏,多采用替換法。由于人類感覺系統(tǒng)的有限性,感官對于某些感覺變化不敏感,可直接用欲隱藏的信息來替換載體文件的數(shù)據(jù),但不會影響到載體文件的可見性。這類方法有一個比較嚴重的缺陷,就是在不破壞載體使用的情況下,載體越不重要的信息越容易丟失。如正常的有損壓縮、信號濾波、載體的格式轉(zhuǎn)換、疊加信道噪聲等方法,都可以輕易地去除隱藏的秘密信息。空間域信息隱藏中,最常見的是最不重要位(LSB)替換,它將信息位替換到載體元素的最不重要位。雖然LSB實現(xiàn)速度較快,但其抵抗幾何變形、噪聲和壓縮的能力較差。(2)變換域信息隱藏基于變換域的方法將欲隱藏的信息嵌入到載體文件的變換域系數(shù)中,再經(jīng)過反變換生成隱密文件。變換域方法具有很好的魯棒性(健壯性),對數(shù)據(jù)壓縮、常用的濾波處理以及噪聲等均有一定的抵抗能力。基于變換域的技術(shù)一般采用常用的變換,如:離散余弦變換(DiscreteCosineTransform,DCT),離散小波變換(DiscreteWaveletTransform,DWT)、傅里葉梅林變換(Fourier-Mellin)、離散傅里葉變換(DiscreteFourierTransform,DFT)或其他變換。3.數(shù)字圖像水印的攻擊技術(shù)與其它安全技術(shù)類似,水印技術(shù)在設(shè)計實現(xiàn)時必須考慮安全攻擊的威脅,目前存在的針對數(shù)字圖像水印的攻擊技術(shù)可以分為兩代。第一代數(shù)字水印攻擊采用大量的信號和圖像處理操作,具體可以分為:1)去除水印攻擊:主要包括A/D、D/A轉(zhuǎn)換、去噪、濾波、直方圖修改、量化和有損壓縮等。這些操作造成了媒體數(shù)據(jù)的信息損失,特別是壓縮,能在保證一定信息質(zhì)量的前提下,盡可能多地剔出冗余,使得水印被去掉。2)幾何攻擊:主要包括各種幾何變換,例如:對圖像實施旋轉(zhuǎn)、平移、尺度變換、剪切、刪除行或列、隨機幾何變換等。這些操作使得媒體數(shù)據(jù)的空間或時間序列的排布發(fā)生變化,造成水印的不可檢測,因此也叫異步攻擊。3)共謀攻擊:攻擊者利用同一條媒體信息的多個含水印拷貝,使用統(tǒng)計方法構(gòu)造出不含水印的媒體數(shù)據(jù)。4)重復嵌入攻擊:攻擊者在已嵌入他人水印的媒體數(shù)據(jù)中嵌入自己的版權(quán)信息,從而造成版權(quán)糾紛。第二代水印攻擊系統(tǒng),由沃羅索諾夫斯基提出,其核心思想是利用合理的媒體數(shù)據(jù)統(tǒng)計模型和最大后驗概率來估計水印或者原始媒體信號,從而將水印剔除。對攻擊技術(shù)的分析和研究促進了水印技術(shù)的革新,但也為水印自身提出了一個又一個挑戰(zhàn)。當前,還不存在一種算法能夠抵抗所有的攻擊,特別是幾何攻擊,這也是學術(shù)界公認的最困難的問題,目前還沒有成熟的方案。5.2空間域圖像數(shù)字水印1.信息冗余的概念人們在信息傳播的過程中,所發(fā)出的消息/數(shù)據(jù)并不是徹底精練的信息,也就是說:除了一部分能夠消除不確定性(信息)的數(shù)據(jù)以外,還有蘊含著一些非有效信息、甚至重復的數(shù)據(jù),這就是信息冗余(redundancy)。冗余信息并不一定就是一些不必要的、多余的內(nèi)容,在很多情況下,冗余對于保障通信是必不可少的,也是無法根本消除的。2.圖像空間域水印方法圖像空間域水印方法通過空間數(shù)據(jù)處理手段,將水印信息替換圖像的冗余數(shù)據(jù)部分實現(xiàn)水印,最具代表性的就是LSB。LSB方法非常簡單,以一幅灰度BMP圖為例,首先,讀取載體圖像和秘密信息;然后對原始圖像的最低位置零(1-3位),并不會改變圖像的視覺效果;接著,將用秘密信息賦值給原始圖像的最低位,實現(xiàn)秘密信息寫入,寫入以后,觀察者看不見秘密信息的存在;最后,如果需要解碼,只需要將圖像的前高7位置零,僅留下最低位,就是秘密信息。3.LSB水印性能分析由于LSB位平面攜帶著水印,因此在嵌入水印圖像沒有產(chǎn)生失真的情況下,水印的恢復簡單,只需要提取含水印圖像的LSB位平面即可。LSB法最大的缺陷是對信號處理和惡意攻擊的穩(wěn)健性很差,對含水印圖像進行簡單的濾波、加噪等處理后,就無法進行水印的正確提取了。通過實驗可知,LSB算法對于濾波操作和部分幾何攻擊的抵抗性最差。盡管如此,由于LSB方法實現(xiàn)簡單,隱藏量比較大,還有很多應用。另外,以LSB思想為原型,人們還提出了一些變形的LSB方法,目前互聯(lián)網(wǎng)上公布的圖像隱藏軟件大多使用這種方法。1.圖像處理包安裝圖像LSB的實現(xiàn)需要安裝圖像處理包??梢允褂胮ip安裝CV2工具包和numpy工具包,用于圖像處理和數(shù)據(jù)操作。在Windows命令行窗口,安裝執(zhí)行“pipinstallopencv-python”命令,將把處理包安裝至本機。2.隱藏文件信息轉(zhuǎn)二進制流由于要進行比特替換,所以要將待隱藏的文件信息轉(zhuǎn)換為二進制格式,該項工作由read_data_file函數(shù)完成,具體如下。#文件信息轉(zhuǎn)二進制流defread_data_file(path):fp=open(path,"rb")#?stream=""s=fp.read()foriinrange(len(s)):tmp=bin(s[i]).zfill(8)#?stream=stream+tmp.replace('0b','')#?fp.close()returnstream進行LSB信息隱藏#實現(xiàn)LSB信息隱藏deflsb(image,data_stream,random_index):foriinrange(len(stream)):x=random_index[i]%image.shape[0]
#?嵌入隱藏信息圖像位置橫坐標y=int(random_index[i]/image.shape[1])
#?嵌入隱藏信息圖像位置縱坐標value=image[x,y]ifvalue%2!=stream[i]:#?ifvalue%2==1:image[x,y]=value-1else:image[x,y]=value+1returnimageif__name__=="__main__":text_path='C:\\test\\abc.txt'img_path='C:\\test\\original.png'out_path='C:\\test\\steg.png'stream=read_data_file(text_path)img=cv2.imread(img_path,0)pixel_len=img.shape[0]*img.shape[1]rate=len(stream)/pixel_len#?print('隱寫率:',rate)ifrate<=1:random_ls=random.sample(range(0,pixel_len),len(stream))#?random_ls.sort()new_img=lsb(img,stream,random_ls)cv2.imwrite(out_path,new_img)print('success')else:print('數(shù)據(jù)過大')主程序5.3變換域圖像數(shù)字水印1.圖像變換域算法基礎(chǔ)變換域水印方法將信息隱藏在載體文件變換后的次要位置,與空域方法相比,它對諸如壓縮、修剪等處理的攻擊魯棒性更強,一般在正交變換域中進行。變換域法的主要特點是:將欲隱藏的信息嵌入到載體文件的變換域系數(shù)中,再經(jīng)過反變換生成隱密文件(如:JEPG中的隱藏算法)。其優(yōu)點是可以利用人眼對于不同空間頻率的敏感度不同來決定秘密信息的嵌入位置和強度,從而確保嵌入信息的不可察覺性。導入DCT變換的圖像,會生成出二維的DCT系數(shù),并且這些系數(shù)具有很強的“能量集中”特性,大多數(shù)的自然信號(包括聲音和圖像)的能量都集中在離散余弦變換后的低頻部分。小波信息隱藏是變換域水印新的研究方向,它可以充分利用人類的視覺模型(HVS)和聽覺模型(HAS)的一些空間-頻率特性,使嵌入信息的不可見性和魯棒性都得到改善。自1986年以來,小波分析的理論、方法與應用的研究一直方興未艾。作為一種數(shù)學工具,小波變換是對人們熟知的傅立葉變換和窗口傅立葉變換的一個重大突破,為信號分析、圖像處理及其它非線性科學研究領(lǐng)域帶來了革命性的影響。DCT水印首先對圖像進行DCT變換,對于得到的DCT系數(shù)矩陣中選定的次要(中、高頻系數(shù))部分,依據(jù)嵌入信息進行調(diào)整,然后將調(diào)整后的DCT矩陣作反變換,生成含有水印的圖像,具體方法如下。(1)對宿主圖像和待嵌入的水印進行預處理、信息分析,滿足后續(xù)處理要求。(2)將原始載體圖像按N×N大小進行分塊(一般是8×8),然后進行DCT變換,選擇水印信息的嵌入位置。通常,由于人眼對位于低頻部分的噪聲相對敏感,為了使水印不易被察覺,應將水印信息嵌入到較高頻率的DCT系數(shù)中。但將水印信息嵌入到DCT高頻系數(shù)中,又會因量化、低通濾波等處理二丟失信息,影響水印的魯棒性,因此采用折中的方法,將水印信息嵌入到載體圖像的DCT中頻系數(shù)中。(3)嵌入水印信息并進行分塊DCT逆變換。確定合適的DCT中頻系數(shù)位置后嵌入水印信息,通過子塊的DCT逆變換生成含水印的圖像。1.圖像處理包安裝與5.3.1節(jié)類似,如果系統(tǒng)沒有安裝,則需要使用pip安裝CV2工具包和numpy工具包,用于支持圖像處理和數(shù)據(jù)操作。安裝需執(zhí)行“pipinstallmatplotlib==3.3.0”命令(這里指定matplotlib版本為3.3.0),具體過程略。2.水印圖像主函數(shù)if__name__=='__main__':img_file='./monarch.png'msg=input("請輸入要嵌入的信息:")#?由用戶輸入一段文本信息img_gray=cv2.imread(img_file,cv2.IMREAD_GRAYSCALE)#?讀取圖片img_marked=dct_embed(img_gray,msg,20200417)#?進行水印嵌入cv2.imwrite('monarch_marked.png',img_marked)
print(img_marked.shape,type(img_marked),type(img_marked[0,0]))img_stego=cv2.imread('monarch_marked.png',cv2.IMREAD_GRAYSCALE)msg_out=dct_extract(img_stego,20200417)#?水印讀取print('嵌入的信息為:',msg)print('提取的信息為:',msg_out)
plt.figure(figsize=(4,3))#?將嵌入前和嵌入后的圖片繪制比較plt.subplot(121),plt.imshow(img_gray,cmap='gray'),plt.title('Cover')plt.subplot(122),plt.imshow(img_marked,cmap='gray'),plt.title('Marked')plt.tight_layout()plt.show()defdct_embed(img_gray,msg,seed=2020):#Step1:檢查嵌入內(nèi)容的比特長度msg2embed=str2bitseq(msg)#?將字符串轉(zhuǎn)換為比特序列l(wèi)en_msg=len(msg2embed)
N=8#計算當前圖片的嵌入容量受否滿足,以N見方的方塊為單位height,width=img_gray.shapeEC=((height-2)*(width)/N/N)#?計算有多少個N比特方塊,計算公式為(高度-2)*寬度/N^2ifEC<len_msg:print('EmbeddingCapacity{}notenough'.format(EC))returnimg_gray
#對嵌入消息進行加密random.seed(seed)#設(shè)置隨機數(shù)種子s=[random.randint(0,1)foriinrange(len_msg)]
#?利用隨機數(shù)生成器生成一個與消息等長的二進制序列bits2embed=np.bitwise_xor(msg2embed,np.uint8(s))print('Toembed:',bits2embed)
#Step2數(shù)據(jù)嵌入img=img_gray[2:,:].copy()#去掉前兩行用于存儲輔助信息height,width=img.shapecnt=0delta=0.01forrowinnp.arange(0,height,N):ifcnt>=len_msg:breakforcolinnp.arange(0,width,N):ifcnt>=len_msg:break#?將1比特的消息嵌入到一對DCT系數(shù)中block=np.array(img[row:(row+N),col:(col+N)],np.float32)block_dct=cv2.dct(block)#?使用dct獲得img的頻域圖像a,b=(block_dct[2,4],block_dct[4,2])ifblock_dct[2,4]>block_dct[4,2]\#?else(block_dct[4,2],block_dct[2,4])a+=deltab-=delta#?如果寫入比特為1將a賦值給block_dct[2,4]block_dct[2,4]=(aifbits2embed[cnt]==1elseb)#小值賦值給block_dct[4,2],如果寫入比特為0,反向操作block_dct[4,2]=(bifbits2embed[cnt]==1elsea)cnt+=1
img[row:(row+N),col:(col+N)]=np.array(cv2.idct(block_dct),np.uint8)
#step3:隱藏消息長度信息在圖像的第一行數(shù)據(jù)中#?將發(fā)送消息長度轉(zhuǎn)換為二進制數(shù),形如:0b11000,去除該二進制數(shù)'0b'標志,填充0得到24位數(shù)bits_bin=(bin(len_msg).replace('0b','')).zfill(24)img_marked=img_gray.copy()fori,bitinenumerate(bits_bin):img_marked[0,i]&=(255-1)#254即為:11111110,與之作與操作,即為最低位清0img_marked[0,i]+=np.uint8(bit)#?將消息長度的1比特賦值該像素最低位(bit與bits_bin[i]相等)print("bit",bit,bits_bin[i])
img_marked[2:,:]=img#保留前兩行,將嵌入水印的消息填入圖像后面內(nèi)容
returnimg_markeddefdct_extract(img_marked,seed=2020):#Step1:抽取水印信息長度bits_bin=''foriinrange(24):#?依次提取前24像素的最低位bits_bin+=bin(img_marked[0,i]&1).strip('0b').zfill(1)len_msg=int('0b'+bits_bin,2)
水印提取函數(shù)
#Step2:抽取水印信息內(nèi)容N=8img=img_marked[2:,:]height,width=img.shapemsg_embedded=''cnt=0forrowinnp.arange(0,height,N):ifcnt>=len_msg:
break
forcolinnp.arange(0,width,N):ifcnt>=len_msg:
break
#?比較block_dct[2,4]與block_dct[4,2]的大小,得到0或1block=np.array(img[row:(row+N),col:(col+N)],np.float32)block_dct=cv2.dct(block)msg_embedded+=('1'ifblock_dct[2,4]>block_dct[4,2]else'0')cnt+=1bits_extracted=[np.uint8(c)forcinmsg_embedded]
#Step3:對抽取的水印信息內(nèi)容解密random.seed(seed)s=[random.randint(0,1)foriinrange(len_msg)]msgbits=np.bitwise_xor(bits_extracted,np.uint8(s))#?異或操作msg=bitseq2str(msgbits)
returnmsgDWT水印嵌入算法首先將原始圖像的二維信號進行小波變換,將水印信息嵌入小波分解的高頻子帶中(原則上可以通過增加分層增加嵌入數(shù)據(jù)容量,但增加分解層次會對人類視覺產(chǎn)生很大的影響),可以滿足隱蔽性的要求,具體方法如下。(1)載入原始圖像I,使用小波函數(shù)對圖像進行二維離散小波變換(變換無需對圖像分塊)。(2)定義一個閾值T,在I中嵌入水印。選擇小波分解的高頻系數(shù)矩陣,如果系數(shù)矩陣的每一個元素值大于閾值T,則將這個值加上一個均值為0方差為1的偽隨機序列,否則不改變系數(shù)矩陣中的元素值。(3)使用小波分解的低頻系數(shù)和改變后的高頻系數(shù)矩陣進行小波反變換,重構(gòu)圖像并輸出。wm=cv2.imread(wmname,cv2.IMREAD_GRAYSCALE)#讀取待嵌入的水印start_time=time.clock()#記錄時間LL_2,dwt_2,dwt_1,dwt_0=generate_LL_2(conver_img)
#?三層小波變換得到LL_2Y_split_embed=embed(LL_2,dwt_2,dwt_1,dwt_0,wm)#?得到嵌入水印后的Y分量print('嵌入耗費時間:',(time.clock()-start_time))
wm_temp=cv2.imread(outname)#wm_temp=crop(wm_temp)#?水印攻擊#wm_temp=scale(wm_temp)#wm_temp=crop_scale(wm_temp)#wm_temp=scale_crop(wm_temp)wm_out=extract(wm_temp)#?讀取嵌入的水印
plt.figure(figsize=(8,3))plt.rcParams['font.sans-serif']=['SimHei']#解決plt漢字顯示問題plt.rcParams['axes.unicode_minus']=Falseplt.subplot(141),plt.imshow(img,cmap='gray'),plt.title('原圖')plt.subplot(142),plt.imshow(Y_split_embed,cmap='gray'),plt.title('帶水印圖')plt.subplot(143),plt.imshow(wm,cmap='gray'),plt.title('原水印')plt.subplot(144),plt.imshow(wm_out,cmap='gray'),plt.title('提取水印')plt.tight_layout()plt.show()#?繪制圖片if__name__=='__main__':imgname='lena.jpg'#?宿主圖片wmname='wm.png'#水印圖片outname='dwt_'+imgname#嵌入水印的圖片名稱wm_outname='ex_'+imgname#提取出來的水印圖片名稱Q=32img=cv2.imread(imgname)#讀入宿主圖片conver_img=cv2.cvtColor(img,cv2.COLOR_BGR2YCrCb)#轉(zhuǎn)為YCRCB色彩空間上
#?為確保正確進行dwt變換,要將長寬調(diào)整成為被8整除height,weith=conver_img.shape[:2]ifnotheight%8==0:height-=height%8ifnotweith%8==0:weith-=weith%8conver_img=conver_img[:height,:weith,:]水印的嵌入由函數(shù)generate_LL_2和embed配合實現(xiàn),其中g(shù)enerate_LL_2的功能是提取圖像的LL2頻帶,代碼如下defgenerate_LL_2(conver_img):#轉(zhuǎn)換RGB到Y(jié)CRCB,在Y分量上加水印Y_split=conver_img[:,:,0]#dwt變換3次LL,(HL,LH,HH)=pywt.dwt2(np.array(Y_split),'haar')LL_1,(HL_1,LH_1,HH_1)=pywt.dwt2(np.array(LL),'haar')LL_2,(HL_2,LH_2,HH_2)=pywt.dwt2(np.array(LL_1),'haar')
returnLL_2,(HL_2,LH_2,HH_2),(HL_1,LH_1,HH_1),(HL,LH,HH)defextract(ex_img):ex_wm=[]ex_img=cv2.cvtColor(ex_img,cv2.COLOR_BGR2YCrCb)#?對圖像進行轉(zhuǎn)換Y_split=ex_img[:,:,0]
LL,(HL,LH,HH)=pywt.dwt2(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《珠寶玉石教程》課件
- 車輛租賃協(xié)議三篇
- 人力資源行業(yè)員工福利顧問工作總結(jié)
- 2003年海南高考語文真題及答案
- 水利行業(yè)的保安工作總結(jié)
- 2023-2024年企業(yè)主要負責人安全培訓考試題附答案【培優(yōu)】
- 2023年-2024年項目部安全培訓考試題【易錯題】
- 1000字的貧困申請書范文5篇
- 開題答辯概覽
- 電灼傷護理查房
- GB/T 45014-2024聚合物基復合材料層壓板緊固件拉脫阻抗試驗方法
- 傳播學(東北林業(yè)大學)知到智慧樹章節(jié)答案
- 2024年安全員之A證考試題庫及完整答案(網(wǎng)校專用)
- 統(tǒng)編版2024-2025學年三年級上冊語文期末情景測試卷 (無答案)
- 績效考核辦法1
- 【MOOC】外科護理學-中山大學 中國大學慕課MOOC答案
- 年度學校辦公室工作總結(jié)
- 2025版國家開放大學法律事務專科《民法學(2)》期末紙質(zhì)考試總題庫
- 【MOOC】思辨式英文寫作-南開大學 中國大學慕課MOOC答案
- 生物人教版(2024版)生物七年級上冊復習材料
- 企業(yè)地震應急預案管理方案
評論
0/150
提交評論