一种快速X角点亚像素检测方法与流程

文档序号:17071019发布日期:2019-03-08 23:19阅读:219来源:国知局
一种快速X角点亚像素检测方法与流程

本发明涉及相机标定与位姿测量技术,尤其涉及一种快速x角点亚像素检测方法。



背景技术:

在视觉测量中,为了降低对目标检测和识别的难度,出现了各种人工标记点,其中x标记点因对比性强、易检测、易制作等优点,被广泛应用于相机标定与光学跟踪系统。如基于阵列x角点的棋盘格,被广泛应用于张正友的共面靶标相机标定法中的平面靶标,并被集成到matlab视觉工具包和开源计算机视觉库opencv中;在microntracker光学跟踪系统中则将x标记组合粘贴于工具上进行工具位姿的测量与跟踪。相比基于红外光线的ndipolaris跟踪系统,需要使用特制主动红外发光球状标记或被动反射红外小球作为检测目标的技术,基于可见光与x角点标记的microntracker视觉跟踪系统无论是相机硬件还是标记制作都具有明显的成本优势,因而已被广泛应用于手术室器械跟踪和机器人位姿跟踪。

利用x角点进行相机标定或位姿测量的前提是x角点的精确检测与定位。目前已有不少方法能实现x角点的检测与亚像素定位。

例如,opencv采用通用的基于灰度分布最大曲率点检测的harris算子进行棋盘格x角点检测。针对相机标定中棋盘格图像上x角点的检测,利用x角点特征的属性,朱枫等提出基于对称方差的sv检测算子,主要利用关于x角点对称的像素灰度值接近且x角点邻域内灰度变化显著的特征,该算法原理简单,但在某些情况下会出现误检,且环境的变化会导致阈值选取的不稳定。

储珺等提出采用环形模板的角点检测算子,该算子利用x角点为黑白区域边界直线交点的属性,设计环形遍历模板对棋盘格图像进行遍历,通过利用遍历后图像的属性确定棋盘格角点的位置,但该算法需要事先知道棋盘格格子的边长,然后确定环形模板的半径,对于边长变化的棋盘格或畸变的棋盘格图像会存在漏检的情况。

而胡海峰和侯晓微综合使用了几种算法首先利用radon变换检测棋盘格直线,然后利用harris和forstner算子对角点进行精确定位,但是该算法精确度较高但运算量大,且只适用于棋盘格角点的检测。



技术实现要素:

有鉴于此,本发明的主要目的在于提供一种快速x角点亚像素检测方法,能够实现x角点的高精度检测和快速亚像素定位,提高x角点检测算法的抗干扰性、自适应性。

为达到上述目的,本发明的技术方案是这样实现的:

一种快速x角点亚像素检测方法,包括如下步骤:

a、获取x角点所在的图像以及预处理图像得到采样序列的步骤;

b、基于图像块搜索间隔分布采样窗口得到采样序列的步骤;

c、基于x角点的采样序列特性及中心特征筛选出符合条件的角点的步骤;以及,

d、使用直线亚像素拟合的方法确定角点的亚像素位置的步骤。

其中,步骤a所述获取x角点所在的图像的步骤,具体为:

a1、获得包含x角点的灰度图像,设图像的分辨率为cols*rows;

a2、对所述灰度图像进行高斯平滑处理。

其中,步骤b所述基于图像块搜索间隔分布采样窗口得到采样序列的步骤,具体为:

设为方形采样窗口,其边长设为2*r+1,采样窗口的坐标为(xi,yi),相邻采样窗口中心相隔像素距离为r,其中:

其中,步骤c所述基于x角点的采样序列特性筛选的过程,包括:对图像像素周围的采样序列得到差分序列的步骤,以及对差分序列梯度数目以及梯度像素间距进行判定的步骤。

其中,步骤c所述中心特征筛选的过程,包括中心邻域像素最大、最小值判定的步骤和最大、最小值之差阈值筛选的步骤。

其中,步骤c所述基于x角点的采样序列特性及中心特征筛选出符合条件的角点的步骤,具体包括:

c1、以行遍历的方式,从符合条件的第一行第一个(x0,y0)坐标点到最后一行最后一个(xend,yend)坐标点遍历所有采样窗口中心坐标,设以(xi,yi)为采样窗口中心点进行像素采样,将采样值存入序列中sample,采样点的个数为8*r个;

c2、对sample序列做自适应双阈值二值化处理;自适应双阈值以采样像素平均值为基础,包含一个上阈值与一个下阈值;对采样序列进行双阈值二值化处理之后,得到两个二值化序列sequence和sequence′;

c3、判断采样序列梯度数目特性的步骤;

c4、判断采样序列的梯度间距特性的步骤;

c5、在图像上连接直线ac、bd,设其交点为xp,使用射影几何相关知识确定角点像素坐标位置(xp,yp),计算公式为式(1):

b1=(y2-y1)x1+(x1-x2)y1

