自迁移出 MediaWiki 以来,本页内容尚未经过审查。如果您愿意帮忙,请查看帮助指南!
该插件使用各种全局(直方图派生)阈值方法对 8 位和 16 位图像进行二值化。分段相始终显示为白色 (255)。
对于本地阈值而不是全局阈值,请参阅Auto Local Threshold插件。
安装
ImageJ:需要 v1.42m 或更高版本。下载Auto_Threshold-X.Y.Z.jar并将其复制到 ImageJ/plugins 文件夹中,然后重新启动 ImageJ 或运行Image › Adjust › Auto Threshold命令。此后,新命令应出现在Help › Update Menus中。
Fiji:该插件是Fiji发行版的一部分,无需下载。
使用
方法 选择要应用的算法(详细信息如下)。
忽略黑色和忽略白色选项分别将 [0] 和 [255] 灰度级的图像直方图箱设置为 0。如果数字化图像具有曝光不足或曝光过度的像素,这可能很有用。
黑色背景上的白色对象 将值高于阈值的像素设置为白色(否则,将值小于或等于阈值的像素设置为白色)。
设置阈值而不是阈值(单个图像) 设置阈值 LUT,而不更改像素数据。这仅适用于单个图像。
如果您正在处理堆栈,则可以使用两个附加选项: 堆栈 可用于处理所有切片(每个切片的阈值将单独计算)。如果未选中此选项,则仅处理当前切片。 使用堆栈直方图 首先计算整个堆栈的直方图,然后根据该直方图计算阈值,最后使用该单个值对所有切片进行二值化。选择此选项也会自动选择上面的 Stack 选项。
重要说明:
1. 该插件可通过 Image › Adjust › Threshold… 菜单条目访问,但是阈值方法也在 ImageJ 的阈值小程序中部分实现,可通过 Image › Auto Threshold 菜单条目访问。虽然自动阈值插件可以使用或忽略图像直方图的极值(忽略黑色、忽略白色),但小程序不能:“默认”方法会忽略直方图极值,但其他方法不会。这意味着将两个命令应用于同一图像可能会产生明显不同的结果。本质上,自动阈值插件,通过正确的设置,可以重现小程序的结果,但不能反过来。
2. 从版本 1.12 开始,该插件支持 16 位图像的阈值处理。由于自动阈值插件处理完整的灰度空间,因此在处理 16 位图像时可能会很慢。请注意,ImageJ 阈值小程序也处理 16 位图像,但实际上 ImageJ 首先计算具有 256 个 bin 的直方图。因此,使用小程序时在 16 位图像上获得的结果与使用此插件获得的真实 16 位结果可能存在差异。请注意,为了加快速度,直方图被括起来以仅包括包含数据的箱的范围(并避免在两个极端处处理空直方图箱)。
3. 16 位图像和堆栈(处理所有切片时)的结果是一个 8 位容器,以白色 [255] 显示结果,以符合“二进制图像”的概念(即具有 0 和 255 值的 8 位)。然而,对于仅对 1 个切片进行阈值化的堆栈,结果仍然是 16 位容器,阈值化相位显示为白色 [65535]。这是为了保持剩余切片中的数据不变。 “全部尝试”选项保留 16 位格式,以便仍然使用可能无法获得阈值的方法显示图像。无法设置阈值的图像和堆栈保持不变。
4. 8 位和 16 位的相同图像(没有缩放)返回相同的阈值,但是当图像数据偏移时(例如,当向所有像素添加固定值时),Li 的方法最初会返回不同的值。当前的实现避免了这种与偏移相关的问题。
5. 对于除 Huang、Li 和 Triangle 之外的所有方法,按固定值 缩放 的同一图像(例如,将所有像素乘以固定值时)都会返回类似的阈值结果(在原始未缩放图像的 2 个灰度级别内),因为这些算法的工作方式不同。例如。应用于 8 位图像和转换为 16 位使用缩放的同一图像的三角形方法可能会导致不同的阈值。这是因为从 8 位缩放到 16 位会在缩放的灰度值之间创建空箱。三角形方法(基于几何方法)在新的 16 位直方图中找到满足方法约束但在原始 8 位图像中不存在的那些人工间隙。这是无法避免的(例如通过检测空的直方图箱),因为当图像中存在真正的空箱(与人工的空箱相反)时,它会干扰分析。 6. 添加了双层图像阈值。感谢韦恩·拉斯班德和威廉·伯格。当图像仅包含 2 个不同的像素值(任意两个强度)时,插件会自动将其阈值设置为值 0 和 255,同时忽略所选的阈值方法。这是因为大多数期望双峰直方图的方法都会失败,因为双层图像有时可以解释为单峰(例如,由直方图中两个连续值组成的图像)。
可用方法
全部尝试
哪种方法可以最好地分割您的数据?人们可以尝试使用 全部尝试 选项来回答这个问题。这会生成包含所有方法结果的蒙太奇,允许探索不同算法在特定图像或堆栈上的执行情况。使用堆栈时,在某些情况下,单独分割每个切片可能不是一个好主意,而不是对所有切片使用单个阈值(尝试示例图像中的 mri-stack.tif 以更好地理解此问题)。

原始图像

