?? level_line_set.m
字號:
function level_line_set(image_name)
% 求一圖像的閥值N取各值所對應的水平線的疊加
% 輸入參數:image_name---圖像文件名
image_input=imread(image_name); %不變量
[size_m,size_n]=size(image_input); %不變量
matrix_out=zeros(size_m,size_n); %循環中不需重新初始化的變量
% 輸出矩陣初始化(白)
for row=1:size_m
for col=1:size_n
matrix_out(row,col)=1;
end
end
matrix_ex=zeros(size_m+2,size_n+2); % 擴展矩陣
subplot(1,2,1);
imshow(image_input);
title('原圖像');
for N=1:32:255 % N為相應閥值
matrix_temp=zeros(size_m,size_n); % 重新初始化 (黑)
for row=1:size_m
for col=1:size_n
if image_input(row,col) >=N
matrix_temp(row,col)=1; % 求水平集-----
end
end
end
% 圖像矩陣擴展 賦值 便于處理邊界
for row=1:size_m
for col=1:size_n
matrix_ex(row+1,col+1)=matrix_temp(row,col);
end
end
% 四鄰域(黑區域填白)反填充 得水平線
matrix_new=matrix_temp;
for row=2:size_m+1
for col=2:size_n+1
if matrix_ex(row+1,col)==0 & matrix_ex(row-1,col)==0 & matrix_ex(row,col+1)==0 & matrix_ex(row,col-1)==0
matrix_new(row-1,col-1)=1; % 填白
end
end
end
matrix_out=min(matrix_out,matrix_new); %各級水平線疊加
end
matrix_out(1,1)=0;
matrix_out(2,1)=1;
subplot(1,2,2);
imshow(matrix_out,[]);
title('圖像部分水平集的疊加');
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -