美文网首页Python数据分析
[OpenCV官方教程中文版-段力辉译]-图像平滑(图像模糊)-

[OpenCV官方教程中文版-段力辉译]-图像平滑(图像模糊)-

作者: 六千宛 | 来源:发表于2021-06-26 21:35 被阅读0次

    1.cv2.blur(img, (3, 3)) 进行均值滤波

    参数说明:img表示输入的图片, (3, 3) 表示进行均值滤波的方框大小

    2. cv2.boxfilter(img, -1, (3, 3), normalize=True) 表示进行方框滤波,参数说明当normalize=True时,与均值滤波结果相同, normalize=False,表示对加和后的结果不进行平均操作,大于255的使用255表示

    3. cv2.Guassianblur(img, (3, 3), 1) 表示进行高斯滤波,

    参数说明: 1表示σ, x表示与当前值得距离,计算出的G(x)表示权重值


    image

    4. cv2.medianBlur(img, 3) #中值滤波,相当于将9个值进行排序,取中值作为当前值

    参数说明:img表示当前的图片,3表示当前的方框尺寸在图像的读取中,会存在一些躁声点,如一些白噪声,因此我们需要进行去躁操作

    5. cv2.bilateralFilter双边滤波

    流程:

    1.原始图片的输入
    2.使用cv2.blur进行均值滤波
    3.使用cv2.boxfilter 进行方框滤波, 比较normalize=True or normalize=False
    4.使用cv2.GussianBlur 进行高斯滤波
    5\. 使用cv2.medianBlur  进行中值滤波
    6.做一个合并显示
    
    import cv2
    import numpy as np
    
    # 1.图片中存在一些噪音点
    img = cv2.imread('lenaNoise.png')
    cv2.imshow('original', img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
    # 2. cv2.blur 使用均值滤波,即当对一个值进行滤波时,使用当前值与周围8个值之和,取平均做为当前值
    
    mean = cv2.blur(img, (3, 3))
    cv2.imshow('mean', mean)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
    # 3. cv2.boxFilter 表示进行方框滤波
    box = cv2.boxFilter(img, -1, (3, 3), normalize=True)
    cv2.imshow('box', box)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    # 当normalize=False 表示对加和后的9个点,不进行求平均的操作,如果加和后的值大于255,使用255表示
    box_1 = cv2.boxFilter(img, -1, (3, 3), normalize=False)
    cv2.imshow('box_1', box_1)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
    # 4. cv2.GaussianBlur 根据高斯的距离对周围的点进行加权,求平均值1,0.8, 0.6, 0.8 
    gaussian = cv2.GaussianBlur(img, (5, 5), 1)
    cv2.imshow('gaussian', gaussian)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
    # 5. cv2.medianBlur #将9个数据从小到大排列,取中间值作为当前值
    median = cv2.medianBlur(img, 3)
    cv2.imshow('median', median)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
    #bilateralFilter双边滤波
    #能在保持边界清晰的情况下有效的去除噪音
    #但是这种操作与其他滤波器相比会比较慢
    
    import cv2
    
    img=cv2.imread('1.jpg')
    
    #cv2.bilateralFilter(src, d, sigmaColor, sigmaSpace)
    #9 邻域直径,两个 75 分别是空间高斯函数标准差,灰度值相似性高斯函数标准差
    blur = cv2.bilateralFilter(img,9,75,75)
    
    cv2.imshow('bilateralFilter',blur)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
    # 6. 做一个合并显示
    imags = np.vstack((mean, gaussian, median))
    cv2.imshow('all', imags)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

    相关文章

      网友评论

        本文标题:[OpenCV官方教程中文版-段力辉译]-图像平滑(图像模糊)-

        本文链接:https://www.haomeiwen.com/subject/jaekyltx.html