Ⅰ LSB算法的原理是什么
LSB算法
首先 将得到的隐藏有秘密信息的十进制像素值转换为二进制数据;
然后 用二进制秘密信息中的每一比特信息替换与之相对应的载体数据的最低有效位;
最后 将得到的含秘密信息的二进制数据转换为十进制像素值,从而获得含秘密信息的图像。
Ⅱ 什么是LSB算法
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为秘密信息的位计数器
forf2=1:n
forf1=1:m
Double_Picture(f1,f2)=Double_Picture(f1,f2)-mod(Double_
Picture(f1,f2),2)+msg(p,1);
%将秘密信息按位隐藏入连续的像素中
ifp==len
break;
end
p=p+1;
end
ifp==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;
forf2=1:n
forf1=1:m
ifbitand(Picture(f1,f2),1)==1
%顺序提取图像相应像素LSB的秘密信息
fwrite(frr,1,'bit1');
result(p,1)=1;
else
fwrite(frr,0,'bit1');
result(p,1)=0;
end
ifp==len
%判断秘密信息是否读完
break;
end
p=p+1;
end
ifp==len
break;
end
end
fclose(frr);
Ⅲ lsb什么意思呀
LSB,英文 least significant bit,中文译最低有效位。对于一个给定的数据串(整数),如二进制的1001或者十进制351,其最低有效位就是拥有最小单位数值的那一位。
LSB是一套核心标准,它保证了LINUX发行版同LINUX应用程序之间的良好结合。
LSB(全称:Linux Standards Base)。
LSB 是 Linux 标准化领域中事实上的标准,制定了应用程序与运行环境之间的二进制接口。
具体地说,它是:一个二进制接口规范,是指应用程序在系统间迁移时不用重新编译,保证应用程序在所有经过认证的LINUX发行版上都具有兼容性。
一个测试规范,测试LINUX发行版和LINUX应用程序是否符合LSB标准。
搭建遵从LSB规范的应用程序的开发环境。
为在纯LSB环境下运行和测试应用程序而提供的运行环境样本。LSB包括两个核心部分,分为普通规范和特定处理器规范。
LSB 项目最初发起于 1998 年 5 月,其项目启动宣言得到了 Linus Torvalds、Bruce Perens、Eric Raymond 等人的签名支持,当时的目标是建立一系列构建 Linux 发行版所采用的源代码应该遵循的标准,并提供一个参考平台。
2000 年 5 月,LSB 成为 Free Standards Group(FSG) 的一个工作组。
2001 年 6 月发布第一个正式版本的规范以后,LSB 规范几乎每 6 个月都会进行一次更新。截止到 2005 年 7 月发布的 3.0 版本为止,LSB 重点关注的是服务器端的使用,这与 Linux 在服务器端得到了广泛的应用是一致的。这个规范已经被 ISO 采纳为国际标准 23360。
目前最新的版本规范是 2005 年 10 月发布的 LSB 3.1,它可以支持 7 种体系结构。
Ⅳ lsb算法(把一个bmp图像隐藏到另一个图像中,用Matlab实现,求源码,谢谢,急
基于LSB算法的。就是修改最低位的那个。请吧程序贴出来,再解释下每条代码毕业设计要的。还要吧波形读出来。 回答的好继续加分。 理解算法
Ⅳ 图像水印的LSB算法,VC++代码
因为8位像素值的最低位为1或0对整个像素值影响不大,LSB就是把水印信息放入这个最低位,同时保证原始图像基本无变化
void CDib::Embed()//嵌入
{
unsigned char bmdata;//BMP图像数据
unsigned char efdata;//嵌入的文件数据
int t = 7;
int x[8];
int s[8];
int last_bit; //记录字节最低位本来的bit
for(UINT i1 = 0, i2 = 0; i1 <= bitmap_size - 1, i2 <= embfile_size - 1; i1++)
{ //生产隐藏信息,并逐步嵌入到宿主图像各像素的最低位上
bmdata = *p;//p指向图像数据的每个像素,把当前像素值给bmdata
for (int j = 0; j <= 7; j++) //计算各bit位
{
x[j] = bmdata & 1;//提出bmdata最低位放入x[j]
bmdata >>= 1;//右移一位
}
last_bit = x[0];//原始图像的最低位值存入last_bit中
x[0] = x[1] ^ x[2] ^ x[3] ^ x[4] ^ x[5] ^ x[6] ^ x[7];//使最低位值等于其他各位的异或
if (t == 7) //宿主图片每走过八个字节,计算一次s[]
{
efdata = *q;//q指向插入的水印数据
for (j = 0; j <= 7; j++)
{
s[j] = efdata & 1;//水印数据依次放入s[j]中
efdata >>= 1;//右移
}
}
x[0] ^= s[t];//隐藏信息,隐藏信息等于原图像高六位的异或再和文件数据异或
if (last_bit == 0) //嵌入隐藏信息
{
*p |= x[0];//如果该像素原本最低位为0;则将最终得到的异或水印值放入原像素
}
else
{
*p &= 254 + x[0]; //如果该像素原本最低位为1;则将最终得到的异或水印值放入原像素
}
p++;//指向下一个像素
t--;//t用来定时每8个字节插入一次完整的s
if (t == -1) //需要计算一次s[]
{
t = 7;
q++;//指向下一个作为待插入水印的文件数据
i2++;
}
}
}
void CDib::Pick()//提取
{
m_pFile = new unsigned char [embfile_size];//开辟等于插入文件数据大小的内存
unsigned char *q = m_pFile;//q指向该内存
unsigned char bmdata;//插入了水印的BMP图像数据
int x[8];
int s[8];
int t = 7;
for (UINT i1 = 0, i2 = 0; i1 <= bitmap_size - 1, i2 <= embfile_size - 1; i1++)
{
bmdata = *p; //p指向插入了水印的图像数据
for (int j = 0; j <= 7; j++) //计算各bit位
{
x[j] = bmdata & 1;//提取该图像字节的0~7位放入X[]数组
bmdata >>= 1;
}
s[t] = x[0] ^ x[1] ^ x[2] ^ x[3] ^ x[4] ^ x[5] ^ x[6] ^ x[7];//提取1~8个字节中的s[]
t--;
if (t == -1) //s[7]到s[0]组成一个字节
{
*q = s[7] * 128 + s[6] * 64 + s[5] * 32 + s[4] * 16 +
s[3] * 8 + s[2] * 4 + s[1] * 2 + s[0];//还原原始的图像数据
t = 7;
i2++;
q++;
}
p++;//指向下一像素
}
}
Ⅵ Motorola lsb计算方法
计算方法如下:
LSB算法的基本原理:
对空域的LSB做替换,用来替换LSB的序列就是需要加入的水印信息、水印的数字摘要或者由水印生成的伪随机序列。由于水印信息嵌入的位置是LSB,为了满足水印的不可见性,允许嵌入的水印强度不可能太高。然而针对空域的各种处理,如游程编码前的预处理,会对不显着分量进行一定的压缩,所以LSB算法对这些操作很敏感。因此LSB算法最初是用于脆弱性水印的。
LSB算法基本步骤:
1、将原始载体图像的空域像素值由十进制转换成二进制;
2、用二进制秘密信息中的每一比特信息替换与之相对应的载体数据的最低有效位;
3、将得到的含秘密信息的二进制数据转换为十进制像素值,从而获得含秘密信息的图像。
Ⅶ LSB算法的介绍
流载体的LSB方法 (1)嵌入:选择一个载体元素的子集{j1,j2,...jL(m)},其中共有L(m)个元素,用以信息隐藏信息的L(m)个Bit。然后在这个子集上执行替换操作,把cji的最低比特用m替换。(2)提取:找到嵌入信息的伪装元素的子集{j1,j2,...jL(m)},从这些伪装对象中抽取他们的最低比特位,排列组合后组成秘密信息。