1 简介
文章对DCT(离散余弦变换)域和LSB图像数字水印算法进行了研究,并用matlab工具进行实验,结果表明该算法使水印的嵌入达到了较好的鲁棒性和不可见性.
2 部分代码
% 本函数将利用随机序列进行间隔控制,选择信息隐藏位
%输入格式说明 [row ,col]=randinterval(test,60,1988)
% matrix为被潜入的载体矩阵 count为要嵌入的信息数量 既选择的像素数量
%key为密钥 row为伪随机输出的像素行标 col为伪随机输出的像素列标
function [row,col]=randinterval(matrix,count,key)
% 计算间隔的位数
[m,n]=size(matrix);
interval1=floor(m*n/count)+1;
interval2=interval1-2;
if interval2==0
error('载体太小不能将秘密信息隐藏进去!');
end
%生成随机序列
rand('twister',key);
a=rand(1,count);
% 初始化
row=zeros([1 count]);
col=zeros([1 count]);
% 计算row和col
r=1;
c=1;
row(1,1)=r;
col(1,1)=c;
for i=2:count
if a(i)>=0.5
c=c+interval1;
else
c=c+interval2;
end
if c>n
r=r+1;
if r>m
error('载体太小了 信息太大嵌入不了');
end
c=mod(c,n);
if c==0
c=1;
end
end
row(1,i)=r;
col(1,i)=c;
end
3 仿真结果
4 参考文献
[1]贾二群, 吕建平. DCT与LSB相结合的彩色图像双水印算法研究[J]. 西安邮电学院学报, 2010.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。