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