📄 1039049-
字号:
clear all;
%读入载体图像
cover_image=imread('yt.bmp');
%读入水印图像
water_image=imread('sy.bmp');
%water_image=rgb2gray(I);
%imwrite(water_image,'sy2.bmp');
water=double(water_image);
water=round(water./256);%转换为0,1组成的矩阵
water=uint8(water);%转换为uint8数
imwrite(water,'sy3.bmp');
%确定载体图像大小
mc=size(cover_image,1)
nc=size(cover_image,2)
%确定水印图像大小
mm=size(water,1) %返回矩阵water的行数
nm=size(water,2) %返回矩阵water的列数
for i=1:mc
for j=1:nc
watermark(i,j)=water(mod(i,mm)+1,mod(j,nm)+1);
end
end
watermarked_image1=cover_image;
for i=1:mc
for j=1:nc
watermarked_image2(i,j)=bitset(watermarked_image1(i,j),1,watermark(i,j)); %在原图像“watermarked_image1”的第一位嵌入水印“watermark(i,j)”
a(i,j)=bitset(watermarked_image1(i,j),2,watermark(i,j));
b(i,j)=bitset(watermarked_image1(i,j),3,watermark(i,j));
c(i,j)=bitset(watermarked_image1(i,j),4,watermark(i,j));
d(i,j)=bitset(watermarked_image1(i,j),5,watermark(i,j));
e(i,j)=bitset(watermarked_image1(i,j),6,watermark(i,j));
f(i,j)=bitset(watermarked_image1(i,j),7,watermark(i,j));
g(i,j)=bitset(watermarked_image1(i,j),8,watermark(i,j));
end
end
imwrite(watermarked_image2,'lsb_watermarked.bmp','bmp');
%---------显示原水印图像---------
%figure(1)
%subplot(1,3,1);
%imshow(water_image);
%title('原水印')
%xlabel('256*256');
%------------显示载体图像-------
%subplot(1,3,2);
%imshow(cover_image);
%title('载体图像')
%xlabel('512*512');
%---------在最低位嵌入水印后的图像显示------------
%subplot(1,3,3);
%imshow(watermarked_image2,[]);
%title('在最低为平面嵌入水印后')
%xlabel('512*512');
figure(2),
subplot(1,4,1);
imhist(water_image);
title('原水印')
xlabel(' 直方图1');
subplot(1,4,2);
imhist(cover_image );
title('嵌水印前载体')
xlabel(' 直方图2');
subplot(1,4,3);
imhist(watermarked_image2);
title('1位平面嵌水印后')
xlabel(' 直方图3');
subplot(1,4,4);
imhist(g);
title('8位平面嵌水印后')
xlabel(' 直方图4');
%-------------水印依次从低到高位嵌入后的图像显示----------
figure(3)
subplot(2,4,1);
imshow( watermarked_image2);
title('1位平面嵌水印')
subplot(2,4,2);
imshow(a);
title('2位平面嵌水印')
subplot(2,4,3);
imshow(b);
title('3位平面嵌水印')
subplot(2,4,4);
imshow(c);
title('4位平面嵌水印')
subplot(2,4,5);
imshow(d);
title('5位平面嵌水印')
subplot(2,4,6);
imshow(e);
title('6位平面嵌水印')
subplot(2,4,7);
imshow(f);
title('7位平面嵌水印')
subplot(2,4,8);
imshow(g);
title('8位平面嵌水印')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -