55. 高斯均值滤波

2019-11-13  本文已影响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
上一篇下一篇

猜你喜欢

热点阅读