diff histogram_equalization.py @ 1:77455af98d88 draft default tip

planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_histogram_equalization/ commit 558152251d5d7a1bf77db91aa5388aca7a68ae62
author imgteam
date Fri, 20 Feb 2026 09:56:36 +0000
parents d54f14727f77
children
line wrap: on
line diff
--- a/histogram_equalization.py	Tue Jul 23 14:06:42 2019 -0400
+++ b/histogram_equalization.py	Fri Feb 20 09:56:36 2026 +0000
@@ -1,13 +1,22 @@
 import argparse
-import os
 import sys
+
+import giatools.io
+import numpy as np
+import skimage.exposure
 import skimage.io
-import skimage.exposure
 import skimage.util
 
+
+def rescale(img):
+    assert np.issubdtype(img.dtype, np.floating), str(img.dtype)  # sanity check
+    img = img - img.min()
+    return img / img.max() if img.max() != 0 else 1
+
+
 hOptions = {
-    'default' : lambda img_raw: skimage.exposure.equalize_hist(img_raw),
-    'clahe' : lambda img_raw: skimage.exposure.equalize_adapthist(img_raw)
+    'default': lambda img_raw: rescale(skimage.exposure.equalize_hist(img_raw)),  # rescale needed for values to be in [0, 1]
+    'clahe': lambda img_raw: skimage.exposure.equalize_adapthist(img_raw),  # produces image with values in [0, 1]
 }
 
 if __name__ == "__main__":
@@ -17,7 +26,7 @@
     parser.add_argument('h_type', choices=hOptions.keys(), help='histogram equalization method')
     args = parser.parse_args()
 
-    img_in = skimage.io.imread(args.input_file.name)
+    img_in = giatools.io.imread(args.input_file.name)
     res = hOptions[args.h_type](img_in)
     res = skimage.util.img_as_uint(res)
     skimage.io.imsave(args.out_file.name, res, plugin="tifffile")