图像处理中的卷积运算一般都用来平滑图像、尖锐图像求边缘等等。主要看你选择什么样的核函数了。现在核函数很多,比如高斯平滑核函数,sobel核函数,canny核函数等等。这里举一个sobel核函数的例子来求图像的梯度。

Sobel自动求边缘图(梯度图)在opencv里有特定的函数,具体参照opencv文档(需要自己设定阈值)。这里主要讲怎么用已知的sobel算子(核函数)去平滑当前图像。

C++:void filter2D(InputArraysrc, OutputArray dst, int ddepth, InputArray kernel, Point anchor=Point(-1,-1), doubledelta=0,intborderType=BORDER_DEFAULT)

这里要注意的是kerne,写的是单通道浮点型矩阵。

Sobel核函数:

按图一为例,kernel内核为:

Mat kernelY=Mat::zeros(3,3,CV_32FC1);

        kernelY.at<float>(0,0)=1;

        kernelY.at<float>(0,1)=2;

        kernelY.at<float>(0,2)=1;

        kernelY.at<float>(1,0)=0;

        kernelY.at<float>(1,1)=0;

        kernelY.at<float>(1,2)=0;

        kernelY.at<float>(2,0)=-1;

        kernelY.at<float>(2,1)=-2;

        kernelY.at<float>(2,2)=-1;

注意类型。我一开始写成CV_8U和uchar类型,filter2D卷积后就全是白色的。。

然后就直接调用函数:

filter2D(src,sobelY,-1,kernelY,Point(-1,-1),0.0,BORDER_DEFAULT);

 

sobel函数是x,y方向的卷积的叠加,即:

Sx和sy是两种内核卷积后的图像矩阵。M是最后的sobel梯度图。

如果要直接用sobel函数,可以写成:

Sobel(src,edge1,-1,1,0,3,1.0,0.0,4);//两个方向

Sobel(src,edge2,-1,0,1,3,1.0,0.0,4);

edge=abs(edge1)+abs(edge2); //也可以采用标准的平方根形式叠加

两种方式最后得出的边缘图比较类似,个人感觉filter直接平滑的噪声更少。当然也可以认为检测出的'边缘点'(噪声点)个更少

(sobel) (filter)

Filter2D卷积运算的更多相关文章

  1. opencv::卷积运算函数filter2D()

    opencv::卷积运算函数filter2D() 使用掩模板矩阵(kernel)计算每个像素值 与原图相比,没有黑边 int main(int argc, char** argv) { Mat src ...

  2. iOS中的图像处理(二)——卷积运算

    关于图像处理中的卷积运算,这里有两份简明扼要的介绍:文一,文二. 其中,可能的一种卷积运算代码如下: - (UIImage*)applyConvolution:(NSArray*)kernel { C ...

  3. im2col:将卷积运算转为矩阵相乘

    目录 im2col实现 优缺点分析 参考 博客:blog.shinelee.me | 博客园 | CSDN im2col实现 如何将卷积运算转为矩阵相乘?直接看下面这张图,以下图片来自论文High P ...

  4. python conv2d scipy卷积运算

    scipy的signal模块经常用于信号处理,卷积.傅里叶变换.各种滤波.差值算法等. *两个一维信号卷积 >>> import numpy as np >>> x ...

  5. 卷积运算的本质,以tensorflow中VALID卷积方式为例。

    卷积运算在数学上是做矩阵点积,这样可以调整每个像素上的BGR值或HSV值来形成不同的特征.从代码上看,每次卷积核扫描完一个通道是做了一次四重循环.下面以VALID卷积方式为例进行解释. 下面是pyth ...

  6. MATLAB卷积运算(conv、conv2、convn)解释

    1 conv(向量卷积运算) 所谓两个向量卷积,说白了就是多项式乘法.比如:p=[1 2 3],q=[1 1]是两个向量,p和q的卷积如下:把p的元素作为一个多项式的系数,多项式按升幂(或降幂)排列, ...

  7. 基于INTEL FPGA硬浮点DSP实现卷积运算

    概述 卷积是一种线性运算,其本质是滑动平均思想,广泛应用于图像滤波.而随着人工智能及深度学习的发展,卷积也在神经网络中发挥重要的作用,如卷积神经网络.本参考设计主要介绍如何基于INTEL 硬浮点的DS ...

  8. CNN学习笔记:卷积运算

    CNN学习笔记:卷积运算 边缘检测 卷积 卷积是一种有效提取图片特征的方法.一般用一个正方形卷积核,遍历图片上的每一个像素点.图片与卷积核重合区域内相对应的每一个像素值乘卷积核 .内相对应点的权重,然 ...

  9. MATLAB卷积运算(conv、conv2)解释

    来源:https://www.cnblogs.com/hyb221512/p/9276621.html 1.conv(向量卷积运算) 所谓两个向量卷积,说白了就是多项式乘法.比如:p=[1 2 3], ...

随机推荐

  1. Go 学习之路:异常处理defer,panic,recover

    Go没有像Java那样的异常机制,它不能抛出异常.因为设计者们认为,将异常与控制结构混在一起容易使得代码变得混乱.于是乎引入Exception处理: defer,panic,recover; 简单描述 ...

  2. python学习之路-基本数据类型1 变量的概念、数字、字符串

    1 什么是数据类型? 每种编程语言都有自己的数据类型,用于标识计算机可以认识的数据,Python中主要的数据类型为字符串,整数,浮点数,列表,元祖,字典,集合七种主要的数据类型,其中以列表,字典为最主 ...

  3. php安装redis拓展

    1. 查看是否安装redis库 查看是否安装redis库了.可以通过下面2种方式查看. phpinfo()是否能输出redis的加载信息 在命令行执行`php -m` 输出gd 2. 安装redis库 ...

  4. 238. Product of Array Except Self(对O(n)和递归又有了新的理解)

    238. Product of Array Except Self     Total Accepted: 41565 Total Submissions: 97898 Difficulty: Med ...

  5. HBase——使用Put迁移MySql数据到Hbase

    先上code: /** * 功能:迁移mysql上电池历史数据到hbase * Created by liuhuichao on 2016/12/6. */ public class MySqlToH ...

  6. 【转】 mysql使用federated引擎实现远程访问数据库(跨网络同时操作两个数据库中的表)

    原文转自:http://www.2cto.com/database/201412/358397.html 问题: 这里假设我需要在IP1上的database1上访问IP2的database数据库内的t ...

  7. Arduino语言

    Arduino语言 Arduino语言是建立在C/C++基础上的,其实也就是基础的C语言,Arduino语言只不过把AVR单片机(微控制器)相关的一些参数设置都函数化,不用我们去了解他的底层,让我们不 ...

  8. python接口自动化1-发送get请求 前言

    前言 requests模块,也就是老污龟,为啥叫它老污龟呢,因为这个官网上的logo就是这只污龟,接下来就是学习它了. 一.环境安装 1.用pip安装requests模块 >>pip in ...

  9. Java反编译插件

    一.eclipse->help->Eclipse Marketplace 如下图:搜索JadClipse,install进行下载安装,

  10. LeetCode 454. 4Sum II (C++)

    题目: Given four lists A, B, C, D of integer values, compute how many tuples (i, j, k, l) there are su ...