OpenCV重写冈萨雷斯——自适应中值滤波器
自适应中值滤波器 传统中值滤波器处理低概率椒盐噪声退化的图像效果令人满意 但是对于 P = 0.2 的脉冲噪声退化过的图片的处理效果就很令人失望,会丢失很多细节,由此,自适应中值滤波器诞生,与传统不同的是,自适应中值滤波器尝试保留细节。 冈萨雷斯中给出的过程是: 进程A: A1 = Z<sub>med</sub> -Z<sub>min</sub> A2 = Z<sub>med</sub> -Z<sub>max</sub> if(A1 > 0 && A2 < 0 ) goto B else if ( S < S<sub>max</sub>) goto A else return Z<sub>med</sub> 进程B: B1 = Z<sub>xy</sub> -Z<sub>min</sub> B2 = Z<sub>xy</sub> -Z<sub>max</sub> if(B1 > 0 && B2 < 0 ) return Z<sub>xy</sub> else return Z<sub>med</sub> 过程的主要思想就是 如果当前像素点灰度值不是脉冲,则保留,当滤波器扩大到指定最大之后则选取中值为结果,可能该处是边缘。 突发奇想 既然要尽可能多的保留图像原本细节 为什么不把B过程和A过程交换一下逻辑 经过试验结果是差不多的0。0 实验图片 #include < opencv2