opencv均值滤波,方盒滤波,cv2.boxFilter,cv2blur

均值滤波

        opencv使用均值滤波是通过cv2.blur来实现的,原理十分简单,就是根据周围取平均值

        下面对方法进行介绍

def blur(src, ksize, dst=None, anchor=None, borderType=None)
  • src:输入图像
  • ksize:卷积核大小,是一个元组
  • dst:输出图像
  • anchor:锚点;默认值 Point(-1,-1) 表示锚点位于内核中央。
  • borderType:用于推断图像外部像素的某种边界模式。有默认值BORDER_DEFAULT

        这个滤波对椒盐噪声效果比较好

import cv2
import numpy as np

lp = cv2.resize(cv2.imread('../images/jiaoyan.png'), None, fx=0.8, fy=0.8)

new_lp1 = cv2.blur(lp, (5, 5))

cv2.imshow('lp', np.hstack((lp, new_lp1)))
cv2.waitKey(0)
cv2.destroyAllWindows()


方盒滤波

        opencv方盒滤波通过cv2.boxFilter函数来实现,这个函数和cv2.blur基本一样的,当normalize=True时,与均值滤波结果相同, normalize=False,不进行归一化,大于255的使用255表示

        下面对函数进行介绍

def boxFilter(src, ddepth, ksize, dst=None, anchor=None, normalize=None, borderType=None)
  • src:输入图像
  • ddepth:输出图像深度,-1表示与原图像一样,一般都是-1
  • ksize:卷积核大小,是一个元组
  • dst:输出图像
  • anchor:锚点;默认值 Point(-1,-1) 表示锚点位于内核中央。
  • normalize:标识符,表示内核是否被其区域归一化。
  • borderType:用于推断图像外部像素的某种边界模式。有默认值BORDER_DEFAULT

        由于归一化和cv2.blur一样的,下面就展示不进行归一化的图像

import cv2
import numpy as np

lp = cv2.resize(cv2.imread('../images/jiaoyan.png'), None, fx=0.8, fy=0.8)

new_lp1 = cv2.boxFilter(lp, -1, (2, 2), normalize=False)

cv2.imshow('lp', np.hstack((lp, new_lp1)))
cv2.waitKey(0)
cv2.destroyAllWindows()

        不进行归一化,大部分都变成了白色 

猜你喜欢

转载自blog.csdn.net/m0_51545690/article/details/124038374
今日推荐