📄 two.m
字号:
clear
M=256;
N=256;
a=1;
p=1;
A=imread('lena2.tif');
B=imread('bz.tif');
B=rgb2gray(B);
B=double(B);
A=double(A);
for i=1:M/8
for j=1:N/8
C=A(((i-1)*8+1):(i*8),((j-1)*8+1):(j*8));
D=B(((i-1)*4+1):(i*4),((j-1)*4+1):(j*4));
E=dct2(C);
D=D(1:16);
D1=fix(D/16)-8;
D2=D-fix(D/16)*16-8;
D=[D1 D2];
for o=1:6
if E(9-o,o+2)==0
E(9-o,o+2)=eps;
else
E(9-o,o+2)=E(9-o,o+2);
end
E(9-o,o+2)=E(9-o,o+2)*(1+p*D(o));
end
for t=1:7
if E(9-t,t+1)==0
E(9-t,t+1)=eps;
else
E(9-t,t+1)=E(9-t,t+1);
end
E(9-t,t+1)=E(9-t,t+1)*(1+p*D(t+6));
end
for k=1:8
if E(9-k,k)==0
E(9-k,k)=eps;
else
E(9-k,k)=E(9-k,k);
end
E(9-k,k)=E(9-k,k)*(1+p*D(k+13));
end
for q=1:7
if E(8-q,q)==0
E(8-q,q)=eps;
else
E(8-q,q)=E(8-q,q);
end
E(8-q,q)=E(8-q,q)*(1+p*D(q+21));
end
if E(6,1)==0
E(6,1)=eps;
else
E(6,1)=E(6,1);
end
E(6,1)=E(6,1)*(1+p*D(29));
if E(5,2)==0
E(5,2)=eps;
else
E(5,2)=E(5,2);
end
E(5,2)=E(5,2)*(1+p*D(30));
if E(2,5)==0
E(2,5)=eps;
else
E(2,5)=E(2,5);
end
E(2,5)=E(2,5)*(1+p*D(31));
if E(1,6)==0
E(1,6)=eps;
else
E(1,6)=E(1,6);
end
E(1,6)=E(1,6)*(1+p*D(32));
F=E;
G=idct2(F);
x(((i-1)*8+1):(i*8),((j-1)*8+1):(j*8))=G(1:8,1:8);
end
end
X=uint8(x);
imwrite(X,'JG.tif','tif');
% 以上为水印的嵌入
% 以下是水印的提取
Y=imread('JG.tif');
I=imread('lena2.tif');
Y=double(Y);
I=double(I);
aaaa=0;
for i=1:M/8
for j=1:N/8
J=I(((i-1)*8+1):(i*8),((j-1)*8+1):(j*8));
H=dct2(J);
y=Y(((i-1)*8+1):(i*8),((j-1)*8+1):(j*8));
y=dct2(y);
for o=1:6
if H(9-o,o+2)==0
H(9-o,o+2)=eps
else
H(9-o,o+2)=H(9-o,o+2);
end
z(o)=(y(9-o,o+2)/H(9-o,o+2)-1)/p;aaaa=aaaa+nnz(H(9-o,o+2));
end
for t=1:7
if H(9-t,t+1)==0
H(9-t,t+1)=eps;
else
H(9-t,t+1)=H(9-t,t+1);
end
z(t+6)=(y(9-t,t+1)/H(9-t,t+1)-1)/p;aaaa=aaaa+nnz(H(9-t,t+1));
end
for k=1:8
if H(9-k,k)==0
H(9-k,k)=eps;
else
H(9-k,k)=H(9-k,k);
end
z(k+13)=(y(9-k,k)/H(9-k,k)-1)/p;aaaa=aaaa+nnz(H(9-k,k));
end
for q=1:7
if H(8-q,q)==0
H(8-q,q)=eps;
else
H(8-q,q)=H(8-q,q);
end
z(q+21)=(y(8-q,q)/H(8-q,q)-1)/p;aaaa=aaaa+nnz(H(8-q,q));
end
if H(6,1)==0
H(6,1)=eps;
else
H(6,1)=H(6,1);
end
z(29)=(y(6,1)/H(6,1)-1)/p;aaaa=aaaa+nnz(H(6,1));
if H(2,5)==0
H(2,5)=eps;
else
H(2,5)=H(2,5);
end
z(30)=(y(5,2)/H(5,2)-1)/p;aaaa=aaaa+nnz(H(5,2));
if H(2,5)==0
H(2,5)=eps;
else
H(2,5)=H(2,5);
end
z(31)=(y(2,5)/H(2,5)-1)/p;aaaa=aaaa+nnz(H(2,5));
if H(1,6)==0
H(1,6)=eps;
else
H(1,6)=H(1,6);
end
z(32)=(y(1,6)/H(1,6)-1)/p;aaaa=aaaa+nnz(H(1,6));
u=(z(1:16)+8)*16+(z(17:32)+8);
P=reshape(u,4,4);
Z(((i-1)*4+1):(i*4),((j-1)*4+1):(j*4))=P(1:4,1:4);
end
end
Z=Z(1:M/2,1:N/2)*a;
MM=B-Z;
MM=uint8(MM);
Z=uint8(Z);
A=uint8(A);
B=uint8(B);
% imwrite(Z,'SYtwo.tif','tif');
% subplot(2,2,1); imshow(A); title('原宿主图像');
% subplot(2,2,2); imshow(B); title('水印图像');
% subplot(2,2,3); imshow(X); title('嵌入水印后的图像');
% subplot(2,2,4); imshow(Z); title('提取的水印图像');
% aaa=aaaa
imshow(MM);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -