EBImage标签矩阵 - 删除小区域

时间:2013-09-27 16:23:32

标签: r matlab image-processing

我想标记二进制图像并删除小于指定阈值的对象。我有一些代码,但速度非常慢。在R中必须有一个更有效的解决方案,将矩阵中的值列表设置为0。

l<-bwlabel(Image)
print("[bwareaopen]: Generating table")
RegionProps<-table(l)
idx<-which(RegionProps<AreaThreshold) #delete those
retImage<-Image
for (i in idx){
  print(paste(i,' of ', length(idx),sep=''))
  retImage[retImage==i]<-0
}

有什么建议吗?在Matlab中,它将是bwareaopen函数。

1 个答案:

答案 0 :(得分:1)

我修改了我的代码,因为我找到了EBImage的 computeFeatures.shape()函数。此函数计算连接组件的各种参数,例如 area 。通过使用 ,您可以获得低于/大于某个阈值的对象索引。然后可以将这些指示传递给 rmObjects()(后跟可选的 reenumerate()),以从标签矩阵中删除所选索引。