openCV—Python(九)——图像平滑与滤波

openCV—Python(9)——图像平滑与滤波

一、函数简介

1、blur—图像均值平滑滤波

函数原型:blur(src, ksize, dst=None, anchor=None, borderType=None)

src:图像矩阵

ksize:滤波窗口尺寸

2、GaussianBlur—图像高斯平滑滤波

函数原型:GaussianBlur(src, ksize, sigmaX, dst=None, sigmaY=None, borderType=None)

src:图像矩阵

ksize:滤波窗口尺寸

sigmaX:标准差

3、medianBlur—图像中值滤波

函数原型:medianBlur(src, ksize, dst=None)

src:图像矩阵

ksize:滤波窗口尺寸

4、bilateralFilter—图像双边滤波

函数原型:bilateralFilter(src, d, sigmaColor, sigmaSpace, dst=None, borderType=None)

src:图像矩阵

d:邻域直径

sigmaColor:颜色标准差

sigmaSpace:空间标准差

二、实例演练

1、图像均值平滑滤波

代码如下:

#encoding:utf-8

import numpy as np
import cv2

image = cv2.imread("H:\\img\\lena.jpg")
cv2.imshow("Original",image)
cv2.waitKey(0)

#领域均值滤波
blurred = np.hstack([cv2.blur(image,(3,3)),
                     cv2.blur(image,(5,5)),
                     cv2.blur(image,(7,7))
                     ])
cv2.imshow("Averaged",blurred)
cv2.waitKey(0)

结果如下:

原图像:

openCV—Python(九)——图像平滑与滤波

平画后的图像(从左到右窗口宽度依次为:3、5、7)

openCV—Python(九)——图像平滑与滤波

2、图像高斯平滑滤波

代码如下:

#encoding:utf-8

import numpy as np
import cv2

image = cv2.imread("H:\\img\\lena.jpg")
cv2.imshow("Original",image)
cv2.waitKey(0)

#高斯滤波
blurred = np.hstack([cv2.GaussianBlur(image,(3,3),0),
                     cv2.GaussianBlur(image,(5,5),0),
                     cv2.GaussianBlur(image,(7,7),0)
                     ])
cv2.imshow("Gaussian",blurred)
cv2.waitKey(0)

结果如下:

原图像:

openCV—Python(九)——图像平滑与滤波

平画后的图像(从左到右窗口宽度依次为:3、5、7,标准差均为:0)

openCV—Python(九)——图像平滑与滤波

3、图像中值滤波

代码如下:

#encoding:utf-8

import numpy as np
import cv2

image = cv2.imread("H:\\img\\lena.jpg")
cv2.imshow("Original",image)
cv2.waitKey(0)

#中值滤波
blurred = np.hstack([cv2.medianBlur(image,3),
                     cv2.medianBlur(image,5),
                     cv2.medianBlur(image,7)
                     ])
cv2.imshow("Median",blurred)
cv2.waitKey(0)

结果如下:

原图像:

openCV—Python(九)——图像平滑与滤波

平画后的图像(从左到右窗口宽度依次为:3、5、7)

openCV—Python(九)——图像平滑与滤波

4、图像双边滤波

代码如下:

#encoding:utf-8

import numpy as np
import cv2

image = cv2.imread("H:\\img\\lena.jpg")
cv2.imshow("Original",image)
cv2.waitKey(0)

#双边滤波
blurred = np.hstack([cv2.bilateralFilter(image,5,21,21),
                     cv2.bilateralFilter(image,7, 31, 31),
                     cv2.bilateralFilter(image,9, 41, 41)
                     ])
cv2.imshow("Bilateral",blurred)
cv2.waitKey(0)

结果如下:

原图像:

openCV—Python(九)——图像平滑与滤波

平画后的图像(相关参数意义,请参考上述函数原型中的解释)

openCV—Python(九)——图像平滑与滤波

版权声明:本文为博主原创文章,未经博主允许不得转载。