Opencv(三):图像滤波及去噪

一、重点

图像滤波的基本原理

图像预处理滤波方法

数学形态学滤波

二、滤波公式

图像滤波类似于卷积,使用n*n的矩阵计算,示意图如下:

Opencv(三):图像滤波及去噪_第1张图片

三、滤波器类型

(1)平均滤波

滤波器内部元素均为1,如下所示:

Opencv(三):图像滤波及去噪_第2张图片

(2)加权平均滤波

如高斯滤波,滤波器内部元素呈高斯分布形状,如下所示:

Opencv(三):图像滤波及去噪_第3张图片

(3)中值滤波

确定窗口位置,该窗口位置智能有奇数个像素,将像素灰度值按大小排列,取中间值,如下所示:

Opencv(三):图像滤波及去噪_第4张图片

中值滤波对椒盐噪声效果较好

三、图像形态学操作

(1)膨胀

Opencv(三):图像滤波及去噪_第5张图片

(2)腐蚀

Opencv(三):图像滤波及去噪_第6张图片

(3)开闭运算

开运算:先腐蚀后膨胀

闭运算:先膨胀后腐蚀

使用先开后比闭的操作,可以有效的去除噪声

四、函数实现

#高斯滤波
GaussianBlur()

#中值滤波
medianBlue()

#形态学滤波
morphologyEx()

其中在形态学滤波中,MORPH_OPEN 指的是开运算,MORPH_CLOSE 指的是闭运算。

 

五、代码实现

1. 高斯滤波

import cv2 as cv

lena = cv.imread("E:/A_linpan/cv_code_tom/hello_world/data/lena.jpg")
gauss = cv.GaussianBlur(lena, (3,3), 0)

cv.imshow('gauss', gauss)
cv.imshow('lena', lena)
cv.waitKey()
cv.destroyAllWindows()

如下图所示,经过高斯滤波以后的图像较原始图像模糊一些,去除噪声。

2. 中值滤波

import cv2 as cv

lena = cv.imread("E:/A_linpan/cv_code_tom/hello_world/data/lena.jpg")
median = cv.medianBlur(lena, 3)
cv.imshow("median", median)
cv.imshow('lena', lena)
cv.waitKey()
cv.destroyAllWindows()

如下图所示,经过中值滤波的图像较原始图像模糊。

3. 形态学滤波

import cv2 as cv

lena = cv.imread("E:/A_linpan/cv_code_tom/hello_world/data/baboon.jpg")
morph = cv.morphologyEx(lena, cv.MORPH_OPEN, (3,3))
morph = cv.morphologyEx(lena, cv.MORPH_CLOSE, (3,3))
cv.imshow("morph", morph)
cv.imshow('lena', lena)
cv.waitKey()
cv.destroyAllWindows()

 

你可能感兴趣的:(opencv)