Написание макроса в ImageJ для открытия, изменения цвета и повторного сохранения изображений микроскопа

Я пытаюсь написать код в Image J, который будет:

  1. Открывать все изображения в отдельных окнах, которые заканчиваются на - GFP.vsi в папке
  2. Используйте таблицы поиска для преобразования изображений в зеленый цвет и цвет RGB Из ImageJ команды: run(Green); и запустить (цвет RGB);
  3. Сохраняйте каждое изображение в той же исходной папке с тем же именем и в формате .tif Было бы нормально, если бы изображения перезаписывали оригинал, но также было бы хорошо, если бы у них было новое имя. Из ImageJ, чтобы сохранить как файл .tif: saveAs(Tiff, Filepath);

У меня нет опыта работы с Java и только небольшой опыт кодирования. Я попытался собрать что-то вместе, используя код, который я нашел в stackoverflow и на веб-сайте ImageJ, но продолжал получать коды ошибок. Любая помощь высоко ценится!


person Cam    schedule 24.06.2020    source источник


Ответы (1)


Вот как я бы подошел к этой задаче:

macro "Change and Resave" {
    dir1 = getDirectory("Choose Source Directory ");
    dir2 = getDirectory("Choose Destination Directory ");
    list = getFileList(dir1);

    // Make an array of files ending " - GFP.vsi"
    nd2list = newArray(0);
    for (i=0; i<list.length; i++) {
        if (endsWith(list[i], " - GFP.vsi")) {
            vsilist = append(vsilist, list[i]);
        }
    }

    setBatchMode(true);
    // loop through files
    for (i=0; i<vsilist.length; i++) {
        showProgress(i+1, vsilist.length);
        // open file using Bio-Formats, you may need to edit these two lines
        s = "open=["+dir1+vsilist[i]+"] autoscale color_mode=Composite rois_import=[ROI manager] view=Hyperstack stack_order=XYCZT";
        run("Bio-Formats Importer", s);
        // your commands from your question
        run("Green");
        run("RGB Color");
        saveAs("tiff", dir2+replace(vsilist[i],".vsi",".tif"));
        close();
    }
    setBatchMode(false);
}

function append(arr, value) {
    arr2 = newArray(arr.length+1);
    for (i=0; i<arr.length; i++)
        arr2[i] = arr[i];
        arr2[arr.length] = value;
    return arr2;
}
person quantixed    schedule 24.06.2020