(16)自定义线性滤波

/*
 *自定义线性滤波
         前言:之前讲过的掩膜,什么一般的滤波,一般的模糊如中值模糊,高斯模糊,这些内容从本质上来讲它都属于一个概念就是卷积
         所以我们在介绍自定义线性滤波的时候其实我们就是在介绍卷积,前面讲的是卷积的第一功能,卷积可以模糊一幅图像,可以降低
         图像的噪声,我们模糊的目的就是降噪,降低噪声
  *卷积概念:
        卷积其实是一个数学的概念,图像上借用过来叫卷积操作的话
        卷积是图像处理中一个操作,是kernel(卷积核又称为算子)在图像的每个像素上的操作
        kernel(卷积核)本质上一个固定大小的矩阵数组,其中心点称为锚点(anchor point)
  *卷积如何工作:
        把kernel放到像素数组之上,求锚点周围覆盖的像素乘积之和(包括锚点),用来替换锚点覆盖下像素点值称为卷积处理,有数学公式
        卷积有三个作用:模糊图像,提取边缘,可以进行图像甄选进行图像的锐化
   *常见算子
        Robert算子 2*2的一个卷积核
        Sobel算子 在边缘检测当中经常会用到,也是canny边缘检测最重要的中间的一步,通过Sobel算子求得梯度
        拉普拉斯算子 和Sobel算子寻找梯度,寻找图像的边缘,同样Robert算子也可以做这样的功能
   *自定义卷积模糊
        filter2D方法
        filter2D(Mat drc, //输入图像
        Mat dst, //模糊图像
        int depth, //图像深度32/8
        Mat kernel, // 卷积核/模板
        Point anchor, //锚点位置 输入的卷积核的大小一般都要是奇数 Point(-1, -1)自动找到中心位置
        double delta //计算出来的像素+delta)
        其中kernel是可以自定义的卷积核
*/
#include <iostream>
#include <opencv2/opencv.hpp>

using namespace std;
using namespace cv;

int main()
{
    Mat src, res;
    src = imread("D:/A_Graduation/Pictures/Segmentatio/1.jpg");
    imshow("src", src);

    //Robert算子 叫做梯度算子,去做图像的x方向的梯度和y方向的梯度得到的结果
    //两个45度,一个顺时针方向的45度,一个逆时针方向的45度,假设这个叫x方向
    Mat kernel_x = (Mat_<int>(2, 2) << 1, 0, 0, -1);
    filter2D(src, res, -1, kernel_x, Point(-1, -1));
    imshow("Robert_x", res);

    //Y方向
    Mat kernel_y = (Mat_<int>(2, 2) << 0, 1, -1, 0);
    filter2D(src, res, -1, kernel_y, Point(-1, -1));
    imshow("Robrt_y", res);

    //Sobel算子
    //水平方向 x方向 ... 竖直方向 y方向 .. 和上面的代码差不多 略

    //拉普拉斯算子 前面是说x方向y方向不同的差异,这个算子得到的是整个的差异 拉普拉斯算子是一个边缘检测的算子
    //和上面的代码差不多 略
    //还可以做进一步的处理,把小于一定值的给去掉,对边缘再进行加强
    //通过拉普拉斯可以获得图像的主要的轮廓,主要特征和信息

    //自定义卷积模糊
    Mat kernel = Mat::ones(Size(3, 3), CV_32F) / (float)(3 * 3); //算子的里面的值全是1
    filter2D(src, res, -1, kernel);
    imshow("kernel", res);

    waitKey(0);
    return 0;
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值