📄 digitalencypt.m
字号:
clear;
I=imread('Beidalou.bmp');
%in = fix(double(I)/2)*2;
in=double(I);
code = imread('code.bmp');
Code = (double(code))/255; %把uint8型强制转为double型,方便下面运算
[s1,s2] = size(Code);
[t1,t2] = size(I);
U=zeros(320,240,3);
%嵌入过程
for i=1:s1
for j=1:s2
U(i,j,1)=in(i,j,1)+Code(i,j,1);
U(i,j,2)=in(i,j,2)+Code(i,j,2);
U(i,j,3)=in(i,j,3)+Code(i,j,3);
end
end
for i=1:t1
for j=1:t2
if i<=s1&&j<=s2
out(i,j,1)=U(i,j,1);
out(i,j,2)=U(i,j,1);
out(i,j,3)=U(i,j,1);
else
out(i,j,1)=I(i,j,1);
out(i,j,2)=I(i,j,1);
out(i,j,3)=I(i,j,1);
end
end
end
%out=uint8(out);
%imshow(out);
imwrite(out,'Encrypted_Beidalou','bmp'); %把嵌入水印后的图读出到Encrypted_Beidalou中
toBeDecoded = imread('Encrypted_Beidalou');
%提取过程
toBeDecoded = double(toBeDecoded);
for i=1:s1
for j=1:s2
decode(i,j,1)=(toBeDecoded(i,j,1)-(fix(toBeDecoded(i,j,1)/2))*2)*255;
decode(i,j,2)=(toBeDecoded(i,j,2)-(fix(toBeDecoded(i,j,2)/2))*2)*255;
decode(i,j,3)=(toBeDecoded(i,j,3)-(fix(toBeDecoded(i,j,3)/2))*2)*255;
end
end
%decode = uint8(decode);
figure,imshow(decode); %decode存放数字解出的水印
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -