zoukankan      html  css  js  c++  java
  • SIFT算法不完全手册(第二季)_相关概念(转载小木虫)

    废话:
          如果你像我一样没有想搞图像的一本书从头看到尾(其实也没几个人能从头看到尾的,很多都是拿MatLAB扯扯淡!)的话,在SIFT算法的资料里出现的很多概念可能是你理解的障碍!因为觉得有必要说一下,希望这样会给一些像我一样没什么基础的人一些帮助!如果一下当中有的你知道了你可以跳过去呵呵!也有可能有些概念我解释的不是很对,也希望您的指正!

    基本概念:

    降采样:对于一幅图像而言的降采样就是每隔几行、几列得到取一点,组成一个新的图像。以比例因子为2(fact of 2)的降采样来说:就是対一幅图像每隔一行一列取一点。对于n×n的图像就变为n/2×n/2的图像了。比例因子为2的降采样是SFIT要用到的!

    升采样:其实一种插值,就是在一幅图像里利用相关的插值运算得到一幅大的图像!比如比例因子为2的升采样就是每个相邻像素点种插值出一个像素(这里包括X、Y两个方向)。对于n×n的图像就变为2n×2n的图像了。顺便说下插值,就是一种利用已有数据对位置数据的估计。比如我第10秒走了12米,第20走了30,那么我用线性插值估计我第15秒走了(30-12)/2+12=21米,当然插值的方法有很多!

    图像金字塔:简单的说是一个图像集,由一个原始图像经过降采样得到一幅图像,再对新的图像做降采样,重复多次构成的一组集合。如果形象的把这些图像摞起来就想一个金字塔,故此得名。

    卷积:这个概念我感觉是最不好解释的,他就是一个积分,两个函数(其中一个带参数)对应点的成绩,然后吧乘积函数求积分!大致我理解就是这样,但是具体的还是请大家去查书。但是这里我想说卷积再图像里的运算。卷积是一种无限的积分运算,但是因为在一个二维平面(X轴对应一个卷积函数,Y轴对应一个卷积函数!),一般境况下围绕某一点的卷积运算距离卷几点一定远的运算对最后结果很小,所以通常忽略!这样卷积运算就变成了一种模板运算!例如3×3的一种模板运算,就是把理他最近的9个点(包括它本身9个点)分别乘以按一定的加权函数所对应的权值后加到这个中心点上成为该点的新值。那么对于3×3的模板运算每一点要做9个乘法9个加法。那么对于1000个像素的图像做模板运算就要做9000个乘法,9000加法!如果模板再大,计算次数会更多。

    高斯卷积:就是权函数为高斯函数的卷积模板运算,高斯卷积有一次和二次...。通常做高斯卷积后的图像会比原图像平滑但也会模糊,所以又称高斯模糊!因为这不能写公式,很多的细节可以看下面的附件里的图片!

    高斯金字塔:高斯金字塔里有两个概念:组(Octave)和层(Level或Interval),每组里有若干层!高斯金字塔的构造是这样的,第一组的第一层为原图像,然后将图像做一次高斯平滑(高斯卷积、高斯模糊)高斯平滑里有一个参数σ(详见附件图片),在SIFT里作者取1.6
    然后将σ乘一个比例系数k作为新的平滑因子来平滑第一组第二层得到第三层。重复若干次,得到L层他们分别对应的平滑参数为:0,σ,kσ,k2σ....。然后将最后一幅图像做比例因此为2的降采样得到第二组的第一层,然后对第二组的第一层做参数是σ的高斯平滑,对第二层做kσ的平滑得到第三层.....这里一定注意:每组对应的平滑因子是一样的!而不是像有的资料上说的持续递增。这样反复形成了O组L层。一般模糊的高斯模板长宽都约为6σ(这里σ为当次的平滑因子,就是可能是kσ,k2σ..)

    DoG(Difference of Gaussian)金字塔:他是由高斯金字塔构造出来的,他的第一组第一层是由高斯金字塔的第一组第二层减第一组第一层,他的第一组第二层是由高斯金字塔的第一组第三层减第一组第二层得到,(说的这么繁琐是为了大家能理解的直观点)。没组都这样就生成了DoG金字塔。顺便说一下,DoG金字塔每组图像几乎都是一片黑,但仔细看你能看出轮廓的。

    两个金字塔在SIFT算法里的特殊说明:1、在SIFT里高斯金字塔的第一组第一层通常是由一个原图像长宽扩大一倍开始的,这样做是为了可以得到更多的特征点2、大家可以发现如果用每组5层的高斯金字塔构造一个DoG金字塔的的话,DoG的每组的层数是4。3、对于DoG金字塔,特征点的搜索从每组的二层到倒数第二层的(后面说明为什么),所以如果实际用n层那么DoG金字塔应该有n+2层,那么对应的高斯金字塔应该有n+3层。4、由于这样所以高斯金字塔从第二组开始的每组第一层是由上一组的倒数第二层降采样得到的。

    梯度:就是一个有方向和长度的向量,它的意义是一个函数的某一点上数值变化最大的方向和变化量。在图像中一个像素点的梯度是由它周围的8个点计算得到的。(公式见附件的图)

    K-d树:一种数据结构,用于搜索高维最邻近点,他是一种二叉树,每个节点是一个高维向量。对于他的具体说明我没仔细看呢,如果做到最后需要请大家参考这个:顺便说下维基百科不错!!
    http://en.wikipedia.org/wiki/Kd-tree

    尺度:这个概念最让我郁闷,现在弄的不是很清楚。我现在的理解就是(这不是它的感念):1、表示同一事物所用到的图像像素量,用的多尺度就小,用的少尺度就大(说没说反?嘿嘿!)。2、它和图像的清晰程度有关,如上面说的高斯模糊,那么因子σ越大得到的图像越模糊,那么尺度越大!3、图像的旋转、平移尺度是不变的,但是放大、缩小、模糊就变了。
    详细说明还请参考维基百科。

          我在想到的相关概念就这些,如果还有一些概念没说明欢迎大家告诉我!我后续会补上

  • 相关阅读:
    matlab-vrep程序控制方法
    .ipyb文件怎么转成 .py文件
    python技巧
    gradle初步认识
    StringUtils
    Elasticsearch、Logstash和Kibana ELK
    redisTemplate、jedis、redission的对比
    唯一ID
    spring相关组件简介
    新电脑环境配置
  • 原文地址:https://www.cnblogs.com/xfzhang/p/1901467.html
Copyright © 2011-2022 走看看