Matlab图像的数学形态学处理(实验源码+截图)

1.eg1_diamond代码&截图

clc,clear,close all;
SE4=strel('diamond',100);
GN4=getnhood(SE4);
figure,title('diamondShow'),imshow(GN4);

1.eg5代码&截图

clc,clear,close all;%清空之前记录
Image=imread('A.bmp');%读入图像
BW=imbinarize(Image);%二值化图像
figure,imshow(BW),title('二值化图');
[h,w]=size(BW);%获取图像尺寸
result=zeros(h,w);%定义输出图像,初始化为0
for x=2:w-1
    for y=2:h-1
        for m=-1:1
            for n=-1:1
                if BW(y+n,x+m)
                    result(y,x)=1;%将参考点记录为前景点
                    break;
                end
            end
        end
    end
end
figure,imshow(result),title('二值图膨胀');%title放imshow后面才能显现标题
SE=strel('square',3);%创建结构元素
result1=imdilate(BW,SE);%膨胀运算
figure,imshow(result1),title('膨胀运算imdilate');

3.eg6代码&截图

clc,clear,close all;
Image=imread('menu.bmp');
BW=imbinarize(Image);%二值化图像
figure,imshow(BW),title('二值化图像');
[h,w]=size(BW);%获取图像尺寸
result=zeros(h,w);%初始化为0

for x=2:w-1
    for y=2:h-1
        for m=-1:1
            for n=-1:1
                if BW(y+n,x+m)
                    result(y,x)=1;
                    break;
                end
            end
        end
    end
end
figure,imshow(result),title('二值腐蚀图');
SE=strel('square',3);
result1=imerode(BW,SE);
figure,imshow(result1),title('二值化imroad图');

 4.Eg10代码&截图

clc,clear,close all;
Image=imread('A.bmp');
BW=imbinarize(Image);%二值化图像
SE=strel('square',6);%结构元素
result1=imdilate(imerode(BW,SE),SE);
result2=imopen(BW,SE);
figure,imshow(result1),title('开运算_imdilate方法');
figure,imshow(result2),title('开运算_imopen方法');
result3=imerode(imdilate(BW,SE),SE);
result4=imclose(BW,SE);
figure,imshow(result3),title('闭运算_imrode方法');
figure,imshow(result4),title('闭运算_imclose方法');

5.  Eg11代码&截图

clc,clear,close all;
Image=imread('cell.jpg');
TH=graythresh(Image);
OringinBW=imbinarize(Image,TH);%二值化图像
figure,imshow(OringinBW),title('原始二值化图像');
imwrite(OringinBW,'cell_1.bmp');

BW1=1-OringinBW;
SE=strel('square',6);%结构元素为一个6*6的正方形
BW2=1-imopen(BW1,SE);
figure,imshow(BW2),title('矩形块提取');
imwrite(BW2,'cell_square.bmp');

SE45=strel('line',25,45);
BW3=1-imopen(BW1,SE45);
figure,imshow(BW3),title('线段提取');
imwrite(BW3,'cell_line.bmp');

 6.  Eg13代码&截图

Image=imread('A.bmp');
BW=imbinarize(Image);
imshow(BW);
SE=strel('square',4);
result1=imclose(imopen(BW,SE),SE);               %用3×3结构元素先开后闭
figure,imshow(result1);
result2=imopen(imclose(BW,SE),SE);               %先闭后开
figure,imshow(result2);

 

 7.  Eg15代码&截图

Image=imread('menu.bmp');
BW=imbinarize(Image);
SE=strel('square',3);
result1=BW-imerode(BW,SE);               %内边界
result2=imdilate(BW,SE)-BW;               %外边界
result3=imdilate(BW,SE)-imerode(BW,SE);    %形态学梯度
figure,imshow(result1);
figure,imshow(result2);
figure,imshow(result3);
result4=bwperim(BW);
result5=bwperim(BW,8);
figure,imshow(result4);title('二值图像的边缘检测');
figure,imshow(result5);title('二值图像的边缘检测');

8.  Eg17代码&截图 

Image=imread('coin.bmp');
BW=imbinarize(Image);
imshow(BW);
result1=imfill(BW,'holes');
figure,imshow(result1);title('二值图像的区域填充');

9.  Eg19代码&截图

clc,clear,close all;
Image=zeros(12,12);   %定义目标图像Image
Image(2:6,3:5)=1;
Image(9:11,4:6)=1;
Image(3:5,8:10)=1;
Image(8:9,9:10)=1;
Image(2,10)=1;
Image(3,11)=1;
SE1=[0 0 0 0 0    %定义结构元素SE1
          0 1 1 1 0
          0 1 1 1 0
          0 1 1 1 0
          0 0 0 0 0];      
SE2=[1 1 1 1 1    %定义结构元素SE2
          1 0 0 0 1
          1 0 0 0 1
          1 0 0 0 1
          1 1 1 1 1];      
result1=imerode(Image,SE1); %结构元素SE1探测图像内部,结果为result1
Image1=~Image;  %目标图像Image求补
result2=imerode(Image1,SE2); %结构元素SE2检测图像外部,结果为result2
result=result1 & result2; %求出击中与否变换的结果result        
figure,imshow(result),title('击中与否变换结果');

 

