MATLAB(DCT+DWT)
《MATLAB(DCT+DWT)》由會(huì)員分享,可在線閱讀,更多相關(guān)《MATLAB(DCT+DWT)(16頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、第三章 圖像數(shù)字水印的方案 3.1 圖像數(shù)字水印的技術(shù)方案 在數(shù)據(jù)庫(kù)中存儲(chǔ)在國(guó)際互聯(lián)網(wǎng)上傳輸?shù)乃D像一般會(huì)被壓縮, 有時(shí)達(dá)到很高的壓 縮比。因此,數(shù)字水印算法所面臨的第一個(gè)考驗(yàn)就是壓縮。 JPEG 和 EZW (Embedded Zero-Tree Wavelet)壓縮是最常見(jiàn)的兩種壓縮方法。 JPEG是基于離散余弦變換域的壓縮 方法,而 EZW 是基于小波變換域的壓縮方法。前人的研究證明采用與壓縮算法相同的 變換域水印方法, 對(duì)于壓縮的穩(wěn)健性較強(qiáng)。 因此,我研究圖像文件水印算法主要集中在 變換域算法及利用人眼視覺(jué)特性上。 數(shù)字水印的嵌入要求即要考慮視覺(jué)透明性, 又要保證嵌入水印后圖像
2、的穩(wěn)健性, 這 兩個(gè)方面存在著矛盾。 保證視覺(jué)透明性, 就要將水印嵌入到人眼不敏感區(qū), 也就是嵌入 到圖像的高頻分量中。 而多數(shù)圖像處理方法對(duì)于圖像高頻部分的損壞程度較高, 如有損 壓縮、 高頻濾波等。 水印很容易在經(jīng)歷圖像處理的過(guò)程中丟失。這樣, 則無(wú)法保證圖像 數(shù)字水印的穩(wěn)健性。如果要獲得很好的穩(wěn)健性,數(shù)字水印應(yīng)加在人眼敏感的低頻部分, 圖像的大部分能量集中在低頻部分, 如果對(duì)于低頻部分進(jìn)行處理, 水印固然會(huì)失去, 而 圖像也沒(méi)有了利用價(jià)值, 然而,水印的嵌入會(huì)對(duì)圖像的質(zhì)量有非常大的影響, 這又無(wú)法 保證視覺(jué)透明性。 數(shù)字水印算法的實(shí)現(xiàn)基本分為三個(gè)部分: 宿主圖像的變換, 水印的嵌入和水
3、印的檢 測(cè),分別描述如下。 3.2基于DCT域的圖像數(shù)字水印技術(shù) 離散余弦變換( Discrete Cosine Transform )屬于正交變換圖像編碼方法中的一種。 正交變換圖像編碼始于 1968 年。當(dāng)時(shí)安德魯斯( Andrews )等人發(fā)現(xiàn)大多數(shù)自然圖像 的高頻分量相對(duì)幅度較低, 可完全舍棄或者只用少數(shù)碼字編碼, 提出不對(duì)圖像本身編碼, 只對(duì)其二維傅立葉(DFT )系數(shù)進(jìn)行編碼和傳輸。但 DFT是一種正交變換,運(yùn)算量很 大,常常使實(shí)時(shí)處理發(fā)生困難,第二年他們就用 Walsh-Hadamard 變換( WHT )取代 DFT 可以使運(yùn)算量明顯減少, 這是因?yàn)?WHT 變換只有加減法
4、而無(wú)需乘法。 但是更有意 義的是離散余弦變換和離散正旋變換的出現(xiàn), 它們具有快速算法, 精確度高。 其中最重 要的是1974年提出的DCT,因?yàn)槠渥儞Q矩陣的基向量很近似于托伯利茲矩陣的特征向 量,而托伯利茲矩陣又體現(xiàn)了人類語(yǔ)言及圖像信號(hào)的相關(guān)性。因此, DCT 常常被認(rèn)為 是語(yǔ)音與圖像信號(hào)變換的準(zhǔn)最佳變換。 圖像是二維的,所以在研究時(shí)主要用到二維 DCT,以及二維IDCT來(lái)對(duì)圖像進(jìn)行 處理。 321離散余弦變換(DCT的定義 數(shù)字圖像X (m,n)是具有M行N列的一個(gè)矩陣。為了同時(shí)減弱或去除圖像數(shù)據(jù) 相關(guān)性,可以運(yùn)用二維 DCT,將圖像從空間域轉(zhuǎn)換到 DCT變換域。 根據(jù)定義,二
5、維離散余弦變換( DCT)定義如下: 2 MINI Y(k,l)= ; c(k)c(l)送送 X(m,n) cos "::MN m 衛(wèi) n 衛(wèi) (2m 1)k 二 2M (2n 1)l 二 cos— 2N 式中 m, k=0,1,…,M-1; n , l =0,1,…,N-1。 其中函數(shù) k =0 k =1,2- ,M -1 c(l)¥ k" 1 k =1,2,…,N -1 二維逆離散余弦變換(IDCT )的定義如下: X (m, n) 2 M dN d 二 二二 c(k)c(l)Y(k,l)cos ,
6、MN K =0 L z0 (2 m 1)k■: 2M cos (2n 1)l 二 2N 式中:m, k=0,1,…,M-1; n, 1=0,1, --N-1 o 3.2.2離散余弦變換的特點(diǎn) 在基于DCT的變換編碼中,圖像是先經(jīng)分塊( 8X 8或16X 16)后再經(jīng)DCT,這 種變換是局部的,只反映了圖像某一部分的信息。 當(dāng)然也可以對(duì)整幅圖像的特點(diǎn), 但是 運(yùn)算速度比分塊 DCT要慢。圖像經(jīng)DCT后,得到的DCT圖像有三個(gè)特點(diǎn): 一是系數(shù)值全部集中到 0值附近(從直方圖統(tǒng)計(jì)的意義上),動(dòng)態(tài)范圍很小,這說(shuō) 明用較小的量化比特?cái)?shù)即可表示 DCT系數(shù); 二是DCT變換后圖像
7、能量集中在圖像的低頻部分, 即DCT圖像中不為零的系數(shù)大 部分集中在一起(左上角),因此編碼效率很高。 三是沒(méi)有保留原圖像塊的精細(xì)結(jié)構(gòu),從中反映不了原圖像塊的邊緣、輪廓等信息, 這一特點(diǎn)是由DCT缺乏時(shí)局域性造成的。 如下左圖3— 1是原始圖像經(jīng)過(guò) DCT變換后的系數(shù)圖像為圖 3—2。兩條線劃分出 圖像的低頻、中頻和高頻分別所在的矩形區(qū)域。可以看出,圖像 DCT變換后大部分參 而大部 數(shù)接近于零,只有左上角的低頻部分有較大的數(shù)值, 中頻部分參數(shù)值相對(duì)較小, 分高頻參數(shù)值非常小,接近于零。 3.2.3離散余弦變換的數(shù)字水印算法 根據(jù)離散余弦變換后的參數(shù)性質(zhì),本文采用了以
8、 ZigZag方式重排變換域系數(shù)的方 法,選出中頻分量,用數(shù)字水印序列對(duì)其進(jìn)行非線性調(diào)制。水印檢測(cè)時(shí),待檢測(cè)圖像仍 按比方式選擇變換域系數(shù),與待水印進(jìn)行相關(guān)運(yùn)算,與閾值比較來(lái)判斷是否所含水印。 離散余弦域的數(shù)字水印算法的具體實(shí)現(xiàn)分為三步: 宿主圖像的變換,數(shù)字水印的嵌 入,數(shù)字水印的檢測(cè)。 3.2.3.1 宿主圖像的DCT變換 對(duì)于N X N大小的256灰度級(jí)的宿主圖像I進(jìn)行N X N二維離散余弦變換 (DCT )。 以ZigZag方式對(duì)于DCT變換后的圖像頻率系數(shù)重新排列成一維向量 Y={y 1, y2, ???yxN}. 并取出序列中第L+1到L+M的中頻系數(shù)部分,得到Y(jié)l={
9、 Yl+i, Yl+2,…,X+m} 3.232 數(shù)字水印的嵌入 假設(shè)數(shù)字水印 W為一服從標(biāo)準(zhǔn)正態(tài)分布的隨機(jī)實(shí)數(shù)序列,用數(shù)字序列表示為 W={W 1 , W2 ,…W M }。用 W對(duì)Y序列中第L+1到L+M的中頻系數(shù)部分的值進(jìn)行 修改,按以下公式進(jìn)行: 丄i乞L或i亠L(fēng) m ' 2 y = yi % w L C i 蘭 L + M ,a > o 經(jīng)過(guò)修改的系數(shù)序列 Y' ={ Y 1’,Y2' ,... Y ' nxn}以ZigZag逆變換形式重組, 再進(jìn)行N x N DCT逆變換,得到嵌有數(shù)字水印的圖像 I'。 3.2.3.3
10、數(shù)字水印的檢測(cè) 待檢測(cè)的可能含有水印的圖像 I" O假設(shè)I"未損失大量信息,可以近似認(rèn)為I"= I'。 在此假設(shè)下可以運(yùn)用統(tǒng)計(jì)的方法來(lái)檢測(cè)水印。 (1)待檢水印域待檢圖像中頻系數(shù)相關(guān)性的測(cè)定 同樣對(duì)I'進(jìn)行DCT變換,以ZigZag方式將DCT系數(shù)排成一維向量 Y "= { 丫1 ", Y2 ",... Ynxn"}。由于假設(shè) I"=I ',則 丫"= Y ' o 取出Y"(等于Y')中第L+1到L+M的中頻系數(shù)部分 Yl "={ Y
11、l+1 ", Y l+2”’,… Yl+m "}。假設(shè)待檢測(cè)的數(shù)字水印 X={X1, X2, ... X M為一符合標(biāo)準(zhǔn)正態(tài)分布的實(shí)數(shù)偽隨 機(jī)序列。貝何以通過(guò)待檢水印與圖像中頻系數(shù)作相關(guān)運(yùn)算來(lái)判斷是否所加入了水印。 只 有在待檢水印為所加入的水印時(shí), 才能得到較大的相關(guān)值。 否則相關(guān)值很小,接近于零。 1 M 1 Z=cov(Yl',X) (YlX) ((YLiXi) :“L2iWXi)) Mi# M 用符號(hào)E表示數(shù)學(xué)期望,得到: E(z)=:E(Y2) X =W E(z) =0 X -W E(z)=0 沒(méi)有水印存在 (2)閾值的確定 根據(jù)中心
12、極限定理,參照水印匹配與不匹配兩種情況得到閾值為 Tz = :- E(Yl2)/2。 由于原始圖像難以得到,因此從實(shí)用性出發(fā),閾值定義為: 2 Of M Tz =:E(Yl2)/2 Yl i M i二 2 綜上所述,滿足Z TZ或 0.5時(shí),則表明檢測(cè)到匹配水印。否則,未檢測(cè)到 2 xTZ 匹配的水印。 3.3 MATLAB工具簡(jiǎn)介 3.3.1. 簡(jiǎn)介 Matlab是當(dāng)前在國(guó)內(nèi)外十分流行的工程設(shè)計(jì)和系統(tǒng)仿真軟件包。它是 MathWorks 公司于1982年推出的一套高性能的數(shù)值計(jì)算和可視化軟件, 它集數(shù)值分析、矩陣運(yùn)算、 信號(hào)處理和圖形顯示于一體,構(gòu)成了一人方便的、
13、界面友好的用戶環(huán)境。 Matlab的推出得到了各個(gè)領(lǐng)域?qū)<摇W(xué)者的廣泛關(guān)注,其強(qiáng)大的擴(kuò)展功能為各個(gè)領(lǐng)域 的應(yīng)用提供了基礎(chǔ)。由各個(gè)專家學(xué)者相繼推出了 MATLAB工具箱,其中的信號(hào)處理 (signal processing)、控制系統(tǒng)(control system)、神經(jīng)網(wǎng)絡(luò)(neural network)、圖像處理(image processing)、魯棒控制 (robust control)、非線性系統(tǒng)控制設(shè)計(jì) (nonlinear system control design)、系統(tǒng)辨識(shí)(system identification)、最優(yōu)化(optimization)、模糊邏輯(fuz
14、zy logic)、 小波(wavelet)、通信(communication)、統(tǒng)計(jì)(statistics)等工具箱,這些工具箱給各個(gè)領(lǐng)域 的研究和工程應(yīng)用提供了有力的工具, 借助于這些巨人肩上的工具”各個(gè)層次的研究 人員可直觀、方便地進(jìn)行分析、計(jì)算及設(shè)計(jì)工作,從而大大地節(jié)省了時(shí)間。 3.3.2. MATLAB研究數(shù)字水印的優(yōu)點(diǎn) ① 集成了 DCT、DWT等函數(shù)有豐富的小波函數(shù)和處理函數(shù), 這不僅方便了研究人員, 而且使源程序簡(jiǎn)潔明了、易實(shí)現(xiàn)。 ② 強(qiáng)大的數(shù)學(xué)運(yùn)算功能。能夠方便、高效地實(shí)現(xiàn)音頻、視頻中的大量矩陣運(yùn)算。 ③ 提供了圖像處理工具箱、小波分析工具箱、數(shù)字信號(hào)處理工具箱。
15、用來(lái)編制跨數(shù)字 圖像處理技術(shù)、數(shù)字信號(hào)處理等多學(xué)科的數(shù)字水印技術(shù)是非常好的選擇。 ④ MATLAB與目前最強(qiáng)大的編程工具 一一Visual C++具有良好的接口。 3.3.3. MATLAB 函數(shù)介紹 在介紹函數(shù)之前, 我們必須明確一點(diǎn): 作水印程序時(shí), 處理的圖像數(shù)據(jù)是二維信號(hào) 而聲音信號(hào)是一維信號(hào)。這里,我們僅僅簡(jiǎn)單介紹與水印有關(guān)的函數(shù)。 ① 數(shù)據(jù)輸入輸出函數(shù) imread ()和 imwrite ():可以讀寫 bmp,jpg/jpeg, tif/tiff, png, hdf, pcx, wxd 格式文件。 讀索引文件時(shí),還可以得到相應(yīng)的調(diào)色板數(shù)據(jù)。 auread ()、
16、auwrite ()、wavread ()禾口 wavwrite (): 可以方便地讀寫 au 禾口 wav 文件, 并可控制其中的位及頻率。 ② 圖像顯示 imshow() :顯示一幅圖像; imfinfo() :可以得到讀入圖像的信息。如文件的大小、格式、 格式版本號(hào)、圖像的高度、寬度、顏色類型(真彩色,灰度圖還是索引圖)等。 ③ 變換頻函數(shù) 對(duì)信號(hào)采用不同的變換,是實(shí)現(xiàn)頻域法水印的至關(guān)重要的一步, MATLAB 中對(duì)一 維信號(hào)和二維信號(hào)分別提供了各種變換和逆變換函數(shù)。 離散余弦變換( DCT ) DCT (離散余弦變換) ; IDCT (逆向離散余弦變換) ; DWT (
17、離散小波變換) IDWT (離散小波變換) ; dct(),dct2(): 分別實(shí)現(xiàn)一維信號(hào)和二維信號(hào)的 idct(),idct2(): 分別實(shí)現(xiàn)一維信號(hào)和二維信號(hào)的 離散小波變換( DWT ) dwt(),dwt2(): 分別實(shí)現(xiàn)一維信號(hào)和二維信號(hào)的 idwt(),idwt2(): 分別實(shí)現(xiàn)一維信號(hào)和二維信號(hào)的 Wavedec2():多級(jí)二維小波分解函數(shù); Waveinfo(): 提供小波包中所有的小波信息; 一個(gè)好的水印算法必須經(jīng)過(guò) 中的許多函數(shù)可以直接用來(lái)做攻擊 ④ 攻擊函數(shù) 對(duì)算法進(jìn)行攻擊測(cè)試是對(duì)水印魯棒性檢測(cè)的一種重要手段, 各種攻擊測(cè)試才能對(duì)之做出客觀的評(píng)價(jià)。 M
18、A TLAB 測(cè)試。 旋轉(zhuǎn): 剪裁: rotate ()可以對(duì)圖像進(jìn)行任意角度的旋轉(zhuǎn); imcrop() 可以按精確定位的各點(diǎn)坐標(biāo)進(jìn)行剪裁; 濾波: filter() 和 filter2() 可實(shí)現(xiàn)對(duì)一維信號(hào)和二維信號(hào)的濾波; 抖動(dòng): dither() 對(duì)圖像進(jìn)行抖動(dòng);抖動(dòng)攻擊考驗(yàn)水印魯棒性的一個(gè)很好的攻擊; jpeg 壓縮: imwrite() 中 jpg 和 quality 參數(shù)能對(duì)圖像進(jìn)行可控 jpg 壓縮; 加各種噪聲: imnoise() 可以對(duì)圖像加入各種噪聲,如白噪聲、椒鹽噪聲等,加入噪聲是 對(duì)水印魯棒性考驗(yàn)的一種常見(jiàn)的攻擊; 放大/縮?。篿mresize()可以
19、以指定的插值方法來(lái)對(duì)圖像進(jìn)行放大和縮小。 第四章: 圖像數(shù)字水印技術(shù)的實(shí)現(xiàn) 4.1基于離散余弦變法(DCT實(shí)現(xiàn)數(shù)字水印技術(shù) ① 打開原始及水印圖像 : subplot(2,2,1) I=uigetfile('*.bmp',' 打開原始彩色圖像文件 '); RGB=imread(I); image(RGB); title(' 原始彩色圖像 '); subplot(2,2,2) I=uigetfile('*.bmp',' 打開水印灰度圖像文件 '); imshow(I); title(' 灰
20、度水印圖像 '); subplot(2,2,3) H=imread(I); J=dct2(H); imshow(log(abs(J)),[]),colorbar; title(' 水印圖像經(jīng) DCT 變換后能量分布情況 ') 運(yùn)行結(jié)果: ② 水印全過(guò)程: 0%水印加入程序 Q=input('請(qǐng)輸入放縮因子的值(建議小于1): Q=') subplot(2,3,1) RGB=imread(' 南京郵電大學(xué) ','jpg'); imshow(RGB); title(' 原始圖像 ');
21、 subplot(2,3,2) N=dct2(RGB(:,:,3)); imshow(log(abs(N)),[]),colorbar; title('Y 分量能量分布 '); subplot(2,3,4) I=imread('lena1','bmp'); imshow(I); title(' 灰度水印圖像 '); subplot(2,3,5) M=dct2(I); imshow(log(abs(M)),[]),colorbar; title(' 水印能量分布 '); subplot(2,3,6)
22、 J=M(1:128,1:128); J(128:364,128:400)=0; J=rot90(J); J=rot90(J); J(365:600,401:750)=0; J=rot90(J); J=rot90(J); N=N+Q*J; K=idct2(N); RGB(:,:,3)=K; imshow(RGB); title(' 加入水印后圖像 '); %水印提取程序 subplot(2,3,3) RGB1=imread(' 南京郵電大學(xué) ','jpg'); N=dct2(RGB(:,:,3)); M=dct2
23、(RGB1(:,:,3)); M=(N-M)/Q; B=idct2(M(236:365,350:401)); Y=mat2gray(B); imshow(Y); title(' 提取的水印圖像 ') 運(yùn)行結(jié)果: ③ 水印全過(guò)程(經(jīng)剪切檢測(cè)水印) %水印加入程序 Q=input('請(qǐng)輸入放縮因子的值(建議小于1): Q=') subplot(3,3,1) RGB=imread('MM','jpg'); imshow(RGB); title('原始圖像'); subplot(3,3,2) i
24、mshow(RGB(:,:,3)); title('B 分量 '); subplot(3,3,3) N=dct2(RGB(:,:,3)); imshow(log(abs(N)),[]),colorbar; title('B 分量能量分布 '); subplot(3,3,4) I=imread('lena1','bmp'); imshow(I); title('灰度水印圖像'); subplot(3,3,5) M=dct2(I); imshow(log(abs(M)),[]),colorbar;
25、 title(' 水印能量分布 '); subplot(3,3,7) J=M(1:128,1:128); J(128:464,128:364)=0; J=rot90(J); J=rot90(J); J(465:800,365:600)=0; J=rot90(J); J=rot90(J); N=N+Q*J; K=idct2(N); RGB(:,:,3)=K; imshow(RGB); title(' 加入水印后圖像 '); subplot(3,3,8) I=imcrop(RGB,[1 1 598 798]); imshow(I);
26、subplot(3,3,9) %水印提取程序 subplot(3,3,6) RGB1=imread('MM','jpg'); J=RGB1(:,:,3); X=J(1:799,1:599); N=dct2(I(:,:,3)); M=dct2(X); M=(N-M)/Q; B=idct2(M(337:464,237:364)); Y=mat2gray(B); imshow(Y); title(' 經(jīng)放縮后提取的水印圖像 ') 運(yùn)行結(jié)果: [nlfx Figure Vo
27、 ④ 水印全過(guò)程(經(jīng)空域壓縮檢測(cè)水印) 程序源代碼 %水印加入程序 Q=input('請(qǐng)輸入放縮因子的值(建議小于1): Q=') P=i nput('請(qǐng)輸入您所希望的圖像放縮系數(shù)值(建議取值不要小于 0.5):P=') subplot(3,3,1) RGB=imread('南京郵電大學(xué)','jpg'); imshow(RGB); title('原始圖像'); subplot(3,3,2) imshow(RGB(
28、:,:,3)); title('B 分量'); subplot(3,3,3) N=dct2(RGB(:,:,3)); imshow(log(abs(N)),[]),colorbar; title('B分量能量分布'); subplot(3,3,4) I=imread('le na1','bmp'); imshow(I); title(' 灰度水印圖像 '); subplot(3,3,5) M=dct2(I); imshow(log(abs(M)),[]),colorbar; title('
29、; 水印能量分布 '); subplot(3,3,7) J=M(1:128,1:128); J(128:364,128:400)=0; J=rot90(J); J=rot90(J); J(365:600,401:750)=0; J=rot90(J); J=rot90(J); N=N+Q*J; K=idct2(N); RGB(:,:,3)=K; imshow(RGB); title(' 加入水印后圖像 '); subplot(3,3,8) I=imresize(RGB,P,'nearest'); imshow(I); title(
30、'壓縮P倍圖像'); subplot(3,3,9) J=imresize(I,1/P,'nearest'); imshow(J); title('再放大P倍還原圖像') %水印提取程序 subplot(3,3,6) RGB1=imread(' 浙江臺(tái)州學(xué)院 ','jpg'); N=dct2(J(:,:,3)); M=dct2(RGB1(:,:,3)); M=(N-M)/Q; B=idct2(M(236:365,350:401)); Y=mat2gray(B); imshow(Y); title(
31、' 經(jīng)放縮后提取的水印圖像 '): 運(yùn)行結(jié)果: 4.2 圖像水印的 dwt 算法 %以下是水印提取算法 clear all ; clc; %保存時(shí)間 start_time=cputime; figure(1); %讀出原始圖像 subplot(1,2,1); input=imread( '2.jpg' ); imshow(input); title( ' 原始圖像 ' ); %讀出水印圖像 subplot(1,2,2); watermarked_image=imread( 'watermarked.bmp
32、39; ); imshow(watermarked_image,[]); title( ' 水印圖像 ' ); %三色分離 input=double(input); watermarked_image=double(watermarked_image); inputr=input(:,:,1); watermarked_imager=watermarked_image(:,:,1); inputg=input(:,:,2); watermarked_imageg=watermarked_image(:,:,2); inputb=input(:,:,3); waterm
33、arked_imageb=watermarked_image(:,:,3); %水印圖像R的分解 [Cwr,Swr]=WAVEDEC2(watermarked_imager,2, 'haar' ); %圖像R的分解 [Cr,Sr]=WAVEDEC2(inputr,2, 'haar' ); %水印圖像G的分解 [Cwg,Swg]=WAVEDEC2(watermarked_imageg,2, 'haar' ); %圖像R的分解 [Cg,Sg]=WAVEDEC2(inputg,2, 'haar' ); %水印圖像B的分
34、解 [Cwb,Swb]=WAVEDEC2(watermarked_imageb,2, 'haar' ); %圖像B的分解 [Cb,Sb]=WAVEDEC2(inputb,2, 'haar' ); %提取水印小波系數(shù) %提取水印R的小波系數(shù) r=0.06; for k=0:3 whr(k+1,:)=Cwr(1+size(Cwr,2)/4+k*size(Cwr,2)/16: size(Cwr,2)/4+(k+1)*size(Cwr,2)/16)- Cr(1+size(Cr,2)/4+k*size(Cr,2)/16: ... size(Cr,2)/
35、4+(k+1)*size(Cr,2)/16); wvr(k+1,:)=Cwr(1+size(Cwr,2)/2+k*size(Cwr,2)/16: size(Cwr,2)/2+(k+1)*size(Cwr,2)/16)- Cr(1+size(Cr,2)/2+k*size(Cr,2)/16: ... size(Cr,2)/2+(k+1)*size(Cr,2)/16); wdr(k+1,:)=Cwr(1+3*size(Cwr,2)/4+k*size(Cwr,2)/16: 3*size(Cwr,2)/4+(k+1)*size(Cwr,2)/16)- Cr(1+3*size(Cr,2)/4+k*
36、size(Cr,2)/16: .. 3*size(Cr,2)/4+(k+1)*size(Cr,2)/16); end whr=(whr(1,:)+whr(2,:)+whr(3,:)+whr(4,:))/(4*r); wvr=(wvr(1,:)+wvr(2,:)+wvr(3,:)+wvr(4,:))/(4*r); wdr=(wdr(1,:)+wdr(2,:)+wdr(3,:)+wdr(4,:))/(4*r); war=(Cwr(1:size(Cwr,2)/16)-Cr(1:size(Cr,2)/16))/r; %提取水印小波系數(shù) %提取水印G的小波系數(shù) g=0.03; for
37、k=0:3 whg(k+1,:)=Cwg(1+size(Cwg,2)/4+k*size(Cwg,2)/16: size(Cwg,2)/4+(k+1)*size(Cwg,2)/16)- Cg(1+size(Cg,2)/4+k*size(Cg,2)/16: size(Cg,2)/4+(k+1)*size(Cg,2)/16); wvg(k+1,:)=Cwg(1+size(Cwg,2)/2+k*size(Cwg,2)/16: size(Cwg,2)/2+(k+1)*size(Cwg,2)/16)- Cg(1+size(Cg,2)/2+k*size(Cg,2)/16: . size(Cg,2)/2
38、+(k+1)*size(Cg,2)/16); wdg(k+1,:)=Cwg(1+3*size(Cwg,2)/4+k*size(Cwg,2)/16: 3*size(Cwg,2)/4+(k+1)*size(Cwg,2)/16)- Cg(1+3*size(Cg,2)/4+k*size(Cg,2)/16: 3*size(Cg,2)/4+(k+1)*size(Cg,2)/16); end whg=(whg(1,:)+whg(2,:)+whg(3,:)+whg(4,:))/(4*g); wvg=(wvg(1,:)+wvg(2,:)+wvg(3,:)+wvg(4,:))/(4*g); wdg=(wdg
39、(1,:)+wdg(2,:)+wdg(3,:)+wdg(4))/(4*g); wag=(Cwg(1:size(Cwg,2)/16)-Cg(1:size(Cg,2)/16))/g; %提取水印小波系數(shù) %提取水印B的小波系數(shù) b=0.12; for k=0:3 whb(k+1,:)=Cwb(1+size(Cwb,2)/4+k*size(Cwb,2)/16: size(Cwb,2)/4+(k+1)*size(Cwb,2)/16)- Cb(1+size(Cb,2)/4+k*size(Cb,2)/16: size(Cb,2)/4+(k+1)*size(Cb,2)/16); wvb(k+1,
40、:)=Cwb(1+size(Cwb,2)/2+k*size(Cwb,2)/16: size(Cwb,2)/2+(k+1)*size(Cwb,2)/16)- Cb(1+size(Cb,2)/2+k*size(Cb,2)/16: size(Cb,2)/2+(k+1)*size(Cb,2)/16); wdb(k+1,:)=Cwb(1+3*size(Cwb,2)/4+k*size(Cwb,2)/16: 3*size(Cwb,2)/4+(k+1)*size(Cwb,2)/16)- Cb(1+3*size(Cb,2)/4+k*size(Cb,2)/16: 3*size(Cb,2)/4+(k+1)*
41、size(Cb,2)/16); end whb=(whb(1,:)+whb(2,:)+whb(3,:)+whb(4,:))/(4*b); wvb=(wvb(1,:)+wvb(2,:)+wvb(3,:)+wvb(4,:))/(4*b); wdb=(wdb(1,:)+wdb(2,:)+wdb(3,:)+wdb(4,:))/(4*b); wab=(Cwb(1:size(Cwb,2)/16)-Cb(1:size(Cb,2)/16))/b; %重構(gòu)水印圖像 cwr=[war,whr,wvr,wdr]; swr(:,1)=[sqrt(size(war,2)),sqrt(size(war,2)),
42、2*sqrt(size(war,2))]; swr(:,2)=[sqrt(size(war,2)),sqrt(size(war,2)),2*sqrt(size(war,2))]; wr = waverec2(cwr,swr, 'haar' ); cwg=[wag,whg,wvg,wdg]; swg(:,1)=[sqrt(size(wag,2)),sqrt(size(wag,2)),2*sqrt(size(wag,2))]; swg(:,2)=[sqrt(size(wag,2)),sqrt(size(wag,2)),2*sqrt(size(wag,2))]; wg=wav
43、erec2(cwg,swg, 'haar' ); cwb=[wab,whb,wvb,wdb]; swb(:,1)=[sqrt(size(wab,2)),sqrt(size(wab,2)),2*sqrt(size(wab,2))]; swb(:,2)=[sqrt(size(wab,2)),sqrt(size(wab,2)),2*sqrt(size(wab,2))]; wb=waverec2(cwb,swb, 'haar' ); %將 R, G B疊加 temp=size(wr); pic=zeros(temp(1),temp(2),3); for i=
44、1:temp(1); for j=1:temp(2); pic(i,j,1)=wr(i,j); pic(i,j,2)=wg(i,j); pic(i,j,3)=wb(i,j); end end output=uint8(round(pic)); %轉(zhuǎn)化為 uint8 watermark_image_uint8=uint8(output); imwrite(watermark_image_uint8, 'watermark.bmp' , 'bmp' ); figure(2); imshow(watermark_image_uint8); title( ' 提取出的水印 ' ); 原始圖像 加入小波的圖像 小波 提取的小波
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 110中國(guó)人民警察節(jié)(筑牢忠誠(chéng)警魂感受別樣警彩)
- 2025正字當(dāng)頭廉字入心爭(zhēng)當(dāng)公安隊(duì)伍鐵軍
- XX國(guó)企干部警示教育片觀后感筑牢信仰之基堅(jiān)守廉潔底線
- 2025做擔(dān)當(dāng)時(shí)代大任的中國(guó)青年P(guān)PT青年思想教育微黨課
- 2025新年工作部署會(huì)圍繞六個(gè)干字提要求
- XX地區(qū)中小學(xué)期末考試經(jīng)驗(yàn)總結(jié)(認(rèn)真復(fù)習(xí)輕松應(yīng)考)
- 支部書記上黨課筑牢清廉信念為高質(zhì)量發(fā)展?fàn)I造風(fēng)清氣正的環(huán)境
- 冬季消防安全知識(shí)培訓(xùn)冬季用電防火安全
- 2025加強(qiáng)政治引領(lǐng)(政治引領(lǐng)是現(xiàn)代政黨的重要功能)
- 主播直播培訓(xùn)直播技巧與方法
- 2025六廉六進(jìn)持續(xù)涵養(yǎng)良好政治生態(tài)
- 員工職業(yè)生涯規(guī)劃方案制定個(gè)人職業(yè)生涯規(guī)劃
- 2024年XX地區(qū)黨建引領(lǐng)鄉(xiāng)村振興工作總結(jié)
- XX中小學(xué)期末考試經(jīng)驗(yàn)總結(jié)(認(rèn)真復(fù)習(xí)輕松應(yīng)考)
- 幼兒園期末家長(zhǎng)會(huì)長(zhǎng)長(zhǎng)的路慢慢地走