我想标记二进制图像并删除小于指定阈值的对象。我有一些代码,但速度非常慢。在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函数。
答案 0 :(得分:1)
我修改了我的代码,因为我找到了EBImage的 computeFeatures.shape()函数。此函数计算连接组件的各种参数,例如 area 。通过使用 ,您可以获得低于/大于某个阈值的对象索引。然后可以将这些指示传递给 rmObjects()(后跟可选的 reenumerate()),以从标签矩阵中删除所选索引。