b2=(y4-y3)x3+(x3-x4)y3

|d|=(x1-x2)(y4-y3)-(x4-x3)(y2-y1)

|d1|=b2(x2-x1)-b1(x4-x3)

|d2|=b2(y2-y1)-b1(y4-y3)

xp=|d1|/|d|

yp=|d2|/|d|(1)

设以(xp,yp)为中心,采样3*3邻域,比较得到邻域内最大最小值pmax、pmin,计算两者之间的差值δ=(pmax-pmin),若δ>threshlod,执行步骤c6;否则,跳转到步骤c1,(xi,yi)变为下一个采样窗口中心点;

c6、计算x角点的亚像素位置的步骤。

其中,步骤c3具体包括:求差分,即后项减去前项,得到差分序列diff={a,b,...}和diff′={a′,b′,...},序列差分的最后一项为sequence和sequence′序列的第一项减去最后一项;分别判断diff和diff′序列是否有四个不为零的值:

若abs(diff[i])!=0(0<i<8*r)和abs(diff′[i])!=0(0<i<8*r)的个数均有四个,则认为该采样序列sample满足序列梯度特性;针对diff序列,记下该点的位置为梯度位置step[i](0<i<4),转入步骤c4;否则,跳转到步骤c1,将(xi,yi)变为下一个采样窗口中心点。

其中,步骤c4具体包括:

设二值化序列sequence的四个梯度按顺序位置为a、b、c、d,分别对应step[i](i=0,1,2,3),计算得到ab、bc、cd、da的欧式距离,若四个欧氏距离均大于设定阈值,则执行步骤c5;否则,跳转到步骤c1,将(xi,yi)变为下一个采样窗口中心点。

其中,步骤c6具体包括:

在采样序列sample中选取以阶梯位置为中心的左右共5个点进行二次曲线拟合;将离散的梯度值之差拟合为一条连续的曲线,近似为二次抛物线;二次抛物线的极值点即为沿该梯度方向灰度变化最大的地方,即为阶梯的准确位置;确定四个阶梯的亚像素位置之后,使用射影几何相关知识,利用ac、bd两条直线相交,计算出角点的亚像素位置。

步骤d所述直线亚像素拟合的过程,包括符合采样像素序列阶梯数目特性、阶梯间距特性以及中心筛选的差分序列梯度位置亚像素拟合。

本发明的快速x角点亚像素检测方法,具有如下有益效果:

将本发明的检测方法应用于基于x角点检测的各种算法及流程设计中进行x角点检测和识别,具有旋转不变性、抗畸变性的优点,能够实现x角点的高精度检测,提高以x角点为基础的算法速度。

附图说明

图1为本发明实施例快速x角点亚像素检测方法的流程示意图;

图2为本发明实施例间隔分布的采样窗口中心在图像中的分布示意图;

图3为本发明实施例采样示意图;

图4a、图4b和图4c为本发明实施例采样可能的误采情况示意图。

具体实施方式

下面结合附图及本发明的实施例对本发明的快速x角点亚像素检测方法作进一步详细的说明。

本发明提供的快速x角点亚像素检测方法,主要用于提高x角点检测的速度和精度。其基本思路在于,利用角点周围像素采样值,通过采样序列阶梯数目、阶梯间距以及中心条件筛选确定角点的像素位置。然后基于二次曲线拟合及直线相交确定角点的亚像素位置,达到较好的实时处理速度。

本发明的快速x角点亚像素检测方法,主要包括如下步骤:首先获取x角点所在的图像,使用图像块搜索的方式间隔分布采样窗口,基于x角点的采样序列梯度数目特性、梯度间距特性及中心特征筛选出符合条件的角点,并使用直线亚像素拟合的方法确定角点的亚像素位置。

其中,所述x中心角点的采样序列数目特性、间距特性筛选的过程,包括图像像素周围的采样序列得到差分序列的步骤,以及对差分序列梯度数目进行判定的步骤。所述中心特征筛选的过程,包括中心邻域像素最大、最小值判定的步骤和最大、最小值之差阈值筛选的步骤。

所述直线亚像素拟合的过程,包括符合对称性以及中心筛选的差分序列梯度位置亚像素拟合的步骤。

具体在本发明的实施例中,即包括:首先要获取包含x角点的若干视频帧或图像,对所述图像进行x角点特征筛选,实现x角点的亚像素定位。

其中,x角点特征筛选,包括对x角点周围采样像素的自适应二值化、差分、判断差分序列梯度数目、判断差分序列梯度间距、定位x角点像素位置以及对x角点像素位置做中心邻域像素最大、最小差值判断等操作流程。x角点的亚像素定位包括对角点周围像素梯度位置的亚像素位置拟合以及计算亚像素直线的交点操作。

图1为本发明实施例快速x角点亚像素检测方法的流程示意图。如图1所示,包括如下步骤:

