zoukankan      html  css  js  c++  java
  • 图像处理之基础---卷积模板简介

    1.使用模板处理图像相关概念:      

         模板:矩阵方块,其数学含义是一种卷积运算。

      卷积运算:可看作是加权求和的过程,使用到的图像区域中的每个像素分别与卷积核(权矩阵)的每个元素对应相乘,所有乘积之和作为区域中心像素的新值。

         卷积核:卷积时使用到的权,用一个矩阵表示,该矩阵与使用的图像区域大小相同,其行、列都是奇数,是一个权矩阵。

         卷积示例:

                 假设3 * 3的像素区域R与卷积核G分别为:

    则卷积运算为:

                  R5(中心像素)=R1G1 + R2G2 + R3G3 + R4G4 + R5G5 + R6G6 + R7G7 + R8G8 + R9G9

               

    2、使用模板处理图像时涉及到的问题:

          边界问题:当处理图像边界像素时,卷积核与图像使用区域不能匹配,卷积核的中心与边界像素点对应,卷积运算将出现问题。

          处理办法:

                  A.忽略边界像素,即处理后的图像将丢掉这些像素。

                  B.保留原边界像素,即copy边界像素到处理后的图像。

    3、常用模板:

          (a)低通滤波器

                                 
     

       (b)高通滤波器                 

                           

       (c)平移和差分边缘检测

                          

        (d)匹配滤波边缘检测

                           

        (e)边缘检测

                               

        (f)梯度方向边缘检测

                          

                         

            

    4、我们来看一下一维卷积的概念.

        卷积(convolution,另一个通用名称是德文的Faltung)的名称由来,是在于当初定义它时,定义成integ(f1(v)*f2(t-v))dv,积分区间在0到t之间。举个简单的例子,大家可以看到,为什么叫“卷积”了。比方说在(0,100)间积分,用简单的辛普生积分公式,积分区间分成100等分,那么看到的是f1(0)和f2(100)相乘,f1(1)和f2(99)相乘,f1(2)和f2(98)相乘,.........等等等等,就象是在坐标轴上回卷一样。所以人们就叫它“回卷积分”,或者“卷积”了。

        连续空间的卷积定义是f(x)与g(x)的卷积是f(t-x)g(x)在t从负无穷到正无穷的积分值.t-x要在f(x)定义域内,所以看上去很大的积分实际上还是在一定范围的.
           实际的过程就是f(x)先做一个Y轴的反转,然后再沿X轴平移t就是f(t-x),然后再把g(x)拿来,两者乘积的值再积分.想象一下如果g(x)或者f(x)是个单位的阶越函数.那么就是f(t-x)与g(x)相交部分的面积.这就是卷积了.

        卷积运算满足交换律,也就是说:f与g进行卷积完全等于g与f进行卷积。

       由两个函数f和g进行卷积而得到的函数f*g,一般要比原来的f和g都要光滑。所以在图像处理中对图像进行卷积后会使原图像模糊。因为卷积具有平滑作用。

        有趣的是,如果把两个人的照片互相进行卷积,所得到的照片,就同时和这两个人都很相像。

    把积分符号换成求和就是离散空间的卷积定义了.

       那么在图像中卷积是什么意思呢,就是图像就是图像f(x),模板是g(x),然后将模版g(x)在模版中移动,每到一个位置,就把f(x)与g(x)的定义域相交的元素进行乘积并且求和,得出新的图像一点,就是被卷积后的图像.模版又称为卷积核.卷积核做一个矩阵的形状。

    5、卷积运算时的核函数

          在Matlab中,对图像进行卷积运算时,都要先得到一个核函数,其实就是模板。其函数调用是:

    >> G=fspecial('gaussian',5,0.5)

    G =

         0.0000    0.0000    0.0002    0.0000    0.0000

        0.0000    0.0113    0.0837    0.0113    0.0000

        0.0002    0.0837    0.6187    0.0837    0.0002

        0.0000    0.0113    0.0837    0.0113    0.0000

         0.0000    0.0000    0.0002    0.0000    0.0000

    >> G=fspecial('gaussian',5,1.5)

    G =

        0.0144    0.0281    0.0351    0.0281    0.0144

       0.0281    0.0547    0.0683    0.0547    0.0281

       0.0351    0.0683    0.0853    0.0683    0.0351

       0.0281    0.0547    0.0683    0.0547    0.0281

       0.0144    0.0281    0.0351    0.0281    0.0144

        能够看出来,fspesial()函数的第一个参数表示返回高斯核函数(低通滤波器、模板等名称其实都一样)。第二个参数“5”表示该模板的大小,是5X5的矩阵。第三个参数是sigma了。

    http://www.360doc.com/content/11/0829/21/4539198_144340527.shtml

  • 相关阅读:
    Ubuntu下编译3.0.4内核
    多个Android项目源码-覆盖方方面面值得学习
    8086汇编指令速查手册
    xz解压缩详解
    (转载)移植最新内核linux-3.14.6到mini2440开发板
    收录 Uboot 详解
    Windows Terminal 配置文件
    C# 7.2 中 In参数( in parameter )的性能比较
    JavaScript 的 parseInt(x), parseFloat(x), Number(x), +x, ~~x, x>>>0, isNaN(x) 区别和结果
    Windows Terminal 配置 git-bash,集成右键菜单,集成VSCode
  • 原文地址:https://www.cnblogs.com/pengkunfan/p/3903155.html
Copyright © 2011-2022 走看看