前言

1.在图像处理中,特别在深度学习图像处理,最常看到图像卷积操作,那什么是卷积呢,卷积就是两个原函数产生一个新的函数,两个函数之间的这种操作就称着卷积,在图像这里的图像卷积也用输入的图像矩阵与一个特定的矩阵进行操作得到一个新的图像。
2.那先了解二维矩阵的卷积是如何运算,之后再讲讲卷积在图像中的应用。

卷积运算

1.一个模板矩阵和另一个输入矩阵进行卷积,是使锚点覆盖在待计算矩阵元素上面,然后计算元素值与被覆盖的卷积核中的值的乘积和。将这个和赋值给当前元素,这就是卷积的过程
那现在假设有待处理矩阵src,模板是Kernel,如下图:

2.计算公式如下:

3.这里只演示运算方式,先不对卷积核进行180度旋转,也暂时不考虑扩展边界问题,只拿卷积核与输入矩阵做运算,那么一个44的矩阵与一个33的核运算,不超出边界的计算的话,最终只得到一个22的矩阵,步骤如下图。

那么最终得到的矩阵是一个2
2的矩阵,如下图:

4.最终得到的矩阵与原矩阵大小不一致,这肯定不是我们想要的结果,那么这里就要用到扩展边界这个概念,如果不是很清楚什么是边界扩展,可以看我之前的博文,我这里使用特定的值(0)来扩展边界,扩展的大小为卷积核的半径。扩展之后如下图:

运算时卷积核滑动的步骤:

运算得到的结果:

这里只演示卷积的运算方法,没有对卷积核做180度的旋转,也没有对负数取绝对值。

OpenCV图像处理使用笔记(七)——卷积运算原理相关推荐

  1. 卷积神经网络互相关运算和卷积运算原理

    卷积神经网络用的其实不是卷积运算,实际用的是互相关运算:互相关运算和卷积运算的区别在于对输入结果所加的权重系数的顺序不同而已,但由于神经网络本身就是训练参数的,所以两者的输出结果其实是一样的,而互相关 ...

  2. OpenCV图像处理使用笔记(八)——Sobel算子

    前言 前面博客讲了矩阵之间的卷积操作,在图像处理中,使用一些标准的模板的卷积核与原图像进行运算,可以改变像素强度,从而影响周围其他像素的强度,常用于图像模糊.锐化及边缘检测等. Sobel算子 1.S ...

  3. OpenCV图像处理使用笔记(五)——图像边界拓展

    前言 1.在OpenCV滤波和卷积算法中,在进行核运算的过程时候,矩阵边界拓展是一个非常重要的处理,OpenCV提供的函数copyMakeBorder()来拓展边界. 2.我的系统环境是Linux,加 ...

  4. OpenCV图像处理使用笔记(六)——图像滤波

    前言 1.图像滤波也叫图像模糊,是平滑图像像素常用处理的方式,通常是为了达到减少图像噪声和伪影,或者降低图像分辨率,OpenCV提供了常用的五种图像模糊操作. 2.我的这里演示的系统环境是Linux, ...

  5. OpenCV图像处理使用笔记(四)——图像融合

    前言常用 1.在OpenCV中定义了好多函数用来操作图像矩阵,有两个矩阵相加的,相减的,混合的,下面我使用QT加OpenCV演示图像融合这个函数. 2.我的IDE是Qt creator,OpenCV的 ...

  6. OpenCV图像处理使用笔记(二)——图像矩阵的掩膜操作

    前言 1.数字图像处理中的掩膜的概念是起源于于PCB制版的过程,在半导体制造中,许多芯片工艺步骤采用光刻技术,用于这些步骤的图形"底片"称为掩膜(也称作"掩模" ...

  7. python像素处理_Python+OpenCV图像处理(五)—— 像素运算

    最近在忙毕业设计,只能偶尔更新博客........ 一.像素的算术运算 像素的算术运算涉及加减乘除等基本运算(要进行算术运算,两张图片的形状(shape)必须一样) 代码如下: #像素的算术运算(加. ...

  8. tensorflow学习笔记七----------卷积神经网络

    卷积神经网络比神经网络稍微复杂一些,因为其多了一个卷积层(convolutional layer)和池化层(pooling layer). 使用mnist数据集,n个数据,每个数据的像素为28*28* ...

  9. 统计学习方法笔记(七)-线性支持向量机原理及python实现

    线性支持向量机 线性支持向量机 定义 线性支持向量机 线性支持向量机学习算法 代码案例 TensorFlow 案例地址 线性支持向量机 实际场景中训练数据往往不是线性可分的,当训练数据近似线性可分时, ...

最新文章

  1. 浅谈几种区块链网络攻击以及防御方案之日蚀攻击
  2. opengl开启垂直同步_你的下一部鼠标,何必是鼠标?来试试肯辛通垂直无线轨迹球?...
  3. php获取表单$_files,PHP中$_FILES的使用方法及注意事项说明
  4. 中国和英国的旅行的对比
  5. neo4j 连接java
  6. 什么是光纤收发器?光纤收发器作用是什么?
  7. java 对应sql驱动版本_关于Oracle JDBC驱动版本、JDK版本、数据库版本对应关系(相关的报错:ORA-28040)...
  8. MySQL数据库的安装及环境配置
  9. c/c++教程 - 1.2 变量、常量
  10. 如何使用ELK来监控性能
  11. 图(一):图的邻接表表示
  12. Hibernate HQL基础
  13. 手机QQ2009(塞班第三版)聊天记录提取完全代码
  14. php 判断客户端类型,基于php实现判断客户端类型
  15. cdr x4检测显示软件产品已被禁用警告弹窗,如何解决教程分享
  16. Exchange Server 2013 运维系列——EMS实用命令收集(持续更新中...)
  17. CPU使用率过高问题排查及Linux之top命令用法详解
  18. 【永磁同步电机转速环ADRC电流环ADRC双环无传感器控制】
  19. 某“工匠杯”内部预选赛
  20. 可以减税 PCA 什么是PostgreSQL

热门文章

  1. __name__=='__main__'的理解和使用
  2. 分类器是如何做检测的?(1)——CascadeClassifier中的detectMultiScale函数解读
  3. 国内CVPR和图像处理领域的公司和研究机构
  4. jvm理论-字节码指令
  5. 金城教授:基于手绘草图的图像检索技术研究
  6. RabbitMQ指南(中)
  7. 从0开始学习 GitHub 系列之「初识 GitHub」
  8. 深度学习(二十六)Network In Network学习笔记-ICLR 2014
  9. cocos2dx游戏开发——微信打飞机学习笔记(三)——WelcomeScene的搭建
  10. nginx2goaccess.sh脚本内容