什么是LSB算法?

2024-12-18 02:36:09
推荐回答(2个)
回答1:

LSB(LeastSignificant Bits)算法:将秘密信息嵌入到载体图像像素值的最低有效位,也称最不显著位,改变这一位置对载体图像的品质影响最小。 

基本原理:
对空域的LSB做替换,用来替换LSB的序列就是需要加入的水印信息、水印的数字摘要或者由水印生成的伪随机序列。由于水印信息嵌入的位置是LSB,为了满足水印的不可见性,允许嵌入的水印强度不可能太高。然而针对空域的各种处理,如游程编码前的预处理,会对不显著分量进行一定的压缩,所以LSB算法对这些操作很敏感。因此LSB算法最初是用于脆弱性水印的。 

LSB算法基本步骤: 

1.将得到的隐藏有秘密信息的十进制像素值转换为二进制数据; 

2.用二进制秘密信息中的每一比特信息替换与之相对应的载体数据的最低有效位; 

3.将得到的含秘密信息的二进制数据转换为十进制像素值,从而获得含秘密信息的图像。

%信息嵌入
Picture=imread(‘c:\\test.tif’);  
%读入载体图像 
Double_Picture=Picture; 
Double_Picture=double(Double_Picture); 
%将图像转换为二进制
‘c:\\test.txt’_id=fopen(‘c:\\test.txt’,'r');  
%读取秘密信息文件 
[msg,len]=fread(‘c:\\test.txt’_id,'ubit1'); 
[m,n]=size(Double_Picture); 
p=1;  
%p 为秘密信息的位计数器 
for f2=1:n 
for f1=1:m 
Double_Picture(f1,f2)=Double_Picture(f1,f2)-mod(Double_ 
Picture(f1,f2),2)+msg(p,1); 
%将秘密信息按位隐藏入连续的像素中 
if p==len 
break; 
end 
p=p+1; 
end 
if p==len 
break; 
end 
end 
Double_Picture=uint8(Double_Picture); 
imwrite(Double_Picture,‘c:\\result.tif’);  
%生成秘密信息 
subplot(121);imshow(Picture);title('未嵌入信息的图片'); 
subplot(122);imshow(Double_Picture);title('嵌入信息的图片');
 
%信息提取 
Picture=imread(‘c:\\result.tif’);  
%读入隐秘信息的图像
 Picture=double(Picture); 
[m,n]=size(Picture); 
frr=fopen(‘c:\\result.txt’,'a'); 
len=8; 
%设定隐秘信息长度 
p=1; 
for f2=1:n 
for f1=1:m 
if bitand(Picture(f1,f2),1)==1 
%顺序提取图像相应像素LSB 的秘密信息 
fwrite(frr,1,'bit1'); 
result(p,1)=1; 
else 
fwrite(frr,0,'bit1'); 
result(p,1)=0; 
end 
if p==len  
%判断秘密信息是否读完 
break; 
end 
p=p+1; 
end 
if p==len 
break; 
end 
end 
fclose(frr);

回答2:

您好,LBS算法是将秘密信息嵌入到载体图像像素值的最低有效位,也称最不显著位,改变这一位置对载体图像的品质影响最小的算法。LSB算法的基本原理:   对空域的LSB做替换,用来替换LSB的序列就是需要加入的水印信息、水印的数字摘要或者由水印生成的伪随机序列。由于水印信息嵌入的位置是LSB,为了满足水印的不可见性,允许嵌入的水印强度不可能太高。然而针对空域的各种处理,如游程编码前的预处理,会对不显著分量进行一定的压缩,所以LSB算法对这些操作很敏感。因此LSB算法最初是用于脆弱性水印的。   LSB算法基本步骤:   1 将得到的隐藏有秘密信息的十进制像素值转换为二进制数据;   2 用二进制秘密信息中的每一比特信息替换与之相对应的载体数据的最低有效位;   3 将得到的含秘密信息的二进制数据转换为十进制像素值,从而获得含秘密信息的图像。 猎人安全网为您解答