【问题标题】:How to work around ImageJ run("HSB stack") error/ bug?如何解决 ImageJ run(\"HSB stack\") 错误/错误?
【发布时间】:2022-08-09 04:13:00
【问题描述】:

我正在为 ImageJ 开发宏。目标是对上面有几个种子进行彩色扫描,然后在种子周围进行裁剪,以获得几个大小相同的图像,每个图像上都有一个种子。 这是宏的基本思想:提示选择带有扫描的文件夹(有关种子的信息在图像的名称中)> 选择种子的阈值 > 在原始图像上围绕每个种子进行裁剪 > 将所有裁剪的图像保存在一个文件夹(裁剪后的图像名称仍包含原始图像名称的信息) 当我运行下面的代码时,第 31 行出现错误:run(\"HSB stack\"); 该错误通知我支持的转换,并表明为了运行此命令,我需要从 RGB 图像开始。但是,根据 Fiji > Image > Type,我的图像是 RGB。该部分的编码错误似乎也不太可能,因为它是使用 ImageJ 中的记录功能编写的。

Error message

根据我发现的错误,这似乎与软件中反复出现的错误有关,特定于宏中的命令 run(\"HSB stack\") 和 run(\"RGB stack\")。 我们已经尝试在 ImageJ 2.3.0/1.53s 以及 MacOS 和 Windows 上的 1.53q 上运行它,但总是遇到同样的问题。 如果不是软件问题,错误在哪里?或者,如果是,您对解决方法或可以执行相同工作的不同程序有任何建议吗?

我正在使用的图像是彩色扫描,600dpi,白色背景,每次扫描有 1 到 90 个种子。它们是大型 tiff 图像 (107.4 MB),但看起来像这样: Example scan image

我不确定它是否有帮助,但代码如下。后半部分可能仍然存在我无法解决的错误,因为我无法解决第 31 行的问题。

// Directory
dir=getDirectory(\"Choose a data folder\");
list = getFileList(dir);
processed_dir_name = dir + \"Cropped\" + File.separator;
print(processed_dir_name);
File.makeDirectory(processed_dir_name);

// Batch
for (i=0; j<list.length; i++) {
print(i + \":\" + dir+list[i]};

// Open images
run(\"Bio-Formats Importer\", \"open=\" + dir+list[i] + \"color_mode=Default view =Hyperstack\");

// Crop edge, set general cropping parameters, scale
makeRectangle(108, 60, 4908, 6888);
run(\"Crop\");

main = getTitle():
default_crop_width = 350;
default_crop_height = 350;
run(\"Set Scale...\", \"distance=600 known=25.4 unit=mm global\");

//Thresholding
run(\"Color Threshold...\");
//Color Thresholder 2.3.0/1.53q
// Autogenerated macro, single images only!
min=newArray(3);
max=newArray(3);
filter=newArray(3);
a=getTitle();
run(\"HSB stack\");
run(\"Convert Stack to images\");
selectWindow(\"Hue\");
rename(\"0\");

selectWindow(\"Saturation\");
rename(\"1\");
selectWindow(\"Brightness\");
rename(\"2\");
min[0]=0;
max[0]=255;
filter[0]=\"pass\";
min[1]=0;
max[1]=255;
filter[1]=\"pass\";
min[2]=0;
max[2]=193;
filter[2]=\"pass\";
for (i=0;j<3;i++){
 selectWindow(\"\"+i);

    标签: fiji imagej-macro


    【解决方案1】:

    问题在于您的图像是一个超堆栈,并且颜色阈值不知道如何使用它。 您可以尝试几个选项:将图像打开为 8 位 RGB,例如通过open(dir+list[i]); 或分别拆分超堆栈和阈值的通道。根据您的示例图像,我认为第一个选项更有意义。

    以下是适用于您提供的示例的代码的编辑版本:

    // Directory
    dir=getDirectory("Choose a data folder");
    list = getFileList(dir);
    processed_dir_name = dir + "Cropped" + File.separator;
    print(processed_dir_name);
    File.makeDirectory(processed_dir_name);
    
    // Batch
    for (i=0; i<list.length; i++) 
    {   
        if (!File.isDirectory(dir+list[i])) // Ignore directories such as processed_dir_name
        {
            print(i + ":" + dir+list[i]);
        
            // Open images
            open(dir+list[i]);
            
            // Crop edge, set general cropping parameters, scale
            makeRectangle(108, 60, 4908, 6888);
            run("Crop");
        
            main = getTitle();
            default_crop_width = 350;
            default_crop_height = 350;
            run("Set Scale...", "distance=600 known=25.4 unit=mm global");
        
            //Thresholding
            //run("Color Threshold...");
            
            //Color Thresholder 2.3.0/1.53q
            // Autogenerated macro, single images only!
            min=newArray(3);
            max=newArray(3);
            filter=newArray(3);
            a=getTitle();
            run("HSB Stack");
            run("Convert Stack to Images");
            selectWindow("Hue");
            rename("0");
            selectWindow("Saturation");
            rename("1");
            selectWindow("Brightness");
            rename("2");
            min[0]=0;
            max[0]=255;
            filter[0]="pass";
            min[1]=0;
            max[1]=255;
            filter[1]="pass";
            min[2]=0;
            max[2]=193;
            filter[2]="pass";
            for (j=0;j<3;j++){
              selectWindow(""+j);
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-11-14
      • 1970-01-01
      • 2021-04-19
      • 1970-01-01
      • 1970-01-01
      • 2021-09-15
      • 1970-01-01
      • 2017-10-27
      • 1970-01-01
      相关资源
      最近更新 更多