【OpenCV(C++)】图像处理:非线性滤波
【OpenCV(C++)】图像处理:非线性滤波 非线性滤波 中值滤波(Median filter) 双边滤波(Bilateral filter) 非线性滤波 在上一篇文章中所讨论的滤波器都是线性的,即两个信号之间的响应和它们各自响应之和相等,每个像素的输出值是一些输入像素的加权和。 在很多情况下,使用邻域像素的非线性滤波会得到更好的效果。 中值滤波(Median filter) 其基本思想是用像素点邻域灰度值的中值来代替该像素点的灰度值,该方法在去除脉冲噪声、椒盐噪声的同时又能保留图像的边缘细节。它可以克服线性滤波器所带来的图像细节模糊,而在实际运算过程中并不需要图像的统计特性,使得计算更加方便。 # include <opencv2/highgui/highgui.hpp> # include <opencv2/imgproc/imgproc.hpp> using namespace cv ; int main ( ) { Mat srcImage = imread ( "fg.jpg" ) ; imshow ( "[原图]中值滤波" , srcImage ) ; Mat dstImage ; medianBlur ( srcImage , dstImage , 7 ) ; imshow ( "[效果图]中值滤波" , dstImage ) ; waitKey ( 0 ) ;