zoukankan      html  css  js  c++  java
  • 图像模糊操作

    1.均值滤波

    blur(Mat src,Mat dst,Size(xradius,yradius),Point(-1,-1));

    输入图像,输出图像,滤波器大小,默认中心点(一般不做修改)

    2.高斯滤波

    GaussianBlur(Mat src,Mat dst,Size(x,y),sigmax,sigmay);

    输入图像,输出图像,滤波器大小,x方向上的σ大小,y方向上的σ大小

    #include"pch.h"
    #include<iostream>
    #include<opencv2/opencv.hpp>
    
    using namespace std;
    using namespace cv;
    
    int main(int argc, char **argv)
    {
        Mat src,dst1,dst2;
        src = imread("b.jpg");
        if (src.empty())
        {
            cout << "Load img failed..." << endl;
            return -1;
        }
        imshow("input image", src);
    
        blur(src, dst1, Size(5,5), Point(-1, -1));
        imshow("blur img", dst1);
    
        GaussianBlur(src, dst2, Size(5,5), 11, 11);
        imshow("Gaussian blur img", dst2);
        waitKey(0);
        return 0;
    }

    3.中值滤波

    对抑制椒盐噪声有很好的效果(去除噪点)

    对滤波器内的像素点进行排序,取中值代替中心像素点,同理也会有最大值最小值滤波

    mddianBlur(Mat src,Mat dst,ksize)

    ksize大于1且必须为基数

    4.双边滤波

    均值模糊会导致边缘像素信息丢失,因为均值滤波是基于平均权重

    高斯滤波一定程度上改善了这一问题,但无法完全解决,因为没有考虑到像素值的不同

    高斯双边模糊是边缘保留的滤波方法,避免了边缘信息的丢失,保留了图像轮廓不变(磨皮效果)

    像素点值的高差没有被抹去,只是使得相同高度的区域变得更加平缓

    bilateralFilter(src,dst,d=15,150,3)

    15表示计算半径,半径之内的像素点都会纳入计算

    150表示像素值的差,如果像素之差在150之内都会被计算

    3 d值必须大于0否则声明无效,否则用它来计算d值

     双边滤波加上掩膜操作就是美图的美颜操作

    #include<iostream>
    #include<opencv2/opencv.hpp>
    
    using namespace std;
    using namespace cv;
    
    int main(int argc, char **argv)
    {
        Mat src,dst1,dst2;
        src = imread("c.jpg");
        if (src.empty())
        {
            cout << "Load img failed..." << endl;
            return -1;
        }
        imshow("input image", src);
    /*
        blur(src, dst1, Size(5,5), Point(-1, -1));
        imshow("blur img", dst1);
    
        //GaussianBlur(src, dst2, Size(5,5), 11, 11);
        //imshow("Gaussian blur img", dst2);
        
        medianBlur(src, dst1, 3);
        imshow("median Blur img", dst1);
    */
        bilateralFilter(src, dst2, 15, 150, 3);
        imshow("bilateral Blur img", dst2);
    
        Mat resImg;
        Mat Kernel = (Mat_<int>(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);
        filter2D(dst2, resImg, -1, Kernel, Point(-1, -1), 0);
        imshow("Final Result", resImg);
    
        waitKey(0);
        return 0;
    }

  • 相关阅读:
    春招已近,这份GitHub万星的ML算法面试大全请收下
    [资源推荐] 必须收藏的两个查找论文和代码实现的网站!
    windows下安装pycocotools,亲测有效!
    GAN原理
    2018-07-02
    虚函数和纯虚函数
    友元
    string字符串
    实参和形参
    C/C++学习笔记汇总
  • 原文地址:https://www.cnblogs.com/wangtianning1223/p/12053095.html
Copyright © 2011-2022 走看看