APP下载

基于正交双相机的洗车定位算法研究

2021-07-25吴志伟

制造业自动化 2021年7期
关键词:洗车机洗车顶点

朱 敏,吴志伟

(电气与自动化工程学院 合肥工业大学,合肥 230009)

0 引言

经济的发展给人们生活质量带来了巨大的改变,汽车数量日益增多后对洗车行业的服务要求也是越来越高。现在我们熟知的洗车方式还是传统人工洗车,但人工洗车还是存在着许多弊端。传统的人工洗车行业逐渐的满足不了现在人们对洗车行业的要求;如今在洗车市场中洗车机的普及率还不是很高,使用较为广泛的洗车机有无接触自动洗车机和毛刷式自动洗车机[1~3]。本文提出正交双相机车身定位算法洗车机是基于图像视觉的自动洗车机,采用图像视觉技术能够精确的得到车身特征点的位置坐标[4,5];并且使用六自由度洗车臂可以利用它的灵活性好,几乎可以在任何角度下工作。这种精巧的结构设计不但在性能上有很好的保障,而且它所要求的场地面积也比较小。与现阶段市面上常见两种类型的洗车机相比,本洗车系统存在着很好的市场价值。

1 系统平台

1.1 图片采集平台

为了能够有效的采集到汽车车身的图片信息,本系统对拍摄相机的位置进行固定,其示意图如图1所示。

图1 相机位置示意图

待洗汽车停放区域为一块白色的矩形区域,汽车车身的图像采集由两个互相垂直放置的相机完成;其中1号相机负责拍摄汽车的正视图,2号相机负责拍摄汽车的侧视图。

1.2 车身特征点的确定

本系统的核心就是在于提取车身的外围坐标,但经过图片处理之后得到的汽车外围轮廓图像包含了大量的外围点坐标信息,这样就会导致计算复杂,降低了算法的可靠性。经过对车身边缘轮廓特点的分析,本文采取在汽车边缘轮廓提取有代表性的特征点,利用特征点坐标代替大量外围点坐标信息。特征点的确定如图2所示。

图2 特征点位置示意图

记图2车身侧视图中的特征点分别为A、B、C、D、E、F、G;由于汽车的车身图像是轴对称图形,则对应于车身的另一侧特征点分别记为A'、B'、C'、D'、E'、F'、G'。因此只要求出这两组点的坐标,即可定位[6]整个车身。

2 侧视图中特征点坐标的求解

2.1 图像预处理及车身轮廓提取

由于拍摄环境的原因,图像采集难免会有噪声。因此在对车身图像进行算法处理之前首先需要对图像进行去噪。对经过灰度化和去噪处理的车身图像进行二值化分割,最终将原图像中的背景和车身目标分割开来。但本文接下来只需要对车身的边缘[7]进行处理,所以通过提取最大连通区域算法对图像进行处理,得到最大连通区域并将其单独显示出来,结果如图3所示。

图3 最大连通区域示意图

2.2 车身轮廓的直线拟合

提取最大连通区域之后,就得到本文所需要处理的车身的主要轮廓信息。由图3可以看出,虽然得到了车身的主要边缘信息,但车身的各部分边缘都是由曲线组成;如果直接对车身进行直线检测的话得到的效果不会太好。通过对图3进行像素扫描,对不同曲线段的像素点进行分割,得到六个不同的点集,分别为点集M1、M2、M3、M4、M5、M6。不同的点集里存放着车身不同曲线段的像素点坐标。本文接下来采用最小二乘法分别对六个不同的点集进行直线拟合[8,9],得到车身各部分曲线段的近似直线,并且相邻部分的直线之间会有一个交点,该交点就是本文包围车身所确定的特征点。

假设给定一系列离散点组成的坐标集合,即为M={(x0,y0),(x1,y1),…(xn,yn)},直线拟合目的就是找到一个函数f(x)kx+b使得f(x)函数尽可能的拟合离散坐标点集M。最小二乘法拟合直线函数f(x)的主要原理是:对于f(x)=kx+b求得其对于各个离散点平方差的最小值,如式(1)所示:

当Q取最小时,求k、b的值。

因为坐标点集M中的离散点均为已知变量,问题可转化为求解Q=f(k,b)的最小值,即求解点(k,b)使得 Q=f(k,b)在此点处取得极小值。使用偏导数求 f(k,b)极小值:

点集M1、M2、M3、M4、M5、M6进行直线拟合结果如图4所示。

图4 车身直线拟合示意图

2.3 霍夫直线检测

经过最小二乘法直线拟合之后,得到了离散点集拟合的直线并显示在原图中,但不同的拟合线段的直线方程并没有得到;因此选择使用霍夫直线检测在相邻的拟合直线之间做二次检测对拟合过的直线进行霍夫直线检测。当检测到直线之后可以由代数法计算出直线的交点。

1)霍夫直线检测

本文采用累计概率霍夫变换进行对拟合的直线进行检测,OpenCV标准函数库中的HoughLinesP()函数可以实现直线检测功能;将图4作为检测函数的第一个参数,即原图像;第二个参数是存放着检测到直线的起始坐标点。在下文中求解相邻拟合直线之间的交点时就会使用第二个参数中存放的坐标点。

2)代数法求解交点

经累计概率霍夫变换检测得到两相交的直线后,利用下述的代数法求解出交点坐标。

假设已知两条直线l1、l2的方程如下:

并且已知两直线l1、l2上的两点分别为A1(x1,y1)、A2(x2,y2)和B1(x1*,y1*)、B2(x2*,y2*),则可求得两直线的系数分别为:

将两直线的参数代入即可求出交点的坐标,对上述车身拟合直线进行霍夫直线检测以及代数法计算出交点像素坐标,结果如下:

特征点A(12,198)、特征点B(27,135)、特征点C(131,116)、特征点D(231,70)、特征点E(366,70)、特征点F(501,123)、特征点G(520,207)

3 车身正视图中特征点坐标的求解

对侧视图经过上面步骤处理只能得到车身一侧的特征点坐标,为了得到车身另一侧的特征点坐标需要对车身的主视图进行处理计算出车身的宽度信息。通过寻找最小包围矩形算法得到能将车头完整包围的最小矩形,并计算出这个最小矩形各顶点的坐标,车身的宽度[10]就是顶点横坐标之差。再将上述计算出的特征点进行坐标的平移即可得到车身四周的特征点坐标。对车身主视图处理过程如下:

首先对1号相机拍摄到的车身主视图进行图像处理,主要处理过程与对车身侧视处理过程基本一致,结果如下:

图5 图像处理结果示意图

得到车身主视图的二值化图像以后,再利用OpenCV中minAreaRect()函数对车头主视图进行寻找最小包围矩形。运行结果如图6所示。

图6 运行结果示意图

最小包围矩形的顶点像素坐标为:

顶点r0(61,309)、顶点r1(61,44);

顶点r2(443,44)、顶点r3(443,309)。

根据得到最小包围矩形的顶点坐标可知车身的宽度即矩形左右对称顶点的横坐标之差。

4 坐标的转换

通过上述算法处理过程对图像处理计算出的坐标是在像素坐标系中的像素坐标,并将其经过坐标系转换至世界坐标系中;最后将车身特征坐标传输给洗车机械臂[11]的轨迹规划中使用。坐标系转换关系如下为:

式(3)中Zc为空间中的点在相机坐标系中Z轴方向的坐标,本文中即表示为相机距离车身的距离,在本系统中1号相机的Zc设定为2m,2号相机的Zc设定为3m。

等式左边的矩阵为定位到的车身边缘点的像素坐标。

等式右边第二个矩阵为相机的外参矩阵,其中包括旋转矩阵和平移矩阵。

右边第三个矩阵为车身边缘点在世界坐标系中的坐标,也就是所要转换得到的坐标值。

通过对相机的标定得到上述相机的各参数如下:

内部参数矩阵为:

外部参数矩阵为:

将相机的各参数矩阵以及车身的各特征点的像素坐标代入式(4)中,对矩形顶点r0(61,309)和矩形顶点r3(443,309)坐标转换结果为r0'(-94,69,200)、r3'(92,69,200)因此车身的宽度为d=|(-94)-92|=186单位为cm。

则最终车身两侧的特征点坐标如表1所示。

表1 特征点坐标

5 结语

本文给出了一套完整的基于图像视觉自动洗车系统车身特征点的定位算法,通过本算法能够得到精确的车身特征点位置信息。并将这些描述汽车车身位置信息的点坐标传输给洗车机械臂再结合六自由度机械臂灵活性可以很好的提高洗车的效率和洗车效果,和市场上的洗车机相比有比较好的优势,具有一定的市场和推广意义。

猜你喜欢

洗车机洗车顶点
过非等腰锐角三角形顶点和垂心的圆的性质及应用(下)
广州地铁一号线洗车机智能化改造
城市轨道交通全自动洗车方案研究
德国最成功的洗车门店——Mr.Wash
洗车
关于顶点染色的一个猜想
APP看世界之让手机帮你洗车吧!
洗车应该靠温度
——即热式节水洗车机的特点和优势
洗车应该靠温度
——即热式节水洗车机的特点和优势
数学问答