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

iOS-Opencv 基础学习五 ----中值滤波(medianBlur)和 双边滤波(bilateralFilter)_第1张图片         iOS-Opencv 基础学习五 ----中值滤波(medianBlur)和 双边滤波(bilateralFilter)_第2张图片


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

}

iOS-Opencv 基础学习五 ----中值滤波(medianBlur)和 双边滤波(bilateralFilter)_第3张图片 iOS-Opencv 基础学习五 ----中值滤波(medianBlur)和 双边滤波(bilateralFilter)_第4张图片


你可能感兴趣的:(opencv与iOS)