在实际计算时,三种方法计算的金字塔组数noctaves,尺度空间坐标σ,以及每组金字塔内的层数S是一样的。同时,假设图像为640*480的标准图像。

金字塔层数:

其中o_min = 0,对于分辨率为640*480的图像N=5。

每组金字塔内图像数:
S=3,即在做极值检测时使用金子塔内中间3张图像。
对于LoG每组金字塔内有S+2张图像(S=-1,0,1,2,3),需要做S+1次高斯模糊操作(后一张图像由前一张做高斯模糊得到);而DoG每组金字塔有S+3张高斯图像,得到S+2张DoG图像。
尺度空间系数:

其中,S表示每组金字塔内图像层数,n为当前高斯层数,取0-4。DoG需要5个尺度系数得到6张GSS图像,而LoG只需要前4个尺度系数得到5张图像。

LoG

高斯核使用正太分布(高斯函数)计算模糊模版,N维空间正太分布方程为:

于是,二维高斯模板上的距离中心点为(x,y)的元素对应高斯计算公式为:

规范化的高斯拉普拉斯图像为

最终构造LoG金字塔有5层,每层有S+2=5张图像,每层金字塔内每张图像尺度是前一张的k倍,即构成的连续尺度序列:

其中o为当前金字塔层数,n为在当前金字塔层中图像张数。
由于卷积计算性质:

在计算时,通过对前一张图像做尺度系数为的卷积操作,可以减少卷积计算次数。故在金字塔每层内的S+2张图像,需要S+1次卷积操作,每次LoG核的尺度系数为:

图1. LoG金字塔示意图。 左侧为图像尺度空间系数,红色矩形框为实际参与比较的空间系数,右侧为在上一张图像做LoG卷积操作的尺度系数

DoG

由于LoG与Gauss核具有如下关系:

即,

因此,LoG算子可以用高斯差分算子DoG(Difference of Guassians)表示。

于是通过高斯金字塔每层内相邻两张图像相减可以得到DoG金字塔。对于最后需要S张图像寻找极值点,需要S+2张DoG图像,S+3张高斯图像。具体关系如图2.所示。

图 2. 由高斯金字塔得到DoG金字塔及其对应的尺度空间系数示意图。

LoG & DoG

一个直观的比较结果,使用分别计算LoG和DoG,得到:

可以看到,LoG比DoG明显需要更多的加法运算和乘法运算。虽然DoG需要在每层金字塔多做一次高斯操作(即为了得到S+2张DoG图需要S+3张高斯模糊图),但通过减法取代LoG核的计算过程,显著减少了运算次数,大大节省了运算时间。

(转载请注明作者和出处:http://blog.csdn.net/xiaowei_cqu 未经允许请勿用于商业用途)

SIFT中LoG和DoG比较相关推荐

  1. python 图像处理 拉普拉斯算子的实现和改进-LoG和DoG算子

    拉普拉斯算子 拉普拉斯算子是最简单的各向同性微分算子,它具有旋转不变性. 我们经常把它作为边缘检测之一,也是工程数学中常用的一种积分变换,也可以用于图像增强.角点检测等等. 这里只给出它的代码,原理可 ...

  2. LoadRunner中log的使用总结

    LoadRunner中log的使用总结 1.log的设置方式. 在 runtime setting中可以设置log的生成方式: 默认的log方式: Enable logging选中,log optio ...

  3. [转]NDK中log输出方法

    1:在编译so文件的c或cpp文件之前中加入以下代码,就可以在android中的log显示日志内容       #include <android/log.h>       #define ...

  4. LOG与DOG的关系

    注意:这里只是推出LOG与DOG的关系 1)高斯函数:                             (1) 2)DOG(Difference Of Gaussian) DoG算子是LoG算 ...

  5. C++中log的底数理解

    C++ 中log是以e为底的 log10 是以10为底的 现在来看看为什么底数具体为多少不重要? 读者只需要掌握(依稀记得)中学数学知识就够了. 假设有底数为2和3的两个对数函数,如上图.当X取N(数 ...

  6. Android NDK开发之 Android系统开发中LOG的使用

    浅谈Android系统开发中LOG的使用 转自:http://blog.csdn.net/luoshengyang/article/details/6581828

  7. Android中Log机制

    Android中Log机制 写Log过程 首先从Java层入手 下面是定义的Log级别:public static final int VERBOSE = 2;public static final ...

  8. android系统中log机制

    Android提供了用户级轻量的LOG机制,它的实现贯穿了Java,JNI,本地c/c++实现以及LINUX内核驱动等Android的各个层次,而且足够简单清晰,是一个相当不错的解读案例.本系列文章针 ...

  9. android系统开发中log的使用方法

    1. Linux内核的log输出 使用printk打印级别且将信息保存到/proc/kmsg日志中,使用cat命令查看其信息[ cat /proc/kmsg ] 2. android中log输出 an ...

最新文章

  1. MIT提出Matlab插件mNeuron:实现深度模型神经元的可视化
  2. AutoHotkey调用VBA实现批量精确筛选数据透视表某字段内容。
  3. LeetCode 970. 强整数
  4. html5声音播放音乐,HTML5 煽情的音乐播放器和音频可视化
  5. 如何在 FPGA 上实现双线性插值的计算?
  6. Oracle读书笔记
  7. 【Python实例第11讲】文本的核外分类
  8. xadmin 组件拓展自定义使用
  9. 2017锤子科技发布会
  10. matlab rf建模实例,[程序源代码]MATLAB在射频电路设计中的应用
  11. 小程序插入激励视频广告教程
  12. ad中按钮开关的符号_电路仿真软件CADe_SIMU的电气元件符号翻译和下载地址
  13. 文件共享服务器 域组访问设置权限,怎么对局域网所共享的文件进行访问权限管理...
  14. 【编程题】【Scratch一级】2022.03 飞翔的小猫
  15. APS究竟是什么系统呢?看完文章你就知道了
  16. 《hanhan的创作纪念日:From 2020 To 2023》
  17. 22年5月14日面试随笔
  18. 美团招聘-测试开发工程师
  19. 使用python制作小鸟游戏
  20. 基于Windows Embedded部署物流配货系统加快物流速度

热门文章

  1. 使用 AngularJS 和 Electron 构建桌面应用
  2. 288家众筹平台正常运营 43家停运或倒闭
  3. 如何达到高并发的概念?-分享一下微信百亿级红包的金融设计方案
  4. Java Review - Queue和Stack 源码解读
  5. 每日一博 - CAS(Compare-And-Swap)原理剖析
  6. MySQL - Explain深度剖析
  7. Spring OXM-XStream转换器
  8. Spring-Spring MVC + Spring JDBC + Spring Transaction + Maven 构建web登录模块
  9. Oracle_杂货箱_不定期更新
  10. spark 集群单词统计_最近Kafka这么火,聊一聊Kafka:Kafka与Spark的集成