OpenCV__Python边缘保留滤波EPF_教程12

边缘保留滤波

1.高斯双边滤波

类似于实现美颜功能

bilateralFilter()函数可以对图像进行双边滤波。

关于2个sigma参数:

  • 简单起见,可以令2个sigma的值相等;
  • 如果他们很小(小于10),那么滤波器几乎没有什么效果;
  • 如果他们很大(大于150),那么滤波器的效果会很强,使图像显得非常卡通化;

关于参数d:

  • 过大的滤波器(d>5)执行效率低。
  • 对于实时应用,建议取d=5;
  • 对于需要过滤严重噪声的离线应用,可取d=9;
  • d>0时,由d指定邻域直径;
  • d<=0时,d会自动由sigmaSpace的值确定,且d与sigmaSpace成正比;

 

 

#引入opencv模块
import cv2 as cv
#引入numpy模块
import numpy as np
#引入sys模块
import sys

#边缘保留滤波
def bi_filter(img):
    dst = cv.bilateralFilter(img,0,100,15)
    return dst             


def img_test():
    img = cv.imread('E:/chenopencvblogimg/lena.jpg')
    #判断是否读取成功
    if img is None:
        print("Could not read the image,may be path error")
        return
    cv.namedWindow("origin Pic",cv.WINDOW_NORMAL)
    cv.imshow("origin Pic",img)

    img_show = bi_filter(img)
    cv.namedWindow("bi_filter",cv.WINDOW_NORMAL)
    cv.imshow("bi_filter",img_show)    
   
    #让显示等待键盘输入维持在那里,否则程序跑完就闪退啦!
    cv.waitKey(0)
    #销毁窗口
    cv.destroyAllWindows()

if __name__ == '__main__':
    sys.exit(img_test() or 0)

 

2.均值迁移滤波 

参数sp,定义的漂移物理空间半径大小;

参数sr,定义的漂移色彩空间半径大小;

 

#引入opencv模块
import cv2 as cv
#引入numpy模块
import numpy as np
#引入sys模块
import sys

#边缘保留滤波
def bi_filter(img):
    dst = cv.bilateralFilter(img,0,100,15)
    return dst  


#均值迁移滤波
def meanshift_filter(img):
    dst = cv.pyrMeanShiftFiltering(img,10,30)
    return dst  

def img_test():
    img = cv.imread('E:/chenopencvblogimg/lena.jpg')
    #判断是否读取成功
    if img is None:
        print("Could not read the image,may be path error")
        return
    cv.namedWindow("origin Pic",cv.WINDOW_NORMAL)
    cv.imshow("origin Pic",img)

    img_show = bi_filter(img)
    cv.namedWindow("bi_filter",cv.WINDOW_NORMAL)
    cv.imshow("bi_filter",img_show)    

    img_show = meanshift_filter(img)
    cv.namedWindow("meanshift_filter",cv.WINDOW_NORMAL)
    cv.imshow("meanshift_filter",img_show)    

    #让显示等待键盘输入维持在那里,否则程序跑完就闪退啦!
    cv.waitKey(0)
    #销毁窗口
    cv.destroyAllWindows()

if __name__ == '__main__':
    sys.exit(img_test() or 0)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值