全文共988个字,6张图,预计阅读时间8分钟。

一看这个标题就会想,这有什么大惊小怪的,可能好多人觉得这是个脑残话题,但我确实误解了两三年……

今天在读《OpenCV算法精解》的时候,发现对两个矩阵做卷积运算的时候,作为卷积算子的矩阵要逆时针旋转180度,这是以前从来没注意过的步骤, 说来惭愧,平时都是直接调用API,忽略了原理,以为卷积就是像很多图上画的,一个卷积核挨着扫描另一个矩阵,结果叠加起来,当初上数字图像处理课的时候也手算过卷积,不知道是老师讲错了还是我记错了,总之一直都没注意到卷积运算其实是「先翻转再平移」。

维基百科中这样描述卷积的物理意义:

在泛函分析中,卷积、叠积、摺积或旋积,是通过两个函数f和g生成第三个函数的一种数学算子,表征函数f与经过翻转和平移的g的乘积函数所围成的曲边梯形的面积。

连续卷积

数学定义是:

函数f和g是定义在Rn上的可测函数,f与g的卷积记做f*g,它是其中一个函数翻转并平移后与另一个函数的乘积的积分,是一个对平移量的函数,也就是:

连续卷积公式(From Wikipedia)

知乎上有一个关于「如何通俗易懂地解释卷积」的问答,有很多解释版本,也都通俗易懂,挺有意思,但是个人认为维基百科的下面这张图用于理解卷积已经足够。特别注意圈住的那句话,对理解卷积的意义很有帮助。

图解卷积(From Wikipedia)

离散卷积

离散卷积(From Wikipedia)

Example

我主要做图像处理,所以用到的是离散卷积。使用python做验证。

下面这个图是我们最常见的卷积运算图:

卷积运算图(来自百度图片搜索)

中间的卷积核,其实是已经逆时针旋转过180度的,即做卷积的两个矩阵其实是[[2, 1, 0, 2, 3], [9, 5, 2,4, 2, 0], [2, 3, 4, 5, 6], [1, 2, 3, 1, 0], [0, 4, 4, 2, 8]]和[[1, 0, -1], [1, 0, -1], [1, 0, -1]],没有旋转只有乘积求和就不叫卷积运算。

先来两个矩阵,根据公式手动推导一下:

手算卷积

可以发现,只有卷积核旋转180度再扫描,才会和公式推导计算的结果一样,将I和K矩阵用python做卷积:

python卷积.png

和我们手算的一样。所以自己做卷积的时候,记得「翻转再平移」……或者干脆用公式计算,至少不会错。

原文链接:https://www.jianshu.com/p/3b3a6743cab7

查阅更为简洁方便的分类文章以及最新的课程、产品信息,请移步至全新呈现的“LeadAI学院官网”:

www.leadai.org

请关注人工智能LeadAI公众号,查看更多专业文章

大家都在看

LSTM模型在问答系统中的应用

基于TensorFlow的神经网络解决用户流失概览问题

最全常见算法工程师面试题目整理(一)

最全常见算法工程师面试题目整理(二)

TensorFlow从1到2 | 第三章 深度学习革命的开端:卷积神经网络

装饰器 | Python高级编程

今天不如来复习下Python基础

什么!卷积要旋转180度?!相关推荐

  1. 高通平台android7.1系统显示旋转180度

    实现方法 内核层修改 kernel\msm-3.18\arch\arm\boot\dts\qcom\dsi-panel-lm215w-lvds-1080p-video.dtsi增加qcom,mdss- ...

  2. 在html中让图片旋转180度,gif图片旋转教程:怎么把gif旋转90度/180度 附gif图片旋转软件...

    视频可以用视频编辑软件将视频旋转90度>>gif旋转90度或180度呢,往下看,你可在本文中找到答案. 先睹为快,看看旋转的效果对比图: 原图                    顺时旋 ...

  3. 基于html+css的盒子内容旋转180度

    准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 20 ...

  4. cv2 图像逆时针旋转180度

    使用 OpenCV 的 Python 库时,可以使用 cv2.rotate() 函数来旋转图像.具体地,可以使用以下代码将图像逆时针旋转 180 度: import cv2# 读入图像 img = c ...

  5. Python视频旋转180度

    Python视频旋转180度 from moviepy.editor import *aviFileName = r'video.mp4' resultFileName = r'rotate.mp4' ...

  6. 菜单箭头旋转180度

    今天练手了一个简单的小案例,就是手指hover住菜单的时候,菜单旁边的小箭头旋转180度. 用到了transform变形中rotate()旋转和transition过渡中animation动画的知识点 ...

  7. 实现图片沿水平和竖直方向翻转(旋转180度)

    相机旋转180度,为了不改变原有的算法,最好的方法是将图片旋转180,这样就和之前拍摄的图片一致了.最先想到的方法是在basler相机中设置,但只找到了ReverseX,不满足要求. 查阅左飞的图像处 ...

  8. Android 11.0 recovery页面旋转180度问题的解决方案

    1.前言 在11.0的系统rom定制化开发工作中,在系统中recovery的页面也是相关重要的一部分,在系统recovery ota升级等功能,都是需要recovery功能的,在某些产品定制化中 在r ...

  9. 让整个页面旋转180度

    做了个签字板,现在使用APAD,工作人员和客户经常要转来转去屏幕,解决这个问题,就是让页面旋转180度. 跑吧签字板 CSS3的transform功能实现旋转,再配合transition实现动画. 先 ...

最新文章

  1. ElasticSearch+ElasticGeo+Geoserver发布ES地理数据
  2. ubuntu安装迅雷软件
  3. 安信证券王环:安信证券数据中台建设历程
  4. tensorflow实现基于LSTM的文本分类方法
  5. linux系统中安装和使用rz/sz命令详解
  6. python传参_Python的赋值和传参
  7. java面试题二十九 多线程数据共享问题
  8. Awesome Tools Site
  9. 京东:截至11月11日00:09 累计下单金额超2000亿元
  10. V神已抵京,倒计时4天!6大理由告诉你为什么要参加“2019以太坊技术及应用大会”...
  11. 筑业软件加密锁驱动_如何在不使用额外软件的情况下对USB驱动器进行加密和密码保护...
  12. 尔雅网课鼠标移出停止播放解决办法
  13. 数码相机成像原理CCD和CMOS及相机模组分析
  14. Kubernetes Ingress
  15. 命名实体如何进行概念消歧?
  16. SOFR, So Far ... So Good?
  17. Phaser(二):小恐龙跑酷游戏
  18. 梦幻西游手游最多人的服务器,梦幻西游手游哪个区人多及区服选择分析
  19. python的模块查找路径
  20. web爬虫学习(四)——手机APP爬取

热门文章

  1. c语言编写考试程序,c语言考试编写三个程序:1.从键盘输入一些字符,逐个把它们送到磁? 爱问知识人...
  2. c语言访问oc变量,OC中的方法调用流程
  3. mq java 开发_Java后台开发ActiveMQ使用指南
  4. matlibplot 一张图画多个曲线_从一张风景照中就学会的SinGAN模型,究竟是什么神操作?| ICCV 2019最佳论文...
  5. ansible离线安装
  6. 【原创】Linux基础之去掉windows中的\r
  7. 完美解决xhost +报错: unable to open display 装oracle的时候总是在弹出安装界面的时候出错...
  8. 我的第一个 react redux demo
  9. javascript使用闭包模拟私有属性和方法
  10. STM32的优先级NVIC_PriorityGroupConfig的理解及其使用(转)