資源簡介
lsb算法實現簡單水印的嵌入與提取,lsb是嵌入,lsb2是提取。

代碼片段和文件信息
clear?all;
%?保存開始時間
start_time=cputime;
%?讀入原圖像
file_name=‘lena.bmp‘;
[cover_objectmap]=imread(file_name);
%?讀入水印圖像
file_name=‘logo.bmp‘;
[messagemap1]=imread(file_name);
message1=message;
message=double(message);???%%轉換為double數
message=fix(message./2);???%%轉換為0,1組成的矩陣
message=uint8(message);???%%轉換為uint8數
%?原圖的行數與列數
Mc=size(cover_object1);????%原圖的行數
Nc=size(cover_object2);????%原圖的列數
%?水印的行數與列數
Mm=size(message1);?????????%水印的行數
Nm=size(message2);?????????%水印的列數
%?將水印擴展為原圖像大小,并寫入watermark
for?ii?=?1:Mc
??for?jj?=?1:Nc
????watermark(iijj)=message(mod(iiMm)+1mod(jjNm)+1);
??end
end
%?將原圖的最低有效位值換為水印的值
watermarked_image=cover_object;
for?ii?=?1:Mc
??for?jj?=?1:Nc
????watermarked_image(iijj)=bitset(watermarked_image(iijj)1watermark(iijj));
??end
end
%?將嵌入水印圖像寫入lsb_watermarked.jpeg
imwrite(watermarked_image‘lsb_watermarked.bmp‘‘bmp‘);
imwrite(watermark‘kuozhan.bmp‘‘bmp‘);
%?顯示運行時間
elapsed_time=cputime-start_time
%?顯示嵌入水印圖像
figure(1)
subplot(121)
imshow(watermarked_image[])
title(‘嵌入水印信息量100%圖像‘)
subplot(122)
imshow(cover_object[])
title(‘原圖像‘)
%%擴展后水印
for?ii?=?1:Mc
??for?jj?=?1:Nc
????watermark1(iijj)=message1(mod(iiMm)+1mod(jjNm)+1);
??end
end
figure(2);subplot(121);
imshow(watermark1[]);
title(‘擴展后的水印‘);
figure(2);subplot(122);
imshow(message1[]);
title(‘原水印‘);
imshow(message1[]);
title(‘原水印‘);
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????1560??2017-12-08?14:21??lsb算法實現水印嵌入提取\LSB.m
?????文件?????????725??2017-12-01?14:44??lsb算法實現水印嵌入提取\LSB2.m
?????文件?????????400??2017-12-08?13:32??lsb算法實現水印嵌入提取\psnr.m
?????目錄???????????0??2017-12-15?10:42??lsb算法實現水印嵌入提取\
- 上一篇:二極管單平衡混頻器
- 下一篇:微燃機Matlab/simuli
nk建模
評論
共有 條評論