美文网首页
55. 高斯均值滤波

55. 高斯均值滤波

作者: 十里江城 | 来源:发表于2019-11-13 08:53 被阅读0次

    本文使用高斯滤波api和均值滤波的源码实现图像滤波

    高斯滤波:

    import cv2 
    import numpy as np
    
    img = cv2.imread('1.jpg', 1) 
    dst = cv2.GaussianBlur(img, (5, 5), 1.5)
    
    cv2.imshow('src', img)
    cv2.imshow('dst', dst)
    cv2.waitKey(0)
    

    结果如下:


    image.png

    均值滤波:

    实现步骤:

    • 读取原图片
    • 指定矩形内求像素和
    • 求各通道均值
    • 新通道值进行像素封装
    • 显示均值滤波后的图片
    import cv2 
    import numpy as np
    
    # 1 读取原图片
    img = cv2.imread('1.jpg', 1) 
    cv2.imshow('src', img)
    imgInfo = img.shape
    height = imgInfo[0]
    width = imgInfo[1]
    
    dst = np.zeros((height, width, 3), np.uint8)
    for i in range(3, height - 3):
        for j in range(3, width - 3):
            sum_b = int(0)
            sum_g = int(0)
            sum_r = int(0)
            
            # 2 指定矩形内求像素和         
            for m in range(-3, 3): # -3 ~ 2 一共遍历六个数
                for n in range(-3, 3):
                    (b, g, r) = img[i + m, j + n]
                    sum_b = sum_b + int(b)
                    sum_g = sum_g + int(g)
                    sum_r = sum_r + int(r)
            # 3 求各通道均值         
            b = np.uint8(sum_b / 36)
            g = np.uint8(sum_g / 36)
            r = np.uint8(sum_r / 36)
            
            # 4 新通道值进行像素封装         
            dst[i, j] = (b, g, r)        
    
    # 5 显示均值滤波后的图片
    cv2.imshow('dst', dst)
    cv2.waitKey(0)
    

    结果好像高斯滤波更模糊一些,另,由于没有处理边界,所以均值滤波后的图片四周有黑色。结果如下:


    image.png

    相关文章

      网友评论

          本文标题:55. 高斯均值滤波

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