0

我想标记二进制图像并删除小于指定阈值的对象。我有一些代码,但速度非常慢。在 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 函数。

4

1 回答 1

1

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

于 2013-10-07T09:35:49.917 回答