初学python实现OpenCV之边缘保留滤波:高斯双边、均值迁移(七)

初学python实现OpenCV之边缘保留滤波:高斯双边、均值迁移

高斯双边、均值迁移

高斯双边:
双边滤波函数bilateralFilter()
bilateralFilter(src, d, sigmaColor, sigmaSpace, dst=None, borderType=None)
其中:src: 待处理图像、d:过滤期间使用的各像素邻域的直径,如果是非正的,则从SigmaPace计算它。sigmaColor:在颜色空间中过滤Sigma。参数的较大值意味着像素邻域内的更多颜色(参见SigmaSpace)将混合在一起,从而产生更大的半等色区域。
sigmaSpace:在坐标空间中筛选Sigma。参数的较大值意味着只要它们的颜色足够接近(参见SigmaColor),更远的像素会相互影响。当d>0时,它指定邻域大小,而与SigmaPace无关。否则,D与SigmaPace成比例。

均值迁移:
均值漂移函数:cv.pyrMeanShiftFiltering( src, sp, sr[, dst[, maxLevel[, termcrit]]] )
其中:src参数表示输入图像,8位三通道图像、sp参数表示漂移物理空间窗口半径大小、sr参数表示漂移颜色窗口半径大小、dst参数表示和源图象相同大小、相同格式的输出图象、maxLevel参数表示用于分割的金字塔的最大级别、termcrit表示终止标准:何时停止平均移位迭代。

"""边缘保留滤波:高斯双边、均值迁移"""

import cv2 as cv
import numpy as np


# 高斯双边,保留边缘进行模糊,例如美颜功能
def bi_demo(image):
    dst = cv.bilateralFilter(image, 0, 100, 15)
    cv.imshow("bi_demo", dst)


# 均值迁移,会出现过度模糊,接近油画效果
def shift_demo(image):
    dst = cv.pyrMeanShiftFiltering(image, 10, 50)
    cv.imshow("bi_demo", dst)


src = cv.imread("D:/Picture/example.png")
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
bi_demo(src)
shift_demo(src)
cv.waitKey(0)
cv.destroyAllWindows()

执行结果:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值