?? 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 + -