hide_dct.m
来自「函数用于DCT的信息隐藏,在变换域嵌入隐藏的信息」· M 代码 · 共 56 行
M
56 行
%函数用于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 + =
减小字号Ctrl + -
显示快捷键?