# HG changeset patch # User imgteam # Date 1712244222 0 # Node ID 6c4b22ef2b81201cf055a047cf7cf6fa33e0cd6c # Parent f70b215d155c35d7bef530c0b7fd4b62c6393fda planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_simple_filter/ commit c045f067a57e8308308cf6329060c7ccd3fc372f diff -r f70b215d155c -r 6c4b22ef2b81 creators.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/creators.xml Thu Apr 04 15:23:42 2024 +0000 @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff -r f70b215d155c -r 6c4b22ef2b81 filter.xml --- a/filter.xml Fri Nov 10 13:44:57 2023 +0000 +++ b/filter.xml Thu Apr 04 15:23:42 2024 +0000 @@ -1,49 +1,135 @@ - - with scikit-image + + with scipy + + creators.xml + tests.xml + 1.12.0 + 0 + + + + operation_3443 - scikit-image - scikit-image + scipy - scikit-image - numpy - pillow - tifffile + scipy + numpy + scikit-image + tifffile - - - + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - **What it does** + + **Applies a standard filter to a single-channel 2-D image.** - Applies a standard filter to an image. + Mean filters like the Gaussian filter or the median filter preserve both the brightness of the image, and the range of values. + 10.1016/j.jbiotec.2017.07.019 diff -r f70b215d155c -r 6c4b22ef2b81 filter_image.py --- 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') diff -r f70b215d155c -r 6c4b22ef2b81 test-data/input1_gaussian.tif Binary file test-data/input1_gaussian.tif has changed diff -r f70b215d155c -r 6c4b22ef2b81 test-data/input1_median.tif Binary file test-data/input1_median.tif has changed diff -r f70b215d155c -r 6c4b22ef2b81 test-data/input1_prewitt_h.tif Binary file test-data/input1_prewitt_h.tif has changed diff -r f70b215d155c -r 6c4b22ef2b81 test-data/input1_prewitt_v.tif Binary file test-data/input1_prewitt_v.tif has changed diff -r f70b215d155c -r 6c4b22ef2b81 test-data/input1_sobel_h.tif Binary file test-data/input1_sobel_h.tif has changed diff -r f70b215d155c -r 6c4b22ef2b81 test-data/input1_sobel_v.tif Binary file test-data/input1_sobel_v.tif has changed diff -r f70b215d155c -r 6c4b22ef2b81 test-data/input1_uint8.tif Binary file test-data/input1_uint8.tif has changed diff -r f70b215d155c -r 6c4b22ef2b81 test-data/input2_float.tif Binary file test-data/input2_float.tif has changed diff -r f70b215d155c -r 6c4b22ef2b81 test-data/input2_gaussian.tif Binary file test-data/input2_gaussian.tif has changed diff -r f70b215d155c -r 6c4b22ef2b81 test-data/res.tif Binary file test-data/res.tif has changed diff -r f70b215d155c -r 6c4b22ef2b81 test-data/sample.tif Binary file test-data/sample.tif has changed diff -r f70b215d155c -r 6c4b22ef2b81 tests.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests.xml Thu Apr 04 15:23:42 2024 +0000 @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +