边缘保留滤波

""" 边缘保留滤波 """
import cv2 as cv


def bi_demo(image):
    """ 高斯双边模糊 :param image: :return: """
    # 函数参数 bilateralFilter(src, d, sigmaColor, sigmaSpace, dst=None, borderType=None)
    dst = cv.bilateralFilter(image, 0, 100, 50)
    cv.imshow("bi_demo", dst)


def shift_demo(image):
    """ 均值迁移 :param image: :return: """
    dst = cv.pyrMeanShiftFiltering(image, 10, 50)
    cv.imshow("shift_demo", dst)


src = cv.imread("img.jpg")
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
bi_demo(src)
shift_demo(src)
cv.waitKey(0)
cv.destroyAllWindows()

参数说明

高斯双边模糊

bilateralFilter(src, d, sigmaColor, sigmaSpace, dst=None, borderType=None)
@param src源8位或浮点,1通道或3通道图像。
@param dst大小和类型与src相同的目标映像。
@param d滤波期间使用的每个像素邻域的直径。 如果它不是正值,则从sigmaSpace计算得出。
@param sigmaColor在色彩空间中过滤sigma。 参数的较大值表示像素邻域内的其他颜色(请参见sigmaSpace)将混合在一起,从而
在较大范围的半均等颜色中。
@param sigmaSpace在坐标空间中过滤sigma。 该参数的值越大,意味着越远的像素就会相互影响,只要它们的颜色足够接近即可(请参见sigmaColor)。 当d \> 0时,它指定邻域大小,而不考虑sigmaSpace。 否则,d与sigmaSpace成比例。
@param borderType边界模式,用于推断图像外部的像素

均值迁移

pyrMeanShiftFiltering(src, sp, sr, dst=None, maxLevel=None, termcrit=None)
@param src源83通道图像。
参数dst与源格式和尺寸相同的目标图像。
@param sp空间窗口半径。
@param sr颜色窗口半径。
@param maxLevel分割金字塔的最大级别。
@param termcrit终止条件:何时停止均值漂移迭代。