在图像处理中,大量的算法中用到的运算其实都是相关运算和卷积运算。
所以,我们很有必要知道相关运算、卷积运算究竟是怎么做的。
本篇博文通过具体而简单的例子向大家说明相关运算、卷积运算究竟是怎么做的。

01-一维相关运算
下图显示了一维序列n与窗口序列w作相关运算的过程。

上图中,要进行两个序列的相关运算,先移动w使其锚点与序号n最左侧的点重合,如图中b所示。锚点通常取中心点,锚点的概念见我的另一篇博文 https://www.hhai.cc/thread-177-1-1.html
需要注意的是,此时,这两个序列之间有一些点未重叠,为处理该问题,需要对序列f的边界作扩展处理,这就是我在博文https://www.hhai.cc/thread-178-1-1.html中提到的边界扩展问题。
在这里我们对序列n的边界作填充0的扩展,以保证在w通过n的整个过程中,始终存在对应的点,如图中c所示。
准备工作做好后,现在开始进行相关运算。
相关运算结果的第一个数是在图c所示位置上两个序列对应位置乘积的累加和,图中也计算出了结果为28。
接着将w向右移动一个位置并再次计算乘积的累加和,如图d所示,此时得到相关计算结果为38。
重复上述过程,直到图g,即可全部计算出所有的相关计算结果值。
最终的相关计算结果为:28 38 44 50 26
用Matlab代码验证如下:

 clcclose allclear alln1 = [5 6 7 8 9];w1 = [1 2 3];result1 = imfilter(n1, w1, 'corr', 'same');

运行结果如下:

可见,运行结果与我们手工计算的结果一致。

02-一维卷积运算
一维卷积运算与一维相关运算过程一样,只是在运算前将窗口序列w先旋转180度。
整个过程如下面所示,由于过程与一维相关运算过程基本一样,所以就不再赘述。

从上面的图来看,最终的卷积运算结果为:
16 34 40 46 42
用Matlab代码验证如下:

 clcclose allclear alln1 = [5 6 7 8 9];w1 = [1 2 3];result1 = imfilter(n1, w1, 'conv', 'same');

运行结果如下:

可见,运行结果与我们手工计算的结果一致。

03-二维相关运算
将一维相关运算中的序列变成二维序列,容易得到二维序列的相关运算。
设有二维序列N(x,y):

和窗口W(x,y):

现对N(x,y)作窗口为W(x,y)的二维相关运算,
并令W的中心点(2,2)为锚点。
则结果的第1行第1列的元素的值是下面这两个矩阵对应元素的乘积的和:


所以相关结果的第1行第1列的元素的值的计算式为:
010+011+012+013+114+215+016+417+518=202
其它相关结果同样的计算方法可算得。
比如第2行第3列是下面这两个矩阵对应元素的乘积的和:


所以相关结果的第2行第3列的元素的值的计算式为:
2
10+311+012+513+614+015+816+917+018=483
用MATLAB验证一下我们的手工计算结果,代码如下:

clc
close all
clear allN = [1 2 3;4 5 6;7 8 9];
W = [10 11 12;13 14 15;16 17 18];result1 = imfilter(N, W, 'corr', 'same');

运行结果如下:

可见,运行结果与我们手工计算的结果一致。

04-二维卷积运算
二维卷积运算与二维相关运算基本一致,只是运算前将窗先旋转180度,再作相关运算,这样得到的结果就是二维卷积运算。
这里有个小技巧,一个二维矩阵旋转180度,实际上等效于是把最后一行变成第1行,第1行变成最后一行,然后每一行再调个头。当然从镜像的角度来讲等效于先作一个水平镜像,再作一个垂直镜像。
这里我们直接用MATLAB代码验证上面这段叙述。

clc
close all
clear allN = [1 2 3;4 5 6;7 8 9];
W = [10 11 12;13 14 15;16 17 18];
W_180 = [18 17 16;15 14 13;12 11 10]result1 = imfilter(N, W, 'conv', 'same');
result2 = imfilter(N, W_180, 'corr', 'same');

上面代码的运行结果如下:

从上面的运行结果可知,result1与result2的结果相同,说明我们的理解和叙述是正确的。

至此,大家应该很清楚的知道了一维相关运算、一维卷积运算、二维相关运算、二维卷积运算是怎样运算的了吧。

