OpenCV学习笔记5:图像处理 -- 图像模糊

1. 2D卷积(图像滤波)

图像作为一个一维信号,也可以通过多种低通过滤器(low-pass filters, LPF)和高通过滤器(high-pass filters, HPF)来过滤。

低通过滤器可以去除噪声,或者模糊图像。高通过滤器可以帮助在一个图像中找出边界。

OpenCV提供了一个函数,cv2.filter2D(),对一个图像进行内核卷积。

比方说使用一个5x5的滤波内核,即表示针对每一个像素,它的色值为:它周边5x5区域内所有像素色值累加,然后除25(等于计算这个区域内素有像素色值的均值)。

对一个图像里的所有像素都进行上述处理之后,等到一个过滤后的图像。

cv2.filter2D(src, ddepth, kernel)

a)src:源图像

b)ddepth:目标图像深度(图像深度:存储每个像素所用的位数)

c)kernel:卷积核,一个单通道浮点型矩阵

结果例子:

一个5x5的核,和一个50x50的核

OpenCV学习笔记5:图像处理 -- 图像模糊
 

2.图像模糊(图像平滑)

图像模式是使用一个低通滤波内核对一个图像进行卷积操作。可以去除噪声。

OpenCV提供了主要的4种模糊技术:

1)均值模糊

通过一个标准的箱式滤波器对一个图像进行卷积。取得核范围内所有像素色值的平均值然后赋给中心的像素。

cv2.blur(img, (5,5))

2)高斯模糊

使用一个高斯内核,需要制定核的大小是一个正奇整数。需要制定X和Y方向的标准偏差。

对于去除图像里的高斯噪声非常高效。

(高斯噪声是指它的概率密度函数服从高斯分布(即正态分布)的一类噪声)

cv2.GaussianBlur(src, ksize, sigmaX)

a)src:源图像

b)ksize:卷积核大小

c)X方向定向偏差

3)中值模糊

求卷积核内像素的中值,并赋值给中心像素。对去除椒盐噪声非常高效。

相对于高斯内核和标准箱式内核,可能会给像素赋在源图像里不存在的色值。中值平滑肯定会给中心像素设定一个在源图像存在的像素色值。这也非常有效地减少噪声。

cv2.medianBlur(src, ksize)

a)src:源图像

b)ksize:卷积核大小

4)双边模糊

相对于以上3种模糊方法是模糊边界,双边平滑保留边界,但是处理速度相对3种方法要慢。

cv2.bilateralFilter(src, d, sigmaColor, sigmaSpace)

a)src:源图像

b)d:参与模糊的邻居像素个数

c)sigmaColor:值越大表示在像素邻域内更远的颜色会被混合在一起,会生成一个更大的颜色近相等的区域

d)sigmaSpace:值越大表示颜色足够相似的更远的像素互相影响

结果例子:


OpenCV学习笔记5:图像处理 -- 图像模糊
 

-- End --

相关推荐