I just found a new case when this does not work:
If the image is binary, it works if the order is "Fill" and then "Clear 
Outside" but not the other way around.

close("*t1*");
run("T1 Head (16-bits)");
run("8-bit");
setSlice(nSlices/2);
setAutoThreshold("IJ_IsoData dark no-reset");
run("Convert to Mask", "method=IJ_IsoData background=Dark black create");       
//2024-02-20
Color.setForeground("white");
Color.setBackground("black");
for (s = 50; s <= 100; s++) {
        setSlice(s);
        run("Create Selection");
        if (selectionType >= 0) {
                run("Fit Ellipse");
                Overlay.addSelection("red");
                Overlay.setPosition(s);
                if (true) {
                        run("Clear Outside", "slice");
                        run("Fill", "slice");   //fills with black
                } else {
                        run("Fill", "slice");   //fills with white
                        run("Clear Outside", "slice");
                }
        }
}
setSlice(nSlices/2);
resetThreshold;
Roi.remove;

Stein

-----Original Message-----
From: Stein Rørvik <[email protected]>
Sent: 20. februar 2024 19:07
Subject: Re: Problem with Fill and Clear Outside in macros

Thanks for the quick response,
it works fine after this update!

Stein

-----Original Message-----
From: Wayne Rasband <[email protected]>
Sent: 20. februar 2024 16:53
Subject: Re: Problem with Fill and Clear Outside in macros

> On Feb 19, 2024, at 5:20 PM, Stein Rørvik 
> <[email protected]> wrote:
>
> I have encountered a problem with "Fill" and "Clear Outside" in a macro.

The latest daily build (1.54i17) fixes a bug where calling run("Clear 
Outside","slice") set the foreground color to the background color.

-wayne

> What I want to do is to create a ROI on each slice in a stack based on
> fitting around the outline of a thresholded object, and fill inside and clear 
> outside to create a mask, leaving an overlay of the selection.
>
> The problem is that "Fill" fills with the background color instead of the 
> foreground color. It fills correctly on the first selected slice.
> The problem does not occur if either the "Fill" or "Clear Outside" command is 
> removed. It also does not occur if done manually via the GUI.
>
> The following macro reproduces the problem:
>
> close("*t1*");
> run("T1 Head (16-bits)");
> run("8-bit");
> setSlice(nSlices/2);
> setAutoThreshold("IJ_IsoData dark no-reset");
> Color.setForeground("white"); Color.setBackground("black"); for (s =
> 50; s <= 100; s++) {
>                setSlice(s);
>                run("Create Selection");
>                if (selectionType >= 0) {
>                               run("Fit Ellipse");
>                               run("Clear Outside", "slice");
>                               run("Fill", "slice");            //bug? this 
> fills with black, except for on slice 50
>                }
>                Overlay.addSelection("red");
>                Overlay.setPosition(s); } setSlice(nSlices/2);
> resetThreshold; Roi.remove;
>
>
> I am on Windows 10/64 using the latest daily build under Java 8 jre.
>
> Stein

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html

Reply via email to