matlab bwmorph spur,用python编写matlab的bwmorph(image,'spur')

我正在将一个matlab图像处理脚本移植到python/skimage中,但是没有找到matlab的bwmorph函数,特别是skimage中的'spur'操作。matlab文档对spur操作这样说:Removes spur pixels. For example:

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

0 0 1 0 becomes 0 0 0 0

0 1 0 0 0 1 0 0

1 1 0 0 1 1 0 0

我用python实现了一个版本,可以很好地处理上述情况:

^{pr2}$

上面的方法是删除只有一个相邻像素的任何像素。在

不过,我注意到上述实现的行为与matlab的spur操作不同。以matlab中的这个例子为例:0 0 0 0 0

0 0 1 0 0

0 1 1 1 1

0 0 1 0 0

0 0 0 0 0

becomes, via bwmorph(t,'spur',1):

0 0 0 0 0

0 0 0 0 0

0 0 1 1 1

0 0 0 0 0

0 0 0 0 0

spur操作比查看8邻居计数要复杂一些。我不清楚如何扩展我的实现以满足这种情况,而不使其过于激进(即删除有效像素)。在

matlab的spur的底层逻辑是什么?或者有一个python实现可以使用吗?在

更新:

我发现Octave使用LUT实现了spur:case('spur')

## lut=makelut(inline("xor(x(2,2),(sum((x&[0,1,0;1,0,1;0,1,0])(:))==0)&&(sum((x&[1,0,1;0,0,0;1,0,1])(:))==1)&&x(2,2))","x"),3);

## which is the same as

lut=repmat([zeros(16,1);ones(16,1)],16,1); ## identity

lut([18,21,81,273])=0; ## 4 qualifying patterns

lut=logical(lut);

cmd="BW2=applylut(BW, lut);";

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值