資源簡介
1.用MATLAB函數實現二值圖像信息隱藏2.用MATLAB函數實現二值圖像隱藏信息的提取3. 分析閾值R0,R1 以及健壯參數λ對實驗結果的影響

代碼片段和文件信息
%分析可用的圖像塊與秘密信息對應
%msgcount為秘密消息及其數量
%rowcol存放的是隨機選塊后的塊首地址的行列地址值
%m*n為總塊數量
%image為載體圖像
%R1R0lumda為參數
%randrrandc是在8*8范圍內隨機置亂的行列標
function?[availableravailablecimage]=available(msgcountrowcolmnimageR1R0lumdarandrrandc);
msgquan=1;
unable=0;
difficult=0;
for?blockquan=1:m*n
????%計算這一塊的p1(Bi)
????p1bi=computep1bi(row(blockquan)col(blockquan)image);
????if?p1bi>=R1+3*lumda?||??p1bi<=R0-3*lumda??%情況(1)?
???????row(blockquan)=-1;%標記為無用
???????col(blockquan)=-1;
???????unable=unable+1;
???????msgquan=msgquan-1;%該消息還未找到可以隱藏的塊?
????%情況(2)
????elseif?msg(msgquan1)==1?&&?p1bi<=R0
????????%調整p1(Bi)變得更小
????????%disp([num2str(row(blockquan))‘a‘?num2str(col(blockquan))‘a‘?num2str(msgquan)]);
????????image=editp1bi(row(blockquan)col(blockquan)image13*lumdarandrrandc);
????????row(blockquan)=-1;
????????col(blockquan)=-1;
????????difficult=difficult+1;
????????msgquan=msgquan-1;%該消息還未找到可以隱藏的塊????
????elseif?msg(msgquan1)==0?&&?p1bi>=R1?
???????%調整p1(Bi)變得更大
???????%disp([num2str(row(blockquan))‘b‘?num2str(col(blockquan))‘b‘?num2str(msgquan)]);
???????image=editp1bi(row(blockquan)col(blockquan)image03*lumdarandrrandc);
???????row(blockquan)=-1;
???????col(blockquan)=-1;
???????difficult=difficult+1;
???????msgquan=msgquan-1;%該消息還未找到可以隱藏的塊?
????else????
???????row(blockquan)=row(blockquan);
???????row(blockquan)=row(blockquan);????
????end???????????
???msgquan=msgquan+1;
???if?msgquan==count+1;%消息已經讀取完成
???????for?i=(blockquan+1):m*n
??????????row(i)=-1;
??????????col(i)=-1;
??????end
??disp([‘消息長度:‘num2str(msgquan-1)‘bits;用到的塊數:‘num2str(blockquan)‘;其中不可用塊有:‘num2str(unable)‘;另有‘num2str(difficult)‘塊難以調整塊已修改為不可用塊‘])
??break;????
??end
end
%載體分析完但消息還沒有讀完
if?msgquan<=count??
????disp([‘消息長度:‘num2str(msgquan-1)‘bits;分析過的塊數:‘num2str(blockquan)‘;其中不可用塊有:‘num2str(unable)‘;另有‘num2str(difficult)‘塊難以調整塊已修改為不可用塊‘])
????disp(‘請根據以上數據更換載體!‘);
????error(‘載體太小!!‘);
end
%計算可用塊的數量
%disp(row)
quan=0;?
for?i=1:m*n
????if?row(i)~=-1
????????quan=quan+1;
????end
end
if?quan ????error(‘可用塊數量太小!請根據以上數據更換載體!‘);
end
disp([‘可用圖像塊為:‘num2str(quan)]);
%生成可用的塊的行標列標并與消息對應
image=round(image);%防止邊界擴散后的取整復原
availabler=zeros([1quan]);
availablec=zeros([1quan]);
j=1;
for?i=1:m*n
???if?row(i)~=-1;
??????availabler(j)=row(i);
??????availablec(j)=col(i);
??????j=j+1;
??end??
end
???????
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????2720??2004-03-10?21:56??available.m
?????文件???????2250??2004-03-10?20:38??binaryhide.m
?????文件????????995??2004-03-10?22:59??editp1bi.m
?????文件????????896??2004-06-13?19:48??hashreplacement.m
?????文件???????3041??2003-07-25?23:32??md5.m
?????文件?????176640??2003-07-25?22:46??md5DLL.dll
?????文件??????????5??2017-10-27?23:22??msg.txt
?????文件??????23678??2017-10-27?18:38??test.jpg
?????文件?????????74??2017-10-28?14:38??Unti
-----------?---------??----------?-----??----
???????????????210299????????????????????9
- 上一篇:基于DBN的變壓器故障診斷.zip
- 下一篇:KPCA核主成分分析法matlab算法
評論
共有 條評論