OpenCvSharp学习(十七):滤波,中值滤波,双边滤波

中值滤波
中值滤波是一种非线性滤波,使用像素点领近点的的灰度值的中值代替改点的灰度值,可以去除脉冲噪声跟椒盐噪声
函数原型:

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);

在这里插入图片描述

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值