Mercurial > repos > imgteam > 2d_histogram_equalization
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") |
