1,中值滤波
中值滤波 : 是一种非线性滤波,使用像素点领近点的的灰度值的中值代替改点的灰度值,
可以去除脉冲噪声跟椒盐噪声.
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);
本例所示将源图的白点都消除了
2, 双边滤波
双边滤波是一种非线性滤波器,是结合图像空间邻近度和像素值相似度的一种折中处理,尽量在降噪的同时保存边缘
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);