尝试所有方法。
当处理具有多个切片的堆栈时,蒙太奇可能会变得非常大(约原始堆栈大小的 16 倍),并且存在耗尽 RAM 的风险。将出现一个弹出窗口(当堆栈超过 25 个切片时)以确认该过程是否应显示蒙太奇结果。选择否来计算阈值并将其显示在日志窗口中。
默认
这是 ImageJ 中可用的原始自动阈值方法,它是 IsoData 算法的变体(如下所述)。当选择忽略黑色和忽略白色时,默认选项应返回与Image › Adjust › Threshold › Auto相同的值。要指示所需相的分段,请使用 黑色背景上的白色对象 选项。 IsoData 方法也称为“迭代中间方法”。
黄
实现Huang的模糊阈值方法。这使用了 Shannon 的熵函数(也可以使用 Yager 的熵函数)。
doi:10.1016/0031-3203(94)E0043-K (PDF)
移植自 ME Celebi 的 fourier_0.8 例程 1 和 2。
黄2
这是 J. Schindelin 提出的 Huang 方法的替代实现,在 16 位图像上具有令人印象深刻的速度优势。然而,在某些图像上,该方法返回的值与上面的原始 Huang 方法不同。
互模
这假设有双峰直方图。使用大小为 3 的运行平均值迭代平滑直方图,直到只有两个局部最大值:j 和 k。然后阈值 t 计算为 (j+k)/2。直方图具有极不均匀的峰或宽而平坦的谷的图像不适合此方法。方法
doi:10.1111/j.1749-6632.1965.tb11715.x
移植自 Antti Niemistö 的 MATLAB 代码。请参阅here 的精彩幻灯片演示和他的原始MATLAB 代码。
隔离数据
基于 isodata 算法的迭代过程:
该过程通过取初始阈值将图像分为对象和背景,然后计算等于或低于阈值的像素以及高于阈值的像素的平均值。计算这两个值的平均值,增加阈值并重复该过程,直到阈值大于复合平均值。那是,
threshold = (average background + average objects)/2.
该方法存在多种实现方式。请参阅源代码以获取更多注释。
###李
基于算法的迭代版本(下面的第二个参考)实现Li的最小交叉熵阈值方法。
doi:10.1016/0031-3203(93)90115-D
doi:10.1016/S0167-8655(98)00057-9 (PDF)
移植自 ME Celebi 的 fourier_0.8 例程 3 和 4。
最大熵
实现Kapur-Sahoo-Wong(最大熵)阈值方法:
doi:10.1016/0734-189X(85)90125-2
移植自 ME Celebi 的 fourier_0.8 例程 5 和 6。
###的意思是
使用等级等级的阈值。它被一些其他方法用作第一猜测阈值。
最小尺寸(I)
Kittler 和 Illingworth 最小阈值的迭代实现。
实现这个似乎比原来的更裂缝地收敛。然而,有时该算法不会收敛到解决方案。在这种情况下,将向日志窗口报告警告,并且结果默认为使用扫荡方法计算的阈值的最终估计值。忽略黑色或忽略白色选项可能有助于避免此问题。
doi:10.1016/0031-3203(86)90030-0
移植自 Antti Niemistö 的 MATLAB 代码。请参阅here,了解优秀的幻灯片演示和原始MATLAB代码。
###最低限度
与 Intermodes 方法类似,该方法假定双峰直方图。使用大小为 3 的移动消除平滑直方图,直到只有两个局部峰值。阈值 t 满足 yt−1 > yt <= yt+1。
直方图具有极不均匀的峰或宽而隔壁的谷的图像不适合此方法。
doi:10.1111/j.1749-6632.1965.tb11715.x
移植自 Antti Niemistö 的 MATLAB 代码。请参阅here,了解优秀的幻灯片演示和原始MATLAB代码。
###精彩瞬间
Tsai的方法试图在阈值化结果中保留原始图像的矩。
doi:10.1016/0734-189X(85)90133-1
移植自 ME Celebi 的 fourier_0.8 例程 7 和 8。
大津
大津的阈值算法搜索使类内天线最小化的阈值,类内天线定义为两类天线的加权和。
另请参阅Wikipedia article on Otsu’s method。
由 Jordan Bevik 从 C++ 代码移植而来。
百分位
假设前景像素的比例为0.5。
移植自 Antti Niemistö 的 MATLAB 代码。请参阅here,了解优秀的幻灯片演示和原始MATLAB代码。
RenyiEntropy
与 MaxEntropy 方法类似,但使用 Renyi 的熵代替。
doi:10.1016/0734-189X(85)90125-2
移植自 ME Celebi 的 fourier_0.8 例程 9 和 10。
尚巴格
移植自 ME Celebi 的 fourier_0.8 例程 11 和 12。
###三角形
这是三角形方法的实现:
修改自 Johannes Schindelin 的插件 Triangle_Algorithm。
另请参阅:http://www.ph.tn.tudelft.nl/Courses/FIP/noframes/fip-Segmenta.html#Heading118
三角算法是一种几何方法,无法判断数据是否偏向一侧或另一侧,而是假设直方图一端有最大极值(众数),从而得到另一端搜索。在缺乏处理的图像类型的信息情况下,或者当顶点不接近直方图极值之一时(导致在该顶点和极值之间存在两个可能的阈值区域),这会导致问题。这里,算法被扩展以查找数据在最大邻近的哪一端走得最远,并在该最大范围内搜索求值。
日元
实现 Yen 的阈值方法: doi:10.1109/83.366472