10.  Eg20代码&截图 

clc,clear,close all;
Image=imread('A.bmp');
BW=imbinarize(Image);
figure,imshow(BW);
interval=[-1  -1  -1  -1  -1
        -1  -1  -1  -1  -1
        -1  -1  1   1   1
        -1  -1  1   1   1
        -1  -1  1   1   1]; %定义结构元素对
result=bwhitmiss(BW,interval); %击中击不中操作
figure,imshow(result);

11.  Eg23代码&截图

clc,clear,close all;
Image=imread('menu.bmp');
BW=imbinarize(Image);
figure,imshow(BW);title('原始二值图像');
result1=bwmorph(BW,'thin',1);             %细化一次
result2=bwmorph(BW,'thin',Inf);            %细化到目标只有一个像素
figure,imshow(result1);title('细化一次');
figure,imshow(result2);title('细化至只有一个像素宽');

 

12.  Eg26代码&截图

clc,clear,close all;
Image=(imread('maleman.gif'));
se=strel('ball',5,5);%选取球形结构元素
result1=imdilate(Image,se);%膨胀灰度图像
result2=imerode(Image,se); %腐蚀灰度图像
imshow(Image);title('原始灰度图像');
figure,imshow(result1);title('膨胀后的图像');
figure,imshow(result2);title('腐蚀后的图像');
imwrite(result1,'ym1.bmp');
imwrite(result2,'ym2.bmp');

 

13.  Eg27代码&截图

clc,clear,close all;
image=imread('A1.jpg');
[width,height,z]=size(image);

result2=image;
subplot(1,2,1)
imshow(image);
title('原图');

%k1、k2作为判断临界点
k1=0.2;
k2=0.2;
%rand(m,n)是随机生成m行n列的矩阵,每个矩阵元素都在0-1之间
%这里k都是0.2,所以小于k的元素在矩阵中为1,反之为0
a1=rand(width,height)<k1;
a2=rand(width,height)<k2;
%合成彩色图像
t1=result2(:,:,1);
t2=result2(:,:,2);
t3=result2(:,:,3);
%分成黑点 白点 随机
t1(a1&a2)=0;
t2(a1&a2)=0;
t3(a1&a2)=0;
t1(a1& ~a2)=255;
t2(a1& ~a2)=255;
t3(a1& ~a2)=255;
result2(:,:,1)=t1;
result2(:,:,2)=t2;
result2(:,:,3)=t3;
subplot(1,2,2)
imshow(result2);
title('加椒盐噪声后');

 

14.  Eg28代码&截图

clc,clear,close all;
Image=imread('maleman.gif');
imshow(Image),title('原始灰度图像');
Image1=imnoise(Image,'salt & pepper',0.04);
figure,imshow(Image1),title('椒盐噪声图像');
se=strel('disk',2);%选取半径为2的圆盘结构元素
result1=imopen(imclose(Image1,se),se);
result2=imclose(imopen(Image1,se),se);
figure,imshow(result1);title('先闭后开运算后的图像');
figure,imshow(result2);title('先开后闭运算后的图像');
imwrite(Image1,'spnoise.bmp');
imwrite(result1,'colvbo.bmp');
imwrite(result2,'oclvbo.bmp');

 

15.  Eg29代码&截图

clc,clear,close all;
Image=imread('A1.jpg');
figure,imshow(Image),title('原图');
SE=strel('disk',1);
H1=[-1 -2 -1;0 0 0;1 2 1]; H2=[-1 0 1;-2 0 2;-1 0 1]; 
R1=imfilter(Image,H1);
R2=imfilter(Image,H2);
result1=abs(R1)+abs(R2); 
figure,imshow(result1),title(' Sobel图像');
imwrite(result1,'Scirc.bmp');
result2=imdilate(Image,SE)-imerode(Image,SE);    %形态学梯度
figure,imshow(result2);
imwrite(result2,'Xcirc.bmp');

 

 16.  Eg29代码&截图

clc,clear,close all;
Image1=imread('A1.jpg');%哆啦A梦
Image2=imread('A.bmp');%字母A
imshow(Image1);title('原始A1图像');
figure,imshow(Image2);title('原始clock图像');
se=strel('disk',23);%选取半径为2的圆盘结构元素
result1=imtophat(Image1,se);%Top-hat变换
result2=imbothat(Image2,se);%Bottom-hat变换
figure,imshow(result1);title('Top-hat变换');
figure,imshow(result2);title('Bottom-hat变换');
rr1=imadjust(result1);%进行灰度线性拉伸
rr2=imadjust(result2);%进行灰度线性拉伸
figure,imshow(rr1);title('基于Top-hat的对比度增强');
figure,imshow(rr2);title('基于Bottom-hat的对比度增强');
imwrite(result1,'cell1.bmp');
imwrite(result2,'clock1.bmp');
imwrite(rr1,'cell2.bmp');
imwrite(rr2,'clock2.bmp');

 

  • 0
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值