資訊隱藏 MATLAB之基本操作實驗

2021-10-07 11:54:35 字數 2150 閱讀 6764

1.熟悉matlab基本功能;

2.熟悉matlab對矩陣的操作;

3.實現lsb資訊隱藏

■一、影象翻轉

■二、lsb的順序嵌入和提取

■三、lsb的隨機嵌入和提取

一.影象翻轉

1)使用庫函式imread()讀取;

2)提取size:h,w,ch(高度,寬度,通道數);

3)初始化旋轉之後的矩陣;

4)根據旋轉的特點,將矩陣中的值根據向量旋轉的特點賦給新矩陣;

pp = round(r*(p-c)+c);

5)選擇區域進行影象處理;

對角線分割:if h>=w: image_new = image;

指定位置切割:if h >=150 && h<=300 && w>=150 && w<=300: image_new = image;

6)影象結果顯示。

subplot(331);subplot(332);subplot(333);…subplot(339);

二.lsb的順序嵌入和提取

1)讀取message.txt中的資訊,並轉化為二進位制形式;

f_id = fopen(file,'r');

[msg,len_total] = fread(f_id,'ubit1');

2)讀取影象,將影象lsb按位賦值為message中提取的資訊;

ste_cover(f1,f2,1) = ste_cover(f1,f2,1) - mod(ste_cover(f1,f2,1),2) + msg(p,1);
3)將新影象寫入。

4)注意!!!!!!!!!!不要使用.jpg格式!!!!!!!!!!!

5)將新影象讀入(準備進行資訊提取);

6)將新影象的lsb提取,並寫入新的.txt檔案

if bitand(ste_cover(f1,f2,1),1) == 1

fwrite(frr,1,'ubit1');

result(p,1) = 1;

else

fwrite(frr,0,'ubit1');

result(p,1) = 0;

7)檢視.txt檔案結果,與原檔案比對。

8)檢視加入隱寫雜訊後的。

三.lsb的隨機嵌入和提取

大致內容與上乙個實驗類似,只不過在選擇lsb的時候不是順序選擇位置插入,而是經過了乙個位置生成演算法randinterval。

[row,col] = randinterval(ste_cover,len_total,key);

randinterval不是內建庫函式,是實驗手冊上的乙個隨機數生成器,它可以根據key的值唯一的生成隨機數序列。這樣,只要隱寫方和提取方都知道這個key,就可以加密傳輸資料了。

嵌入:

ste_cover(row(i),col(i),1) = ste_cover(row(i),col(i),1)-mod(ste_cover(row(i),col(i),1),2) + msg(p,1);
提取:

if bitand(ste_cover(row(i),col(i),1),1) == 1

fwrite(frr,1,'ubit1');

result(p,1) = 1;

else

fwrite(frr,0,'ubit1');

result(p,1) = 0;

最終結果也是成功的…

效能方面沒有測試,不過從結果上說還是比較成功。

其中有乙個小插曲,就是我在使用.jpg格式進行隱寫的時候,通過動態除錯發現隱寫過程沒有任何問題,但在獲取的時候,呼叫庫函式imread之後立刻對影象矩陣進行取值分析發現,與所期望的值有些區別。百思不得其解之後,我選擇用教材上的.bmp檔案形式再做嘗試,結果一次成功。

合理分析原因,可能是因為.jpg檔案在生成時會進行壓縮,也許會對lsb有影響。

總體來說是一次成功的實驗,希望以後能繼續努力!

information_hiding

Matlab基本操作

1.向量 1 直接輸入 行向量 a 1,2,3,4,5 列向量 a 1 2 3 4 5 a 1 5 生成的行向量是a a 1,2,3,4,5 2 矩陣賦值給向量 矩陣第一行賦值給向量 a b 1,矩陣第一列賦值給向量 a b 1 任意階矩陣轉換成行向量 a b 任意階矩陣轉換成列向量 b1 b a1...

MATLAB入門之矩陣的基本操作

一,基本的符號 1,加 2,減 3,乘 4,除 5,平方 二,簡單的數乘運算 1,如果算式比較簡單可以直接進行敲寫 2,如果算式較為繁瑣,可以使用變數,進行逐級運算 三,變數 1,大小寫字母為不同的變數 2,變數命名不能用數字開頭 四,一些關鍵字 ansi,j 複數 inf eps 2.2204e ...

MATLAB 的基本操作

資料的轉置 t 1 10 tr t 把一行資料轉換成一列資料 同樣的 也可以利用這個方法把一列資料轉換成一行資料 生成等差向量 t 1 10 t 1 2 3 4 5 6 7 8 9 10 t 1 2 10 t 1 3 5 7 9 提取矩陣中的某乙個元素 提取第六行 第三列 data1 data en...