2013-04-29 95 views
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给人最大半径和最小半径。我需要计算出的所有对象的所有半径用于我的分析。至少如果我得到所有对象的边界坐标,我可以通过其他代码计算半径。

我知道图像存储为矩阵,并可以找出一个复杂的方式来找到边界,然后计算半径。但是,想知道是否有更优雅的方法?

+0

你不就是想为每个功能的's.radius.mean'价值? – 2013-04-29 09:11:38

+0

不,我不想说卑鄙。我想要他们计算的所有值来计算均值。现在,对于每个对象,我可以获得最小,最大和平均值。但是,在内部,他们必须计算他们计算的100或1000半径,这意味着最小值和最大值。我想要的是他们用来计算最小值,最大值和平均值的所有半径。 – Murthy 2013-04-29 10:00:00

回答

1

您可以尝试提取每个对象+一些填充,并绘制每个对象的x和y轴强度轮廓。强度分布只不过是行/列的总和,可以使用rowSumscolSums来计算R

然后,通过将每个强度分布分成两半并计算最接近的最小值,您可以找到它落在哪里。

也许一个例子将有助于明确的东西: enter image description here

希望这是有道理的