本文目的
目的:学习使用opencv的几种滤波
语言:java
版本:opencv-410
简介:主要介绍均值滤波、高斯滤波、中值滤波、双边滤波
分解介绍
均值滤波
原理:就是将一个区域内的像素值求和取平均值,然后用这个平均值替换区域中心的像素值。openCV函数:blur(源Mat对象,目标Mat对象,Size对象,Point对象)参数:
Size对象用来确定区域大小,Point对象如果x,y都是-1则表示更新区域中心的像素。
高斯滤波
高斯滤波:高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程。
通俗的讲,高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到
opencv函数:GaussianBlur(src, dst, ksize, sigmaX, sigmaY)参数:
src:源Mat对象
dst:目标Mat对象
ksize:Size对象
sigmaX:x方向正太分布参数,
sigmaY:y方向正太分布参数
中值滤波
原理:中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术,中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近的真实值,从而消除孤立的噪声点。中值滤波可以有效消除散粒噪音,脉冲噪音,椒盐噪音。同时又可以保留图像中的边缘细节。
opencv函数:
_ _medianBlur(src, dst, ksize)参数:同上
**
图像双边滤波
原理:高斯滤波器是求中心点邻近区域像素的高斯加权平均值。
这种高斯滤波器只考虑像素之间的空间关系,不会考虑像素值之间的关系(像素的相似度)
所以高斯方法不会考虑一个像素是否位于边界。因此边界也会别模糊掉
双边滤波在同时使用空间高斯权重和灰度值相似性高斯权重。
空间高斯函数确保只有邻近区域的像素对中心点有影响,灰度值相似性高斯函数确保只有与中心像素灰度值相近的才会被用来做模糊运算,所以这种方法会确保边界不 会被模糊掉,因为边界处的灰度值变化比较大
opencv函数:
bilateralFilter(src, dst, d, sigmaColor, sigmaSpace_)_参数:
src,dst同上
d:区域半径,定义的要使用的内核的大小
sigmaColor: 颜色空间过滤器的sigma值,这个参数的值越大,表明该像素邻域内有越宽广的颜色会被混合到一起,产生较大的半相等颜色区域。
sigmaSpace:是当区域半径给的是0时,用来计算区域范围的,一般情况下没用,随便给个数就行。
代码
package
效果
程序演示了每个滤波不断增加内核大小时的效果