中值滤波
中值滤波是一种非线性滤波,使用像素点领近点的的灰度值的中值代替改点的灰度值,可以去除脉冲噪声跟椒盐噪声
函数原型:
public static void MedianBlur(InputArray src, OutputArray dst, int ksize);
ksize:改参数必须大于1,且为奇数
Mat src = new Mat(@"I:\OpenCvSharp学习\3副本.jpg", ImreadModes.AnyColor);
Mat dst1 = new Mat();
Window srcWin = new Window("src", WindowMode.AutoSize, src);
Cv2.MedianBlur(src,dst1,11);
Window dstWin1 = new Window("dst1", WindowMode.AutoSize, dst1);
Cv2.WaitKey(0);
本例所示将源图的白点都消除了
双边滤波
双边滤波是一种非线性滤波器,是结合图像空间邻近度和像素值相似度的一种折中处理,尽量在降噪的同时保存边缘
函数原型:
public static void BilateralFilter(InputArray src, OutputArray dst, int d, double sigmaColor, double sigmaSpace, BorderTypes borderType = BorderTypes.Reflect101);
src:输入原图
dst:输出图
d:在滤波过程中使用的每个像素邻域的直径
sigmaColor:在颜色空间中过滤sigma。该参数值越大,表示像素邻域内更多的颜色会混合在一起,从而产生更大的半均等颜色区域
sigmaSpace:在坐标空间中过滤。参数值越大,越远的像素会相互影响(只要它们的颜色足够接近;见sigmaColor)。然后d>0,它指定的邻域大小与sigmspace无关,否则d与sigmspace成比例
borderType :一般是用默认值
Mat src = new Mat(@"I:\OpenCvSharp学习\3副本.jpg", ImreadModes.AnyColor);
Mat dst1 = new Mat();
Window srcWin = new Window("src", WindowMode.AutoSize, src);
Cv2.BilateralFilter(src,dst1,100,100.0,10.0);
Window dstWin1 = new Window("dst1", WindowMode.AutoSize, dst1);
Cv2.WaitKey(0);