发明名称 一种基于Xtion摄像头的多目标相对位姿识别方法
摘要 本发明涉及计算机视觉技术领域,一种基于Xtion摄像头的多目标相对位姿识别方法,包括以下步骤:1、安装机载Xtion摄像头,2、制作并安装靶标作为被观测机器人的位姿标志,3、逐次识别多个被观测机器人并计算识别目标的相对坐标,4、逐次计算步骤3中识别到的被观测机器人的相对偏航角。本发明具有以下优点:一是,价格低廉,采用造价低的Xtion摄像头,配合简单的靶标充分利用了单目视觉处理速度快的优点,距离测量上使用了Xtion摄像头的深度信息,比单目视觉的测距方法更为准确;二是,在面对光照变化更稳定的HSV颜色空间中使用阈值分割不同颜色,简单有效;三是,采用机载摄像头的测量方式,不必局限在固定的场景中。
申请公布号 CN106570904A 申请公布日期 2017.04.19
申请号 CN201610938132.8 申请日期 2016.10.25
申请人 大连理工大学 发明人 连捷;栾天
分类号 G06T7/70(2017.01)I;G06T7/50(2017.01)I;G06T7/11(2017.01)I;G06T7/136(2017.01)I 主分类号 G06T7/70(2017.01)I
代理机构 大连星海专利事务所 21208 代理人 王树本
主权项 一种基于Xtion摄像头的多目标相对位姿识别方法,其特征在于包括以下步骤:步骤1、安装机载Xtion摄像头,将Xtion摄像头以俯角在20至60度之间调整并安装在观测机器人的上方,同时还要高出被观测机器人顶部50至70厘米,高度越高对应俯角就越大,调整摄像头安装高度和俯角直到使视野底部贴近观测机器人正前方底盘,并确保视野足够容纳被观测机器人;然后建立以观测机器人中心为原点的三维直角坐标系W,该坐标系以竖直向上为y轴正方向,机器人正前方为z轴正方向,x轴正方向指向机器人左边;步骤2、制作并安装靶标作为被观测机器人的位姿标志,靶标能够提供易于区分的颜色、形状两种附加信息,靶标的特征是由外正方形和内矩形构成,外正方形大小与被观测机器人俯视图大小相近且颜色单一,内矩形作为被观测机器人的姿态标志,使用另外一种颜色,并沿外正方形一边中点到正方形中心一线贴于外正方形上;将靶标水平安置在被观测机器人顶部,可令内矩形指示被观测机器人的正前方;对于多个被观测机器人需要使用不同底色的靶标,只需将外正方形底色相互区分即可;步骤3、逐次识别多个被观测机器人并计算识别目标的相对坐标,具体包括以下子步骤:(1)、矫正Xtion摄像头内参,Xtion摄像头的两种镜头都有默认内参,一种是彩色图像成像镜头,另一种是深度图像成像镜头,深度摄像头内参矩阵为<maths num="0001"><math><![CDATA[<mfenced open = "[" close = "]"><mtable><mtr><mtd><msub><mi>f</mi><mi>x</mi></msub></mtd><mtd><mn>0</mn></mtd><mtd><msub><mi>c</mi><mi>x</mi></msub></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><msub><mi>f</mi><mi>y</mi></msub></mtd><mtd><msub><mi>c</mi><mi>y</mi></msub></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable></mfenced>]]></math><img file="FDA0001139715050000011.GIF" wi="326" he="263" /></maths>其中,f<sub>x</sub>为深度图像横轴方向上以像素为单位的焦距,f<sub>y</sub>为深度图像纵轴方向上以像素为单位的焦距,c<sub>x</sub>为光轴与深度图像中心在横轴方向上以像素为单位的差距,c<sub>y</sub>为光轴与深度图像中心在纵轴方向上以像素为单位的差距,彩色摄像头内参矩阵为,<maths num="0002"><math><![CDATA[<mfenced open = "[" close = "]"><mtable><mtr><mtd><msub><mi>F</mi><mi>x</mi></msub></mtd><mtd><mn>0</mn></mtd><mtd><msub><mi>C</mi><mi>x</mi></msub></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><msub><mi>F</mi><mi>y</mi></msub></mtd><mtd><msub><mi>C</mi><mi>y</mi></msub></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable></mfenced>]]></math><img file="FDA0001139715050000021.GIF" wi="337" he="270" /></maths>其中,F<sub>x</sub>为彩色图像横轴方向上以像素为单位的焦距,F<sub>y</sub>为彩色图像纵轴方向上以像素为单位的焦距,C<sub>x</sub>为光轴与彩色图像中心在横轴方向上以像素为单位的差距,C<sub>y</sub>为光轴与彩色图像中心在纵轴方向上以像素为单位的差距,Xtion摄像头彩色图像与深度图像之间在横轴方向有一个以像素为单位的偏移距离d,为了对齐彩色图像与深度图像需要矫正彩色摄像头的内参,计算新的彩色摄像头内参矩阵如下,<maths num="0003"><math><![CDATA[<mrow><mfenced open = "[" close = "]"><mtable><mtr><mtd><msub><mover><mi>F</mi><mo>~</mo></mover><mi>x</mi></msub></mtd><mtd><mn>0</mn></mtd><mtd><msub><mover><mi>C</mi><mo>~</mo></mover><mi>x</mi></msub></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><msub><mover><mi>F</mi><mo>~</mo></mover><mi>x</mi></msub></mtd><mtd><msub><mover><mi>C</mi><mo>~</mo></mover><mi>y</mi></msub></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable></mfenced><mo>=</mo><mfenced open = "[" close = "]"><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mi>d</mi></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable></mfenced><mo>&CenterDot;</mo><mfenced open = "[" close = "]"><mtable><mtr><mtd><msub><mi>F</mi><mi>x</mi></msub></mtd><mtd><mn>0</mn></mtd><mtd><msub><mi>C</mi><mi>x</mi></msub></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><msub><mi>F</mi><mi>y</mi></msub></mtd><mtd><msub><mi>C</mi><mi>y</mi></msub></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001139715050000022.GIF" wi="1501" he="430" /></maths>其中,<img file="FDA0001139715050000023.GIF" wi="60" he="79" />为矫正后彩色图像横轴方向上以像素为单位的焦距,<img file="FDA0001139715050000024.GIF" wi="62" he="86" />为矫正后彩色图像纵轴方向上以像素为单位的焦距,<img file="FDA0001139715050000025.GIF" wi="70" he="71" />为矫正后光轴与彩色图像中心在横轴方向上以像素为单位的差距,<img file="FDA0001139715050000026.GIF" wi="67" he="85" />为矫正后光轴与彩色图像中心在纵轴方向上以像素为单位的差距;(2)、图像预处理,将每帧彩色图像从RGB颜色空间变换为HSV颜色空间;(3)、根据靶标阈值分割,主要根据不同靶标的外正方形颜色的色调区间和饱和度区间做简单阈值分割,得到二值化图像;(4)、形态学处理与边缘提取,经过形态学开运算滤除小的明亮区域,然后提取二值化图像的明亮区域的最大外边缘和该边缘轮廓的外接矩形,用该外接矩形代表被观测机器人的位置;(5)、利用摄像机内参计算外接矩形的中心在摄像头坐标系C中的坐标,摄像头坐标系C是以深度摄像头为中心的三维直角坐标系,该坐标系以深度摄像头为参考,摄像头正上方为y轴正方向,摄像头正前方为z轴正方向,x轴正方向指向摄像头左边;经过子步骤(1),彩色图像与深度图像对齐、成像一致,所以可以利用深度图像计算子步骤(4)中外接矩形中心的位置坐标,根据Xtion摄像头成像特点,深度图中每一点的深度代表该点到成像平面的最小距离,计算外接矩形的平均深度Z'作为矩形中心的深度,在深度图像中矩形中心的位置坐标为[x y]<sup>T</sup>,深度图像视野中心坐标为[x<sub>0</sub> y<sub>0</sub>]<sup>T</sup>,根据小孔成像模型和深度摄像头内参,摄像头坐标系C中矩形中心位置坐标为,<maths num="0004"><math><![CDATA[<mrow><mfenced open = "[" close = "]"><mtable><mtr><mtd><mi>X</mi></mtd></mtr><mtr><mtd><mi>Y</mi></mtd></mtr><mtr><mtd><mi>Z</mi></mtd></mtr></mtable></mfenced><mo>=</mo><mfenced open = "[" close = "]"><mtable><mtr><mtd><mo>(</mo><mi>x</mi><mo>-</mo><msub><mi>x</mi><mn>0</mn></msub><mo>)</mo><mo>*</mo><msup><mi>Z</mi><mo>&prime;</mo></msup><mo>/</mo><msub><mi>f</mi><mi>x</mi></msub></mtd></mtr><mtr><mtd><mrow><mo>(</mo><mi>y</mi><mo>-</mo><msub><mi>y</mi><mn>0</mn></msub><mo>)</mo><mo>*</mo><msup><mi>Z</mi><mo>&prime;</mo></msup><mo>/</mo><msub><mi>f</mi><mi>y</mi></msub></mrow></mtd></mtr><mtr><mtd><msup><mi>Z</mi><mo>&prime;</mo></msup></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001139715050000031.GIF" wi="1310" he="279" /></maths>其中,f<sub>x</sub>为深度图像横轴方向上以像素为单位的焦距,f<sub>y</sub>为深度图像纵轴方向上以像素为单位的焦距,X、Y、Z分别代表了摄像头坐标系中观测机器人目标的坐标位置;(6)、坐标变换,根据摄像头安装的相对高度h和俯角α,将坐标系C中的坐标点通过旋转平移矩阵M变换到坐标系W中,<maths num="0005"><math><![CDATA[<mrow><mi>M</mi><mo>=</mo><mi>T</mi><mo>&CenterDot;</mo><mi>R</mi><mo>=</mo><mfenced open = "[" close = "]"><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mi>h</mi></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable></mfenced><mo>&CenterDot;</mo><mfenced open = "[" close = "]"><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mrow><mi>c</mi><mi>o</mi><mi>s</mi><mi>&alpha;</mi></mrow></mtd><mtd><mrow><mo>-</mo><mi>sin</mi><mi>&alpha;</mi></mrow></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mrow><mi>sin</mi><mi>&alpha;</mi></mrow></mtd><mtd><mrow><mi>cos</mi><mi>&alpha;</mi></mrow></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001139715050000032.GIF" wi="1606" he="375" /></maths>其中,T为平移矩阵,R为旋转矩阵,h代表摄像头到观测机器人中心的高度,α代表摄像头俯角;用M矩阵乘以C坐标系下点的齐次坐标可得到其该点在W坐标系下的位置;(7)、依次根据被观测机器人目标的不同靶标,重复步骤3的子步骤(3)到(6),计算不同目标的相对位置;步骤4、逐次计算步骤3中识别到的被观测机器人的相对偏航角,具体包括以下子步骤:(1)、获取透视变换矩阵,将已知大小的黑白棋盘标定板水平放置,使标定板的一边与彩色图像底边共线,标定板中心在彩色图像纵轴方向的对称轴上;在彩色图像中提取黑白棋盘标定板的所有角点及其坐标,此时距离棋盘4角最近的4个角点构成了等腰梯形的顶点;该等腰梯形的映射目标为与棋盘标定板相同长宽比例的矩形,该矩形的位置关于彩色图像纵轴方向的对称轴对称,矩形的一边与图像中等腰梯形下底边共线且该边与等腰梯形下底边的比可选在0.3到0.8之间;只要利用等腰梯形顶点坐标以及对应的矩形顶点坐标,通过4对坐标的映射关系可以求取透视变换矩阵,<maths num="0006"><math><![CDATA[<mrow><mfenced open = "[" close = "]"><mtable><mtr><mtd><mover><mi>x</mi><mo>~</mo></mover></mtd></mtr><mtr><mtd><mover><mi>y</mi><mo>~</mo></mover></mtd></mtr><mtr><mtd><mover><mi>w</mi><mo>~</mo></mover></mtd></mtr></mtable></mfenced><mo>=</mo><mi>T</mi><mo>&CenterDot;</mo><mfenced open = "[" close = "]"><mtable><mtr><mtd><mi>u</mi></mtd></mtr><mtr><mtd><mi>v</mi></mtd></mtr><mtr><mtd><mn>1</mn></mtd></mtr></mtable></mfenced><mo>=</mo><mfenced open = "[" close = "]"><mtable><mtr><mtd><msub><mi>a</mi><mn>11</mn></msub></mtd><mtd><msub><mi>a</mi><mn>12</mn></msub></mtd><mtd><msub><mi>a</mi><mn>13</mn></msub></mtd></mtr><mtr><mtd><msub><mi>a</mi><mn>21</mn></msub></mtd><mtd><msub><mi>a</mi><mn>22</mn></msub></mtd><mtd><msub><mi>a</mi><mn>23</mn></msub></mtd></mtr><mtr><mtd><msub><mi>a</mi><mn>31</mn></msub></mtd><mtd><msub><mi>a</mi><mn>32</mn></msub></mtd><mtd><mn>1</mn></mtd></mtr></mtable></mfenced><mo>&CenterDot;</mo><mfenced open = "[" close = "]"><mtable><mtr><mtd><mi>u</mi></mtd></mtr><mtr><mtd><mi>v</mi></mtd></mtr><mtr><mtd><mn>1</mn></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>4</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001139715050000041.GIF" wi="1372" he="430" /></maths>其中,T为透视变换矩阵,[u v]<sup>T</sup>为待映射顶点的坐标,[u v 1]<sup>T</sup>为对应的齐次坐标,<img file="FDA0001139715050000043.GIF" wi="280" he="133" />为顶点经透视变换映射后的齐次坐标,a<sub>11</sub>到a<sub>32</sub>为透视变换矩阵的参数,则顶点映射后的实际坐标[x y]<sup>T</sup>由如下公式(5)计算得到,<maths num="0007"><math><![CDATA[<mrow><mfenced open = "{" close = ""><mtable><mtr><mtd><mrow><mi>x</mi><mo>=</mo><mfrac><mover><mi>x</mi><mo>~</mo></mover><mover><mi>w</mi><mo>~</mo></mover></mfrac><mo>=</mo><mfrac><mrow><msub><mi>a</mi><mn>11</mn></msub><mo>&CenterDot;</mo><mi>u</mi><mo>+</mo><msub><mi>a</mi><mn>12</mn></msub><mo>&CenterDot;</mo><mi>v</mi><mo>+</mo><msub><mi>a</mi><mn>13</mn></msub></mrow><mrow><msub><mi>a</mi><mn>31</mn></msub><mo>&CenterDot;</mo><mi>u</mi><mo>+</mo><msub><mi>a</mi><mn>32</mn></msub><mo>&CenterDot;</mo><mi>v</mi><mo>+</mo><mn>1</mn></mrow></mfrac></mrow></mtd></mtr><mtr><mtd><mrow><mi>y</mi><mo>=</mo><mfrac><mover><mi>y</mi><mo>~</mo></mover><mover><mi>w</mi><mo>~</mo></mover></mfrac><mo>=</mo><mfrac><mrow><msub><mi>a</mi><mn>21</mn></msub><mo>&CenterDot;</mo><mi>u</mi><mo>+</mo><msub><mi>a</mi><mn>22</mn></msub><mo>&CenterDot;</mo><mi>v</mi><mo>+</mo><msub><mi>a</mi><mn>23</mn></msub></mrow><mrow><msub><mi>a</mi><mn>31</mn></msub><mo>&CenterDot;</mo><mi>u</mi><mo>+</mo><msub><mi>a</mi><mn>32</mn></msub><mo>&CenterDot;</mo><mi>v</mi><mo>+</mo><mn>1</mn></mrow></mfrac></mrow></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>5</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001139715050000042.GIF" wi="1294" he="475" /></maths>可见已知4个不共线的顶点坐标,并且已知它们映射后的位置坐标,可以计算出a<sub>11</sub>到a<sub>32</sub>这8个参数,从而得到透视变换矩阵;(2)、分割映射图像中目标的最大可能区域,利用变换矩阵可以将彩色图像的斜视视角透视变换为鸟瞰视角,将步骤3子步骤(4)中的目标外接矩形的4个顶点坐标乘以透视变换矩阵可以得到它们映射后的位置,据此在俯视图中分割出包含目标的最大可能区域,若目标外接矩形的4个顶点经透视变换矩阵映射后为[x<sub>1</sub> y<sub>1</sub>]<sup>T</sup>、[x<sub>2</sub> y<sub>2</sub>]<sup>T</sup>、[x<sub>3</sub> y<sub>3</sub>]<sup>T</sup>、[x<sub>4</sub> y<sub>4</sub>]<sup>T</sup>,则包含目标的最大可能区域在横轴方向范围为min(x<sub>1</sub>,x<sub>2</sub>,x<sub>3</sub>,x<sub>4</sub>)到max(x<sub>1</sub>,x<sub>2</sub>,x<sub>3</sub>,x<sub>4</sub>),在纵轴方向范围为min(y<sub>1</sub>,y<sub>2</sub>,y<sub>3</sub>,y<sub>4</sub>)到max(y<sub>1</sub>,y<sub>2</sub>,y<sub>3</sub>,y<sub>4</sub>),其中max,min分别为求集合中的最大值、最小值;(3)、求偏航角,在此分割出的区域中重复步骤3中子步骤(3)的方法,用与步骤3中子步骤(4)相同的形态学处理方法,提取目标最大外边缘的旋转外接矩形的中心;识别并提取该分割区域中靶标的外正方形对应的旋转外接矩形的中心坐标[x y]<sup>T</sup>、内矩形对应的旋转外接矩形的中心坐标[m n]<sup>T</sup>,并采用如下公式(6)即可求得偏航角θ,<maths num="0008"><math><![CDATA[<mrow><mi>&theta;</mi><mo>=</mo><mfenced open = "{" close = ""><mtable><mtr><mtd><mrow><mi>a</mi><mi>r</mi><mi>c</mi><mi>t</mi><mi>a</mi><mi>n</mi><mrow><mo>(</mo><mfrac><mrow><mi>x</mi><mo>-</mo><mi>m</mi></mrow><mrow><mi>y</mi><mo>-</mo><mi>n</mi></mrow></mfrac><mo>)</mo></mrow><mo>,</mo></mrow></mtd><mtd><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mi>m</mi><mo>)</mo><mo>&GreaterEqual;</mo><mn>0</mn></mrow></mtd></mtr><mtr><mtd><mrow><mi>a</mi><mi>r</mi><mi>c</mi><mi>t</mi><mi>a</mi><mi>n</mi><mrow><mo>(</mo><mfrac><mrow><mi>x</mi><mo>-</mo><mi>m</mi></mrow><mrow><mi>y</mi><mo>-</mo><mi>n</mi></mrow></mfrac><mo>)</mo></mrow><mo>+</mo><mi>&pi;</mi><mo>,</mo></mrow></mtd><mtd><mrow><mo>(</mo><mi>x</mi><mo>-</mo><mi>m</mi><mo>)</mo><mo>&lt;</mo><mn>0</mn></mrow></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>6</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001139715050000051.GIF" wi="1445" he="359" /></maths>(4)、根据步骤3中检测到的目标,重复步骤4中子步骤(2)至(3),依次计算不同目标的相对偏航角。
地址 116024 辽宁省大连市高新园区凌工路2号