def weighted_median_filter(a_img: ImageImpl, kernel_size: int) -> ImageImpl: """ Given an Image instance, apply the weighted median filter using a square kernel of size kernel_size. :param a_img: Image instance :param kernel_size: kernel size int :return: transformed image """ a_img.convolution( kernel_size, lambda window: _weighted_median(window, kernel_size), ) return a_img
def high_filter(a_img: ImageImpl, kernel_size: int) -> ImageImpl: """ Given a Image instance, apply high value filter. :param a_img: :param kernel_size: :return: transformed Image instance """ a_img.convolution( kernel_size, lambda window: apply_high_filter(window, int(kernel_size)), ) return a_img
def gaussian_filter(a_img: ImageImpl, kernel_size: int, sigma: float) -> ImageImpl: """ Given an Image instance, apply the weighted gaussian filter using a square kernel of size kernel_size. :param a_img: Image instance :param kernel_size: kernel size int :param sigma: sigma value :return: transformed image """ a_img.convolution( kernel_size, lambda window: _apply_gaussian_filter(window, int(kernel_size), sigma), ) return a_img
def median_filter(a_img: ImageImpl, kernel_size: int) -> ImageImpl: """ Given an Image instance, apply the median filter using a square kernel of size kernel_size. :param a_img: Image instance :param kernel_size: kernel size int :return: transformed image """ a_img.convolution( kernel_size, lambda window: np.median( window.reshape( -1, ) ), ) return a_img