寻找图像边界

3

虽然我经常使用R语言,但我刚开始进行图像分析项目,现在正在使用EBImage包。我需要从圆形/椭圆形图像中收集大量数据。内置函数computeFeatures提供了最大和最小半径。但我需要它计算的所有半径。

以下是代码。我已经读取了图像,进行了阈值处理和填充。

actual.image = readImage("xxxx")
image = actual.image[,2070:4000]
image1 = thresh(image)
image1 = fillHull(image1)

由于图像中有多个对象,我使用以下方法进行标记:

  image1 = bwlabel(image1)

我使用内置函数生成了特征

  features = data.frame(computeFeatures(image1,image))

现在,computeFeatures提供了最大半径和最小半径。我需要它计算的所有对象的半径以进行分析。至少,如果我获得所有对象边界的坐标,则可以通过其他代码计算半径。
我知道图像存储为矩阵,并且可以想出一种复杂的方法来查找边界,然后计算半径。但是,我想知道是否有更优雅的方法?

你难道不想要每个特征的s.radius.mean值吗? - Simon O'Hanlon
不,我不想要平均值。我想要他们计算出的所有值来计算平均值。现在,对于每个对象,我可以获得最小值、最大值和平均值。但是,在内部,它们必须从100或1000个半径中计算出这个平均值、最小值和最大值。我想要的是他们用来计算最小值、最大值和平均值的所有半径。 - Murthy
1个回答

1
您可以尝试提取每个对象和一些填充,并绘制每个对象的x和y轴强度剖面。 强度剖面只是行/列的总和,可以使用R中的rowSumscolSums进行计算。
然后,您可以通过将每个强度剖面分成两半并计算最近的最小值来找到它下降的位置。
也许一个例子会有所帮助: enter image description here 希望这有意义。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接