码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-08-18 16:22:47      阅读:236      评论:0      收藏:0      [点我收藏+]

标签:python

一、函数简介

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)

结果如下:

原图像:

技术分享

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

技术分享

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)

结果如下:

原图像:

技术分享

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

技术分享

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)

结果如下:

原图像:

技术分享

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

技术分享

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(9)—— 图像平滑与滤波

标签:python

原文地址:http://blog.csdn.net/jnulzl/article/details/47751983

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!