comparison 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
comparison
equal deleted inserted replaced
0:d54f14727f77 1:77455af98d88
1 import argparse 1 import argparse
2 import os
3 import sys 2 import sys
3
4 import giatools.io
5 import numpy as np
6 import skimage.exposure
4 import skimage.io 7 import skimage.io
5 import skimage.exposure
6 import skimage.util 8 import skimage.util
7 9
10
11 def rescale(img):
12 assert np.issubdtype(img.dtype, np.floating), str(img.dtype) # sanity check
13 img = img - img.min()
14 return img / img.max() if img.max() != 0 else 1
15
16
8 hOptions = { 17 hOptions = {
9 'default' : lambda img_raw: skimage.exposure.equalize_hist(img_raw), 18 'default': lambda img_raw: rescale(skimage.exposure.equalize_hist(img_raw)), # rescale needed for values to be in [0, 1]
10 'clahe' : lambda img_raw: skimage.exposure.equalize_adapthist(img_raw) 19 'clahe': lambda img_raw: skimage.exposure.equalize_adapthist(img_raw), # produces image with values in [0, 1]
11 } 20 }
12 21
13 if __name__ == "__main__": 22 if __name__ == "__main__":
14 parser = argparse.ArgumentParser(description='Histogram equalization') 23 parser = argparse.ArgumentParser(description='Histogram equalization')
15 parser.add_argument('input_file', type=argparse.FileType('r'), default=sys.stdin, help='input file') 24 parser.add_argument('input_file', type=argparse.FileType('r'), default=sys.stdin, help='input file')
16 parser.add_argument('out_file', type=argparse.FileType('w'), default=sys.stdin, help='out file (TIFF)') 25 parser.add_argument('out_file', type=argparse.FileType('w'), default=sys.stdin, help='out file (TIFF)')
17 parser.add_argument('h_type', choices=hOptions.keys(), help='histogram equalization method') 26 parser.add_argument('h_type', choices=hOptions.keys(), help='histogram equalization method')
18 args = parser.parse_args() 27 args = parser.parse_args()
19 28
20 img_in = skimage.io.imread(args.input_file.name) 29 img_in = giatools.io.imread(args.input_file.name)
21 res = hOptions[args.h_type](img_in) 30 res = hOptions[args.h_type](img_in)
22 res = skimage.util.img_as_uint(res) 31 res = skimage.util.img_as_uint(res)
23 skimage.io.imsave(args.out_file.name, res, plugin="tifffile") 32 skimage.io.imsave(args.out_file.name, res, plugin="tifffile")