MATLAB形态学图像处理

A=imread('你的图');
%B是结构元素,相上下左右扩展
B=[0 1 0;1 1 1;0 1 0];
A2=imdilate(A,B);%A2是膨胀结果
figure,imshow(A);%A显示原图像                                  
figure,imshow(A2);%显示膨胀后的图像

A=imread('你的图');   
%se是用strel函数创建的半径为10的圆形结构元素
se=strel('disk',10)  
%对二值图像进行腐蚀,尺寸小于10的前景都会被腐蚀掉
A2=imerode(A,se);
imshow(A2);
se=strel('disk',5)   %半径为5的圆形结构元素
A3=imerode(A,se);  %A3比A2能保留更多的前景部分
figure,imshow(A3);
A4=imerode(A,strel('disk',20)); %采用半径为20的圆形结构元素进行腐蚀
figure,imshow(A4);

f=imread('你的图');
%se是边长为20的方形结构元素
se=strel('square',20);
%fo是开运算的结果,图像中细长突出部分和齿状边缘将被删除
fo=imopen(f,se);
imshow(fo);
%fc是闭运算的结果,细长的弯口,指向内部的边缘和小洞将被删除
fc=imclose(f,se);
figure,imshow(fc);
%foc是先做开运算在做闭运算后的结果
fc=imclose(fo,se);
figure,imshow(fc);
f=imread('你的图');
se=strel('square',3);  %边长为3的方形结果元素
figure,imshow(f)
%指纹图像开运算,图像中的噪声点将会被消除,
%但会带来图像的不连续
fo=imopen(f,se);
foc=imclose(fo,se);  %闭运算可以消除图像中的缺口
figure,imshow(foc);

f=imread('你的图');    %f如图9-6所示
imshow(f);                      
B1=strel([0 0 0; 0 1 1; 0 1 0]);    %B1包含右下角
B2=strel([1 1 1;1 0 0;1 0 0]);     %B1包含左上角
g=bwhitmiss(f,B1,B2);      %做击中击不中变换
figure,imshow(g);             %显示变换后的结果

%f是9.3节(3)中保存的指纹图像
f=imread('你的图');
imshow(f);
g1=bwmorph(f,'thin',1);         %细化1次
g2=bwmorph(f,'thin',2);         %细化2次
figure,imshow(g1);
figure,imshow(g2);
%细化无穷次,结果将处于稳定
ginf=bwmorph(f,'thin',inf);
figure,imshow(ginf);  
%骨骼化图像
f=imread('C:\Program Files\MATLAB\R2014a\toolbox\images\imdata\bone.tif');             %f如图9-7所示
imshow(f);                      
fs=bwmorph(f,'skel',inf);          %骨骼化无穷次
figure,imshow(fs);
for k=1:5
     Fa=fs&~endpoints(fs);       %去掉端点毛刺
  End

clear all
close all
f=imread('eight.tif');
figure(3)
imshow(f)
h=f;
for i=1:242
    for j=1:308
        if f(i,j)>180
            h(i,j)=0;
        end
    end
end
figure(1)
imshow(h);
%对原图像进行连通区域标记,L是标记图像;
%n是对象个数
h1=im2bw(h,0.36);
figure(4)
imshow(h1)
[L,n]=bwlabel(h,8);
%将L从灰度图像转换为索引图像,x是索引图像;
%map是索引矩阵,R,G,B的值都相等
[x,map]=gray2ind(L,n);
figure(5)
imshow(x)
%将map中的第一列全都改为0.5,则R,G,B的值不相等,产生彩色
% map(1,:)=0.5;
map(: ,1)=0.5;
map(:,2)=0;
%map(2,:)=0.4;
map(1,1)=0; %进一步修改索引颜色
%显示转换后的索引图像,可以看到不同的对象标记成不同的色彩
figure(2)
imshow(L,map);

f=imread('你的图');             %f如图9-9所示
%图像结构体元素,边长为5
se=strel('disk',5);
%灰度图像开运算,噪声将被删除
fo=imopen(f,se);
%开运算结果再闭运算,图像将被平滑
imshow(fo)
 foc=imclose(fo,se);
f=imread('你的图');
imshow(f);
T=graythresh(f);
fbin=im2bw(f,T);
figure,imshow(fbin);
se=strel('disk',10);
fo=imopen(f,se);
f2=imsubtract(f,fo);
figure,imshow(f2);
T=graythresh(f2);
f2bin=im2bw(f,T);
figure,imshow(f2bin);
f3=imtophat(f,se);
T=graythresh(f3);
f3bin=im2bw(f,T);
figure,imshow(f3bin); 

发布了125 篇原创文章 · 获赞 31 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/Fiverya/article/details/90440311