91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

基于DCT的水印算法實現,MATLAB版。附帶實驗圖片,可以直接運行。

資源截圖

代碼片段和文件信息

%圖片加水印,提取出水印,并進行攻擊測試
%林多???CSDN
%http://blog.csdn.net/zxc024000
%%%%%%%%%%%%
M=256;?%原圖像長度
N=32;?%水印圖像長度
K=8;?%8x8的分塊
I=zeros(MM);%創建一個MxM矩陣,元素全是0
J=zeros(NN);
BLOCK?=?zeros(KK);
%顯示原圖像
subplot(521);%顯示多幅圖像,在第一個位置顯示
I=imread(‘23.bmp‘);%將23.bmp讀入I中
imshow(I);%顯示圖像
title(‘原始公開圖像‘);%標題
%顯示水印圖像
subplot(522);
J=imread(‘21.bmp‘);
imshow(J);
title(‘水印圖像‘);
%水印嵌入算法
for?p=1:N?%從1到32循環
?for?q=1:N?%從1到32循環
??x=(p-1)*K+1;?y=(q-1)*K+1;
??BLOCK=I(x:x+K-1y:y+K-1);%取相應元素保存到BLOCK中
??BLOCK=dct2(BLOCK);%二維離散余弦變換
??if?J(pq)==0?%如果元素為0
????a=-1;
??else
????a=1;
??end
??BLOCK=BLOCK*(1+a*0.03);??BLOCK=idct2(BLOCK);%反二維離散余弦變換
??I(x:x+K-1y:y+K-1)=BLOCK;
?end
end
%顯示嵌入水印后的圖像
subplot(523);
imshow(I);
title(‘嵌入水印后的圖像‘);
imwrite(I‘watermarked.bmp‘‘bmp‘);%將I中的數據保存成watermarked.bmp
%從嵌入水印的圖像中提取水印
I=imread(‘23.bmp‘);%未加水印的原圖像
P=imread(‘watermarked.bmp‘);%水印圖像
%提取水印算法
for?p=1:N
for?q=1:N
x=(p-1)*K+1;
y=(q-1)*K+1;
BLOCK1=I(x:x+K-1y:y+K-1);%賦給BLOCK1元素
BLOCK2=P(x:x+K-1y:y+K-1);%賦給BLOCK2元素
BLOCK1=idct2(BLOCK1);%對其本身進行反二維離散余弦變換
BLOCK2=idct2(BLOCK2);%對其本身進行反二維離散余弦變換
a=BLOCK2(11)/BLOCK1(11)-1;
if?a<0
W(pq)=0;
else
W(pq)=1;
end
end
end
%顯示提取的水印
subplot(524);
imshow(W);
title(‘從含水印圖像中提取的水印‘);

%----------攻擊測試-----------------------%

%----------中值攻擊----------%
P1=imread(‘watermarked.bmp‘);
P1=double(P1(::1));
P1=medfilt2(P1);%中值濾波
subplot(525);
imshow(P1[]);
title(‘中值濾波攻擊‘);
I1=imread(‘23.bmp‘);%未加水印的原圖像
%提取水印算法
for?p=1:N
for?q=1:N
x=(p-1)*K+1;
y=(q-1)*K+1;
BLOCK1=I1(x:x+K-1y:y+K-1);%賦給BLOCK1元素
BLOCK2=P1(x:x+K-1y:y+K-1);%賦給BLOCK2元素
BLOCK1=idct2(BLOCK1);%對其本身進行反二維離散余弦變換
BLOCK2=idct2(BLOCK2);%對其本身進行反二維離散余弦變換
a=BLOCK2(11)/BLOCK1(11)-1;
if?a<0
W1(pq)=0;
else
W1(pq)=1;
end
end
end
subplot(526);
imshow(W1);
title(‘從含中值濾波圖像中提取的水印‘);

%----------變小攻擊----------%
P2=imread(‘watermarked.bmp‘);
P2=imresize(P20.5);%變為0.5倍,從256x256到128x128
subplot(527);
imshow(P2[]);%顯示變小后圖像
title(‘變小攻擊,變為128x128像素‘);
I2=imread(‘23.bmp‘);%未加水印的原圖像
I2=imresize(I20.5);%原圖像一樣變小
%提取水印算法
for?p=1:32
for?q=1:32
x=(p-1)*4+1;
y=(q-1)*4+1;
BLOCK1=I2(x:x+4-1y:y+4-1);%賦給BLOCK1元素
BLOCK2=P2(x:x+4-1y:y+4-1);%賦給BLOCK2元素
BLOCK1=idct2(BLOCK1);%對其本身進行反二維離散余弦變換
BLOCK2=idct2(BLOCK2);%對其本身進行反二維離散余弦變換
a=BLOCK2(11)/BLOCK1(11)-1;
if?a<0
W2(pq)=0;
else
W2(pq)=1;
end
end
end
subplot(528);
imshow(W2);
title(‘從128x128圖像中提取水印‘);

%-------旋轉攻擊-------%
P3=imread(‘watermarked.bmp‘);
P3=imrotate(P390);%逆時針旋轉90度;
subplot(529);
imshow(P3[]);
title(‘旋轉攻擊‘);
I3=imread(‘23.bmp‘);%未加水印的原圖像
I3=imrotate(I390);?%原圖像逆時針旋轉90度;
%提取水印算法
for?p=1:N
for?q=1:N
x=(p-1)*K+1;
y=(q-1)*K+1;
BLOCK1=I3(x:x+K-1y:y+K-1);%賦給BLOCK1元素
BLOCK2=P3(x:x+K-1y:y+K-1);%賦給BLOCK2元素
BLOCK1=idct2(BLOCK1);%對其本身進行反二維離散余弦變換
BLOCK2=idct2(BLOCK2);%對其本身進行反二維離散余弦變換
a=BLOCK2(11)/BLOCK1(11)-1;
if?a<0
W3(pq)=0;
else
W3(pq)=1;
end
end
end
subplot(5210);
imshow(W3);
title(‘從含旋轉圖像中提取的水印‘);

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????2102??2015-05-12?19:10??水印\21.bmp
?????文件??????196662??2015-05-12?15:29??水印\23.bmp
?????文件????????3508??2015-10-26?20:23??水印\dct.m
?????文件??????196662??2015-10-26?19:53??水印\watermarked.bmp
?????目錄???????????0??2015-10-26?20:23??水印\

評論

共有 條評論