iOS-Opencv 基础学习五 ----中值滤波(medianBlur)和 双边滤波(bilateralFilter)


1.1 中值滤波

概念:

        中值滤波是一种典型的非线性滤波技术,其基本思想是用像素点邻域灰度值的中值来代替该像素点的灰度值,该方法在去除脉冲噪声、椒盐噪声的同时又能保留图像的边缘细节。

        中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术,其原理是把数字图像或数字序列中的一点的值用该点的一个邻域中各点值的中值替代,让周围的像素值接近真实值,从而消除孤立的噪声点。

        中值滤波在一定的条件下可以克服常见线性滤波器带来的图像细节模糊,而且对滤除脉冲干扰及图像扫描噪声非常有效,也用于保护边缘信息。(来自Openv3 入门编程 )

// 中值滤波
/*
  参数   7: 类型为ksize 第三个参数 孔径的尺寸  必须是大于1的奇数  3 5 7 9 11
 */
+ (UIImage *)ImageToMedianFilter:(UIImage *)image
{
    Mat mat_image_src;
    UIImageToMat(image, mat_image_src);
    Mat mat_image_out;
    medianBlur(mat_image_src, mat_image_out, 7);
    return MatToUIImage(mat_image_out);
}

         


1.2 双边滤波

双边滤波是一种非线性的滤波方法,是结合图像的空间邻近度和像素值相似度的一种折中处理,同时考虑空域信息和灰度相似性,优点是可以做边缘保存。在边缘附近,离得较远的像素不会对边缘上的像素值影响太多,这样就保证了边缘附近像素值的保存。但是由于保存了过多的高频信息,对于彩色图像里的高频噪声,双边滤波器不能很好地滤掉,只能对低频噪声很好地滤波。


// 双边滤波
+ (UIImage *)ImageTobilateraFilter:(UIImage *)image
{
    Mat mat_image_src,gray;
    UIImageToMat(image, mat_image_src);
//    cv::cvtColor(mat_image_src, gray,CV_BGR2BGRA);
    cvtColor(mat_image_src, gray, CV_RGBA2RGB, 7);

    Mat mat_image_out;
    bilateralFilter(gray, mat_image_out, 25, 25*2, 35);
    return MatToUIImage(mat_image_out);

}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值