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')