LSB(Least Significant Bit),中文译名为最低有效位,是指一个二进制数字中的最低位。LSB算法的基本思想是用待嵌入的秘密信息取代载体图像数据的LSB,构成载密图像。又因为LSB对图像的外部特征影响很小,所以人难以用肉眼看出载密图像的变化。然而,人眼不仅对LSB位不可感知,对比LSB位更高的某些位同样不可感知,这就意味着这些更高的位同样可以用来嵌入秘密信息。同时,根据人类对绿色敏感,对蓝色不敏感的特点,我们还可以在绿色分量上嵌入更少的比特信息,在蓝色分量上嵌入更多的比特信息。嵌入比特信息的多少可以用(yr,yg,yb)来衡量。这三个值通常取(4,5,3)。
图像在matlab中表现为矩阵,矩阵的长即为图像的长,矩阵的宽即为图像的宽,图像中的每个像素点映射成矩阵中相应位置的元素,也就是数据。每个数据的大小为0~255,存于8bit的空间之内。rgb图像在matlab中表现为三层数据,对rgb图像的处理就是对着三层数据的处理传统lsb算法只在最低位嵌入数据,但是对于某些像素点,人类对某些高于lsb位的数据同样不能感知,这些位同样可以嵌入数据。其中,由于人类对rgb中的绿色敏感,而蓝色最不敏感,我们可以在蓝色分量中嵌入更多的数据。以上就是lsb拓展算法的原理。
%function firstNzreo
%第一个不是零的位置
function po=firstNzreo(y8,y7,y6,y5,y4,y3,y2,y1)
if y8~=0 po=8;
elseif y7~=0 po=7;
elseif y6~=0 po=6;
elseif y5~=0 po=5;
elseif y4~=0 po=4;
elseif y3~=0 po=3;
elseif y2~=0 po=2;
else po=1;
end
%function dec2bin_z
%十进制转二进制
function [y8,y7,y6,y5,y4,y3,y2,y1]=dec2bin_z(dec)
y1=mod(dec,2); dec=(dec-y1)/2;
y2=mod(dec,2); dec=(dec-y2)/2;
y3=mod(dec,2); dec=(dec-y3)/2;
y4=mod(dec,2); dec=(dec-y4)/2;
y5=mod(dec,2); dec=(dec-y5)/2;
y6=mod(dec,2); dec=(dec-y6)/2;
y7=mod(dec,2); dec=(dec-y7)/2;
y8=mod(dec,2);
end