欢迎光临
我们一直在努力

机器人视觉知多少

提及机器人视觉,不免会想到计算机视觉和机器视觉,很多人会把这三者弄混。

计算机视觉是以图片认知为基础的科学,只通过图片识别输出结果,代表企业是谷歌。机器视觉多用于生产线上的质量检测,普遍基于2D识别,被广泛应用于3C电子行业,代表企业是康耐视。机器人视觉是指不仅要把视觉信息作为输入,而且还要对这些信息进行处理,进而提取出有用的信息提供给机器人。是为了让机器人真正变成“机器人”,而不是机器臂。(一)传统的机器臂只是自动化设备,是通过编程处理固定的动作,是不能处理具有变动性事物的能力。机器人视觉这要求机器人要拥有3D视觉,能处理三维空间里的三维物体问题,并且具有复杂算法,支撑机器人对位置、动作、轨迹等复杂信息的捕捉,这必须要依赖人工智能和深度学习来完成。机器人视觉是为认知机器人服务,具备不断学习的功能尤为关键,无论是做检测还是定位引导,当机器人做的次数越多,伴随着数据的增长变化,机器人的准确性也会越高,这跟人的学习成长能力是类似的。机器人视觉是一种处理问题的研究手段。经过长时间的发展,机器人视觉在定位,识别,检测等多个方面发展出来各种方法。其以常见的相机作为工具,以图像作为处理媒介,获取环境信息。

1、相机模型

相机是机器人视觉的主要武器,也是机器人视觉和环境进行通信的媒介。相机的数学模型为小孔模型,其核心在于相似三角形的求解。其中有三个值得关注的地方:1.11/f = 1/a + 1/b焦距等于物距加上像距。此为成像定理,满足此条件时才能成清晰的像。1.2X = x * f/Z如果连续改变焦距f ,并同时移动相机改变Z,则可以使得物体x在图像上所占像素数目不变(X)。此为DollyZoom原理。如果某个物体在该物体后方(更大的Z),可利用此原理任意调整两个物体在相片上的比例。1.3焦距越长,则视场越小,可以将远处的物体拍清晰。同时相片会有更大的景深。

2、消失点

消失点是相片中特有的。此点在相片中不直接存在,在现实中直接不存在。由于射影变换,相片中原本平行的线会有相交的趋势。如果求的平行直线在图像中的交点,则该点对应现实中无穷远处的一点。该点的图像坐标为[X1 X1 1]。此点成为消失点。相机光心与消失点的连线指向消失点在摄像机坐标系中的方向。

ntainer cant-justify" data-bjh-helper-id="1637721926551" data-bjh-caption-length="0" style="max-width: 100%;">此外,同一平面上各个方向的消失点,会在图像中组成一条直线,称为水平线。该原理可以用于测量站在地上的人的高度。值得注意的是只有相机水平时,horizen的高度才是camera Height.ntainer cant-justify" data-bjh-helper-id="1637721926552" data-bjh-caption-length="0" style="max-width: 100%;">

2.1 位姿估计

如果我们能获得一幅图中的2个消失点。且这2个消失点所对应的方向是相互垂直的(网格),那么我们就可以估计出相机相对于此图像的姿态(靶标位姿估计)。 在获得相机相对于靶标的旋转向量后,如果相机内部参数已知,且已知射影变换矩阵,则可计算相机相对于靶标的距离,那么可以估计机器人的位置。H = K^-1*(H射影矩阵)ntainer cant-justify" data-bjh-helper-id="1637721926553" data-bjh-caption-length="0" style="max-width: 100%;">

2.2 点线对偶

p1×p2 = L12L12×L23 = p2

3、射影变换

射影变化是空间中平面--->平面的一种变换。对齐次坐标,任意可逆矩阵H均表达了射影变换。简而言之,可以表达为A = HB ,其中AB是[X Y 1]形式的其次坐标。射影变换的一大作用就是将某一形状投射成其他形状。比如,制作相片中的广告牌,或者比赛转播中的广告牌,或者游泳比赛运动员到达后那个biu的一下出现的国旗。射影变换也是增强现实技术的基础。

ntainer cant-justify" data-bjh-helper-id="1637721926555" data-bjh-caption-length="0" style="max-width: 100%;">射影变换的核心在于H的求取。普通的求解方法见机器视觉教材。假设平面相片的四个点分别是A(0,0,1),B(0,1,1),C(1,1,1),D(1,0,1)。显然,这四个点需要投射到四个我们已知像素位坐标的图像区域中。此外,我们还可以依据像素位置计算两个有趣的点,V1(x1, y1, z1),V2(x2,y2,z2),这两个点都是图像点。他们对应的实际坐标假设是(0,1,0),(1,0,0)。那么我们就有三个很有趣的实际点了。分别是(1,0,0),(0,1,0),(0,0,1),恰好是一个Identity Matrix。这三个实际坐标经过射影变换会得到像素坐标。像素坐标又是已知的。那么H的第一列就应该对应beta*V2,第二列应该对应alpha*V1。第三列应该对应gama*【A的像素坐标】。alpha beta gama是常数。【射影变化后的坐标应为常数乘以其次坐标】。如果能解得alpha beta gama,那么我们就获得了射影变换矩阵。显然把C点的像素坐标带入方程,我们则有3个方程,4个未知数(引入了一个lamda)。但是lamda并不影响,除过去后我们只要alpha/lamda,beta/lamda,gama/lamda当作未知数即可解除射影矩阵。所以,射影变换矩阵的第一列代表消失点V1,第二列代表消失点V2,第一列与第二列的叉乘,代表水平线方程(点线对偶)。(二)上回介绍了机器人视觉的一些基础信息,说到机器人视觉的核心任务是estimation,理论框架是射影几何理论。然而,整个estimation的首要条件是已知像素点坐标,尤其是多幅图中对应点的像素坐标。单幅图像的处理方法不赘述,想讲讲不变点检测与不变特征。由于机器人在不断运动,所以可能从不同方向对同一物体进行拍摄。而拍摄的距离有远近,角度有titled. 由于射影变换本身的性质,无法保证两幅图中的物体看上去一样。所以我们需要一种特征提取方法(特征点检测),能够保证检测是旋转,缩放不变的。除此之外还要一种特征描述方法,同样对旋转和缩放不变。

1、SIFT特征提取

SIFT特征提取可以分为以下几个步骤:(1)多尺度卷积;(2)构造金字塔;(3)3D非极大值抑制。

多尺度卷积的作用是构造一个由近及远的图像。金字塔则由下采样进行构造。ntainer cant-justify" data-bjh-helper-id="1637721926557" data-bjh-caption-length="0" style="max-width: 100%;">ntainer cant-justify" data-bjh-helper-id="1637721926558" data-bjh-caption-length="0" style="max-width: 100%;">对于不同尺度的图像同一个像素,我们可以跟踪它“灰度”的变化。我们发现,如果某一点对不同 sigma 的模版响应是不同的,最大响应(卷积后的灰度)所对应的scale 成为该点本征scale。这有点像对一个机械结构给不同频率的激励,某一频率下会发生共振,我们可以记录此频率一定程度上代表了此结构(单摆频率只和ml有关,有了f就可以重现系统)。所以,我们只要找到一个合适的模版(激励方式),再找到最大响应,就可以获取图片中各个点的 Intrinsic Scale(本征尺度)。同一物体在不同距离拍摄后,都会统一在Intrinsic Scale下进行响应。由此解决了尺度不变的问题。3D非极大值抑制是指在某点的3*3*3邻域内,仅取最大响应,作为特征点。由于该点是空间邻域中响应最强的,所以该点也是旋转不变的。从各个方向看,该点响应最强。

2、SIFT特征描述

特征提取和特征描述实际上是两码事。在上一节中特征提取已经结束了。假如有两幅图片,那么相同的特征点肯定会被找到。特征描述的作用是为匹配做准备,其以特征点局部区域信息为标准,将两幅图中相同的特征点联系起来。特征的本质是一个高维向量。要求尺度不变,旋转不变。

这里所使用的是HOG特征。特征描述可以分为两步:(1)局部主方向确定;(2)计算梯度直方图。以sigma作为特征描述选择范围是一个合理的想法,因为sigma描述了尺度,特征点位置+尺度 = 特征点所代局部信息。在此基础上,统计其领域内所有像素的梯度方向,以方向统计直方图作为特征向量,至此完成HOG特征构造。重要的是,在统计方向之前,需要把图像主方向和X轴方向对齐。示意图如下:ntainer cant-justify" data-bjh-helper-id="1637721926560" data-bjh-caption-length="0" style="max-width: 100%;">图中黄色的有点像时钟的东西是特征点+scale,指针代表该片小图像的主方向(PCA)。绿色的是直方图的bin,用于计算特征向量。最后,我们只要匹配特征向量就可以得到 图像1 --- 图像2 的对应点对,通过单应矩阵的计算就可以将两幅图拼接在一起。如果已知标定信息则可进行3D reconstruction。(三)上篇文章说到从场景中提取特征点,并且对不同角度中的特征点进行匹配。这次要先介绍一个工具 —— 拟合。拟合本质上是一个优化问题,对于优化问题,最基本的是线性最小二乘法。换言之,我们需要保证拟合误差最小。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。