LSB方法是一種隱寫術技術,其基本原理是修改數字圖像中每個像素的RGB顏色分量的最低有效位(LSB)。這樣,每個像素可以攜帶一位信息,從而使得多個位元組的最低位可以用來存儲一個比特信息。這個比特信息可以轉換為ASCII字元,實現信息的隱寫。LSB方法包括兩個主要模組:`lsb_embed`用於嵌入信息,`lsb_extract`用於提取信息。
嵌入信息(lsb_embed)的過程:
使用PIL庫讀取圖片像素信息。
利用numpy庫將像素信息處理為矩陣。
輸入待嵌入的檔案,將其與圖片一併處理。
對每位字元進行ASCII處理,取到的二進制數由6位填充至8位。
使用自定義函式`cover_lsb`進行LSB隱寫操作,替換最低有效位為二進制0或1。
剩餘未填充位進行補充填位,使得圖像能夠恢復。
使用處理後的新矩陣生成嵌入信息的圖片。
提取信息(lsb_extract)的過程:
使用PIL庫讀取圖片像素信息。
利用numpy庫將像素信息處理為矩陣。
提取過程中尋找最低位。
使用`lsb_decode`函式找尋最低位並返回。
得到的數據進行二進制轉ASCII的操作,以恢復原始信息。
LSB算法最初用於脆弱性水印,即通過在圖像的最低有效位中嵌入信息來標記著作權或所有權。由於水印信息嵌入在LSB中,為了保持水印的不可見性,允許嵌入的水印強度不能太高。然而,LSB算法對空域的各種處理(如遊程編碼前的預處理)敏感,因為這些操作可能會對不顯著分量進行壓縮,影響水印的穩定性。