任何人都可以解释在computeFeatures
中用于计算不同功能的内容吗?
我得到了? computeFeatures
中拼写的命名约定。我不了解.0.
,.a.
和.Ba.
标签。
例如:
> library(EBImage)
> y = readImage(system.file("images", "nuclei.tif", package="EBImage"))[,,1]
> x = thresh(y, 10, 10, 0.05)
> x = opening(x, makeBrush(5, shape='disc'))
> x = bwlabel(x)
> ft = computeFeatures(x, y, xname="nucleus")
> colnames(ft)
[1] "nucleus.0.m.cx" "nucleus.0.m.cy"
[3] "nucleus.0.m.majoraxis" "nucleus.0.m.eccentricity"
<snip>
[11] "nucleus.0.s.radius.max" "nucleus.a.b.mean"
[13] "nucleus.a.b.sd" "nucleus.a.b.mad"
<snip>
[51] "nucleus.Ba.b.mean" "nucleus.Ba.b.sd"
[53] "nucleus.Ba.b.mad" "nucleus.Ba.b.q001"
[55] "nucleus.Ba.b.q005" "nucleus.Ba.b.q05"
<snip>
我的猜测是nucleus.0.*
功能仅使用x
中包含的二进制掩码中的数据。所以nucleus.0.m.cy
是使用二进制数据计算的y轴质心。还有nucleus.a.m.cy
和nucleus.Ba.m.cy
,但不清楚这些计算是如何不同的(它们是极其相关但不相同)。
我还假设.a.
和.Ba.
使用y
中的强度值,但细节含糊不清。像nucleus.a.b.mean
和nucleus.Ba.b.mean
这样的功能类似(〜。80 corr)但不一样。我假设他们估计y
中标签定义的对象的平均x
强度,但差异不明确。
有没有关于此的文件?
谢谢,
最高
> sessionInfo() R Under development (unstable) (2014-08-23 r66461) Platform: x86_64-apple-darwin10.8.0 (64-bit) locale: [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] EBImage_4.7.16 loaded via a namespace (and not attached): [1] abind_1.4-0 BiocGenerics_0.11.4 grid_3.2.0 [4] jpeg_0.1-8 lattice_0.20-29 locfit_1.5-9.1 [7] parallel_3.2.0 png_0.1-7 tiff_0.1-5 [10] tools_3.2.0
答案 0 :(得分:1)
您是否在此处看到了文档:AnalysisWithEBImage
这似乎是讨论该软件包的最深入的文档。您是否尝试过直接联系作者GrégoirePau?我相信如果你谷歌他就可以找到他。
答案 1 :(得分:1)
作为免责声明,我对你的领域一无所知,但通过查看这个功能,我可以很好地猜测发生了什么。我建议您使用debugonce(computeFeatures)
,然后运行ft = computeFeatures(x, y, xname="nucleus")
。您可以单步执行代码的每一行(键入Q
)以退出,并查看发生了什么。
如您所述,文档说明:
特征命名为x.y.f,其中x是对象层,y 参考图像层和特征名称。
在您的示例中,computeFeatures
为三个参考图层a
,aB
和0
生成了值。该文档提到,如果您没有为参考图层命名,则只会给出字母表中的字母,因此在您的情况下,您有一个参考图层,称为a
。我相信0
表示它使用 no 参考图层。
从查看源代码看,对于每个 i 层,都会创建一个B_ i 层。它似乎在每个层上传递了一个硬编码过滤器,正如您在expandRef
函数中找到的此代码中所见(注释是我的):
# Hard code a filter
blob = gblob(x0 = 15, n = 49, alpha = 0.8, beta = 1.2)
# Filter using the fast 2D FFT convolution product.
bref = lapply(ref, function(r) filter2(r, blob)/2)
# Name it "B" and then the layer name
names(bref) = paste("B", names(ref), sep = "")
我不确切地知道你在这里要做什么,但你可以直观地看到这个过滤器在做什么。这是您的x
(您只需运行display(x)
即可查看):
以下是您的参考(y
):
这是硬编码过滤器的样子:
这就是硬编码过滤器对y
的作用:
因此,总结一下:0
的所有内容都与无引用进行比较,a
的所有内容都直接与y
作为参考进行比较,而所有内容都与aB
进行比较正在与y
的过滤版本进行比较。