Source code for draugr.opencv_utilities.color_space.noise

from enum import Enum
from typing import Any

import cv2
from sorcery import assigned_names

from warg import ceil_odd

__all__ = ["noise_filter", "NoiseFilterMethodEnum"]


[docs]class NoiseFilterMethodEnum(Enum): none, median_blur, bilateral_filter, gaussian_blur = assigned_names()
[docs]def noise_filter( img: Any, method: NoiseFilterMethodEnum = NoiseFilterMethodEnum.bilateral_filter, **kwargs ) -> Any: """ :param img: :type img: :param method: :type method: :param kwargs: :type kwargs: :return: :rtype: """ method = NoiseFilterMethodEnum(method) if method == NoiseFilterMethodEnum.none: return img ksize = kwargs.get("ksize", max(ceil_odd(max(*(img.shape)) // 100), 5)) if method == NoiseFilterMethodEnum.median_blur: return cv2.medianBlur(img, ksize=ksize) elif method == NoiseFilterMethodEnum.bilateral_filter: return cv2.bilateralFilter( img, d=kwargs.get("d", 11), sigmaColor=kwargs.get("sigmaColor", 17), sigmaSpace=kwargs.get("sigmaSpace", 17), ) elif method == NoiseFilterMethodEnum.gaussian_blur: return cv2.GaussianBlur( img, ksize=(ksize, ksize), sigmaX=kwargs.get("sigmaX", 5), borderType=kwargs.get("borderType", None), ) raise NoiseFilterMethodEnum