?? cellauto.m
字號:
%文件名:cellauto.m
%程序員:李巍
%編寫時間:2003.10.7
%函數功能:這是一個細胞自動機及相應的vote和smooth函數
%輸入格式舉例:[chaoticrand,chaoticcell,watermark]=cellauto(72,72,1983,20)
%參數說明:
%row,col為要求得到的水印模板大小
%seed為隨機數種子
%do_num為細胞自動機處理次數
function [chaoticrand,chaoticcell,watermark]=cellauto(row,col,seed,do_num)
%生成隨機模板
rand('seed',seed);
chaoticrand=rand(row,col)>0.5;%轉二值矩陣
chaotic=chaoticrand;
%擴大邊界等待處理
temp=zeros(row+2,col+2);
temp(2:row+1,2:col+1)=chaotic;
%細胞自動機處理
for i=1:do_num
%邊界檢測
temp(1,2:col+1)=temp(row+1,2:col+1);
temp(row+2,2:col+1)=temp(2,2:col+1);
temp(2:row+1,1)=temp(2:row+1,col+1);
temp(2:row+1,col+2)=temp(2:row+1,2);
temp(1,1)=temp(row+1,col+1);
temp(row+2,col+2)=temp(2,2);
temp(1,col+2)=temp(row+1,2);
temp(row+2,1)=temp(2,col+1);
%vote規則
cell1=temp(1:row,1:col);
cell2=temp(1:row,2:col+1);
cell3=temp(1:row,3:col+2);
cell4=temp(2:row+1,1:col);
cell5=temp(2:row+1,2:col+1);
cell6=temp(2:row+1,3:col+2);
cell7=temp(3:row+2,1:col);
cell8=temp(3:row+2,2:col+1);
cell9=temp(3:row+2,3:col+2);
temp(2:row+1,2:col+1)=(cell1+cell2+cell3+cell4+cell5+cell6+cell7+cell8+cell9)>4;
end
chaoticcell=temp(2:row+1,2:col+1);
%平滑處理
chaotic2=chaoticcell;
avg=fspecial('average',3);
for j=1:do_num
chaotic2=filter2(avg,chaotic2);
end
scale=max(max(chaotic2));
chaotic2=chaotic2/scale;
%水印生成
watermark=(chaotic2-mean2(chaotic2)*ones(row,col));
subplot(131);imshow(chaoticrand);title('隨機模式');
subplot(132);imshow(chaoticcell);title('細胞模式');
subplot(133);imshow(watermark);title('平滑模式(水?。?#039;);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -