6.4.1 基于双目视觉的目标获取

更新于 2026年10月10日 版权声明
6.4.1 基于双目视觉的目标获取

1.基于MATLAB的摄像机标定

视觉传感器通过感光元件获取目标物件的图像光反射信号,信号经过多重凹、凸镜头后会出现一定的扭曲误差,从而使图像产生不同程度的失真。故相机的标定将在整个采集图像系统中起到至关重要的作用。因此在计算机视觉图像采集过程中,处理空间物体点的几何位置与图像中的对应点之间的关系问题时,须建立一个相机图像的成型模型,这就是通常所说的相机参数。相机的内部参数包括图像纵横比、焦距以及中心点坐标,这些参数是相机的固有属性;相机的外部参数包含X 轴、Y 轴和Z 轴方向的旋转角度和距离,也称为旋转矩阵和平移向量。一般情况下,必须通过实验和计算来得到这些参数,而这个求解相关参数问题的过程就称作相机标定[4]。本系统的相机采用的双目摄像头如图6.20所示,相关参数如表6.3所示。

图示

图6.20 双目摄像头

表6.3 双目摄像头参数

图示

在本系统中,使用MATLAB软件对双目摄像机进行标定,步骤如下:

(1)制作棋盘格标定板。打印角点数为10×7的国际象棋棋盘格图案贴在硬纸板上制成标定板,如图6.21所示。

图示

图6.21 标定方格板

(2)图像采集。用双目摄像机对标定板的不同角度进行采集,如图6.22所示。为了得到更多有关摄像头畸变的信息,在采集图像时应让棋盘占据尽可能多的画面。

图示

图6.22 双目摄像头所拍摄的标定板

(3)配置MATLAB工具箱。调用stereo Camera Calibrator,载入左右摄像头所拍摄的图片,程序将会自动进行数据采集,如图6.23所示。

图示

图6.23 使用MATLAB软件进行标定

(4)参数校准。从图6.24中可以看出平均的标定误差以及标定过程中误差较大的图像对,对这些图像对点击“Remove and Recalibrate”,进行重新标定,直至误差结果满足需求为止。

图示

图6.24 均方根误差直方图

(5)导出参数。标定结束后可得到左右相机的旋转、平移参数、内参矩阵等信息,如图6.25所示。

图示

图6.25 相机的旋转、平移参数

2.相机坐标系转换

世界坐标系、相机坐标系、图像坐标系以及像素坐标系是相机线性模型中的四个坐标系。四个坐标系的关系如图6.26所示。

图示

图6.26 相机模型中的各个坐标系

图中(Xw,Yw,Zw)坐标系是世界坐标系,而本系统的世界坐标系定于机械臂底座的中点位置。(x,o,y)坐标系为相机坐标系,在本系统中定于双目相机中心位置。(X,O,Y)和(Xf,Of,Tf)分别是图像坐标系和像素坐标系。下面对几个坐标系之间的转换关系进行描述。

(1)世界坐标系与相机坐标系之间的转换

当用坐标表示在三维空间里的物体时,需要与之对应的坐标系,而空间中可以存在无数个坐标系,故需定义一个基准作为参考,从而其他坐标系都是此基准的子坐标系,而此坐标系就是世界坐标系。当相机固定好后,相机坐标系在空间中的位置就已经固定,本系统的世界坐标系定于两个机械臂底座的中点位置。两个坐标系均位于固定位置,且可通过旋转和平移得出两个坐标系的转换关系,旋转矩阵是用于描述世界坐标系到相机坐标系的姿态转换关系,平移矩阵是用于描述世界坐标系中的原点到相机坐标系中的原点在X、Y 和Z 三个轴上的距离关系。

(2)相机坐标系与图像坐标系之间的转换

目标物体在图像坐标系中的二维坐标(x,y)是目标物体在三维坐标系中的坐标(x,y,z)在投影平面下产生的投影点,即图6.26中原点O 与物体P 点连线与投影平面的交点。根据三角形相似的原理可以得到两个坐标系的转换关系:

图示

可用矩阵齐次表达式描述为:

图示

其中f 为相机的焦距。

(3)图像坐标系与像素坐标系之间的转换

图像坐标系与像素坐标系都在相机的成像平面上,二者关系如图6.27所示。

图示

图6.27 图像坐标系与像素坐标系之间的关系

图像像素坐标系的原点ouv在图像的左上角,其中u 轴与图像物理坐标系的x 轴平行,v轴与y 轴平行,但两个坐标系的原点度量单位不同。图像坐标系的原点通常是成像平面的中点,单位为mm,属于物理单位。而像素坐标系的单位是pixel,描述一个像素点都是几行几列。两个单位之间的转换关系为:1pixel=dxmm 和1pixel=dymm,其中dx表示每一行与mm 的转换关系,dy表示每一列与mm 的转换关系。

图示(https://www.daowen.com)

可用矩阵齐次表达式描述为:

图示

其中u0和v0是图像坐标系中心坐标。

联立式(6-3)和式(6-6)可求像素坐标系与相机坐标系之间的转换关系:

图示

3.双目视觉成像模型

双目视觉通过两幅图像的视差得到深度信息,理想的双目视觉成像模型示意图如图6.28所示。

图示

图6.28 双目相机成像模型示意图

假设左相机坐标系为C1,右相机坐标系为C2,焦距为f,两个相机光轴间距为b,称为基线,任意空间点P 在C1坐标系的坐标为(x1,y1,z1),在C2坐标系的坐标为(x2,y2,z2),左相机中图像坐标点为(u1,v1),右相机中图像坐标点为(u2,v2)。根据比例关系可得:

图示

世界坐标系与相机坐标系关系如下:

图示

联立上式可得:

图示

其中x1-x2=b为相机基线大小,u1-u2为视差大小。因为基线与焦距的大小是固定的,所以空间中点P 的位置只与视差大小有关,二者成反比关系。这也就是双目视觉测距原理。

4.基于OPENCV的目标识别

在前面我们已经得出了像素坐标系与相机坐标系之间的转换关系式,因此只需要得出目标物体的像素坐标即可。在本系统中,我们采用OPENCV进行目标物体的检测。

图示

图6.29 目标识别定位算法流程图

为了使机械臂的末端执行器运动到指定抽屉的下方进行接药,我们给背景颜色为黑色的抽屉贴上白色的标签,标签一方面可以清晰地区分抽屉里药物的种类,另一方面白色标签可以作为抽屉的定位,基本流程图如图6.29所示。

下面对上图流程进行详细介绍:

(1)读取图片。使用imread()函数读取相机拍摄的抽屉原始图像,并通过imshow()函数展示,如图6.30所示。

图示

图6.30 抽屉原始图片

图示

图6.31 高斯滤波

(2)高斯滤波。高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程。通俗地讲,高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。高斯滤波的具体操作是:用一个模板(或称卷积、掩模)扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值。图像滤波的一个重要作用是去除图像中的噪点,使图像更加清晰。在本系统中使用的函数为GaussianBlur(),即高斯滤波。滤波后的图像如图6.31所示。

(3)灰度、二值化处理。将彩色图像转化成为灰度图像的过程称为图像的灰度化处理。灰度化在RGB模型中,如果R=G=B 时,则彩色表示一种灰度颜色,其中R=G=B 的值叫灰度值,因此,灰度图像每个像素只需一个字节存放灰度值(又称强度值、亮度值),灰度范围为0~255。

彩色图像中的每个像素的颜色由R、G、B 三个分量决定,而每个分量有255个值可取,这样一个像素点可以有1600多万(255255255)的颜色的变化范围。而灰度图像一个像素点的变化范围为255种,所以在数字图像处理中一般先将各种格式的图像转变成灰度图像,以使后续的图像的计算量变得少一些。灰度图像的描述与彩色图像一样仍然反映了整幅图像的整体和局部的色度和亮度等级的分布和特征。

图像的二值化处理就是将图像上的点的灰度值置为0或255,也就是将整个图像呈现出明显的黑白效果。即将256个亮度等级的灰度图像通过适当的阈值选取而获得仍然可以反映图像整体和局部特征的二值化图像,如图6.32。

图示

图6.32 灰度处理和二值化处理

(a)灰度处理;(b)二值化处理

(4)开运算。开运算即先腐蚀后膨胀,特点如下:开运算能够除去孤立的小点、毛刺,而总的位置和形状不变;开运算是一个基于几何运算的滤波器;结构元素大小的不同将导致滤波效果的不同;不同的结构元素的选择导致了不同的分割,即提取出不同的特征。开运算后的图像如图6.33所示。

图示

图6.33 开运算处理

(5)轮廓拟合、目标定位。一个轮廓是由图像中的一系列点组成的,也就是图像中的一条曲线。在OpenCV中一般用序列来存储轮廓信息。序列中的每个元素是曲线中每个点的位置。通过函数findContours(),可以找出图片6.34中所有的轮廓,再通过筛选,选择出所需要的标签轮廓。

图示

图6.34 识别效果图

↑上一章 ↓下一章
关注公众号获取验证码
复制内容需要验证码(7.99元/天)