📄 erosion_block.m
字号:
function erosion_block(filename,r,out_file_name)
% 腐蚀算子
% filename 输入图像文件名
% 结构元素为方块,边长为2r+1
% out_file_name 输出文件名
if nargin<3
disp('请按输入参数说明正确输入参数!!!');
return;
end
image_I=imread(filename);
[size_m,size_n]=size(image_I);
Image_ex=matrix_expand(image_I,r);
for row=1:size_m
for col=1:size_n
%对每一点求其 t领域 的最大值
min=256;
for x=-r:r
for y=-r:r
new_r=row+r+x;
new_c=col+r+y;
if Image_ex(new_r,new_c)<min
min=Image_ex(new_r,new_c);
end
end
end
image_O(row,col)=min;
end
end
imwrite(uint8(image_O),out_file_name);
%----------------------------------------------------end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function matrix_ex=matrix_expand(matrix,x)
% 对矩阵进行延拓 ,镜面映射
[size_r,size_c]=size(matrix);
matrix_ex=zeros(size_r+2*x,size_c+2*x);
% 中
for row=1:size_r
for col=1:size_c
matrix_ex(row+x,col+x)=matrix(row,col);
end
end
% 左,右
for row=1:size_r
for col=1:x
matrix_ex(row+x,x-col+1)=matrix(row,col);
matrix_ex(row+x,size_c+x+col)=matrix(row,size_c-col+1);
end
end
% 上,下
for row=1:x
for col=1:size_c
matrix_ex(x-row+1,col+x)=matrix(row,col);
matrix_ex(size_r+x+row,col+x)=matrix(size_r-row+1,col);
end
end
for row=1:x
for col=1:x
matrix_ex( x-col+1,x-row+1 )=matrix(row,col); % LL
matrix_ex( x-col+1,size_c+x+row )=matrix(row,size_c-col+1); %LH
matrix_ex( size_r+x+col,x-row+1 )=matrix(size_r-row+1,col); % HL
matrix_ex( size_r+x+col,size_c+x+row)=matrix(size_r-row+1,size_c-col+1);%HH
end
end
% --------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -