Matlab:imclearborder函数原理解释

如果这篇文章帮到了你,别忘了给个赞!

网上关于imclearborder函数的算法原理实在太少,这篇博客对这个函数做一个大致的解释。

简单说,这个函数的作用就是:把与图像边界相连接的像素全部清除。

这里的图像边界,并不是指图像里面物体和背景的边界,而是指实实在在的图像显示的边界。

举个例子:

假如图像是30 X 40 像素,那么图像边界就是指:[1, :](第一行),[30, :](最后一行),[:, 1](第一列),[:, 40](最后一列)这些像素的位置。

这个算法的操作就是,把与这4条边相连的 像素区域 全部清除。

 

实验如下:

BW = [0     0     0     0     0     0     0     0     0
      0     1     1     1     1     1     1     1     0
      0     1     0     0     0     0     0     1     0
      0     1     0     1     1     1     0     1     0
      1     1     0     1     1     1     0     1     0
      0     1     0     1     1     1     0     1     0
      0     1     0     0     0     0     0     1     0
      0     1     1     1     1     1     1     1     0
      0     0     0     0     0     0     0     0     0];
  

BW1 = imclearborder(BW,8);
  
disp(BW1)
  

结果如下:

>> DRAFT2
     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     0
     0     0     0     1     1     1     0     0     0
     0     0     0     1     1     1     0     0     0
     0     0     0     1     1     1     0     0     0
     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     0

 

可以看到,由于[5, 1]位置的像素值为1,算法认为这个位置存在像素,且与图像的边界相连,所以执行清除操作(将其像素值改为0)。同时,与[5, 1]相连的像素区域均被清除。

 

BW = [0     0     0     0     0     0     0     0     0
      0     1     1     1     1     1     1     1     0
      0     1     0     0     0     0     0     1     0
      0     1     0     1     1     1     0     1     0
      0     1     0     1     1     1     0     1     0
      0     1     0     1     1     1     0     1     0
      0     1     0     0     0     0     0     1     0
      0     1     1     1     1     1     1     1     0
      0     0     0     0     0     0     0     0     0];
  

BW1 = imclearborder(BW,8);
  
disp(BW1)

手动将[5, 1]位置的像素改为0,执行结果如下:

>> DRAFT2
     0     0     0     0     0     0     0     0     0
     0     1     1     1     1     1     1     1     0
     0     1     0     0     0     0     0     1     0
     0     1     0     1     1     1     0     1     0
     0     1     0     1     1     1     0     1     0
     0     1     0     1     1     1     0     1     0
     0     1     0     0     0     0     0     1     0
     0     1     1     1     1     1     1     1     0
     0     0     0     0     0     0     0     0     0

可以看到,由于算法没有找到与图像边界相连的像素,所以没有执行清除操作。

 

函数用法:

BW1 = imclearborder(BW,8);

第一个参数为传入的图像。一般来说,这个参数基本都是二值化后的黑白图像。我没有试过直接用灰度图或者RGB图像作为参数传入。

第二个参数为连接的方向,参数 4 代表按4方向(上下左右)计算连接区域;参数 8 代表按8方向计算连接区域。

  • 21
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值