卷积和相关

本文详细解释了图像处理中相关和卷积的概念及其在图像匹配和滤波中的应用。通过对比两种方法的区别,并通过实例说明如何使用它们进行图像匹配。
在执行线性空间滤波时,经常会遇到两个概念相关和卷积
二者基本相似,在进行 图像匹配是一个非常重要的方法。
相关是滤波器模板移过图像并计算计算每个位置乘积之和的处理
卷积的机理相似,但滤波器首先要旋转180度
相关的计算步骤:
(1)移动相关核的中心元素,使它位于输入图像待处理像素的正上方
(2)将输入图像的像素值作为权重,乘以相关核
(3)将上面各步得到的结果相加做为输出
卷积的计算步骤:
(1)卷积核绕自己的核心元素顺时针旋转180度
(2)移动卷积核的中心元素,使它位于输入图像待处理像素的正上方
(3)在旋转后的卷积核中,将输入图像的像素值作为权重相乘
(4)第三步各结果的和做为该输入像素对应的输出像素
超出边界时要补充像素,一般是添加0或者添加原始边界像素的值
    可以看出他们的主要区别在于计算卷积的时候,卷积核要先做旋转。

而计算相关过程中不需要旋转相关核。

离散单位冲击:我们将包含单个1而其余全是0的函数成为离散单位冲击。
重要性质:一个函数与离散单位冲击相关,在冲击位置产生这个函数的一
个翻转版本。
f 函数
w 滤波器模板
eg:
f(x,y)
  0 0 0 0 0
  0 0 0 0 0 
  0 0 1 0 0
  0 0 0 0 0
  0 0 0 0 0
w(x,y)
  1 2 3 
  4 5 6 
  7 8 9
相关(用于图像匹配)*w = 
     0     0     0     0     0
     0     9     8     7     0
     0     6     5     4     0
     0     3     2     1     0
     0     0     0     0     0
卷积(用于图像滤波)f*w=
     0     0     0     0     0
     0     1     2     3     0
     0     4     5     6     0
     0     7     8     9     0
     0     0     0     0     0
假如函数f中存在w的一个复制版本,即f:
  0 0 0 0 0
  0 1 2 3 0 
  0 4 5 6 0
  0 7 8 9 0
  0 0 0 0 0
f*w是多少呢?读者也自己算吧。
    9    26    50    38    21
    42    94   154   106    54
    90   186   285   186    90
    54   106   154    94    42
    21    38    50    26     9
是不是会发现w与f中w的复制版本重合时,该点的值最大。最大值为
1^2+2^2+……+9^2 = 285
这就是用相关进行图像匹配的基本原理。当然了,在图像匹配时还要进行

相关函数的归一化等操作。

matlab源代码:

  1. %函数f  
  2. f =  [0 0 0 0 0  
  3.     0 0 0 0 0   
  4.      0 0 1 0 0  
  5.     0 0 0 0 0  
  6.     0 0 0 0 0];  
  7. %滤波器模板  
  8. w = [1 2 3   
  9.      4 5 6   
  10.      7 8 9];  
  11. %卷积  
  12. ff = conv2(f,w,’same’)  
  13. %相关  
  14. ff2 = imfilter(f,w)  
  15.   
  16. %图像匹配的基本原理  
  17. f2 = [  0 0 0 0 0  
  18.         0 1 2 3 0   
  19.         0 4 5 6 0  
  20.         0 7 8 9 0  
  21.         0 0 0 0 0];  
  22.  ff3 = imfilter(f2,w)     
  23.       
%函数f
f =  [0 0 0 0 0
    0 0 0 0 0 
     0 0 1 0 0
    0 0 0 0 0
    0 0 0 0 0];
%滤波器模板
w = [1 2 3 
     4 5 6 
     7 8 9];
%卷积
ff = conv2(f,w,'same')
%相关
ff2 = imfilter(f,w)

%图像匹配的基本原理
f2 = [  0 0 0 0 0
        0 1 2 3 0 
        0 4 5 6 0
        0 7 8 9 0
        0 0 0 0 0];
 ff3 = imfilter(f2,w)   
    


### 计算机视觉中的卷积操作及相关概念 #### 卷积操作定义 在计算机视觉领域,卷积是一种重要的运算形式,主要用于处理二维数据如图像。具体来说,卷积涉及到一个小矩阵——被称为卷积核或滤波器,在输入的数据(比如一张图片)上面移动,并且在这个过程中与每一个位置对应的区域做逐元素乘法再求的操作,最终形成一个新的数值加入到输出的结果之中[^3]。 #### 卷积的作用机制 想象有一个“放大镜”,当其沿着一幅画作表面缓缓滑过时,每一次只会聚焦于一小片范围内的细节;而这里的每一步计算实际上就是按照预设的方式重新组合这些局部信息,从而得到能够反映原始图形某些特性的新版本。这种转换有助于突出显示边缘、纹理或其他显著模式,对于后续的任务至关重要,例如对象识别或是语义分割等高级功能实现之前必不可少的预处理步骤之一。 #### 应用场景举例 利用卷积技术可以在多种情况下改善图像的质量或者从中抽取有价值的信息。例如,在去除噪声方面,可以通过设计合适的内核来进行平滑处理;而在锐化处理中,则采用强调高频成分的方法使得轮廓更加鲜明。此外,借助不同类型的过滤器还可以完成诸如模糊效果模拟、边界检测等一系列任务[^2]。 #### 与深度学习的关系 随着研究不断深入技术进步,人们发现将多个这样的层堆叠起来构成深层架构可以自动地从大量样本里习得有效的表征方式。特别是卷积神经网络(CNNs),已经成为当前最成功的模型之一,广泛应用于各类视觉挑战赛当中取得优异成绩的背后推手。这类结构不仅继承了传统方法的优点,而且具备更强的学习能力泛化性能,尤其是在面对复杂背景下的目标定位等问题上展现出了无可比拟的优势[^1]。 ```python import torch.nn as nn class SimpleCNN(nn.Module): def __init__(self): super(SimpleCNN, self).__init__() # 定义一个简单的卷积层 self.conv_layer = nn.Conv2d(in_channels=3, out_channels=16, kernel_size=(3, 3), stride=1, padding=1) def forward(self, x): output = self.conv_layer(x) return output ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值