OpenCV-Python之边缘保留滤波(EPF)

24 篇文章 8 订阅
14 篇文章 1 订阅

两种常用的方法

  • 高斯双边
  • 均值迁移

高斯双边滤波

前文提到的高斯模糊只考虑了像素空间的分布,而没有考虑差异问题。下图十分形象的说明了边缘保留滤波的原理。一张黑白分明存在噪声的图片通过高斯滤波保留边缘将二者区分开来。
在这里插入图片描述
代码解析

# 边缘保留滤波(EPF)
# 高斯双边滤波

def bilateral_demo(img):
    dst = cv.bilateralFilter(src=img, d=0, sigmaColor=100, sigmaSpace=15)
    '''
    高斯双边模糊,相当于磨皮操作
    src:原图像
    d: 像素的领域直径,可由sigmaColor和sigmaColor计算得到
    sigmaColor: 颜色空间的标准方差,一般越大越好
    sigmaSpace: 坐标空间的标准方差(像素单位),一般越小越好
    '''
    cv.imshow('bilateal_dome', dst)
    kennel = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]], np.float32)  # 锐化操作使图像更立体
    dst1 = cv.filter2D(dst, -1, kennel)  # -1 表示和原图一样
    cv.imshow('sharpening_dome', dst1)

image = cv.imread('./data/face.png', 1)
cv.imshow('source image', image)
bilateral_demo(image)
cv.waitKey(0)
cv.destroyAllWindows()

在这里插入图片描述
而用高斯模糊的结果是:
在这里插入图片描述

2.均值偏移滤波

# 均值偏移滤波
def mean_shift_demo(img):
    dst = cv.pyrMeanShiftFiltering(src=img, sp=15, sr=20)
    '''
    均值偏移滤波处理,想当与把图片转油画的操作
    src: 原图像
    sp:空间窗的半径(The spatial window radius)
    sr: 色彩窗的半径(The color window radius)
    通过均值迁移来进行边缘保留滤波有时会导致图像过度模糊
    '''
    cv.imshow('mean_shift_demo', dst)

image = cv.imread('./data/face.png', 1)
cv.imshow('source image', image)
mean_shift_demo(image)
cv.waitKey(0)
cv.destroyAllWindows()

~`

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

量子孤岛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值