Ⅰ 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)},從這些偽裝對象中抽取他們的最低比特位,排列組合後組成秘密信息。