Xilinx可编程逻辑器件的高级应用与设计技巧.pdf
Xilinx可编程逻辑器件的高级应用与设计技巧,fpga进阶的参考书。EDA工具应用丛书Xin可编程逻辑器件的高级应用与设计技巧孙航编著電子工業出版社Publishing House of Electronics Industry北京· BEIJING内容简介木书以浅入深凵、图文并戊的方式,全面介纲了全球最大可编程器件生产商 Xilinx的 oolttunner. ll、spaa3、tex1。和 rtex- PTo等系列最新器件的结构和特性;司时还较大篇幅介绍了最新设计开发环坻IsE6炇其辋助设计丁具,可编程逻辑器件的岗级应用和设计技巧,基于 CPLDFPGA的8和32位嵌入式处理器的原理与设计,高速串行数据通信接口设计和信号完整性设计等内容木书既是从事消费淡电子产品设计、通信系统设计、联入式处理器系统设计及控制设备开发设训人员不可或缺的、针对性非鷖强的技术书籍,又可作为逻辑和占用集成电路设计相关专业高年级本科及研究教学、科研参考书木经计可,六得以任何方式复制或抄老本书之部分或全部内容。版权廝有,侵权必究图书在版编目cP数据Xilin可编栏逻辑器件的高级应用与设计技巧/孙航编著.一北尔:电子T业出版社,2002.3EDA工具应用丛书)ISBN7121-0Ql0041.X…Ⅱ孙…ⅢI.可编程逻辑器件一基本知识1.TP3321中国版小图节馆CP数掉核了(2004)第06717号责忏编弭:琰特约编辑:叶皓肟印刷:求京人卫印圳出版发行:电了⊥业出版社北京市海淀区万寿路173信箱邮编1036经销:各地新华书沾店开;787X1092116E张:2675字数:686千字印次:204年8月第1祝印印数:500册定价:3900元凡鹦头也了⊥业出版社的图书,如有缺损问题,请向灼买店调换。若书店售缺,请与本补发行部联系。联系电话:(00)6827977。质量投诉诮发邮件至 Zits phe」omcn,盗版侵权报请发邮件至dbqggphei. com.cn o前言镟荇3〔通信、消费和计算)融合功能越来越多地出现在各种咤子产品中,数罕化、智能化设计已经变得愈来愈普及,产品的更新换代不断加快,个性化产品不断涌现同时:随着系统向髙速度、低功耗、低电压和多媒体、网络化、移动化方向的发展,其对电路的要求越来越高,因此,传统的单一功能的集成电路设计技术已无法满足性能日益提髙的整机系统的要求。而可编程遡铒器件( CPLDFPGA)由于其固有的特性,正好填补了这方面的需求。叮编程逻辑器件可以方便地通过欢逻辑结构的修改和配置,完成对系统和设备的升级:以便迅速适应市场的变化。可编程逻辑器件的另一个特点是,可以支持多种通信协议和接口标准,并可以随着标准和协议的演变而改变功能。对系统设计师来说这是大优势,因为他们可以在早期当标准还在变化时就开始硬件设计,以后再改变代码来反映最终的标准。可编程逻辑在速度和等待时间方面优于纯软件解决方案。由于NRE(不可冋收工程)成本较低,开发时间较短,同时比ASC(专用集成电路)实现具有更大的灵活性,促使了可编程逻辑器件的高速发展。另外,由于半导仁技术的飞迷发展,其工艺水平已经达到了深亚微米级,以9mmT艺技术制迢的芯片已经问世:芯片的集成度成倍数地提高:时钟频率已发展到数吉然兹。閃此,未来的集成电路技衤的发展趋势,是把整个系统集成到一个芯片上去,这种芯片被称为片上系統。芯片内除了丰富的可编程逻辑资源以外、还包括了高速的处理器硬核、处呷器软核、DsP模块、大量的冇储器资源、高速行收发器模块、系统时钟管理器、多标溎的输入输岀接口模块等。片上系统比起当今的超大规模集成电路来说,无论是集成规模还是运行频率都有长足的发展。而采用具有系统级性能的复杂可编程逻辑器件和现场可编程门阵列实现可编程片上系统也成为今后的一个发展向。也许,在不久的将来,我们看到的计算机中央处理器芯片不是传统的CPU,而是一个能够实现高速、多任务并行处埋、随心所欲“换芯”(升级)的可编程逻辑器件。正是因为集成电路的迅盂发展,推动了电子技术的发展,带来了电子系统设计的不断变革。Xlin公司是全球最大的可编程逻辑器件制造商,也是FPGA器件的发明者,特别是在通信技术领域,xix不仅是一个提供通信器件的供应商,还积极地参与通信标准的制定,堤供系统集成和系统解决方案等。为了满足和适应市场的需要,该公司不断地推出高性能的可编器件。从早期的XC95*、ⅹC40、 Spartan/ Spartanx、Ⅴ irtex/ Virtex-E、 Spartan-tSpartan-IE系列,发展刭现在的 CoolRunner-I、平台级和系统级的Ⅴ Virtex、Ⅴ irtex-IPro/virtex ProX,以及90m工艺没术的 Spartan-3系列器件。在器件内,不仪有32位的PowerPC405处理器硬核、32位的 Microblaze处理器软核、8位的 Picoblaze处理器软核,还提供了能够支持3,125GHz0GHz高速肆行通信的 Rocketo模块,以及DSP模块等。而且器件的价格不断地下降,如 Spartan3系列中的40万门器件价格在8美元以下。这些器件已广泛地应用于医疗设备、通信设备和航天、消费等各个领域。在2004年,当rxiux还将推出基于 ASMBL〔 Application Specific Modular Block,面向应用的组合模块架构的可编稈逻辑器件),这又将带来场平台级和系统级逻辑器件的革命作为一位从事多年可编程逻辑器件应用和技术服务的专业技术人员,有必要和义务不断地将8iinx最新的器件和信总及其应用介绍给广大的科抆工作者,这也是作者編写此的目的。本书将以Xn公可的产品为背景,系统介绍该公司最新CPLD和FPA产品的结构原理、性能特点、设计方法,详细介绍IE6集成化设计L具的特忠和使用方法,重点介绍 CPLDFPGA在数字系统设计、嵌入式处理器没计、高速串行数据通信等方面的应用:同时,还将对高速电路设计及信号完整性问题进行深入的探讨。而对于 Xilinx摧出的早期CPLD/FPGA器件,如XC95系列、xC40系列、第一代和第一代的 Spartan系列及Ⅴ Irtex系列,已经有很多资料和书籍进行了详细介绍,许多读者设计者对这些器件的使用也较为熟悉,因此,本书将不对这些器件进行重复讲解,以节省篇幅本书共分13章。第1章介绍 Xilinx的新一代复杂可绽程逻辑器件 CooiRunner-Ⅱ的结构、特性及每个功能模块的没计应用。第2章介绍ⅹiiκ的平台級现场可编程门阵列器件irtex-和ⅵ firex-IPro的结构、特性及设讦应用;同时还将对用于可支持10Gbs串行数据传输模块的ⅵ irtex- I proX系列器件进行简单描述。第3章介绍Xinκ提供的最新的低成本、高性能 Spartan-IE和 Spartan3系列器件的结构、特性及设计应用。第4章介绍Xilinx提供的集成化设计环境ISE6的初级应用,通过本章的学习和书中提供设计范例,可以使读者熟练地掌握ISE6设计工具的设计流程、基本功能和使用,并能进行基本的逻辑设计。第5章是第4章的提高篇,介绍xinx的各种辅助设计工具,通过本章的学习,可以使读者掌握辅助没计工具的使用,以满足复杂逻辑设计的需要。在进行复杂逻辑设计时,为了提高遐辑设计的性能,设计者希望对设计进行些设计方面的约定。第6章介绍约束设计的原埋、使用,以及如何利用设计工具提供的报告进行时序方面的分析,并对设计进行修改,从而满足设计的要求。第7章介绍针对 Xilinx可编程逻辑器件的一些高级设计方法,这些设计方法对大型、复杂的逻辑设计非常有用。在本章中,针对不同的设计群体,可以选择不同的设计方法,这些没计方法包括:①宏生成器,设计者采用该工具可以设计一些IP模块:②增量设计,可以方便设计的调试,并加快设计的速度;③模块化设计,该设计方法为基于团队的设计方式,将大型、复杂的设计分成数个模块,采用并行设计,从而缩短设计周期,提高设计性能。第8章介绍一些在进行逻辑设计时经常出现的问题及解决方法和设计技巧。第9章介绍 Xilinx在高速串行通信方面的应用,包括在Virtex-lFro和Vtx-lPoX平台级系列器件中集成3125Gb/和10Gbs串行通信收发器模块的原理、结构及使用。第10章介绍iinκ在FPGA中提供的两种32位嵌入式处理器方案,一种是采用先进的IP植入技术嵌入在iex-11Pro系列器件中的IBM公可的Powerpc405硬核处理器模块;另一种是采用了IBM总线技术的 Microblaze32位嵌入式处琿器软核。本章将详细介绍这两种处理器的内部结构、原浬。此外,还介绍采用Powerpc405处理器实现的 UltraControler控制器,处理器开发工具EDK61,以及如何使用该工具进行嵌入式处理器的设计。 Picoblaze是xinx推出的8位嵌入式处埋器软核模块,该模块可以集成到CPLD和PPGA可编程逻辑器件中,根据设计者的需要可以集成多个该模坎。第1章介绍 Pico Blaze模块的原理、结构、设计流程和应用。第12章为髙速电路设计篇,介绍在进行复杂和高速的逻辑及板级设计时,如何保证信号的传输质呈,如何在设计之前进行设计评估。第13章介绍与 Xilinx逻器件设计和ISE有关的第方的Modelsim仿真工具和 Synplify pro综合工具的使用。由于篇幅所限,本书不对ⅤHDL和 Verilog语言的语法结构及设计使用进行专门介绍。有关这方面的知识,请參考VHDL程序设计》、《硬件描述语言 epilog》等有关书籍和资料。在阅读和使用这本书时,需掌猩一些基本的VHDL和 verily话法结构和知识。书中所涉及到的参考设计,可登录网站hp:/ww.insight-ap,omcn和httpwww.insightFAE.org获取,或发送 E-mail专作者联系,地址为; hunter sun@ vista- asiapacific.cm在本书编写过程中,得到Xinx公司深圳办事处髙级工程师李进华和胡锓问志的大力帮助,并提供了宗贵的意见,在此表示衷心的感谢!孙航目录第1章 Coolrurner-]]系列器件结构及描述_■t概述2 CooIRunTer-I器件的逻辑结构1.2.]功能模块………即甲pbB即卜B即Bb“即目4bE2.2高级内部互连矩阵………即■萨甲甲即1.2.3输入匏出模块……■■■■严■■日日甲『■■幽血·中甲甲『甲自血中早P目■血鲁PPPP中自昏P甲目P■司甲P唱4日P宁24时钟分频器模块…r…r,…;……………甲早甲平冒唱血鲁甲■13 CoolRunner-]器件的时序模………會P■4P個4甲日日4:1.3.1时序模型描述…………1.3.2时序模皇设计范刺■■b■↓■罾郾L■↓郾■■■日■■■甲■■■↓■■唱↓L着4』晷唱q■看着4■■■4↓■■4■暑着■d山·着4■■■晶■■■山■4 Coolrunner. 1器件的设计和使用ad■1214.]双沿触发奇存器的使用【4,2时钟分频器的使用………唱冒■■。■14.3频率合成的使用………平早■13144门空功能的应用…r…r"t"::144.5施密特触发器的应用……………………"………………………………………14L46输入输出标准的应用…………-……-…-…4.7翰入輸出引脚你为参考电源输入的设置■■着■血看善■唱唱县■■昌■噌■■■昌』一■■■L=■L175木章小结幽·L血日甲甲日自甲1P晋自·甲唱冒幽甲早■d山■■■■hb■■晋晶■山b画b_画ma第2章 Tirtex-I/ Virtex-ⅡIPro系列器件结构及描述2概述中『晋1自會2.2Ⅴ irtex-Ⅱ系列器件结构和特性平日··■曾幽中冒■q■■甲P■冒■目■血口■b自日1画自咖。日咖。◆2221itex-I系列器件性…………………"r………"s…"t"2222 Virtex-的逻辑结构■■q■■日日自■日自■P顰『自b■『■『■中晋『晋h警■·』督■日■■“自山4晶。可即●中。■……∵·2223Ⅵ irtex- lI Pro系列器件结构和特性中中■■曾r!·35231 virtex I Pro系列器仵简介……………中會冒T■■232 virtex- IL Pro系列器件的组织结构…■P中1冒24 irtex- II Pro X系列器件简介晶T冒冒■画冒画山5本章小结4T+:■■1■日1血第3单 Spartan-E和 Spartan3系列器件结构及描述3!杨述■■■孟司4·◆·曾】·自中省吾■■面■晶如4532 Spartan-1E系列FPGA…………………………………………………4532. I Spart組n-LE器件简介322 Spartan-:!E器件结构描述ⅤI33 Spartan-3系列FPGA…23.31 Spartan-器件荷介■會即■督■画44日日日『日『日………·52332 Spartan-3器件结构描述bhr中h晶甲中山dI3.4本章小结■十■■冒■1■■日1鲁督■十l番鲁■昏昏卜bb番■■■d■b晶山d晶口第4章ISE6x设计工具简介和使用…………164641概述………42 Xilinx设计流程…………………………………………………694.3ISE6I软件的使用画■即■毛画■口司即43.设计开始→………了I43.2设计入(HL)……-……4.3.3仿真行为模型〔功能仿真4.34使用Msm进行仿真…43.5改计输入……………………:………………BI4.3.6设计实现43.7对顶层设计进行仿真(时序仿真)……………■电↓电·一■着LLLL画L4.38ED设计方法口山↓↓番944引脚与区城约束编辑器(PACE441利用PACE指定輸入输出的引脚和特性■L命LL■■·■s晶Lp甲甲p+最e442.利用PACF工具完成对逻辑区城酷控制-……4.4.3PACE的SSO分析和DRC功能……………".TT.+.1++F1+Hn+:964.44PACE时序分析功能r,…,………,…,……"………………………………975 XiEnx综合技术ⅹST∵……·号中命早P唱P备吾唱看吾普4.6Xinx器件的设计实现154.7 Xilinx器件的编程和配置上具 IMPACT………………………………114.71编程参数的说明和选择4.72编程T具 iMPACT的甄置模式概述1164.7.3编理工具 IMPACT的使用…-…4.74用 iMPACT病程工具执行和下载配置文件…………………………""11348本章小结◆·--4Tr·平v■m:FTm""r!12l第5章ISE6的辅助设计工具■d■■5.1概述…"!u…12252IP核生成工具骨·冒■鲁■■"面■↓中中印自电"……"………122521 Core Generator在ISE6工具中的使用23522用 Core generator建立个新的T程………1125523 Corer中的存储器编辑器………1295.3布局规划器…昏!冒『冒■冒■日d1531布局规划器概述…………129532布局规划器的功能和应用……533布局规划器的使用·q导聊●唱丬■·导◆◆■日4■■罾中中◆■喟目冒唱甲晶■冒晋冒唱■■■中▲d血b●13154FrGA底层编辑器■■■■◆中中■■■■■甲門鲁中肀■■■■h■■b■■山矗当h画饣VIN54. 1 FPGA底层编辑器概述……………136542FrGA底层编辑器的使用■唱■■■■■p口d■口p中目中加上PPP“p●PP■■pDP1375.5集成化逻辑分析工具5.5.}集成化逻辑分具简介""…4……""”44552集成化逻辑分析工具的组成和没计流程…145553 Chip scope Pro6l的操炸和使用56 XPower功耗分析工具15956.1 XPower概述……1605.62 XPower的使用16157本章小结H【斷■『自曾■『平中中中·口P『甲甲P·自·自『曾冒『平血幽167第6章约束设计与时序分析……]6961概述…甲甲4。·‘B甲4·白日日甲●血血自自■督■■b由自■■■■●62时序约束昏■■■■■b血▲山·h■〓■b▲bd晶■甲甲命↓↓▲唧ψ■▲山■■■■hψψ■■■■■■ψ山h如【■血■■■hh如山昏■hp山d621周期约束………71622偏移约束■■■■■■■■■623特定约束……1756,24分纽约束……………………………,…63约柬编辑器+a日“18063.[约束编辑器的使月…6.32约束没的范例…………1器B64吋序分析器………………;…"…"s………………!189641时字分析器的用户界面…■咖·咖■■■■■即■即■咖■■昌■■↓■即■p■■L■■即晷昌4↓昌昌↓■即18g6.42时序分析器的使用…咖·■■·■■ψ咖中血血幽■■■■嗒甲噌■申ψ血血■■■■司聊申■p口■噌『罪■『·■■↓看■■卩寻即↓L晶44P190643时序分析报告的分析和阅读+如4如-甲。吾+65本章小结…第7章可编程逻辑器件的高级设计pa日B品日↓↓4品—B.L444B+日吾聊4+日*271概述……,2087,2法生成器…209721宏生成器简介…722RPM设汁流程和设计步骤……72.3用于RPM设计的约束命令甲■咖申申●呻·如■晷噌晷晷噌自◆斗吾■■■■■嚼即■自L』』昌■■■■口■■↓p+↓4k画pm·2]0724使用RPM(宏生成〉的设计范例21273增量设计215731增量设计筍介和设计流程L晶LL■732增量设计的运用2]g7.33使用增量设计的范例r:,,;r",22174模块化设计……225741模块化设计流程…………"…”……*卜自■■血白血幽血血t血個■迅■■二■J■■■dL225742模块化设训的运用…………743模块化设计的应用技巧…-rrrrX
- 2020-12-02下载
- 积分:1
opencv2.4.9源码分析——SIFT
详细介绍SIFT算法,opencv的SIFT源码分析,以及应用实例SIFT算法进行了改进,通过对两个相邻高斯尺度空间的图像相减,得到个DoG(高斯差分,Difference of gaussians)的响应值图像Dx,y,σ)来近似LoGD(x,y, o)=(G(x,y, ko)-G(x,y,o)O1(x,y)=L(x,y, ko)-L(x,y,a(5)其中,k为两个相邻尺度空间倍数的常数。可以证明DoG是对LoG的近似表示,并且用DoG代替LoG并不影响对图像斑点位賀的检测。而且用DoG近似LoG可以实现下列好处:第一是LoG需要使用两个方向的高斯二阶微分卷积核,而DoG直接使用晑斯卷积核,省去了卷积核生成的运算量;第二是DoG保留了个高斯尺度空间的图像,因此在生成某一空间尺度的特征时,可以直接使用公式1(或公式3)产生的尺度空间图像,而无需重新再次生成该尺度的图像:第三是DoG具有与LoG相同的性质,即稳定性好、抗干扰能力强。为了在连续的尺度下检测图像的特征点,需要建立DoG金宇塔,而DoG金宁塔的建立又离不开髙斯金字塔的建立,如下图所小,左侧为高斯金字塔,右侧为DoG金字塔:(nextoctave)Scale(firstoctave)Difference ofaussianGaussian(DOG)图1高斯金字塔和DoG金字塔高斯金字塔共分O组( Octave),每组又分S层( Layer)。组内各层图像的分辨率是相同的,即长和宽相同,但尺度逐渐增加,即越往塔顶图像越模糊。而下·组的图像是由上组图像按照隔点降采样得到的,即图像的长和宽分别减半。高斯金字塔的组数O是由输入图像的分辨牽得到的,因为要进行隔点降采样,所以在执行降釆样生成高斯金字塔时,一直到不能降采样为止,但图像太小又亳无意义,因此具体的公式为:0=| log2 min(x,y)-2」(6)其中,X和Y分别为输入图像的长和宽,L」衣示向下取整。金字塔的层数S为:(7)LoWe建议s为3。需要注意的是,除了公式7中的第一个字母是大写的S外,后面出现的都是小写的s髙斯金字塔的创建是这样的:设输入图像的尺度为0.5,由该图像得到高斯金字塔的第0组的第0层图像,它的尺度为m,我们称m为基准层尺度,再由第0层得到第1层,它的尺度为ko,第2层的尺度为k2o,以此类推。这里的k为:(8)我们以s=3为例,第0组的6(s+3=6)幅图像的尺度分别为:0,ko0,k2∞,k3o0,k∞o,k5o(9)写成更一般的公式为:d=or∈[0,,s+2](10)第0组构建完成后,再构建第1组。第1组的第0层图像是由第0组的倒数第3层图像经过隔点采样得到的。由公式10可以得到,第0组的倒数第3层图像的尺度为k∞o,k的值代入公式8,得到了该层图像的尺度正好为2∞,因此第1组的第0层图像的尺度仍然是2∞。但由于第1组图像是由第0组图像经隔点降采样得到的,因此相对于第1组图像的分辨率来说,第θ层图像的尺度为ω,即尺度为2σ是相对于输入图像的分辨率来说的,而尺度为∞是相对丁该组图像的分辨率来说的。这也就是为什么我们称0为基准层尺度的原因(它是每组图像的基准层尺度)。第1组其他层图像的生成与第0组的相同。因此可以看出,第1组各层图像的尺度相对于该组分辨率来说仍然满足公式10。这样做的好处就是编程的效率会提高,并且也保证∫高斯金字塔尺度空间的连续性。而之所以会出现这样的结果,是因为在参数选择上同吋满足公式7、公式8以及对上·组倒数第3层图像降釆样这三个条件的原因。那么第1组各层图像相对」输入图像来说,它们的尺度为:=2k00r∈[0,,S-2该公式与公式10相比较可以看出,第1组各层图像的尺度比第0组相对应层图像的尺度人了一倍。高斯金字塔的其他组的构建以此类推,不再赘述。下面给出相对于输入图像的各层图像的尺度公式:o,)=2k∞O∈[0,O-1l,r∈[0,,+2(12)其中,O表示组的坐标,r表示层的坐标,a为基准层尺度。k用公式8代入,得:2O∈[0,…0-1],r∈[0,…,s+2](13)在高斯金字塔中,第0组第∂层的图像是输入图像经髙斯模糊后的结果,模糊后的图像的高频部分必然会减少,因比为了最大程度的保留原图的信息量,LoWe建议在创建尺度空间前首先对输入图像的长宽扩展一倍,这样就形成了高斯金字塔的第-1组。设输入图像的尺度为0.5,那么相对于输入图像,分辨率护人一倍后的尺度应为1,由该图像依次进行高斯平滑处理得到第-1组的各个层的尺度图像,方法与其他组的一样。由于增加」第-1组,因此公式13重新写为(0∈[-1,0,…,0-1],r∈[0,…,s+2](14)DoG金字塔是由高斯金字塔得到的,即高斯金宁塔组内相邻两层图像相减得到DoG金字塔。如髙斯金字塔的第0组的筼0层和第1层相减得到DoG金字塔的第0组的箅0层图像,高斯金字塔的第0组的第1层和第2层相减得到υσG金字塔的第θ组的第1层图像以此类推。需要注意的是,高斯金字塔的组内相邻两层相减,而两组间的各层是不能相减的因此高斯金字塔每组有s+3层图像,而DoG金宁塔每组则有s+2层图像。极值点的搜索是在DoG金字塔内进行的,这些极值点就是候选的特征点。在搜索之前,我们需要在DoG金字塔内剔除那些像素值过小的点,因为这些像素具有较低的对比度,它们肯定不是稳定的特征点。极值点的搜索不仅需要在它所在尺度空间图像的邻域内进行,还需要在它的相邻尺度空间图像内进行,如图2所示。每个像素在它的尺度图像中一共有8个相邻点,而在它的下一个相邻尺度图像和上个相邻尺度图像还各有9个相鸰点(图2中绿色标注的像素),也就是说,该点是在3×3×3的立方体内被包围着,因此该点在DoG金字塔内一共有26个相邻点需要比较,来判断其是否为极大值或极小值。这里所说的相邻尺度图像指的是在同个组内,因此在DoG金字塔内,每一个组的第0层和最后一层各只有一个相邻尺度图像,所以在搜索极值点时无需在这两层尺度图像内进行,从而使极值点的搜索就只在每组的中间s层尺度图像内进行。搜索的过程是这样的:从每组的第1层开始,以第1层为当前层,对第1层的DoG图像中的每个点取·个3×3×3的立方体,立方体上下层分别为第0层和第2层。这样,搜索得到的极值点既有位置坐标(该点所在图像的空间坐标),又有尺度空间坐标(该点所在层的尺度)。当第1层搜索完成后,再以第2层为当前层,其过程与第1层的搜索类似,以此类推。Scale图2DoG中极值点的搜索2、特征点的定位通过上一步,我们得到了极值点,但这些极值点还仅仅是候选的特征点,因为它们还存在一些不确定的因素。首先是极值点的搜索是在离散空间内进行的,并且这些离散空间还是经过不断的降采样得到的。如果把采样点拟合成由面后我们会发现,原先的极值点并不是真正的极值点,也就是离散空间的极值点并不是连续空间的极值点。在这里,我们是需要精确定位特征点的位置和尺度的,也就是要达到亚像素精度,因此必须进行拟合处。我们使用泰勒级数展开式作为拟合函数。如上所述,极值点是·个三维矢量,即它包括极值点所在的尺度,以及它的尺度图像坐标,即=(x,y,o),因此我们需要三维函数的泰勒级数展开式,设我们在=(x0,y,)处进行泰勒级数展开,则它的矩阵形式为:602f02f02fdxax day dao02f02f02faxdy ayay ayaallly-yol2f02f02fOrdo aydo dodo(15)公式15为舍去高阶项的形式,而它的矢量表示形式为f(X)=f(X0)+o¥(X-x0)+7(x-x0)a F(X-Xo(16)在这里表示离散空间卜的插值中心(在离散空问内也就是采样点)坐标,表示拟合后连续空间下的插值点坐标,设ⅹ=Ⅹ-Xn,则X表示相对于插值中心,插值后的偏移量。因此公式16绎过变量变换后,又可写成:f(x)=f(X0)+yX+XTⅩX20X2(17)对上式求导,得af (x a02f0ox ox+2 ax2+axa80f.02fXaxaX2(18)让公式17的导数为0,即公式18为0,就可得到极值点下的相对于插值中心的偏移量:aX2 ax(19)把公式19得到的极值点带入公式17中,就得到了该极值点下的极值Tf(X)=f(X0)+af02f10f)a2f/02f-1of2 8X2 0X/0X28X2dXf(X0)+H打×1ora2Ta2f-ra2fa2f-1 af2 dx dx2dx2dx2 dXa f02f-10f∫(X0)+dF×f7a22 ax ax2 axaflf(Xo)+xx+2 0X(-X)18Ff(X0)+2 aX(20)对于公式19所求得的偏移量如果大」0.5(只要x、y和σ任意一个量大于0.5),则表明插值点已偏移到了它的临近的插值中心,所以必须改变当前的位置,使其为它所偏移到的插值中心处,然后在新的位置上重新进行泰勒级数插值拟合,直到偏移量小于0.5为止(x、y和σ都小于0.5),这是一个迭代的工程。当然,为了避免无限次的迭代,我们还需要设置个最人迭代次数,在达到了迭代次数但仍然没有满足偏移量小于0.5的情况下,该极值点就要被剔除掉。另外,如果由公式20所得到的极值f(X过小,即f(X1,则Tr(H)2(a+β)2(+β)2(y+1)2Det(h)2(25)上式的结果只与两个特征值的比例有关,而与具体的特征值无关。我们知道,当某个像系的矩阵的两个特征值相差越大,即γ很大,则该像素越有可能是边缘。对于公式25,当两个特征值相等时,等式的值最小,随着γ的增加,等式的值也增加。所以,要想检查主曲率的比值是否小于某一阈值y,只要检査下式是否成立即可:Tr(H)(y+1)Det(h)(26)对于不满足上式的极值点就不是特征点,因此应该把它们剔除掉。Lowe给出γ为10在上面的运算中,需要用到有限差分法求偏导,在这里我们给出具体的公式。为方便起见我们以图像为例只给出二元函数的实例。与二元函数类似,三元函数的偏导可以很容易的得到设f(i,是ν轴为i、x轴为j的图像像素值,则在(j点处的一阶、二阶及二阶混合偏导af f(i, j+1)-f(i, j0ff(i+1,j)-f(-1,ax2h2h(27)ff(+1)+f(-1)-2f(,j)a2ff(+1,j+f(-1,j)-2f(i,j)hh(28)2ff(-1,j-1)+f(i+1,j+1)-f(i-1,+1)-f(i+1,-1)dx d(29)由丁在图像中,相邻像素之问的间隔都是1,所以这里的h3、方向角度的确定经过上面两个步骤,一幅图像的特征点就可以完全找到,而且这些特征点是具有尺度不变性。但为了实现旋转不变性,还需要为特征点分配一个方向角度,也就是需要根据检测到的特征点所在的高斯尺度图像的局部结构求得一个方向基准。该高斯尺度图像的尺度a是已知的,并且该尺度是相对于高斯金字塔所在组的基准层的尺度,也就是公式10所表示的尺度。而所谓局部结构指的是在高斯尺度图像中以特征点为中心,以r为半径的区域内计算所有像素梯度的幅角和幅值,半径r为(30)其中a就是上面提到的相对于所在组的基准层的高斯尺度图像的尺度。像素梯度的幅值和幅角的计算公式为:m(xy)=√(x+1,y)-L(x-1,y)2+(L(x,y+1),L(x,y-1)2(31)L(x,y+1)-L(x,y-1)o(x, y)=arctanL(x+1,y)-L(x-1,y)(32)因为在以〃为半径的区域内的像素梯度幅值对圆心处的特征点的贡献是不同的,因此还需要对幅值进行加权处理,这里采用的是高斯加权,该高斯函数的方差Cm为:Om=1.50(33)其中,公式中的σ也就是公式30中的σ在完成特征点邻域范围内的梯度计算后,还要应用梯度方向直方图来统计邻域內内像素的梯度方向所对应的幅值大小。具体的做法是,把360°分为36个柱,则每10°为一个柱,即0°~9为第1柱,10°~19为第2柱,以此类推。在以r为半径的区域内,把那些梯度方向在0~9°范围内的像索找出来,把它们的加权后的梯度嘔值相加在一起,作为第1柱的柱高;求第2柱以及其他柱的高度的方法相同,不再赘述。为了防止某个梯度方向角度因受到噪声的干扰而突变,我们还需要对梯度方向直方图进行平滑处理。 Opencv2.4.9所使用的平滑公式为:H()~h(-2)+h(+2)4×(h(-1)+h(+1)),6×h()i=0...15161616(34)其中h和H分别表示平滑前和平滑后的直方图。由于角度是循环的,即0°=360°,如果出现h(),j超出了(0,…,15)的范围,那么可以通过圆周循环的方法找到它所对应的、在0°~360°之间的值,如h(-1)-h(15)这样,直方图的主峰值,即最高的那个柱体所代表的方向就是该特征点处邻域范围内图像棁度的主方向,也就是该特征点的上方向。由于柱体所代表的角度只是一个范围,如第1柱的角度为0~9°,因此还需要对离散的梯度方向直方图进行插值拟合处理,以得到更精确的方向角度值。例如我们凵经得到了第i柱所代表的方向为特征点的主方向,则拟合公式为:H(i-1)-H(i+1)B=i+=0,…152×(H(-1)+H(i+1)-2×H()(35)O=360-10xB(36)其中,H为由公式34得到的直方图,角度6的单位是度。同样的,公式35和公式36也存在着公式34所遇到的角度问题,处理的方法同样还是利用角度的圆周循环。每个特征点除了必须分配一个主方向外,还可能有一个或更多个辅方冋同,增加辅方向的目的是为了增强图像匹配的鲁棒性。辅方向的定义是,当存在另个柱体高度大于主方向柱体高度的80%时,则该柱体所代表的方向角度就是该特征点的辅方向。在第2步中,我们实现∫用两个信息量来表小一个特征点,即位置和尺度。那么经过上面的计算,我们对特征点的表示形式又增加了个信息量一一方向,即(x,y,o,6)。如果某个特征点还有一个辅方向,则这个特征点就要用两个值来表示——(x,y,,B1)和(x,y,,02),其中O1表示主方向,O2表示辅方向,而其他的变量x,y,不变。4、特征点描述符生成
- 2020-06-25下载
- 积分:1