📄 open.m
字号:
function open( filename )
image_I=imread(filename);
[size_m,size_n]=size(image_I);
Image_ex=matrix_expand(image_I,1);
subplot(3,2,1);
imshow(image_I,[]);
% 1 经结构元素为1×3的矩阵腐蚀
for row=1:size_m
for col=1:size_n
min=256;
for index=-1:1
new_r=row+index+1;
new_c=col+1;
if Image_ex(new_r,new_c)<min
min=Image_ex(new_r,new_c);
end
end
image_O(row,col)=min;
end
end
imwrite(uint8(image_O),strcat('e',filename));
subplot(3,2,2);
imshow(uint8(image_O));
image_I=uint8(image_O);
Image_ex=matrix_expand(image_I,1);
% 2 1×3结构元素膨胀
for row=1:size_m
for col=1:size_n
%对每一点求其 t领域 的最大值
max=-1;
for index=-1:1
new_r=row+index+1;
new_c=col+1;
if Image_ex(new_r,new_c)>max
max=Image_ex(new_r,new_c);
end
end
image_O(row,col)=max;
end
end
imwrite(uint8(image_O),strcat('ed',filename));
subplot(3,2,3);
imshow(uint8(image_O));
image_I=uint8(image_O);
Image_ex=matrix_expand(image_I,1);
% 3 3×1结构元素膨胀
for row=1:size_m
for col=1:size_n
%对每一点求其 t领域 的最大值
max=-1;
for index=-1:1
new_r=row+1;
new_c=col+index+1;
if Image_ex(new_r,new_c)>max
max=Image_ex(new_r,new_c);
end
end
image_O(row,col)=max;
end
end
imwrite(uint8(image_O),strcat('edd',filename));
subplot(3,2,4);
imshow(uint8(image_O));
image_I=uint8(image_O);
Image_ex=matrix_expand(image_I,1);
% 4 经结构元素为1×3的矩阵腐蚀
for row=1:size_m
for col=1:size_n
min=256;
for index=-1:1
new_r=row+1;
new_c=col+index+1;
if Image_ex(new_r,new_c)<min
min=Image_ex(new_r,new_c);
end
end
image_O(row,col)=min;
end
end
imwrite(uint8(image_O),strcat('edde',filename));
subplot(3,2,5);
imshow(uint8(image_O));
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
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 + -