view 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 source

import argparse

import scipy.ndimage as ndi
import skimage.io
import skimage.util
from skimage.morphology import disk


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

    im = skimage.io.imread(args.input.name)
    res = filters[args.filter](im, args.size)
    skimage.io.imsave(args.output.name, res, plugin='tifffile')