自迁移出 MediaWiki 以来,本页内容尚未经过审查。如果您愿意帮忙,请查看帮助指南!
该插件是以下描述的基于凹凸性的丛分割算法的实现:
doi:10.1016/j.patcog.2005.11.014
doi:10.1016/j.patcog.2012.09.008
和
该插件提供了 ImageJ“内置”-watershed-插件的替代方案。它在规则的圆形团块上并没有表现出的效果。特别是对于图像干扰和丛中许多孔的大丛,分水岭插件的结果更加清晰,并且不依赖于如此多的参数。对于拉长的单个对象,该插件可以更好地产生分数水岭更好的结果。
它隶属于IJ-Blob库、Vecmath库、LIBSVM库和JavaML库。
插件使用
如果启动该插件,您可以在两个主要用途之间进行选择,您或想要分割图像块,或者想要训练 SVM 来优化参数 \(c_1\) 和 \(c_2\)。要训练训练 SVM,您需要已有的输入数据。

检测类型
该插件支持不同类型的分割线、凹面区域检测和凹面像素检测。如果你想分割一个团块,你必须选择你想要使用什么样的检测。

分割线
该插件支持不同的分割线类型,应指定:
直线分割线: 直线分割线是两个凹面像素之间的直线。什么时候使用? :如果没有强度信息可用于更好的分割线,请使用此线。
测地距离分割线:测地距离分割线使用两个凹面像素之间的最大强度变化的路径。它是由Wang et al. 的算法检测到的。什么时候使用? :如果可以通过强度区分各个对象并且分割线不是凸的。
最大强度分割线:最大强度分割线使用两个凹面像素之间的最大强度路径。它是由Wang et al. 的算法检测到的。什么时候使用? :如果单个对象的强度在边缘处高于中心,并且分割线不会凸出。
最小强度分割线:最小强度分割线使用两个凹面像素之间的最小强度路径。它是由Wang et al. 的算法检测到的。什么时候使用? :如果各个对象的边缘强度低于中心强度,并且分割线不会凸出。
最大强度分割线 Farhan: 最大强度分割线使用两个凹面像素之间的最大强度路径。它是由Wang et al. 的算法检测到的。什么时候使用? :如果单个对象的强度在边缘处高于中心,并且不存在没有强度信息的团块,并且分割线不会经常改变方向。
最小强度分割线 Farhan: 最小强度分割线使用两个凹面像素之间的最小强度路径。它是由 Farhan 等人的算法检测到的。 何时使用? :如果单个对象的强度在边缘处低于中心,并且不存在没有强度信息的团块,并且分割线不会经常改变方向。

凹面区域检测
该插件支持不同的凹面区域检测类型。它以指定的方式检测凹面区域。
通过凸包检测外部凹面区域:通过凸包检测凹面区域于Kumar等人的算法。如果凸包和丛的相互之间存在差异,则检测到凹面区域。如果很少有不太复杂的凹面区域的团块,请使用对应的检测。蓝色凹面区域是检测到的凹面区域。
局部检测外部凹面区域: 局部凹面区域检测遵循 Farhan 等人的算法。 通过沿轮廓迭代并寻找局部凹面区域来检测凹面区域。如果存在由许多单独对象组成的复杂团块,请使用此检测。

凹面像素检测
该插件支持不同的凹面像素检测类型。所选类型指定可以检测哪些配件以及有多少配件像素。
检测所有凹面像素: 如果应检测到所有凹面像素,则该插件将替换所有局部凹面像素。如果您选择了通过凸包检测凹面区域,请使用它。
检测具有最大凹深度的所有凹像素: 如果应检测到具有最大凹深度的所有凹像素,则该插件正在寻找凹区域的全局凹像素。如果您选择了局部凹面区域检测,请使用它。
![]()
支持向量机
参数 \(c_1\) 和 \(c_2\) 可以通过线性 SVM 进行优化。该 SVM 集成在插件中并使用 LIBSVM 库。
如果你想训练SVM,你必须首先生成训练和测试数据。目前没有简单的方法来生成这些。
首先,您必须手动生成具有最佳分割线的图像。这可能是一个运行且复杂的任务。插件的覆盖层尝试在这一点上提供帮助,但它也可能很复杂。因此,更容易将各个团块将它们分开。现在您必须通过插件生成训练数据。在此过程中,SVM 会读取数据以及是否将其作为分割线读取 CSV 文件。该数据是 x 轴上的凹面像素的凹面深度与 y 轴上的点之间的距离之和。
现在你必须找到 SVM 的良好成本和 epsilon 参数。例如,这可以通过网格搜索来实现。

