原始 MediaWiki 页面

我知道编辑这个网站吗?
the Fiji distribution of ImageJ本页介绍与 the Fiji distribution of ImageJ 相关的内容。点击徽标查看详情。

方向性

自迁移出 MediaWiki 以来,本页内容尚未经过审查。如果您愿意帮忙,请查看帮助指南

##最合适 Directionality example 该插件用于推断输入图像中存在的结构的首选方向。它计算一个直方图,指示给定方向上的结构数量。具有完全各向同性内容的图像预计会给出平坦的直方图,而具有首选方向的图像预计会给出在该方向具有峰值的直方图。 例如,在上图所示的松树枝中,针状叶片存在2个群体,一种的首选方向约为45°,另一种的首选方向约为-45°。该插件可以很好地检测到这一点,并报告60°和-60°处的两个主峰。最重要的是,在0°附近可以看到一个小峰,报告了主分支的方向。

角度习得常见的数学意义来报告。即:0°为东方向,方向为逆时针方向。

用户界面允许指定:

  • 划分180°的bin数量(默认值:90)。
  • 分析的起始角度(默认-90°)。角度偏差值应设为180°添加起始值。添加此选项是为了避免+90°处的热点在直方图的边界处分割。
  • 调试标志(如果设置)将导致显示角度轴和功率谱。
  • 结果表标志将生成一个包含所有要显示的结果值的表。此后可以将表导出为 CSV 文件;见下文。
  • 方向图标志将导致生成方向图;见下文。

生成的统计数据

在直方图之上,该插件尝试有关生成的最高的统计信息。

  • 考虑直方图的周期性性质,最高峰由高斯函数简单。
  • “方向 (°)”列报告高斯的中心。
  • “色散(°)”列报告高斯的标准偏差。
  • “金额”列是从 center-std 到 center+std 的直方图总和除以直方图总和。真实的直方图值用于求和,而不是高斯单体。
  • “Goodness”栏报告了一个的好坏;1为好,0为差。

对人造图像进行的研究表明,此处计算的“数量”值低估优先方向的结构的真实比例。因此,对于上面的松树图像,我们可以得出结论,针叶表示+60°的比例至少为25%(左右图像并不完全均匀,这超过了这个数量值的意义)。

结果数据导出

1.通过复制粘贴将方向性结果窗口内容保存到电子表格中。 2.如果要保存直方图的图像,请右键单击该图,然后选择另存为。 3.要导出直方图数据,请选中插件对话框窗口中的数据表框。这将生成一个结果表,可以通过右键单击将其导出为csv文件,或者直接复制粘贴到电子表格等中。

它是如何工作的?

已经考虑了不同的解决方案,目前正在实施其中两个:

傅立叶数量分析

该方法基于傅里叶谱分析。对于方形图像,与输入图像中对象的方向相比,具有首选方向的结构在图像的傅里叶变换中生成+90°方向的周期性图案。

该插件将图像矩形方形块,并计算它们的傅里叶威力谱。黑暗在极坐标中进行分析,并使用 [^1] 中提出的空间滤波器测量每个角度的威力。

局部焦点方向

这个方法是局部的。使用5x5 Sobel滤波器计算图像的梯度,并用于消除局部梯度方向。然后,通过将梯度范数的平方放入适当的箱中,使用该方向来构建直方图。保留范数的平方,以便得到与傅里叶分析具有相同维度的直方图。

方位图

从2.0版本开始,该插件提供了生成方向图的可能性,其中图像根据其局部方向性或位置方向进行着色。在局部梯度定向方法的情况下,这具有很容易定义的意象,但在傅立叶最小值(全局方法)的情况下,事情有点复杂。

在后一种情况下,使用上述傅里叶滤波器对图像进行辅助,并使用傅里叶逆变换将图像变换回来。对于每个像素,保留的方向是沿着该方向过滤时强度最强的方向。

为了生成方向图像,通过获取HSB图像来生成

  • 方向局部作为色调;
  • 原始图像灰度值作为亮度;
  • 对于排水尺寸:
    • the power spectrum value for the Fourier component method;
    • the gradient magnitude square for the Local gradient orientation method.

      测试图像

这是用于测试插件准确性的两个图像堆栈:

VaryingDirection.tif是由人工结构组成的5片16位堆栈。每个切片的大小为512x512像素,包含2000个平均长度为100个像素的杆。其中1000个棒具有随机方向,其他1000个棒的方向从第一个切片到最后一个切片的范围为-60°到60°。因图像std 1高斯而模糊,并会导致松松噪声和损坏。您可以用它来确定检测角度的准确性。该金额应接近且低于50%。

VaryingAmount.tif与之前的堆栈相同的参数,但具有不同数量的定向棒(从2000根棒的20%到100%),并且定向棒的方向固定为-60°。您用它来测试“金额”分数。

代码结构

