码迷,mamicode.com
首页 > 其他好文 > 详细

OpenCV笔记(七)——图像平滑的四种方法

时间:2014-11-24 11:49:48      阅读:262      评论:0      收藏:0      [点我收藏+]

标签:blog   http   ar   color   sp   strong   on   div   2014   

Opencv中处理图像平滑的手段主要有4种:箱式滤波器、高斯滤波器、中值滤波器、双边滤波器。

 

1. 箱式滤波器 Normalized Box Filter

箱式滤波器将当前像素的值替换为所有kernel范围内像素的值的平均值。公式如下:

 

bubuko.com,布布扣
bubuko.com,布布扣
bubuko.com,布布扣
bubuko.com,布布扣

bubuko.com,布布扣

如果是3x3的核,则它对应的核是1/9 * [1, 1, 1; 1, 1, 1; 1, 1, 1]

OpenCV中的函数为:

void blur(InputArray src, OutputArray dst, Size ksize, Point anchor=Point(-1, -1), int borderType=BORDER_DEFAULT)

参数ksize就是kernel的尺寸。

anchor默认为Point(-1, -1),意味着以kernel的中心点为基准点进行滤波。在这里意义不大。

2. 高斯滤波器 Gaussian Filter

在高斯滤波器中,kernel范围内的像素所占的权重是高斯分布的值。kernel中心点的权重为高斯分布的中点的值。其余的像素所占的权重与它离中心点的距离成反比。

举个例子,对于一维高斯分布,G(x) = Ae-x^2/(2σ^2) ,在[-4, 4]的范围内,如果sigma=0.5,则一维高斯滤波器的系数为:[0.0 0.0 0.00026 0.10645 0.78645 0.10645 0.00026 0.0 0.0]

这个系数也比较好理解,因为在均值+3倍sigma之外的地方,高斯分布的概率基本为0。

当sigma=1.5时,系数为[0.00761 0.036075 0.10959 0.21345 0.26666 0.21345 0.10959 0.03608 0.00761]

而二维的高斯滤波器,可以对图像的行应用一维高斯滤波器,接着对图像的列应用相同的一维滤波器。这利用的是高斯滤波器的可分离特性。(此处参考《OpenCV2 计算机视觉编程手册》)

OpenCV中的函数为:

void GaussianBlur(InputArray src, OutputArray dst, Size ksize, double sigmaX, double sigmaY=0, int borderType=BORDER_DEFAULT)

参数ksize就是kernel的尺寸。

sigmaX是高斯分布在X方向上的标准差。

sigmaY默认为0,则与sigmaX相等。如果sigmaX和sigmaY均为零,则他们自动由getGaussianKernel()算出。

3. 中值滤波器 Median Filter

中值滤波器比较简单,就是在kernel的范围内,以中值点作为中心点的值。

OpenCV中的函数为:

void medianBlur(InputArray src, OutputArray dst, int ksize)

4. 双边滤波器 Bilateral Filter

双边滤波器的详细解释见:http://homepages.inf.ed.ac.uk/rbf/CVonline/LOCAL_COPIES/MANDUCHI1/Bilateral_Filtering.html#Index

该滤波器的优点就是能够保留边缘的信息。缺点是速度较慢。

OpenCV中的函数为:

void bilateralFilter(InputArray src, OutputArray dst, int d, double sigmaColor, double sigmaSpace, int borderType=BORDER_DEFAULT)

不知为不知,等看懂了再来解释~

 

OpenCV笔记(七)——图像平滑的四种方法

标签:blog   http   ar   color   sp   strong   on   div   2014   

原文地址:http://www.cnblogs.com/nipan/p/4118224.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!