图像形态学处理——二值图像边界提取(Matlab)

clc;
clear all;
close all;

%读入图像,并转换为double型,该计算针对的是二值图像,所以加入图像时需注意
%膨胀测试图像
I=im2double(imread('D:\Gray Files\9-14.tif'));
%获得图像大小
[M,N]=size(I);
%存放膨胀后的图像
J=zeros(M,N);
%===============================边界提取===================================
%结构元素
n=3;
B=ones(n,n);
n_B=length(find(B==1));
%这里需要B对其原点进行翻转,因为B是对称的,所以翻转后的结果与其本身相同
l_m=floor(n/2);
l_n=floor(n/2);
%腐蚀操作
I_pad=padarray(I,[l_m,l_n],'symmetric');
for x=1:M
    for y=1:N
        %从扩展图像中取出子图像
         Block=I_pad(x:x+2*l_m,y:y+2*l_n);
         %将结构元素与子图像点乘,即逻辑“与”操作
         c=B.*Block;
         %比较结构元素与c中的1的数量,如果一样多,则该点的值为1
         ind=find(c==1);
         if length(ind)==n_B
             J(x,y)=1;
         end
    end
end
Beta=I-J;
imshow(Beta,[]);

 

  • 4
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
二值图像形态学处理可以用MATLAB中的函数进行实现,常用的形态学处理函数包括: 1. imerode:图像的腐蚀操作,用于缩小目标物体。 2. imdilate:图像的膨胀操作,用于扩大目标物体。 3. imopen:图像的开运算操作,先进行腐蚀操作再进行膨胀操作,用于去除小物体和平滑边界。 4. imclose:图像的闭运算操作,先进行膨胀操作再进行腐蚀操作,用于填补物体内的小孔和平滑边界。 5. bwmorph:图像形态学变换,包括腐蚀、膨胀、开运算、闭运算、骨架化等操作。 下面是一个简单的示例,展示如何使用MATLAB中的形态学处理函数对二值图像进行处理: ```matlab % 读入二值图像 img = imread('binary_image.png'); % 腐蚀操作 se = strel('disk', 3); % 创建一个半径为3的圆形结构元素 img_erode = imerode(img, se); % 膨胀操作 se = strel('rectangle', [5 5]); % 创建一个5x5的矩形结构元素 img_dilate = imdilate(img, se); % 开运算操作 se = strel('line', 11, 90); % 创建一条长度为11,角度为90度的直线结构元素 img_open = imopen(img, se); % 闭运算操作 se = strel('square', 7); % 创建一个7x7的正方形结构元素 img_close = imclose(img, se); % 骨架化操作 img_skeleton = bwmorph(img, 'skel', Inf); % 显示结果 subplot(2, 3, 1), imshow(img), title('原图像'); subplot(2, 3, 2), imshow(img_erode), title('腐蚀操作'); subplot(2, 3, 3), imshow(img_dilate), title('膨胀操作'); subplot(2, 3, 4), imshow(img_open), title('开运算操作'); subplot(2, 3, 5), imshow(img_close), title('闭运算操作'); subplot(2, 3, 6), imshow(img_skeleton), title('骨架化操作'); ``` 以上代码中,我们先读入了一个二值图像,然后分别进行了腐蚀、膨胀、开运算、闭运算和骨架化操作,并将结果显示在一个2x3的子中。可以根据实际需求选择不同的形态学处理函数和结构元素,对二值图像进行处理和优化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值