OpenCV学习笔记(六)图像滤波

一、低通滤波器

1、频域、空域
有些图像含有大片强度值几乎不变的区域,而有些图像灰度级的强度值在整幅图像上的变化很大,忽高忽低。由此产生一种描述图像特性的方式,即观察上述变化的频率,这种特征称为频域。通过观察灰度分布来描述图像特征的,称为空域。因为图像是二维的,因此频率有垂直频率和水平频率。

2、滤波器
在频域分析的框架下,滤波器是一种放大图像中某些频段,同时滤掉或者减弱其他频段的算子。

3、低通滤波器——滤除高频
①blur(image, result, Size(5,5))函数,将每个像素的值替换为该像素邻域内的平均值(邻域是矩形),这种滤波器也叫块滤波器。
②GaussianBlur(image, result, Size(5,5), 1.5)函数,将每个像素的值替换为邻域内的加权平均值,邻近的像素比较远的像素具有更大的权重,可以使用高斯函数指定加权策略。一维高斯函数的公式为:  G(x)=Ae^{-x^{2}/2\sigma ^{2}},σ的值决定了高斯函数曲线的宽度,获得加权系数的方法是调用getGaussianKernel(9, sigma, CV_32F)函数。

4、线性滤波器
如果一种滤波器是用邻域像素的加权累加值来替换像素值,就称其为线性滤波器。blur函数就是一种线型滤波器,具体一点它是均值滤波器。GaussianBlur也是一种线型滤波器。boxFilter函数进行滤波时是用了一个仅由1组成的正方形内核。
使用均值滤波器并没有消除全部高频成分。

5、内核(掩码)
对图像应用一个滤波器相当于将内核移动到图像的每个像素上,并将每个对应像素乘以它的权重。这个运算就是卷积。

二、用滤波器进行缩减像素采样

降低图像精度的过程称为缩减像素采样,提升图像精度的过程称为提升像素采样。

1、空间假频
试图在图像中包含高频成分,但由于图片太小而无法包含时,会出现空间假频,看起来像打码了一样。
图像中精致的细节对应着高频,在缩小图片之前需要去除它的高频,通过低通滤波器实现。

2、奈奎斯特定理(Nyquist-Shannon)
如果把图像缩小一半,那么其可见的频率带宽也将减少一半。pyrDown函数实现图像缩减。功能相反的函数pyrUp,可以放大图像的尺寸。这两个函数可以用来创建图像金字塔,它是一种数据结构,由一幅图像不同尺寸的版本叠加起来,用于高效图像分析。

此外有函数resize,可以指定缩放后图像的尺寸。

3、像素插值

按比例缩放图像后,必须进行像素插值。resize函数的缺省方式采用的插值方式是双线性插值。还有双三次插值算法,考虑4×4矩阵内的邻域像素,运算量更大。

三、中值滤波器

中值滤波器是非线性滤波的一种,对消除椒盐噪声十分有用。使用函数medianBlur。非线性不能用核心矩阵表示,也不能进行卷积计算。它的原理是,将当前像素和它的邻域组成一个集合,然后计算出这个集合的中间值,当前像素的值被中间值替代。中值滤波器还有利于保留边缘的尖锐度,但它会洗去均值区域中的纹理。

四、用定向滤波器检测边缘

与低通滤波器相反的操作,放大图像中的高频成分,再用高通滤波器进行边缘检测。

1、Sobel滤波器
只对垂直或水平方向的图像频率起作用,被认为是一种定向滤波器。使用函数
 

//水平方向
cv::Sobel(image, sobelX, CV_8U,
          1, 0,//内核规格
          3,    //正方形内核的尺寸
          0.4, 128);//比例和偏移量
//垂直方向
cv::Sobel(image, sobelY, CV_8U, 
          0, 1, 
          3, 
          0.4, 128);

该滤波器得到的图像效果类似浮雕特效,如果将横纵图像叠加在一起,那么得到的图像就可以用作边缘检测。
Sobel算子是一种典型的用于边缘检测的线型滤波器,它基于两个内核,内核中数值的设定可以参考公式的系数。
Soble算子在水平和垂直方向计算像素值的差分,得到梯度的近似值,与一阶偏导数相关。
梯度是一个二维向量,具有范数和方向,梯度向量的范数表示变化的振幅,若需要求范数和向量可以将笛卡尔坐标系换算成极坐标系,利用函数cartToPolar实现转换

2、Soble算子是一种定向滤波器,由于梯度算子形式不同,因此产生了多种定向滤波器,这些滤波器都会计算图像函数的一阶导数。在滤波器方向上,像素强度变化大的区域将会得到较大的值,较平坦的区域将得到较小的值,这也是计算图像倒数的滤波器被称为高通滤波器的原因。

3、高通滤波器
导数滤波器属于低通滤波器的一种,对噪声等高频信号敏感。一般在应用导数滤波器之前会对图像做平滑化处理。看似是对平滑化结果求导数,可以替换为:先对内核求导,然后再与图像卷积。因为高斯内核是连续可导的,也就是高斯导数。

对于Soble算子的理解,可以联想电场线与等势面垂直的关系。

五、计算拉普拉斯算子

拉普拉斯算子也是一种基于图像导数的高通线性滤波器。它计算二阶导数来度量函数的曲率。函数Laplacian实现。它的计算是在浮点数类型图像上进行的。有时也叫高斯-拉普拉斯算子(LoG)。检测边缘时,边缘位于拉普拉斯函数的过零点。可以检测到亚像素级别的图像边缘。
插一句话:高斯函数,也叫正态分布函数,主要参数有\mu、\sigma\sigma。下方分别为一维、二维高斯函数。

1、不足
拉普拉斯过零点检测方法检测了所有边缘,不能区分强边缘和弱边缘。

2、增强对比度
从图像中减去它的拉普拉斯图像可以增强图像的对比度。

3、高斯差分
用两个不同带宽的高斯滤波器对同一幅图像做滤波,然后将这两个结果相减,就能得到由较高的频率构成的图像。这些频率被一个滤波器保留,被另一个滤波器丢弃。这种运算叫做高斯差分(DoG)

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值