边缘保留滤波(EPF)

高斯模糊只考虑了权重,只考虑了像素空间的分布,没有考虑像素值和另一个像素值之间差异的问题,如果像素间差异较大的情况下(比如图像的边缘),高斯模糊会进行处理,但是我们不需要处理边缘,要进行的操作就叫做边缘保留滤波(EPF)

EPF的操作具体有两种做法:

在这里插入图片描述

1、高斯双边模糊(类似磨皮效果)

def bi_demo(image):
      '''
    高斯双边模糊:
    #image:输入图像,图像必须是8位或浮点型单通道、三通道的图像
    #0-distance:表示在过滤过程中每个像素邻域的直径范围,一般为0
    #100-sigmaColor:尽量取大,目的将小的差异模糊掉,噪声去掉
    #15- sigmaSpace:尽量取小,那么“和”就小一点,主要的差异就保留下来
     '''
    dst=cv.bilateralFilter(image,0,100,15)
    cv.imshow('bi_demo',dst)

在这里插入图片描述

2、均值迁移模糊,(更像似油画效果)

def shift_function(image):
    '''
       均值迁移模糊:
            sp:(The spatial window radius) 定义的漂移物理空间半径大小
            sr:(The color window radius) 定义的漂移色彩空间半径大小;

    '''
    dst = cv.pyrMeanShiftFiltering(image, 10, 50)
    cv.imshow("shift_function", dst)

在这里插入图片描述

完整代码

import cv2 as cv
import numpy as np
 
#高斯双边模糊EPF
def bi_demo(image):
    dst=cv.bilateralFilter(image,0,100,15)
    cv.imshow("di_demo",dst)
 
def shift_demo(image):
    dst=cv.pyrMeanShiftFiltering(image,0,10,50)
    cv.imshow("shift_demo",dst)

#读取图像,支持 bmp、jpg、png、tiff 等常用格式
src = cv.imread("F:/Projects/images/2.jpg")

#创建窗口并显示图像
cv.namedWindow("input image",cv.WINDOW_AUTOSIZE)
cv.imshow("input image",src)   #显示原图

bi_demo(src)
shift_demo(src)
cv.waitKey(0)
#释放窗口
cv.destroyAllWindows()
  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值