openCV平滑函数----cvSmooth

来源:互联网 发布:喀秋莎录屏软件录微课 编辑:程序博客网 时间:2024/06/03 02:25

openCV平滑函数

[cpp] view plaincopyprint?
  1. void cvSmooth(  
  2.     const CvArr* src,  
  3.     CvArr* dst,  
  4.     int smooth = CV_GAUSSIAN,  
  5.     int param1 = 3,  
  6.     int param2 = 0,  
  7.     int param3 = 0,  
  8.     int param4 = 0  
  9. );  
 

注解:

(1)可能大家啊对CvArr的理解不是很深刻,可以将其看做C++中的基类,当然也包括IplImage

(2)smooth支持的类型:

       CV_BLUR 简单模糊 对每个像素param1,param2求和,并缩放1/(param1*param2),亦即求简单平均值

       CV_BLUR_NO_SCALE 简单无缩放变化的模糊 对每个像素param1,param2求和 特别说明的是输入图像和结果图像必须有不同的数值精度,以保证不会发生溢出,如果源图像是8u,则结果图像必须是16s或者32s。

       CV_MEDIAN 中值模糊 取中心像素的正方形领域类的每个像素的值用中间值代替

       CV_GAUSSIAN 高斯模糊 param3为零时,高斯卷积核sigma通过以下公式计算

           sigma(x) = (n(x)/2-1)*0.30+0.80,n(x)= param1

           sigma(y) = (n(y)/2-1)*0.30+0.80,n(y)= param2

          如果第四个参数指定,则第三个和第四个参数分别表示sigma的水平方向和垂直方向的值

          如果第三个,第四个参数已经指定,而前两个参数为0,那么窗口的尺寸由sigma确定速度较慢但最有效

       CV_BILATERAL 双向滤波 因为高斯模糊是在图像在空间内的像素是缓慢变化的,但随机的两个点可能形成很大的

像素差,高斯滤波在保留信号的条件下减少噪声,但在接近边缘的地方无效,双向滤波可以解决这个问题,但需要更多的时间代价,

其需要两个参数,param1表示空域中所使用的高斯核的宽度,param2表示颜色域高斯核的高度。

原创粉丝点击