当前位置:首页 > 信息隐藏实验报告 - 图文
信息隐藏实验报告
实验题目【一】
实现空域图像水印方法中的LSB算法:原始图像选取大小为512*512的elain图像或者goldhill图像,选择一个LSB水印算法以及适当的水印序列;利用选定的水印嵌入算法将水印信息嵌入到原始图像中。在嵌入水印之后的图像中提取水印,是否可以判定图像中含有水印,同时计算含水印图像的峰值信噪比。将含有水印的图像缩小为256*256之后,再放大为512*512,这时再提取水印,是否可以判定图像中含有水印。
实验结果
lsb.fig缩略图:实验程序
% LSB 算法: clear;
A=imread('elain.bmp'); B=A;
message='www`s homework'; m=length(message); n=size(A);
k=1;
for i=1:n(1)
for j=1:n(2)
if k<=m %如果消息输入完成则为0
h=bitget(double(message(k)),8:-1:1); else
h=[0,0,0,0,0,0,0,0]; end
c=bitget(A(i,j),8:-1:1); if mod(j,8) == 0 p=8; else
p=mod(j,8); end v=0;
for q=1:7
v=xor(v,c(q)); end
v=xor(v, h(p) );
B(i,j)=bitset(A(i,j),1,v); if mod(j,8) == 0 k=k+1; end end end
% 提取信息 out=char; tmp=0 ; t=1;
for i=1:n(1) for j=1:n(2)
c=bitget(B(i,j),8:-1:1); v=0;
for q=1:8
v=xor(v,c(q)); end
if mod(j,8)==0 p=1; else
p=9-mod(j,8); end
tmp=bitset(tmp,p,v); if mod(j,8)==0
out(t)=char(tmp);
t=t+1; tmp=0; end end end
%显示图像 figure;
subplot(1,2,1); image(A);
axis('square'); title('原始图像'); subplot(1,2,2); imshow(B);
axis('square'); title('加入水印后图像'); out
实验题目【二】
实现基于扩频的图像水印算法:原始图像选取大小为512*512的elain图像或者goldhill图像,水印图像选取为以XXX印或者XX之印(XXX为自己的名字)为图案的、适当大小的二值黑白图像,再选取一个基于扩频的图像水印算法;利用选定的水印嵌入算法将水印信息嵌入到原始图像中。计算含水印图像的的均方差和误码率。利用水印提取算法从含有水印的图像中提取水印信息,并用相关性判断图像中是否含有水印。将含有水印的图像进行窗口中值滤波,这时再提取水印信息,并用相关性判断图像中是否含有水印。
实验结果
缩略图:
DWT.fig
实验程序
%基于dwt的数字水印程序 clear;
%装入原图像
file_name='elain.bmp';
cover_object=double(imread(file_name)); I=cover_object;
%装入水印图像
file_name='www.bmp';
message=double(imread(file_name)); %二维离散小波变换
[CA,CH,CV,CD]=dwt2( I,'db1'); C=[CH CV CD];
[length,width]=size(CA); [M,N]=size(C); T1=100; a=0.2;
%加入水印 for j=1:1:N
for i=1:1:M
if(C(i,j)>T1) mark(i,j)=message(i,j);
WaterC(i,j)=double(C(i,j))+a*abs(double(C(i,j)))*mark(i,j); else
mark(i,j)=0;
WaterC(i,j)=double(C(i,j)); end;
end; end;
%重构图像
WaterCH=WaterC(1:length,1:width);
WaterCV=WaterC(1:length, width+1:2*width); WaterCD=WaterC(1:length, 2*width+1:3*width);
IW= double (idwt2 ( CA, WaterCH, WaterCV, WaterCD, 'db1')); %显示原始图像 figure;
subplot(1,4,1); image(I);
axis('square'); title('原始图像'); %显示水印图像
subplot(1,4,2); image(message); axis('square'); title('水印图像'); %显示嵌入水印后的图像 subplot(1,4,3); imshow(IW/250);
共分享92篇相关文档