Source code for asterism.analysis_tasks.image_processing.image_processing

"""
This modules provides the implementation of the :class:`.DoImageProcessing` class
used to handle the image processing :class:`.AnalysisTask`.
The tasks is implemented by the :func:`.do_image_processing`


Classes and Inheritance Structure
----------------------------------------------
.. inheritance-diagram:: asterism.analysis_tasks.image_processing.image_processing.DoImageProcessing




Summary
---------
.. autosummary::
   do_image_processing
   DoImageProcessing


Module API
-----------
"""
from __future__ import division, absolute_import, print_function
from ...pipeline_manager.analysis_tasks import AnalysisTask
from ...core.image_processing.filters import *
from ...core.image_manager.image import Image
__author__ = 'andrea tramacere'

[docs]def do_image_processing(image, #do_asinh_contarst_filter=False, #asinh_ontrast_filter_beta=50, do_median_filter=True, median_filter_window_size=2, do_gauss_filter=False, gauss_filter_sigma=1, do_gauss_laplace_filter=False, gauss_laplace_filter_s=0.1, do_nlm_filter=False, nlm_filter_h=0.1, nlm_filter_patch_size=7, nlm_filter_patch_distance=11, verbose=False): """ Function that implements the application of the different Filters. The filters are :class:`.filters.ImageFilter` derived objects, and are applied to :class:`.Image` objects using the :meth:`.Image.filter` with `inplace=True` Parameters ---------- image : :class:`.Image` obj: input image obj do_median_filter : bool boolean par to set on :class:`.MedianFilter` filter median_filter_window_size : int par for the `.MedianFilter` filter do_gauss_filter : bool boolean par to set on :class:`.GaussianFilter` filter gauss_filter_sigma float : par for the :class:`.GaussianFilter` filter do_gauss_laplace_filter : bool boolean par to set on :class:`.GaussLaplaceFilter` filter gauss_laplace_filter_s par for the :class:`.GaussLaplaceFilter` filter do_nlm_filter : bool boolean par to set on :class:`.NonLocalMeansDenoising` filter nlm_filter_h par for the :class:`.NonLocalMeansDenoising` filter nlm_filter_patch_size par for the :class:`.NonLocalMeansDenoising` filter nlm_filter_patch_distance par for the :class:`.NonLocalMeansDenoising` filter Returns ------- """ if isinstance(image,Image): pass else: raise RuntimeError('image should be instance of Image %s'%Image) filters=[] if do_gauss_filter is True: gauss_filter=GaussianFilter(sigma=gauss_filter_sigma) filters.append(gauss_filter) if do_median_filter is True: median_filter=MedianFilter(window_size=median_filter_window_size) filters.append(median_filter) if do_nlm_filter is True: nl_filter=NonLocalMeansDenoising(h=nlm_filter_h,patch_distance=nlm_filter_patch_distance,patch_size=nlm_filter_patch_size) filters.append(nl_filter) if do_gauss_laplace_filter is True: gl_filter=GaussLaplaceFilter(sigma=gauss_laplace_filter_s) filters.append(gl_filter) for filt in filters: if verbose==True: print("| filtering with ",filt.name) image.filter(filt,inplace=True)
#image.show()
[docs]class DoImageProcessing(AnalysisTask): """ :class:`.AnalysisTask` derived class that implements the image processing Task: Parameters ---------- name : str the name for the Process func : callable The function that implements the task algorithm , :func:`.do_image_processing` in this case image_id : int id of the image parser : """ def __init__(self,name='do_image_processing',func=do_image_processing,parser=None): super(DoImageProcessing,self).__init__(name=name,func=func,parser=parser) #self.parameters_list.add_par('-do_asinh_contarst_filter',help='set contrast filter on',action='store_true') #self.parameters_list.add_par('-asinh_ontrast_filter_beta', type=np.float ,help='beta param for contrat filter', default=50.0 ) self.parameters_list.add_par('-do_median_filter',help='set median filter on',action='store_true') self.parameters_list.add_par('-do_gauss_laplace_filter',help='set median filter on',action='store_true') self.parameters_list.add_par('-gauss_laplace_filter_s', type=np.float ,help='s param for gauss_laplace filter', default=0.1) self.parameters_list.add_par('-median_filter_window_size', type=np.int ,help='median filter size in pixels', default=2 ) self.parameters_list.add_par('-do_gauss_filter',help='set gaussian filter on',action='store_true') self.parameters_list.add_par('-gauss_filter_sigma', type=np.float ,help='gauss filter sigma size in pixels', default=1.0 ) self.parameters_list.add_par('-do_nlm_filter',help='set non local mean denosing filter on',action='store_true') self.parameters_list.add_par('-nlm_filter_h', type=np.float ,help='', default=0.1 ) self.parameters_list.add_par('-nlm_filter_patch_size', type=np.int ,help='', default=7 ) self.parameters_list.add_par('-nlm_filter_patch_distance', type=np.int ,help='', default=11 )