Mercurial > repos > imgteam > 2d_simple_filter
diff filter_image.py @ 3:6c4b22ef2b81 draft
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_simple_filter/ commit c045f067a57e8308308cf6329060c7ccd3fc372f
author | imgteam |
---|---|
date | Thu, 04 Apr 2024 15:23:42 +0000 |
parents | f70b215d155c |
children | d51310ab328a |
line wrap: on
line diff
--- a/filter_image.py Fri Nov 10 13:44:57 2023 +0000 +++ b/filter_image.py Thu Apr 04 15:23:42 2024 +0000 @@ -1,29 +1,28 @@ import argparse -import sys -import skimage.filters +import scipy.ndimage as ndi import skimage.io import skimage.util -from skimage import img_as_uint from skimage.morphology import disk -filterOptions = { - 'median': lambda img_raw, radius: skimage.filters.median(img_raw, disk(radius)), - 'gaussian': lambda img_raw, radius: skimage.filters.gaussian(img_raw, sigma=radius), - 'prewitt': lambda img_raw, radius: skimage.filters.prewitt(img_raw), - 'sobel': lambda img_raw, radius: skimage.filters.sobel(img_raw), - 'scharr': lambda img_raw, radius: skimage.filters.scharr(img_raw), +filters = { + 'gaussian': lambda im, sigma: ndi.gaussian_filter(im, sigma), + 'median': lambda im, radius: ndi.median_filter(im, footprint=disk(radius)), + 'prewitt_h': lambda im, *args: ndi.prewitt(im, axis=1), + 'prewitt_v': lambda im, *args: ndi.prewitt(im, axis=0), + 'sobel_h': lambda im, *args: ndi.sobel(im, axis=1), + 'sobel_v': lambda im, *args: ndi.sobel(im, axis=0), } if __name__ == "__main__": parser = argparse.ArgumentParser() - parser.add_argument('input_file', type=argparse.FileType('r'), default=sys.stdin, help='input file') - parser.add_argument('out_file', type=argparse.FileType('w'), default=sys.stdin, help='out file (TIFF)') - parser.add_argument('filter_type', choices=filterOptions.keys(), help='conversion type') - parser.add_argument('radius', default=3.0, type=float, help='Radius/Sigma') + parser.add_argument('input', type=argparse.FileType('r'), help='Input file') + parser.add_argument('output', type=argparse.FileType('w'), help='Output file (TIFF)') + parser.add_argument('filter', choices=filters.keys(), help='Filter to be used') + parser.add_argument('size', type=float, help='Size of the filter (e.g., radius, sigma)') args = parser.parse_args() - img_in = skimage.io.imread(args.input_file.name) - res = img_as_uint(filterOptions[args.filter_type](img_in, args.radius)) - skimage.io.imsave(args.out_file.name, res, plugin='tifffile') + im = skimage.io.imread(args.input.name) + res = filters[args.filter](im, args.size) + skimage.io.imsave(args.output.name, res, plugin='tifffile')