接下来SVM训练开始。这可能需要一些时间。持续时间取决于训练数据的复杂性和大小。
SVM训练完成后,会出现两个窗口,显示结果。在第一个窗口中,您可以看到SVM模型的图形表示。蓝点代表分割线类,红点代表无分割线类数据,绿线代表SVM的分割线。

\(c_1\) 和 \(c_2\) 参数的最佳值与支持提供的数量和用于评估模型的机密矩阵一起给出。

参数
已经提到的,主要算法遵循* Kumar等人的书籍。*所提出的指定有效分割线的算法取决于许多参数,如下所示。并非每个分割线类型和凹面区域检测都需要每个参数

背景颜色:选择背景颜色。如果物体比背景暗,则选择白色;如果物体比背景亮,则选择黑色。
已修复:选择您的图片是否已修复。如果未勾选,则将在算法开始之前执行修复。默认修复包括:二值化、腐蚀、高斯模糊(\(\sigma=2\))、膨胀
显示凹陷面区域:如果选中,覆盖层会显示检测到的凹陷面区域,这可以帮助检测良好的阈值并检测检测中的错误。
配件显示像素和分割点:如果选中,覆盖层会显示检测到的配件,这可以帮助检测良好的阈值并检测检测中的错误。
将数据写入文件以训练SVM:如果选中,SVM模型的数据将写入您选择的文件中。
二值化阈值: 二值化图像的阈值。默认值:通过ImageJ默认方法检测到的图像值。
凹面深度阈值:凹面区域的最大距离(以像素\(CD_i\)为单位)。阈值应小于等于有效像素的最小阈值深度值。
显着性阈值:如果检测到的分割线稀疏,则凹面深度与两个凹面像素的距离的距离会增加。 \(SA_{i,j}=\frac{\min(CD_i,CD_j)}{\min(CD_i,CD_j)+ d(C_i,C_j)}\)
concavity-concavity-alignment-threshold: 两个凹面区域方向之间的角度。 \(CC_{ij}= \pi - \cos^{-1}(v_i \cdot v_j)\)。阈值应大于所有有效分割线的\(\max{|180-|\theta_i-\theta_j||}\)。
凹线对齐阈值: 分割线凹面像素的方向与分割线之间的角度。 \(CL_{ij}=\max{\cos^{-1}(v_i \cdot u_{ij}),\cos^{-1}(v_j \cdot (-u_{ij})))}\)
凹面角度阈值:凹面区域的角度。 \(CA=\angle C_{i1}C_iC_{i2}\) 阈值应大于凹面像素和轮廓点之间预期分割线的凹面区域的最大角度。
凹度比阈值: 第一和第二最大凹度区域之间的比率。 \(CR=\frac{CD_m}{CD_n}\)阈值应小于凹面像素与轮廓点之间有效分割线的最大比例。
内部相同参数:与内部相同相同。如果内部相同又大又圆,则选择大惯例,否则选择小惯例。
外部参数:与外部相同相同。如果凹度区域增大,则选择增大的值,否则选择减小的值。
图片部分的强度:对于王等人的分割线检测,需要确定一个图片部分,其中应检测分割线。如果丛和分割线增大,则选择增大的值;如果丛和分割线较小,则选择较小的值。
\(c_1\): 用于验证分割线的参数,以获得最优值训练 SVM。
\(c_2\):用于验证训练分割线的参数,确定最优值SVM。
\(\chi\)-threshold:用于验证分割线的参数。 \(\chi = \frac{c_1*CD_i+c_1*CD_j+c_2}{d(C_i,C_j)+c_1*CD_i+ c_1*CD_j+c_2}\)如果分割线较少,则减少阈值。
安装
如果您使用 ImageJ,只需将 ij_robust_split.jar 复制到您的插件文件夹中,将 IJ-Blob、Vecmath、LIBSVM 和 JavaML jar 复制到 plugins/jars 文件夹中。
如何引用
引用正式方法的最佳方式是:
doi:10.1016/j.patcog.2005.11.014
doi:10.1016/j.patcog.2012.09.008
和