Hi Philippe,
ok, now I understand the problem. The reason why the ThresholdAdjuster
panel does not show the method is that the two commands
setAutoThreshold("Otsu dark");
and
run("Threshold...");
are unrelated.
The ThresholdAdjuster panel knows nothing about the previous operation
since the macro command setAutoThreshold is not via the gui.
Fortunately, the ThresholdAdjuster class has a public static method
public static void setMethod(String thresholdingMethod)
It can be used to set the method and update the displayed method. You
can call it from a macro with, e.g.
call("ij.plugin.frame.ThresholdAdjuster.setMethod", "Otsu");
If you call this method together with the setAutoThreshold("Otsu"), the
ThresholdAdjuster panel will show the correct method.
There is no similar method for the "dark background" flag. As far as I
can say, you can't set that checkbox from a macro while the
ThresholdAdjuster panel is open.
You can only set the state of the "dark background" flag *before* you
open the ThresholdAdjuster panel with the following trick:
call("ij.Prefs.set", "threshold.dark", "true");
Michael
________________________________________________________________
On 11.01.24 15:35, CARL Philippe (LBP) wrote:
Hi Michael,
Sorry if my text wasn't clear enough and I confirm that "command does update the histogram
display" (as I wrote "As the min and max levels seem to be updated").
The issue is that the method name doesn't get updated within the "Threshold..."
window.
Thus a user can't know "which" or "if" a given method had been set by the macro
code.
Kindest regards,
Philippe
----- Mail original -----
De: "Michael Schmid" <[email protected]>
À: "imagej" <[email protected]>
Envoyé: Jeudi 11 Janvier 2024 15:25:01
Objet: Re: setAutoThreshold through macro code
Hi Philippe,
as far as I can see, the run("Threshold...") command does update the
histogram display. You won't see much difference with the Blobs sample
and these thresholding methods because they all yield essentially the
same threshold. If you use a different image like the M51 galaxy sample,
you can better see it.
Michael
________________________________________________________________
On 11.01.24 14:23, CARL Philippe (LBP) wrote:
Dear all,
Isn't it possible to perform a setAutoThreshold within a macro and visualyze
this selection within the Threshold... window ?
As the min and max levels seem to be updated, it is not the case of the
threshold method as illustrated by the following small macro code:
run("Blobs (25K)");
setAutoThreshold("Otsu dark");
run("Threshold...");
waitForUser;
setAutoThreshold("Minimum dark");
run("Threshold...");
waitForUser;
setAutoThreshold("Default dark");
run("Threshold...");
waitForUser;
setAutoThreshold("Huang dark");
run("Threshold...");
waitForUser;
setAutoThreshold("Intermodes dark");
run("Threshold...");
waitForUser;
setAutoThreshold("IsoData dark");
run("Threshold...");
Looking briefly within the code, I found the setMethod method within the
ij.process.AutoThresholder which could be doing the job (through the
"instance.methodChoice.select(method);" line).
But the setAutoThreshold of the ij.macro.Functions class is calling the
setAutoThreshold method of the ij.process.ImageProcessor class which will
finally be calling the getThreshold method of the AutoThresholder class.
And there is no call to a "instance.methodChoice.select(method);" instruction
or equivalent.
Looking forward for your lightings on this, please receive my best wishes for
this new year!
My best regards,
Philippe
Philippe CARL
Laboratoire de Bioimagerie et Pathologies
UMR 7021 CNRS - Université de Strasbourg
Faculté de Pharmacie
74 route du Rhin
67401 ILLKIRCH
Tel : +33(0)3 68 85 41 41
--
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
--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html