工业机器人控制轨迹规划及编程
wei简单的介绍了工业机器人控制轨迹规划和编程课程,可以参考下,开拓思路山东建筑大学备课纸第七章工业机器人的轨迹规划及编程轨迹规划轨迹规划是指根据作业任务要求,确定轨迹参数并实时计算和生成运动轨迹。它是工业机器人控制的依据,所有控制的目的都在于精确实现所规划的运动。机器人语言机器人具有可編程功能,因此需要用户和机器人之间的接口。为了提高编程效率,岀现了机器人编程话言,它以一种暹用的方式解决了人一机通信问题。机器人离线编程机器人离线编程系统是利用计算机图形学,建立机器人编程环境,从而可以脱离机器人工作现场进行编程的系统。由于不占用机动时间,提高了设备利用率。而且由于离线编程本身就是 CAD/CAM一体化的组成部分,有时可以直接利用CAD数据库的信息,大大减少了编程时间,提高了编程水平。7.1工业机器人的轨迹规划引言指定工业机器人执行某政接作作[加些约束条住轨迹的划和协关节坐标空间斗标空间轨迹规划涉及卜面三个问题◇要对机器人的任务进行描述,即对机器人的运动轨迹进行描述。◇根据所确定的轨迹参欻,如何在计算机内部描述所要求的轨迹。这主要是选择习惯规定以及合理的软件数据结构问题。◇对内部描述的轨迹进行实际计算。通常是在运行时间内按一定的速率计算出位置、速度和加速度,生成运动轨迹。二、轨迹规划的一般性问题工业机器人的作业可以描述成工具坐标系{相对于工作坐标系{S的一系列运动:图7-1作业的措述工具坐标系相对于工作坐标系的运动来描述作业路经把作业路径的描述与具体的机器人、手爪或工具分离开来,形成了模型化的作业描述方法。从而使这种描述既适用于不同的机器人,也适用于同一机器人上装吏不同规格的工具:2凯器具的症置程上置机器人从初始状态运动到终止状态的作业,看成是工具巫标系从初始位置T0}变化到终止位置Tf}的坐标变换变换包含了工具坐标系的位置和姿态的变化。在轨迹规划中,也常用“点”这个词来表示机器人的状态,或用它来表示工具坐标系的位姿。当需要更详细地描述运动时,不仅要规定机器人的起始点和终止点,而且要给出介于起始点和终止点之间的中间点,也称路径点运动轨迹除了位姿约束外,还存在着各路径点之间的时间分配问题。例如,在规定路径的同时,必须给出两个路径点之间的运动时间机器人的运动应当平稳,不平稳的运动将加剧机械部件的磨损,并导致机器人的振动和冲击。钪迹规划既可在关节■空间中进行,也可在直角坐标空间中进行。在关节空间中进行轨·迹规划是指将所有关节变量表示为时间的函数,用这些关节函数及其阶、三阶导数描述机器人预期的运动。在直角坐标空间中进行轨迹规划,是指将手爪位姿、速度和加速度表示为时间的函数,而相应的关节位置、速度和加速度由手爪信息导出三、关节空间的轨迹规划机器人作业路径点通常由工具坐标系(}相对于工作坐标系{S)的位姿来表示,因此,在关节空间中进行轨迹规划4≯首先需要将毎个作业路径点向关节空间变换,即用逆运动学方法把路径点转换成关节角度值,或称关节路径点;然后,为毎个关节相应的关节路径点拟合光滑函数;这些关节函数分別描述了机器人各关节从起始点开始,依次通过路径点,最后到达某目标点的运动轨迹。由于毎个关节在相应路径段运行的时间相同,这样就保证了所有关节都将冋时到达路径点和目标点,从而也保证了工具坐标系在各路径点县有预期的位姿;关节空间的轨迹规划:关节空间中进行轨迹规划,不需考虑直角坐标空间中两个路径点之间的轨迹形状,仅以关节角度的函数来描述机器人的轨迹,计算简单、省时;关节空阃与直角坐标空间并不是连续的对应关系,关节空间内不会发生机构的奇异现象,从而避免了在直角坐标空间规划时所出现的关节速度失控问题;在关节空间进行轨迹规划,规划路径不是唯一的。只要满足路径点上的约束条件,可以选取不同类型的关节角度函数,生成不同的轨迹。1.三次多项式插值当己知末端操作器的起始位姿和终止位姿时,庄逆向运动学,即可求出对应于两位姿的各个关节角度。因此,末端操作器实现两位姿运动轨迹描述,可在关节空间中用通过起始点关节角和终止点关节角的一个平滑轨迹函数0(t)来表示;为了实现关节的平稳动,每个关节的轨迹函数(t至少需要满足四个约束条件:两端点位置约束和两端点速度约束端点位置约束是指起始位姿和终止位姿分别所对应的关节角度00=已为满足关节运动速度的连续性要求,在起始点和终止点的关节速度简单地设定为零,即(0=06()=0上述给出的四个约東条件可以唯一地确定一个三次多项a(t)=a0+a!t+a22+a3t3运动过程中的关节速度和加速度则为:9()=a1+2a2!+3agt2(t)=2a2+6at为了求得三次多项式的系数,代以给定的约束条件,有方稈组分=a+at+a+aD-dt 2u r t ja rl求解上述方程组,可得3所以,对于初速及终速为零的关节运动,满足连续平稳运动要求的三次多项式插值函数为a(r=6+(-2--)其关节角速度和角加速度表达式为()-是2(明,-一吾(,-8F6()=是(4-)-;-r三次多项式插值的运动轨迹曲线!图7三践康式插值毛动轨遗)位瞎时刺雙:{)急澧时繭线:C)鱼加速度间曲线2.过路径点的三次多项式插值机器人作业除在A、B点有位姿要求外,在路径点C、D…也有位姿要求。对于这种情況,假如终端执行器在路径点停留,即各路径点上速度为0,则轨迹规划可连续直接使用前面介绍的三次多项式插值方法;但如果只是经过,并不停留航需要将前述方法推广。AB仨某段路径上,“起始点”为θ0和ω0,"终止点"为f和ωf。这时,确定三次多项式系数的方法与前面所述的完全一致,只不过是速度约束条件变为e(0)=me(r)=a利用约束条件确定三次多项式系数,有下列方程组:9=0+ax+口+aa,=a1+2a+3求解方程组3+出)=02)+七《+路径点上的关节速度,可出以下任一规则确定如果机器人末端操作器在经过路径点时冇速度要求,则可以利用此路径点上的逆雅可比矩阵,把该路径点的直角坐标速度转换成关节坐标速度。轨迹规划时则以此作为速度约来条件。如果某个路径点是机器人的奇异点,即此点的逆雅可比不可求,这时就无法求关节速度了;此外,在求各点关节速度时,要逐点计算逆雅可比矩阵,并依此计算关节速度,耗时较多。路径点上的关节速度,可由以下任一规则确定由控制系统采用某种启发式方法自动地选取合适的路径点速度。用三次多项式插值前,先假设各路径点之间关节运动速度是均匀的,即图中所示用直线段将这些路径点依次连接起来。规则选定:如果桾邻线段的斜率在路径点处改变符号,则速度选为零;如杲相邻线段斜率不改变符号,则选取路径点两侧的线段斜率的平均值作为该点的速度。因此,只要给定路径点,系统就能依此规则自动生成相应的路径点速度路径点上的关节速度,可由以下任一规则确定斗按照保证毎个路铚点的加速度连续的原则,由控制系统自动地选择路径点的速度。为此,可以设法用丙条三次曲线在路径点处按一定规则连接起来,拼凑成所要求的轨迹。拼凑的约束条件是:连接处速度连续,而且加速度也连续。7.2工业机器人的编程机器人编程方式机器人编程,是针对机器人为完某瓊作亚进拉程序投复的人的吧4国和力与编国性定环境中作诀上式有大关作业能方微计算机近自然路司匿人与机器实现各种机器人揉作机器人编程方法三种形式1、示教编程操作者必须把机器人终端移动至目标位置,并把此位置对应的机器人关节角度信息记录进内存储器,这是示教过程。当要求复现这些运动吋,顺序控制器从内存读岀相应位置,机器人就可重复示教时的轨迹和各科操作,这是再现过程。手把手示教」示教盒示教于把手示教要求用户使用安装在机器人于臂内的操纵杆,按给定运动顺序示教动作内容。示教盒示教则是利用装在控制盒上的按钮驱动机器人按需要的顺序进行操作示教编程优点:只需要简单的设备和控制装置即可进行。操作简单,易于掌握。示教再现过程很快,示教之后马上即可应用。示教编程缺点:编程占用机器人的作业时间艮难规划复杂的运动轨迹以及准确的直线运动;难以与传感信息相配合难以与其他操作同步;2、机器人语言编程实现了计算机编程,并可以引人传感信息,从而提供一个更通用的方法来解决人一机器人通信接口问题。目前应用于工业中的是动作级和对象级机器人语3、离线编程用通用语言或专门语言预先进行程序设计,在离线的情况下进行轨迹规划的编程方法。离线编程系统是基于CAD数据的图形编程系统。由于CAD技术的发展,机器人可以利用CAD数据生成机器人路径,这是集机器人于CIMS系统的必由之路、机器人语言编程早期的工业机器人,由于完成的作业比较简单,作业内客改变不频繁,采用鬥定程序控制或示教再现方法即可满足要求,不存在语言问题。机器人木身的发展,计算机系统功能日益完善以及要求机器人作业内容愈加复杂化,利用程序来控制机器人显得越来越困难编程过程过于复杂,使得在作业现场对付复杂作业十分困难。述北一一用机器人语言→[控制机器人动作(一)机器人语言的发展概况1973年,斯坦福大学人工智能研究室美国IBM公司1979年,美国 Unimation公司80,美国 Automatrix公司80,美国麦道公司(二)机器人语言的分类1、根据作业描述水平的高低分(1)动作级机器人语言VAL◆以机器人手爪的运动作为作业描述的中心◇用该级语言编写的作业程序,通常由使机器人手爪从一个位置到另一个位置的一系列运动语句组成。◆动作级机器人语言的每一条语句对应于一个机器人动作。2)对象级机器人语言- AUTOPASS今以近似自然语言的方式,按照作业对象的状态变化来进行程序设计以描述操作物体之间关系为中心的语言。今它不需要去描述机器人手爪如何动作,只要由操作者给出作业本身的顺序过程的描述及环境模型的描述,机器人即可自行决定如何动作。(3)任务级机器人语言◇最理想的机器人高级语言,是用被操作物体,而不是机器人的动作来描述作业任务◇使用者只要按某种原则给岀作业起始状态和作业目标状态,机器人语言系统即可利用口有的环境信息和知识库、数据库自动进行推呷、计算,最后白动生成机器人详细的动作、顺序和相应数据。◇须具冇判断环境、描述环境的能力;同时,也必须冇自动完成许多规划任务的能力。2、按表面形式分汇编型,如VAL语编译型,如AI、LM语言;自然语言型,如 AUTOPASS语言等;(三)机器人语言的特征机器人语言则包含语言本身、语言处理系统和机器人的工作环境模型三部分9盐理系恒外部乱音工件1.具有作业环境和作业对象的描述性。1)环境输入:视机器人语言水平不同,输入方法也不相同。目前的输入方法一般是由操作者与计算机的人机对话来进行的。将来随着视觉技术的发展,可能由机器人视觉的方法自动生成。〔2)环境建模:进行机器人编程时,需要描述物体三维空间的几何关系的语言,对操作物体的位置和姿态,操作物体之间的关系进行描述,并使之模型化。2)环境模型的修改、更新:在作业过程屮,操作物体的位置、姿态以及它们之间的关系一般随着作业而发生改变,语言系统要根据操作情况的变化来改变环境模型的内容。2.具有作业内容的描述性3.具有良好的编程环境4.具有人机接口和传感器接口功能机器人离线编程、离线编程的概念第一代工业机器人采用示教编程方式,无论是采用手把手示教或控制盒示教,都需要机器人停止原来的工作。而再现时若不能满足要求,还需反复进行示教进行一项任务之前,在现场编程过程要花费很多时间,这对于大批量生产的简单作业,基本还能满足要求。但是,随着机器人应用到中小批量生产,以及要求完成任务的复杂程度的增加,用示教编程方式就很难适应了。二、机器人离线编程随着计算机技术和机器人技术的不断发展,机器人与 CAD/CAM技术结合,已形成生产效率很髙的柔性制造系统(FMS)和计算机集成制造系统(CIMS)。这些系统中大量采用工业机器人,具有很高的适用性和灵活性一)离线编程的概念杋器人离线编程就是利用计算机图形学的成果,建立机器人及作业环境的三维几何模型,然后对机器人所婓完成的任务进行离线规划和编程,并对编程结果进行动态图形仿真,最后将满足要求的编程结果传到机器人控制柜,使机器人完成指定的作业任务。(二)离线编程系统的一般要求工业杋器人离线编程系统的一个重要特点是能够和CAD!CM建立联系,能够利用CAD数据库的资料。对于一个简单的机器人作业,几乎可以直接利用CAD对零件的描述来实现编程。三)离线编程系统的基本组成10
- 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