📄 hide_dct.m
字号:
%函数用于DCT的信息隐藏
function hide_DCT()
alpha=0.5;%alpha是控制量,用来保证编码的正确性
xianshi='请打开载体文件'
foutain=uigetfile();
xianshi='请打开隐藏信息所在的文件'
info=uigetfile();
key=input(' 请输入密码:');
fid=fopen(info);
[msg,count]=fread(fid,'ubit1');
data0=imread(foutain);
data0=double(data0)/255;
data=data0(:,:,1);
T=dctmtx(8);
DCTrgb=blkproc(data,[8,8],'P1*x*P2',T,T');
[row,col]=size(DCTrgb);
x=floor(row/8);
y=floor(col/8);
a=zeros([x y]);
[k1,k2]=randinterval(a,count,key);
for i=1:count
k1(1,i)=(k1(1,i)-1)*8+1;
k2(1,i)=(k2(1,i)-1)*8+1;
end
%信息嵌入
temp=0;
for i=1:count
if msg(i,1)==0
if DCTrgb(k1(i)+4,k2(i)+1)>DCTrgb(k1(i)+3,k2(i)+2)
temp=DCTrgb(k1(i)+4,k2(i)+1);
DCTrgb(k1(i)+4,k2(i)+1)=DCTrgb(k1(i)+3,k2(i)+2);
DCTrgb(k1(i)+3,k2(i)+2)=temp;
end
else
if DCTrgb(k1(i)+4,k2(i)+1)<DCTrgb(k1(i)+3,k2(i)+2)
temp=DCTrgb(k1(i)+4,k2(i)+1);
DCTrgb(k1(i)+4,k2(i)+1)=DCTrgb(k1(i)+3,k2(i)+2);
DCTrgb(k1(i)+3,k2(i)+2)=temp;
end
end
if DCTrgb(k1(i)+4,k2(i)+1)>DCTrgb(k1(i)+3,k2(i)+2)
DCTrgb(k1(i)+3,k2(i)+2)=DCTrgb(k1(i)+3,k2(i)+2)-alpha;
else
DCTrgb(k1(i)+4,k2(i)+1)=DCTrgb(k1(i)+4,k2(i)+1)-alpha;
end
end
%信息写回保存
DCTrgb1=DCTrgb;
data=blkproc(DCTrgb,[8,8],'P1*x*P2',T',T);
result=data0;
result(:,:,1)=data;
imwrite(result,'ste_image_0.5.jpg');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -