模板卷积Template Convolution

背景引言

在图像处理中,经常使用不同算子等进行预处理。它们都有固定模板,称为模板卷积。本节主要介绍模板卷积。

基本理论

群运算(Group operation)是利用分组处理,根据一个像素的近邻来计算新像素值。群运算通常用模板卷积形式,其中模板是一个加权系数。模板通常是方形,其大小是奇数,从而可恰当定位。通常用大小描述模板;一个3x3模板是宽3个像素乘长3个像素。

模板卷积Template Convolution_第1张图片

图1 模板卷积处理

图1所示,新图像是通过模板卷积从原图像计算得到的。对原图像上模板的中心像素进行模板卷积所得的计算结果成为输出图像中的点。由于模板不能超出图像,而无法计算新图像边界点的新值,所以新图像比原始图像小。当模板到达一行的终端,它会定位在下一行的开始位置。对于3x3近邻而言。在9个加权系数Wi用于原图像上的对应来计算新图像上的一个点。新点(中心处)位置表示为模板中的阴影部分。

图2 3x3模板及加权指系数

为了计算新图像中坐标为x,y 的点的像素值N,图2中的模板在原图像O上根据下式进行处理:

我们需要注意的是,无法给图像边界赋置。因为把模板放在边界上时,模板的一部分落在图像外部,没有信息来计算新像素置。边界宽度等于模板大小的1/2.要计算边界像素值,这时有三种选择:

  • 设置边界为黑色(或计算一块较小图像)。
  • 假设图像沿两个维度方向无限重复,利用循环位移根据另一边界来计算新值。
  • 利用较小区域来计算像素值。

上述方法都不是最优的。在此我们采用的是第一种选择,把边界设为黑色。我们要注意的是,在许多应用中感兴趣目标成像在中心位置,或至少在图像内部。因此,边界信息对接下来的处理几乎没有影响。我们把边界点设为黑色,通过零函数来启动所有函数,零函数将图像上所有点初始化为黑色(0)。此处理可以利用卷积记号表示为:


其中N是将模板W权重系数和图像O进行卷积所得的新图像。

通用模板卷积算子convole的Matlab实现如下参考代码:

function convolved = convolve(image,template)
%New image point brightenss convolution of template with image
%  Usage: [new image] = convolve(image,template of point values)
%
%  Parameters: image      - array of points
%              template   - array of weighting coefficients

[irows,icols]=size(image); %get image dimensions
[trows,tcols]=size(template); %get template dimensions
temp(1:irows,1:icols)=0; %set a temporary image to black

trhalf=floor(trows/2); %half of template rows is

tchalf=floor(tcols/2); %half of template cols is

%then convolve the template
for x = trhalf+1:icols-trhalf %address all columns except border
  for y = tchalf+1:irows-tchalf %address all rows except border
    sum=0;
    for iwin = 1:trows %address template columns
      for jwin = 1:tcols %address template rows
        sum=sum+image(y+jwin-tchalf-1,x+iwin-trhalf-1)*template(jwin,iwin);
      end
    end
    temp(y,x)=sum;
  end
end

%finally, normalise the image
convolved=normalise(temp);
此函数的参数是图像image以及与它进行卷积运算的模板template。模板卷积的结果是图像convolved。convolve算子首先将临时图像temp初始化为0亮度级灰度级。然后计算模板大小。这样做可以得到外部for循环中进行处理的图像点的范围,for循环根据模板卷积给出所有点的坐标。此模板通过计算模板窗口内的像素与相应的模板系数的乘积之和来对每个像素点进行卷积,最后,对所得图像进行正规化以确保图像亮度级分布合理。

模板卷积通常在软件中实现,也可以在硬件中实现,对于输入视频数据而言,需要一个two-line store以及一些latch。其输出是模板卷积的结果,即加权系数与像素值的乘积之积。常称为流水线操作

参考文献

[1]Rafael C.Gonzalez, Rechard E.Woods at. el , "Digital Image Processing Using MatLab (Second Editon)",Gatesamark Publishing.


关于Image Engineering & Computer Vision的更多讨论与交流,敬请关注本博和新浪微博songzi_tea.


你可能感兴趣的:(计算机视觉,图像分析,模板卷积,特征检测,特征提取)