通过具体的例子说明一维和二维的相关运算、卷积运算究竟是怎么做的。相关推荐

  1. RBF的一维和二维逼近

    RBF在函数逼近上有非常好的表现,这里给出了RBF在单自变量单因变量,以及二自变量单因变量的逼近方法,进行Python实现,多维问题的逼近同样很方便,只需增加相应的维度即可,只是需要更多的数据. 一. ...

  2. 高斯低通滤波 matlab_一维和二维高斯函数及其一阶和二阶导数

    二维高斯函数 高斯函数在图像滤波.边缘检测等中发挥着重要的作用.高斯滤波是典型的低通滤波,对图像有平滑作用.同时,高斯函数的一阶.二阶导数也可以用于高通滤波,比如canny算子中用到的是高斯函数的一阶 ...

  3. 字典类型用于表示一维和二维数据?

    关于数据组织的维度,哪个选项的描述是错误的?‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬ ...

  4. python二维数组去重_np.unique()对一维和二维数组去重

    一维数组 对一维数组或列表,unique()函数去除其中重复元素,并按元素大小返回一个新的无重复元组或列表. import numpy as np A = [1, 2, 2, 5,3, 4, 3] a ...

  5. Matlab中一维和二维滤波函数及其典型用法【随时更新】

    Matlab中一维和二维滤波函数及其典型用法[随时更新] 一维滤波函数 均值滤波器movmean 中值滤波器movmedian 二维滤波函数 用fspecial预定义各种二维滤波器 主要用于自查,如果 ...

  6. C++二维码相关库编译

    一.瞎想 坐在地铁上闲来无聊,突然想到了二维码,顺手就百度了下相关的资料,目前C++二维码相关的库不多,也就zbar(开源中国上下了半天也没下载下来).zxing,不过这两个库据说都是解析二维码的,不 ...

  7. 二维码相关---java生成二维码名片,并且自动保存到手机通讯录中...

    二维码相关---java生成二维码名片,并且自动保存到手机通讯录中... 技术qq交流群:JavaDream:251572072 1.首先介绍一个api.   Zxing是Google提供的关于条码 ...

  8. 二维数字图像相关算法软件Ncorr的使用心得

    二维数字图像相关(2D Digital Image Correlation)是一种非接触式的光学测量方法,常应用于图像分析处理上,它可以根据变形前后的2张或多张图像,求解出规定区域 近似的位移与应变情 ...

  9. Python-深度学习-学习笔记(13):keras搭建卷积神经网络(对二维数据进行一维卷积)

    Python-深度学习-学习笔记(13):keras搭建卷积神经网络(对二维数据进行一维卷积) 卷积神经网络进行图像分类是深度学习关于图像处理的一个应用,卷积神经网络的优点是能够直接与图像像素进行卷积 ...

最新文章

  1. gx works2 存储器空间或桌面堆栈不足_保证安全的移动空间,超高安全品质的私家车推荐...
  2. spring boot 1.5.4 整合 mybatis(十二)
  3. wireshark抓包详解
  4. CSMA/CD工作原理
  5. Spring Boot 整合 Redis 实现缓存操作
  6. PHP数组——自定义排序
  7. Webstrom 卡顿问题
  8. 为啥用redis解决会话呢?
  9. 在vue中使用express-mock搭建mock服务
  10. pythonappend教程_对python append 与浅拷贝的实例讲解
  11. 下标 获取字符_互联网人工智能编程语言Python的下标与切片详解
  12. PAT 1089 狼人杀-简单版(20 分)- 乙级
  13. 魔方机器人设计中的问题
  14. 使用nginx反向代理获取百度MP3的真实网址
  15. monaco-editor浏览器中的网页代码编辑器在项目中集成
  16. linux 文件夹 775,Linux chmod目录权限命令图文详解
  17. json rpc 2.0 java_使用JSONRPC 2.0规范解决多语言RPC交互的方案
  18. windows手动清理垃圾文件
  19. 请编程序将“China“译成密码,密码规律是:用原来的字母后面第4个字母代替原来的字母。例如:字母“A”后面第4个字母时“E“,用“E“代替“A“。因此,“China“应译为“Glmre”。请编一程序
  20. 视频转文字怎么操作?这些方法值得收藏

热门文章

  1. Win10使用VS2017安装Caffe详细总结
  2. 完全平方数(C语言,调用函数)
  3. 【每日新闻】IDC:国产手机品牌在印度拿下66%的市场份额
  4. GHOST的口诀:备份122、还原123
  5. 三屏指挥调调度终端/三屏计算机/一机三屏指挥调度/三屏融合指挥调度
  6. [转载] 黄志敏:一条数据新闻是如何用7步生产出来的?
  7. mysql卸载如何彻底删除6_如何彻底卸载删除MySQL
  8. C语言中的int类型的范围是由什么决定的
  9. 深入浅出Mysql - 优化篇(索引)
  10. 我平时总结的几个Python编程小技巧