Mercurial > repos > imgteam > imagej2_make_binary
diff imagej2_adjust_threshold_binary_jython_script.py @ 3:1cf9771e0e53 draft default tip
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/image_processing/imagej2 commit 8f49f3c66b5a1de99ec15e65c2519a56792f1d56
author | imgteam |
---|---|
date | Wed, 25 Sep 2024 16:12:59 +0000 |
parents | d3e8ef83f3bf |
children |
line wrap: on
line diff
--- a/imagej2_adjust_threshold_binary_jython_script.py Sun Nov 05 14:21:55 2023 +0000 +++ b/imagej2_adjust_threshold_binary_jython_script.py Wed Sep 25 16:12:59 2024 +0000 @@ -1,18 +1,15 @@ import sys -from ij import IJ +from ij import IJ, Prefs # Fiji Jython interpreter implements Python 2.5 which does not # provide support for argparse. -error_log = sys.argv[-10] -input_file = sys.argv[-9] -threshold_min = float(sys.argv[-8]) -threshold_max = float(sys.argv[-7]) -method = sys.argv[-6] -display = sys.argv[-5] -black_background = sys.argv[-4] == "yes" -# TODO: this is not being used. -stack_histogram = sys.argv[-3] == "yes" +input_file = sys.argv[-8] +threshold_min = float(sys.argv[-7]) +threshold_max = float(sys.argv[-6]) +method = sys.argv[-5] +display = sys.argv[-4] +black_background = sys.argv[-3] == "yes" output_filename = sys.argv[-2] output_datatype = sys.argv[-1] @@ -21,22 +18,34 @@ # Create a copy of the image. input_image_plus_copy = input_image_plus.duplicate() -image_processor_copy = input_image_plus_copy.getProcessor() + +bit_depth = input_image_plus_copy.getBitDepth() + +if black_background: + Prefs.blackBackground = True +else: + Prefs.blackBackground = False -# Convert image to binary if necessary. -if not image_processor_copy.isBinary(): - # Convert the image to binary grayscale. - IJ.run( - input_image_plus_copy, - "Make Binary", - "iterations=1 count=1 edm=Overwrite do=Nothing", - ) -# Set the options. -if black_background: - method_str = "%s dark" % method -else: - method_str = method -IJ.setAutoThreshold(input_image_plus_copy, method_str) +if method != "Manual": + # Set the options. + if black_background: + method_str = "%s dark" % method + suffix = "black" + else: + method_str = method + suffix = "" + threshold_min = 1 + # Set threshold_max based on image bit-depth + # For 8-bit images, use 255; for 16-bit images, use 65535 + if bit_depth == 8: + threshold_max = 255 # Default for 8-bit images + elif bit_depth == 16: + threshold_max = 65535 # Default for 16-bit images + else: + threshold_max = float('inf') # General fallback if bit depth is unknown + + IJ.setAutoThreshold(input_image_plus_copy, method_str) + IJ.run(input_image_plus_copy, "Convert to Mask", "calculate %s" % suffix) if display == "red": display_mode = "Red" elif display == "bw": @@ -44,7 +53,5 @@ elif display == "over_under": display_mode = "Over/Under" IJ.setThreshold(input_image_plus_copy, threshold_min, threshold_max, display_mode) -# Run the command. -IJ.run(input_image_plus_copy, "threshold", "") # Save the ImagePlus object as a new image. IJ.saveAs(input_image_plus_copy, output_datatype, output_filename)