opencv学习笔记2:图像滤波

对图像的滤波处理通常在图像上加一个滤波器,滤波器最常见的类型是线性滤波器,输出像素值由原始像素值加权值确定:

 g(i,j) =Σw,h f(i+w,j+h)*h(k,l), 其中h为卷积核,f为原始图像,g为目标图像。

 

3.2.1 boxfilter(方框滤波)

方框滤波是滤波器中最简单的一种,每一个输出像素值是卷积内像素值的平均值。

 

· 当normalize = true 时,盒式滤波就变成了均值滤波。也就是说,均值滤波是盒式滤波归一化(normalized)后的特殊情况。其中,归一化就是把要处理的量都缩放到一个范围内,比如(0,1),以便统一处理和直观量化。

· 当normalize = false时,为非归一化的盒式滤波,用于计算每个像素邻域内的积分特性,比如密集光流算法(dense optical flow algorithms)中用到的图像倒数的协方差矩阵(covariance matrices of image derivatives)。

方框滤波在opencv中通过调用boxFilter实现

 

3.2.2 高斯滤波

高斯滤波是一种线性平滑滤波,高斯滤波是通过对输入数组的每个点与输入的高斯滤波模板执行卷积计算然后将这些结果一块组成了滤波后的输出数组,通俗的讲就是高斯滤波是对整幅图像进行加权平均的过程,每一个像素点的值都由其本身和邻域内的其他像素值经过加权平均后得到。高斯滤波的具体操作是:用一个模板(或称卷积、掩模)扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值。

   

高斯滤波在opencv中通过调用GaussianBlur实现


3.2.3 中值滤波

中值滤波器是非线性的,对一个像素的相邻区域进行操作已确定输出像素的值。该像素及它的相邻区域组成一个数组,同时如名字所示,中值滤波器仅仅计算这组数的中值,并用中值替换当前的像素值。中值滤波器在去除椒盐噪点方面有显著功效,因为噪点像素不会被选为中值(它或为极大值或为极小值),与之相反均值滤波器会大大受到噪点的影响,因为均值滤波器计算的是平均值,而噪点像素会使相邻像素的平均值发生变化。

在opencv 中通过调用medianBlur实现

 

3.2.4 双边滤波

双边滤波中双边的意思是同时考虑两条边(因素),这两条边分别是空间域和值域。这里的空间域是指考虑空间位置关系,根据距离核心位置的距离的远近给予不同的加权值,原理和高斯滤波一样。而值域是指考虑邻域范围内的像素差值计算出滤波器系数,类似于α-截尾均值滤波器(去掉百分率为α的最小值和最大之后剩下像素的均值作为滤波器)。

双边滤波是结合图像的空间邻近度和像素值相似度的一种折中处理,同时考虑空域信息和灰度相似性,达到保边去燥的目的,具有简单、非迭代、局部的特点。双边滤波在图像处理领域中有着广泛的应用,比如去噪、去马赛克、光流估计等等对于高斯噪声,双边滤波比中值滤波的效果要好的多。

在opencv中双边滤波通过调用bilateralFilter()

猜你喜欢

转载自blog.csdn.net/liujiandu101/article/details/80540488