步骤11:首先获得包含x角点的灰度图像,设图像的分辨率为cols*rows,在本实施例中,假设图像分辨率为640*480。

步骤12:对图像进行高斯平滑处理。

步骤13:基于图像块搜索的方式间隔分布采样窗口。

这里,假设为方形采样窗口,其边长设为2*r+1,采样窗口的坐标为(xi,yi),如图2的采样窗口中心点在图像中的分布情况所示,相邻采样窗口中心相隔像素距离为r,其中:

本实施例中,设方形采样窗口边长为11,半径为r=5,采样窗口中心坐标为(xi,yi),其中:

xi=p*5(0<p<640/5-1,p∈n)

yi=q*5(0<q<480/5-1,q∈n)。

步骤14:以行(或列)遍历的方式,从符合条件的第一行(列)第一个(x0,y0)坐标点到最后一行(列)最后一个(xend,yend)坐标点遍历所有采样窗口中心坐标,设以(xi,yi)为采样窗口中心点进行像素采样,将采样值存入序列中sample,采样点的个数为8*r个。序列sample:

在本实施例中,是以行遍历的方式,从符合条件的第一行第一个(x0,y0)坐标点到最后一行最后一个(xend,yend)坐标点遍历所有采样窗口中心坐标,设以(xi,yi)为采样窗口中心点进行像素采样,采样方式如图3所示,将采样值存入序列中sample,采样点的个数为40个。序列sample:

sample={img[yi-r][xi-r]...img[yi-r][xi+r]...

img[yi+r][xi+r]...img[yi+r][xi-r]...img[yi-r+1][xi-r]}。

步骤15:为了分析采样序列的特性并提高算法的鲁棒性,首先需要对sample序列做自适应双阈值二值化处理。自适应双阈值以采样像素平均值为基础,包含一个上阈值与一个下阈值。对采样序列进行双阈值二值化处理之后,得到两个二值化序列sequence和sequence′。

步骤16:判断采样序列梯度数目特性。求差分,即后项减去前项,得到差分序列diff={a,b,...}和diff′={a′,b′,...},序列差分的最后一项为sequence和sequence′序列的第一项减去最后一项。分别判断diff和diff′序列是否有四个不为零的值。

若abs(diff[i])!=0(0<i<8*r)和abs(diff′[i])!=0(0<i<8*r)的个数均有四个,则认为该采样序列sample满足序列梯度特性。针对diff序列,记下该点的位置为梯度位置step[i](0<i<4),转入步骤17。否则,跳转到步骤14,将(xi,yi)变为下一个采样窗口中心点。

在本实施例中,则具体为:若abs(diff[i])!=0(0<i<40)和abs(diff′[i])!=0(0<i<40)的个数均有四个,则该采样序列sample满足序列梯度特性。针对diff序列,记下该点的位置为梯度位置step[i](0<i<4),转入步骤17。否则,转回步骤14,(xi,yi)变为下一个采样窗口中心点。

步骤17:判断采样序列的梯度间距特性。设二值化序列sequence的四个梯度按顺序位置为a、b、c、d,分别对应step[i](i=0,1,2,3),计算得到ab、bc、cd、da的欧式距离,若四个欧氏距离均大于设定阈值,则执行步骤18;否则,跳转到步骤14,将(xi,yi)变为下一个采样窗口中心点。

具体实施过程中,在检测角点时,会遇到直线型误检情况(如图4a、图4b和图4c所示),为了剔除误检,判断x角点的中心特性。

步骤18:在图像上连接直线ac、bd,设其交点为xp,使用射影几何相关知识确定角点像素坐标位置(xp,yp),计算公式为式(1):

b1=(y2-y1)x1+(x1-x2)y1

b2=(y4-y3)x3+(x3-x4)y3

|d|=(x1-x2)(y4-y3)-(x4-x3)(y2-y1)

|d1|=b2(x2-x1)-b1(x4-x3)

|d2|=b2(y2-y1)-b1(y4-y3)

xp=|d1|/|d|

yp=|d2|/|d|(1)

设以(xp,yp)为中心,采样3*3邻域,比较得到邻域内最大最小值pmax、pmin,计算两者之间的差值δ=(pmax-pmin),若δ>threshlod,执行步骤19;否则,跳转到步骤14,(xi,yi)变为下一个采样窗口中心点。

步骤19:计算x角点的亚像素位置。在采样序列sample中选取以阶梯位置为中心的左右共5个点进行二次曲线拟合。将离散的梯度值之差拟合为一条连续的曲线,近似为二次抛物线。二次抛物线的极值点即为沿该梯度方向灰度变化最大的地方,即为阶梯的准确位置。确定四个阶梯的亚像素位置之后,使用射影几何相关知识,利用ac、bd两条直线相交,计算出角点的亚像素位置。

本发明利用x角点的对称性以及图像的连续性实现了x角点的快速检测,具有旋转不变性以及较高的精度。适合应用于基于x角点检测的各种算法及流程设计中。

以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1