自迁移出 MediaWiki 以来,本页内容尚未经过审查。如果您愿意帮忙,请查看帮助指南!
|
|
|
| 文件 |
Max_Inscribed_Circle.jar |
| 来源 |
目的
这是使用欧几里得距离图的最大内切圆算法的实现。循环算法该直到找到小于定义的最小直径的圆直径。该插件的代码受到此§§7§§§的启发

Plugin Dialog choices
详细信息
2016 年 7 月 26 日,该插件已使用新的算法重写,使其运行速度更快。请参阅更快的实现细节图。 
之前的实现会计算距离图,然后找到顶部,放置一个圆并重复。这使得小圆直径或大图像的速度非常慢,它需要对整个上图像的每个圆进行一次距离图计算。
通过使用局部顶端查找器,我们可以一次性遍历中多个圆,前提是这些圆是
1.距离图图像上的最大距离 2.不重叠重叠
这样,当有很多相同大小的订单时,我们可以同时异构它们。
安装
该插件可从 PTBIOP Update Site 获取。这将其放置在 Fiji/ImageJ 的插件目录中的“BIOP”文件夹中
使用
使用Plugins › BIOP › Image Analysis › Binary › Max Inscribed Circles…调用插件。
您可以选择最小的圆直径,之后就会停止查找,以及您希望插件是否在当前选择或当前图像蒙版上运行。
它将把所有找到的订单添加到 ROI 管理器中。
将最小圆盘直径设置为0 将返回具有最大内切圆的单个ROI。

Result of Plugin on whole image
可录制宏
利用GenericDialog类,该插件可以进行宏录制。
run("Max Inscribed Circles...", "minimum=20");
来自插件运行
在插件中运行它是需要
import ch.epfl.biop.MaxInscribedCircles;
然后您可以通过两种方式使用它。静态或使用构建器模式
//imp must be an 8-bit binary image. No stacks
// static call
ArrayList<Roi> circles = MaxInscribedCircles.findCircles(ImagePlus imp, double minD, boolean isSelectionOnly);
通过在脚本 Groovy 中使用构建器模式的示例
#@ ImagePlus imp
#@ RoiManager rm
import ij.gui.Overlay
import ch.epfl.biop.MaxInscribedCircles
rm.reset()
// Builder Pattern. Useful if you have a stack
MaxInscribedCircles mic = MaxInscribedCircles.builder(imp)
.minimumDiameter( 5 )
.useSelectionOnly( true ) // will only do the selection and ignore the stack
.getSpine(true )
.spineClosenessTolerance( 20 )
.spineMinimumSimilarity( 0.3)
.appendPositionToName( true )
.build()
mic.process()
def circles = mic.getCircles()
def spines = mic.getSpines()
def spineParts = mic.getSpineParts()
def overlay = new Overlay()
circles.each{ rm.addRoi( it ) }
spines.each{ rm.addRoi( it ) }
spineParts.each{ overlay.add( it ) }
imp.setOverlay( overlay )
如果要在当前选择中适合圆形,则满足最后一个参数isSelectionOnly设置为true。如果您想使用像素占用码,则其设置为false。
注释
由于我们使用的距离图具有有限值,因此精度并不完美。但对于大多数实际用途(直径大于2像素的货物)来说,这应该足够了。