美文网首页
56. 中值滤波

56. 中值滤波

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

    中值滤波步骤:

    • 读取原图信息
    • 读取灰度图
    • 将指定矩形内的灰度值装入一维数组
    • 将9个数排序
    • 取中值
    • 显示中值滤波后的图片
    # 中值滤波  3*3模板
    import cv2 
    import numpy as np
    
    # 1 读取原图信息
    img = cv2.imread('1.jpg', 1) 
    imgInfo = img.shape
    height = imgInfo[0]
    width = imgInfo[1]
    
    # 2 读取灰度图
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    
    dst = np.zeros((height, width, 3), np.uint8)
    collect = np.zeros(9, np.uint8)
    # 防止越界从1开始  对应以下从-1开始
    for i in range(1, height - 1):
        for j in range(1, width - 1):
            k = 0
            # 3 将指定矩形内的灰度值装入一维数组collect         
            for m in range(-1, 2): # -1 0 1
                for n in range(-1, 2):
                    grayValue = gray[i + m, j + n]
                    collect[k] = grayValue
                    k += 1
            
            # 4 将9个数排序
            for k in range(0, 9):
                p1 = collect[k]
                for t in range(k + 1, 9):
                    if p1 < collect[t]:
                        mid = collect[t]
                        collect[t] = p1
                        p1 = mid
            # 5 取中值          
            dst[i, j] = collect[4]        
    
    # 6 显示中值滤波后的图片  
    cv2.imshow('src', img)
    cv2.imshow('gray', gray)
    cv2.imshow('dst', dst)
    cv2.waitKey(0)
    
    

    结果如下:


    image.png

    相关文章

      网友评论

          本文标题:56. 中值滤波

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