该插件是作为经典 ImageJ 插件编写的。它实现 PlugInFilter,并依赖 PlugInFilterRunner 来运行。

可以使用 setup(String, ImagePlus) 方法将字符串参数传递给它。例如: ImagePlus imp = IJ.openImage(“./TwoLines.tif”); imp.show(); Directionality_ da = new Directionality_(); String command = “/plugins/directionality”; new PlugInFilterRunner(da, command, “nbins=60, start=-90, method=gradient”);

脚本编写

一般脚本

还可以从另一类甚至在脚本中以非交互方式运行插件。以Python为例:

from fiji.analyze.directionality import Directionality_
from ij import WindowManager, ImagePlus

# Instantiate plugin
dir = Directionality_()

# Set fields and settings
dir.setImagePlus(WindowManager.getCurrentImage())
# dir.setMethod(fiji.analyze.directionality.Directionality_.AnalysisMethod.LOCAL_GRADIENT_ORIENTATION)
dir.setMethod(Directionality_.AnalysisMethod.FOURIER_COMPONENTS)
dir.setBinNumber(30)
dir.setBinStart(-60)
dir.setBuildOrientationMapFlag(True)

# Do calculation
dir.computeHistograms()
dir.fitHistograms()

# Display plot frame
plot_frame = dir.plotResults()
plot_frame.setVisible(True)

# Display fit analysis
data_frame = dir.displayFitAnalysis()
data_frame.setVisible(True) 

# Display results table
table = dir.displayResultsTable()
table.show("Directionality histograms")

# Display orientation map
stack = dir.getOrientationMap()
ImagePlus("Orientation map", stack).show()

# Generate a color wheel
Directionality_.generateColorWheel().show()

###获取主要参数

应杰西卡·曼斯菲尔德(英国埃克塞特大学)的请求 - 2010年10月。

该插件使用高斯来但是计算方向性参数;但是,不会返回简单的参数本身。可以使用脚本来获取它们。

高斯具有以下形式:

\[y = a + (b-a)*\exp\left(-\frac{(x-c)^2}{2 d^2}\right)\]

参数由方法public ArrayList<double[]> getFitParameters()返回,该方法在double[]ArrayList中返回a、b、c和d,堆栈中每个片剂一个存储器。

您可以使用以下脚本搜索并显示它们:

from fiji.analyze.directionality import Directionality_
from ij import WindowManager
from ij.measure import ResultsTable

# Instantiate plugin
dnlty = Directionality_()

# Set fields and settings
imp = WindowManager.getCurrentImage()
dnlty.setImagePlus(imp)
dnlty.setMethod(Directionality_.AnalysisMethod.FOURIER_COMPONENTS)
dnlty.setBinNumber(30)
dnlty.setBinStart(30)
dnlty.setBuildOrientationMapFlag(False) # No orientation map

# Do calculation
dnlty.computeHistograms()
dnlty.fitHistograms()

# Display plot frame
plot_frame = dnlty.plotResults()
plot_frame.setVisible(True)

# Display fit analysis
# data_frame = dir.displayFitAnalysis()
# data_frame.setVisible(True)

# Display results table
# table = dir.displayResultsTable()
# table.show("Directionality histograms")

# Get the fit params and put them in a results table
fitParams = dnlty. getFitParameters()
rt = ResultsTable()
index = 1;
for param in fitParams:
rt.incrementCounter()
rt.addLabel(imp.getStack().getShortSliceLabel(index))
rt.addValue('a', param[0])
rt.addValue('b', param[1])
rt.addValue('c', param[2])
rt.addValue('d', param[3])
index = index + 1;

rt.show('Fit param for y = a + (b-a)*exp(-(x-c)*(x-c)/(2*d*d)') 

这个插件的使用

由于没有与此插件相关的书籍,因此很难跟踪它的使用位置。但是,人们写信给我并帮助建立了以下列表。方向性插件至少已在以下书籍中使用:

如果您使用它,请告诉我,以便我可以添加到此列表中。

版本历史

  • v2.0:在经历了很多错误和问题之后,多数方法现在都建议生成一个方向图,根据局部方向性对图像进行着色。
  • v1.2:添加了基于局部焦点方向的新分析方法。
  • v1.1:添加了将直方图导出为表格的选项。
  • v1.0:首次使用傅里叶方法进行工作提交。

这个插件的愿望清单

进一步发展的可能途径:

  • 拥有一个热点查找器,可以处理多个热点并返回它们的统计数据。
  • 在傅里叶方法中添加适配器滤波器,这将允许仅选择具有给定长度(+/-带宽)的结构。另外,为局部最定向方法添加缩放选项。

参考文献

与 A. Leroy 的讨论以及与 J. Schindelin 的另一次讨论都得到了极大的认可。

[^1]:刘.用于图像定向分析的几何空间方法。应用。选择。(1991)卷。30 (11)第1369-1373页