Opencv cvSmooth平滑滤波函数

/* Smoothes array (removes noise) */
CVAPI(void) cvSmooth( const CvArr* src, CvArr* dst,
                      int smoothtype CV_DEFAULT(CV_GAUSSIAN),
                      int size1 CV_DEFAULT(3),
                      int size2 CV_DEFAULT(0),
                      double sigma1 CV_DEFAULT(0),
                      double sigma2 CV_DEFAULT(0));


 void cvSmooth( const CvArr* src, CvArr* dst,int smoothtype=CV_GAUSSIAN,

                          int param1, int param2, double param3, double param4 );
src:输入图像.
dst:输出图像.
smoothtype平滑方法:
CV_BLUR_NO_SCALE(简单不带尺度变换的模糊) - -对每个象素的 param1×param2 领域求和。如果邻域大小是变化的,可以事先利用函数 cvIntegral 计算积分图像。
CV_BLUR (simple blur)- -对每个象素param1×param2邻域求和并做尺度变换 1/(param1×param2)。
CV_GAUSSIAN(gaussian blur) - -对图像进行核大小为 param1×param2 的高斯卷积。
CV_MEDIAN(median blur) - -对图像进行核大小为param1×param1 的中值滤波 (邻域是方的)。
CV_BILATERAL(双向滤波) - -应用双向 3x3 滤波,彩色 sigma=param1,空间 sigma=param2.。

       双向滤波是”边缘保留滤波“的图像分析方法中的一种。将它与高斯平滑对比后会更容易理解。进行高斯滤波的通常原因是真实图像在空间内的像素是缓慢变化的,因此邻近点的像素变化不会很明显。但是随机的两个点就可能形成很大的像素差(即空间上噪声点不是相互联系的)。正式基于这一点,高斯滤波在保留信号的条件下减少噪声。但是这种方法在接近边缘处就无效了,因为边缘处的相邻像素联系不太紧密,因此,高斯滤波会磨平边缘。双边滤波能够提供一种不会将边缘平滑掉的方法,但作为代价,需要更多处理时间。与高斯滤波类似,双边滤波会依据每个像素及其邻域构造一个加权平均值,加权计算包括两个部分,其中第一部分加权方式与高斯平滑中的相同,第二部分也属于高斯加权,但不是基于中心像素点与其他像素点的空间距离之上的加权,而是基于其他像素与中心像素的亮度差值的加权。可以将双边滤波视为高斯平滑,对相似的像素富裕较高的权重,不相似的像素赋予较小权重。这种滤波的典型效果就是使处理过的图像看上去像是一幅源图的水彩画,可用于图像的分割。双边滤波含有两个参数。第一个参数代表空域中所使用的高斯核的宽度,与高斯滤波的sigma参数类似。第二个参数代表颜色域内高斯核的宽度。第二个参数越大,表明带滤波的强度或颜色范围越大(因此不连续的程度越高,以便保留)。

调用源码如下:

//高斯滤波先,以平滑图像
  cvSmooth(pFrameMat, pFrameMat, CV_GAUSSIAN, 3, 3,0, 0);



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值