利用opencv实现图像处理之几种滤波方法

1.均值滤波器

        均值滤波是在空域中进行相应的操作,在滤波的过程中选定一个模板,图像中每一点的像素值都由这个模板中所有点的像素值的均值代替。均值滤波公式为:

                                               利用opencv实现图像处理之几种滤波方法_第1张图片

         其中,f′(x,y)是含有噪声的原始图像,g(x,y)是经过均值滤波之后得到的图像,s是以点(i,j)为中心的模板中像素的集合,模板尺寸为m×n。

        均值滤波器也称为低通滤波器,可以把每个像素都当成滤波核的核心,然后计算出核内所有像素的平均值,最后让核心像素等于这个平均值。

         均值滤波计算速度比较快,但是随着模板尺寸的增加会在去噪的同时损坏图像的细节信息。

            

opencv将均值滤波封装成了blur()方法。

dst = cv2.blur(src, ksize, anchor, borderType)

 代码如下:

import cv2

img = cv2.imread('1.jpg')
dst1 = cv2.blur(img,(3,3))
dst2 = cv2.blur(img,(5,5))
dst3 = cv2.blur(img,(9,9))

cv2.imshow('img',img)
cv2.imshow('3*3',dst1)
cv2.imshow("5*5",dst2)
cv2.imshow('9*9',dst3)

cv2.waitKey()
cv2.destroyAllWindows()

2.中值滤波器

        中值滤波也是一种在空域中进行处理的去噪方法,滤波方式是选定一个模板,在这个模板中进行相应的操作,首先将模板中的像素值进行排序,选择序列中的像素中值作为模板中心的像素值,这样能够去除图像中与周边像素差异较大的噪声点,从而达到去噪的目的。滤波模板的选择是多样的,可以是正方形或长方形的矩阵,也可以是圆形或者十字形的。

        中值滤波公式为:

                                 

 

opencv将均值滤波封装成了medianBlur()方法。

dst = cv2.midanBlur(src, ksize)

利用opencv实现图像处理之几种滤波方法_第2张图片

 代码如下:

import cv2

img = cv2.imread('1.jpg')

dst1 = cv2.medianBlur(img,3)


cv2.imshow('img',img)
cv2.imshow('3*3',dst1)

cv2.waitKey()
cv2.destroyAllWindows()

3.高斯滤波器

        高斯滤波过程中,滤波核中像素会与卷积核进行卷积计算,最后将结果赋值给滤波核的核心像素。

opencv将均值滤波封装成了GaussianBlur()方法。

dst = cv2.GaussianBlur(src, ksize, sigmaX,sigmaY,borderType)

利用opencv实现图像处理之几种滤波方法_第3张图片

 代码如下:

import cv2

img = cv2.imread('1.jpg')

dst1 = cv2.GaussianBlur(img,(5,5),0,0)

cv2.imshow('img',img)
cv2.imshow('5*5',dst1)

cv2.waitKey()
cv2.destroyAllWindows()

4.双边滤波器

        双边滤波也是一种在空域中进行处理的去噪方法,通过考虑距离因素和像素值差异的影响,使它在去噪的同时,能够很好地保留图像的特征信息,具体模板权值公式如下:

                         利用opencv实现图像处理之几种滤波方法_第4张图片

 

 最终的滤波公式为:  
       
                            利用opencv实现图像处理之几种滤波方法_第5张图片

 

opencv将均值滤波封装成了bilateralFilter()方法。

dst = cv2.bilateralFilter(src, d,sigmaColor,sigmaSpace,borderType)

 

 代码如下:

import cv2

img = cv2.imread('1.jpg')

dst1 = cv2.bilateralFilter(img,15,200,100)


cv2.imshow('img',img)
cv2.imshow('3*3',dst1)


cv2.waitKey()
cv2.destroyAllWindows()

 

你可能感兴趣的:(图像处理,opencv,python)