频率域技术滤除周期噪声可行的原因是周期噪声在对应于周期干扰的频率处,以集中的能量脉冲形式出现。滤除的方法之一是选择性滤波器(带阻、带通和陷波)。

1. 带阻滤波器

  理想、巴特沃斯和高斯带阻滤波器表达式如下表:

python opencv 消除图像中的细小区域 opencv 去除小面积噪声_邻域


  滤波器的透视图如下:

python opencv 消除图像中的细小区域 opencv 去除小面积噪声_数字图像处理_02


  带阻滤波器的主要应用之一是在频率域噪声分量的一般位置近似已知的应用中消除噪声。如下图1所示,被正弦噪声污染的图像,噪声分量可看成是下图2中的傅里叶频谱中对称的亮点对,而且噪声分量位于关于变换原点的近似圆上,因此可使用圆对称带阻滤波器,如下图3所示(4阶的巴特沃斯带阻滤波器),通过设置适当的半径和宽度,其完全包围了噪声脉冲,并且带组滤波中通常要求尖锐的窄滤波器以保持更多的细节,结果如下图4所示:

python opencv 消除图像中的细小区域 opencv 去除小面积噪声_邻域_03

2. 带通滤波器

  带通滤波器和带阻滤波器执行的操作相反,但是通常不会在一幅图像上直接执行带通滤波【会消除太多的图像细节】。然而带通滤波在一幅图像中屏蔽选中频段导致的效果非常有用。

  我们可以在上图1上应用与带阻滤波器相对应的带通滤波器然后取带通滤波变换的反变换,得到上图1中的噪声图案,如下图所示:

python opencv 消除图像中的细小区域 opencv 去除小面积噪声_傅立叶变换_04

3. 陷波滤波器

  陷波滤波器阻止或通过事先定义的中心频率的邻域内的频率,如下图所示,展示了理想、巴特沃斯和高斯陷波带阻滤波器的三维图:

python opencv 消除图像中的细小区域 opencv 去除小面积噪声_方差_05


  由于傅立叶变换的对称性,陷波滤波器必须以关于原点对称的形式出现【如果陷波滤波器位于原点处陷波滤波器是其本身】。同样,也可以得到陷波带阻滤波器相对应的陷波带通滤波器通过而不是已知陷波区域中所包含频率的陷波滤波器。

4. 最佳陷波滤波

  当存在几种干扰分量时上面讨论的滤波过程会消除过多的图像细节,而且此时干扰成分通常不是单频脉冲【通常携带干扰模式信息的宽边缘】。这种情况下可应用最佳陷波滤波的方法,第一步屏蔽干扰的主要成分,第二步是从被污染的图像中减去该模式的一个可变的加权部分。

python opencv 消除图像中的细小区域 opencv 去除小面积噪声_方差_06来完成。如果滤波器构建为只可通过与干扰模式相关的分量,那么干扰噪声模式的傅立叶变换如下:

python opencv 消除图像中的细小区域 opencv 去除小面积噪声_邻域_07


  python opencv 消除图像中的细小区域 opencv 去除小面积噪声_方差_06的形式需要多方面判断那些是尖峰噪声干扰,为此需要观察显示的python opencv 消除图像中的细小区域 opencv 去除小面积噪声_数字图像处理_09(被污染图像的傅立叶变换)的频谱来交互地创建陷波带通滤波器。选择一个特殊的滤波器后,空间域的相应模式可由下式获得:

python opencv 消除图像中的细小区域 opencv 去除小面积噪声_方差_10


  因为被污染图像假设是由未污染图像python opencv 消除图像中的细小区域 opencv 去除小面积噪声_方差_11与干扰相加形成的,若python opencv 消除图像中的细小区域 opencv 去除小面积噪声_傅立叶变换_12完全一致,则从python opencv 消除图像中的细小区域 opencv 去除小面积噪声_数字图像处理_13上减去该干扰模式得到python opencv 消除图像中的细小区域 opencv 去除小面积噪声_方差_11即可。但通常我们得到的是python opencv 消除图像中的细小区域 opencv 去除小面积噪声_方差_15的一个估计值,因此,可以从python opencv 消除图像中的细小区域 opencv 去除小面积噪声_数字图像处理_13上减去python opencv 消除图像中的细小区域 opencv 去除小面积噪声_傅立叶变换_12的一个加权部分得到python opencv 消除图像中的细小区域 opencv 去除小面积噪声_方差_11的近似值,如下式:

python opencv 消除图像中的细小区域 opencv 去除小面积噪声_python_19


  python opencv 消除图像中的细小区域 opencv 去除小面积噪声_傅立叶变换_20为加权函数或调制函数,一种确定该函数的方法是使得python opencv 消除图像中的细小区域 opencv 去除小面积噪声_方差_21在每一点python opencv 消除图像中的细小区域 opencv 去除小面积噪声_方差_22的指定邻域上的方差最小。python opencv 消除图像中的细小区域 opencv 去除小面积噪声_方差_22的大小为python opencv 消除图像中的细小区域 opencv 去除小面积噪声_python_24的邻域,坐标python opencv 消除图像中的细小区域 opencv 去除小面积噪声_方差_22处,python opencv 消除图像中的细小区域 opencv 去除小面积噪声_方差_21的局部方差可根据样本估计,如下:

python opencv 消除图像中的细小区域 opencv 去除小面积噪声_方差_27


  其中python opencv 消除图像中的细小区域 opencv 去除小面积噪声_邻域_28是该邻域内python opencv 消除图像中的细小区域 opencv 去除小面积噪声_邻域_29的平均值,即:

python opencv 消除图像中的细小区域 opencv 去除小面积噪声_方差_30


  图像边缘或接近图像边缘的点,可以用局部邻域或者0来填充。  将上3式代入上2式,可以得到:

python opencv 消除图像中的细小区域 opencv 去除小面积噪声_邻域_31


  因为python opencv 消除图像中的细小区域 opencv 去除小面积噪声_傅立叶变换_20在邻域内基本保持不变,则当python opencv 消除图像中的细小区域 opencv 去除小面积噪声_方差_33python opencv 消除图像中的细小区域 opencv 去除小面积噪声_傅立叶变换_34时给出近似式:

python opencv 消除图像中的细小区域 opencv 去除小面积噪声_傅立叶变换_35

  这样可在该邻域内得到:

python opencv 消除图像中的细小区域 opencv 去除小面积噪声_python_36


  则上3式变为:

python opencv 消除图像中的细小区域 opencv 去除小面积噪声_方差_37


  最小化python opencv 消除图像中的细小区域 opencv 去除小面积噪声_数字图像处理_38,解python opencv 消除图像中的细小区域 opencv 去除小面积噪声_傅立叶变换_39得到python opencv 消除图像中的细小区域 opencv 去除小面积噪声_傅立叶变换_20:

python opencv 消除图像中的细小区域 opencv 去除小面积噪声_python_41


  这样,要获得复原图像python opencv 消除图像中的细小区域 opencv 去除小面积噪声_方差_21,可根据上式计算python opencv 消除图像中的细小区域 opencv 去除小面积噪声_傅立叶变换_20再计算得。如果调制函数在某一邻域假设为常量,则只需在每个非重叠邻域的中心点计算python opencv 消除图像中的细小区域 opencv 去除小面积噪声_傅立叶变换_20,然后用他处理邻域内的所有点。