Imagej 分析粒子添加到管理器后保留用户ROI

Imagej 分析粒子添加到管理器后保留用户ROI,imagej,roi,Imagej,Roi,我主要用宏语言工作 对于我的宏,我要求用户从图像中选择一些元素。一个是椭圆选择,另一个是多边形选择。我在ROI管理器中有这两个ROI,我希望保留它们 当我对图像进行进一步分析以分离不同的组织时,我需要使用分析粒子向ROI管理器添加更多ROI,但当我添加它们时,它会删除用户选择的ROI 有没有办法将ROI追加到列表中,或者我需要对宏重新排序 run("Select None"); //Selecting nothing just in case setTool(1);

我主要用宏语言工作

对于我的宏,我要求用户从图像中选择一些元素。一个是椭圆选择,另一个是多边形选择。我在ROI管理器中有这两个ROI,我希望保留它们

当我对图像进行进一步分析以分离不同的组织时,我需要使用分析粒子向ROI管理器添加更多ROI,但当我添加它们时,它会删除用户选择的ROI

有没有办法将ROI追加到列表中,或者我需要对宏重新排序

run("Select None");             //Selecting nothing just in case
setTool(1);                     //Elliptical tool 

while (selectionType != 1) {
    message= "Elliptical Selection Required\n Please select the Peduncle Attachment Zone";
    waitForUser(message);
}

roiManager("Add"); 

// User selection of Seed Cavity
// hexagonal (polygon) selection
run("Select None");             //Selecting nothing just in case
setTool(2);                     //Elliptical tool 

while (selectionType != 2) {
    message= "Polygonal Selection Required\n Please select the Seed Cavity";
    waitForUser(message);
}

roiManager("Add");
run("Select None");             //clear current selection

//threshold here
//analyze particles
run("8-bit");
setThreshold(0, 128);
setOption("BlackBackground", false);
run("Convert to Mask");     
correctLUT();  //checks if inverted and corrects
run("Analyze Particles...", "size=55000-Infinity circularity=0.65-1.00 show=Masks display exclude add");

function correctLUT() {
    invertedLUT = is("Inverting LUT");
    if (invertedLUT == 1) {
        run("Invert LUT");
        run("Invert");
    }
}

我刚刚试过你的宏(注释掉
correctLUT()
),它保留了所有用户定义的ROI。这是您正在使用的完整代码吗?遗憾的是,不是,这本应是一个可复制的示例,但在我匆忙发布的过程中,很明显,它确实可以正常工作。我可以发誓不是这样,但我不明白为什么。此后,我重新组织了代码,先找到需要查找的内容,然后请求用户输入,但看起来我不需要这样做。看起来我的问题可能是analyze particles命令中残留的“clear”。运行(“分析粒子…”,“大小=20无穷大圆度=0.5-1.00显示=遮罩显示排除清除添加”);确实,它不仅清除了结果表,还清除了ROI管理器,这在在线文档中没有提到。明确的结果 如果选中,结果表中列出的任何以前的测量值↑ 会被清除的,说得好。您可能希望向发送有关不完整文档的消息。该列表通常是询问ImageJ的最佳位置,因为许多专家用户和插件开发人员都订阅了该列表。