数字图书处理(七)——Matlab实现腐蚀和膨胀及击中击不中变换

本文详细介绍了两种图像处理实验:一是设计结构元素,通过编程实现对长方形目标物的图像处理,包括去除内部空洞和周围噪声;二是确定目标物位置,通过击中击不中变换定位目标中心点。实验使用了腐蚀和膨胀操作,并比较了不同结构元素的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实验一:设计结构元素,编程实现以下过程:

长方形目标物A,内部有噪声导致的空洞,周围有噪声块。
处理效果:目标本身除了4个角的直角变为圆角外没有变化。

在这里插入图片描述

实验二:确定目标物位置,击中击不中变换:

在这里插入图片描述

1.1腐蚀和膨胀

方法一:采用四邻域的单位结构元素
B=[0 1 0
1 1 1
0 1 0];
利用imdilate()函数对图像不断地进行迭代膨胀,再利用imerode()函数,对图像进行迭代膨胀,最终得到处理后地图像如下图所示:

在这里插入图片描述
方法二:采用matlab中已有的结构元素函数strel()对图像进行膨胀和腐蚀。利用正方形square对图像进行膨胀操作,再用圆形disk对图像进行腐蚀操作,最终处理结果如下图所示:
在这里插入图片描述
通过对比可以发现两种方法均得到实验结果,但方法二腐蚀后的图形两边阴影较为明显,应该是参数选择不够准确的原因。

附录代码如下:

clc;
close all;
A1=imread('zaosheng.png');
%膨胀的结构元素
B=[0 1 0
   1 1 1
   0 1 0];
subplot(1,3,1);
imshow(A1),title('原图','fontsize',16);
A2=imdilate(A1,B);%图像A1被结构元素B膨胀
A3=imdilate(A2,B);
A4=imdilate(A3,B);
A5=imdilate(A4,B);
A6=imdilate(A5,B);
A7=imdilate(A6,B);
A8=imdilate(A7,B);
subplot(1,3,2);
imshow(A8),title('膨胀后的图','fontsize',16);
%%
%腐蚀的结构元素
C=[ 0 1 0
    1 1 1
    0 1 0];
A9=imerode(A8,C); %腐蚀
A10=imerode(A9,C);
A11=imerode(A10,C);
A12=imerode(A11,C);
A13=imerode(A12,C);
A14=imerode(A13,C);
A15=imerode(A14,C);
A16=imerode(A15,C);
A17=imerode(A16,C);
A18=imerode(A17,C);
A19=imerode(A18,C);
A20=imerode(A19,C);
subplot(1,3,3);
imshow(A20),title('腐蚀后的图','fontsize',16);
%%
f = imread('zaosheng.png');
se = strel('square', 12);
g = imdilate(f, se);
se = strel('disk', 20);
g1 = imerode(g, se);
figure;
subplot(1,3,1), imshow(f);title('原始图像','fontsize',16);
subplot(1,3,2), imshow(g);title('用正方形膨胀','fontsize',16);
subplot(1,3,3), imshow(g1);title('用圆形腐蚀','fontsize',16);

实验二:确定目标物位置,击中击不中变换:

根据击中击不中变换的原理,可以得到已知图像在原图中的位置的中点。
算法步骤:
1、使用已知图像对原图进行腐蚀操作,得到图像A1。
2、对图像的四周加上边框,对原图的补集进行腐蚀操作,得到图像A2。
3、对A1和A2求交集,得到图像A3即为击中击不中变换处理后的图像。

2.11、使用for循环构造初始图像,如下图所示:

在这里插入图片描述

2.2 2、对初始图像取反:

在这里插入图片描述

2.3 构造已知图像:

在这里插入图片描述

2.4 4、使用已知图像对原图进行腐蚀操作:

在这里插入图片描述

2.5 5、对图像的四周加上边框,对原图的补集进行腐蚀操作:

在这里插入图片描述

2.6 对A1和A2求交集,得到图像A3即为击中击不中变换处理后的图像:

在这里插入图片描述
由图像结果可以清晰的看到,右下角出现一个白色的点,即为已知图像在原图像中的中心点的位置。

附录代码如下:

clear;
I=zeros(500,500);
for i=50:250
    for j=50:150
        I(i,j)=1;
    end
end

for i=350:450
    for j=350:450
        I(i,j)=1;
    end
end

for i=60:120
    for j=300:360
        I(i,j)=1;
    end
end

imshow(I),title('原图');%构造原图
figure;
imshow(~I),title('补集');%构造原图
H=zeros(100,100);
for i=1:100
    for j=1:100
        H(i,j)=1;
    end
end

figure,imshow(H);%构造m结构元素

M=zeros(104,104);

for i=1:104
    for j=1:104
        M(i,j)=1;
    end
end

for i=2:102
    for j=2:102
        M(i,j)=0;
    end
end

figure,imshow(M);
x1=imerode(I,H);
figure,imshow(x1);%原图被H结构元素腐蚀后
x2=imerode(~I,M);
figure,imshow(x2);%原图补集被M结构元素腐蚀后
x3=x1.*x2;
figure,imshow(x3);%求两张腐蚀后图像的交集

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值