多相机视觉系统的坐标系统标定与统一及其应用

news/2024/7/5 3:03:39

点击上方“小白学视觉”,选择加"星标"或“置顶”

重磅干货,第一时间送达3715c1fa076e8de38a738f0bc25edcde.png

导语:

        随着机器视觉应用的日益广泛,大幅面 多相机 视觉系统的需求越来越多,主要应用方向为大幅面高精度的定位与测量和场景拼接等。

        多相机视觉系统的难点在于多相机坐标系的统一. 可以分为两类,一是相机视野间无重叠部分,二是相机视野间有重叠部分。

        相机间无重叠部分的情况主要用于大幅面多相机高精度的定位和测量,相机间有重叠部分的情况主要用于场景的拼接等

============================

一. 相机间无重叠部分,介绍两种典型方法。

    1. 使用大标定板统一坐标

方案简介: 


         此方法采用一块大标定板来统一各个相机的坐标,每个大标定板中有若干小标定板,各个小标定板间的位置关系都是已知的,各个相机都能拍摄到一个小标定板。通过各个小标定板可以标定每个相机的内部参数和外部参数,每个相机的坐标都可以转换到各个小标定板的坐标系上,从而统一各个相机的坐标。 
系统结构:

4535cde6144cb70f968899298f295b02.png

相机在各个位置拍摄Mark图像,通过图像处理方法得到Mark坐标


常用的标定板形式:

36377bede74ae48fdaccd96101c960ef.png

        上图所示为单个标定板图像,大标定板由若干单个标定板组成,标定板的大小和数量根据实际测量情况而定。

多个标定板组合示意图:

9c2d087a747b5864ea10a7ef4c4800ce.png

 案例分析:


   (1) 检测目标分析 


   测量产品需要若干个测量指标。如下图所示。

84709ac148fbede6598605842425b195.png

    (2)图像获取 

     采用4只相机来完成所有项目的测量,分别拍到的照片如下图所示。

fc9893de40a9985327576d802e6b1b4b.png

  (3)检测流程

   先分别利用每张图的两条垂直边计算出它们的交点,那么得到的4个交点就可以算出L1和L2的值,如下图所示(以右下角相机为例)。

319d9e8f2eca020714c3b06b09e854ef.png

注意事项: 
        此种方法需要将多只相机的坐标统一到一个坐标系中,并且单一相机还要做自己的校准,保证精度。 根据检测要求,设置取多少个点作为参考,但是这影响测试的时间,需酌情考虑。 


应用领域: 
        手机和平板电脑面板尺寸的检测。

    2. 使用相对运动统一坐标

         方案简介: 

        此方法采用相机和被测物之间的相对运动来统一相机的坐标,相机和被测物只要一方运动即可,记录各个位置的坐标,然后通过数学运算来统一坐标。通常情况下是相机位置固定,被测物通过机械手等运动装置进行移动,然后把相机坐标系统一到机械手等运动装置的原点。 

总体结构:

2d860991cc83d555370fe8b297805967.png

 方法介绍: 

         通过相机拍摄的图像对Mark点进行定位,从而计算出被测物相对于标准位置的偏差,包含角度偏差和位移偏差,最终确定机械装置需要旋转的角度和平移的距离。选用手机触摸屏和手机外壳的定位系统来介绍算法原理。 
        手机触摸屏和手机外壳的定位系统,使用多支相机代替一支相机的方法进行定位,使手机触摸屏和手机外壳精确组装。相机分为两组,每组两支相机,一组拍摄手机外壳(组1),一组拍摄触摸屏(组2),两组相机标定方法相同,下面只介绍拍摄手机外壳的两支相机的标定。相机固定,机械手吸住手机外壳移动,两支相机分别拍摄手机外壳的两个定位孔,使用模板匹配的方法对两个定位孔进行识别,如下图所示:

c1b63040d9714bfd59030ae990bcfbdc.png

(1) 通过机械手的移动获取标定所用坐标 (三点线性标定法)


组1相机1: 

        把Mark点移动到相机视野中,定相机的初始位置,得到初始Mark点的中心坐标Point11(cRow11, cColumn11),机械手沿X方向移动一定距离(5mm)后得到Mark点的中心坐标Point12 (cRow12, cColumn12),机械手沿Y方向移动一定距离(6mm)后得到Mark点的中心坐标Point13(cRow13, cColumn13),同时可以得到在上述三个位置机械手的空间坐标Robot11(X1[0],Y1[0])、 Robot12(X1[1],Y1[1]) 、Robot13(X1[2],Y1[2])。 
组1相机2: 

        同上,把相同Mark点移动到相机视野中,通过相同的操作得到坐标:Point21 (cRow21, cColumn21)、Point22 (cRow22, cColumn22)、Point23 (cRow23, cColumn23)、Robot21 (X2[0],Y2[0])、 Robot22(X2[1],Y2[1])、Robot23(X2[2],Y2[2])。 

(2) 图像距离和实际距离之间转换比例关系的确定: 


       通过数学运算可计算得到比例关系。 

(3)  旋转中心的确定 


       依据三个点就可以确定一个圆的原理,让机械手在初始位置旋转三次,得到Robot31,Robot32和Robot33三个相对于机械手坐标系的坐标点,三个点的坐标就可以求出旋转圆心的坐标。

(4) 标准线斜率求取: 

       需要在两个相机的视野中各选取一点作为标准线的起始点和终点,然后求取此标准线在机械手坐标系中的斜率。调整机械手到合适位置,确定此处为标准位置,此时组1的两支相机分别拍摄初始位置的两个不同的Mark点的图像。通过模板匹配方法找到两个相机初始位置视野中两个Mark点的中心坐标Point10(Row10,Column10)和Point20(Row20,Column20),Point10和Point20确定为标准线的起始点和终点。求取Point10在机械手中的坐标如下图所示,下图中XOY是机械手坐标系,X1O1Y1是组1相机1的图像坐标。

63feb550b0cf43cc7f0401bbdd374ef7.png

       通过点到直线的距离运算可以得到d14,d15和d16的实际长度,由于在移动过程中使用的是同一个mark点,d1,d2,d3在相机1和相机2的视野中的值是一样的。从而可以得到Point10在机械手坐标系中的实际坐标为: 
 Point10X=X1[1]+d16+d2,Point10Y=Y1[1]+(d1-d15)。 
       同样可以得到Point20在机械手坐标系中的实际坐标: 

 Point20X=X2[1]+d26+d2,Point20Y=Y2[1]+(d1-d25)。

求取该标准线斜率; 

 K  = (Point20Y-Point10Y) / (Ponit20X-Point20X) 

     = (Y2[1]-Y1[1]-d25+d15) / (X2[1]-X1[1]+d26-d16) 

之后在每次定位时需要和此标准线的斜率进行比较,从而得到和标准线的夹角,最后进行旋转校正。 

注意:由于Point10和Point20会落在不同的位置,在计算Point10和Point20的实际坐标时上述公式会有所变化,但原理相同。 

定位校准 
        以后在每次进行检测时,得到的结果都和标准线进行比较,可以得到和标准线的夹角和相对于标准位置的位置偏差,根据得到的角度和位置偏差进行校正。在校正过程中需要先旋转后平移,做一个闭环反馈系统实时校正。

应用领域: 

手机或平板电脑触摸屏和外壳的装配定位。

f72840e79624c15d533333ee0d490a99.png

============================

二. 相机间有重叠部分,介绍两种典型方法。

1. 标定方法拼接图像 


方案简介: 


        
对于有些大幅面物体 ,可以通过拍摄多幅图像,每幅图像覆盖物体的不同的部分。如果摄像机经过标定并且它们与一个共有的世界坐标系之间的相对关系已知,就可以通过不同的图像进行精确测量。 甚至可以将多幅图像拼接为一副覆盖整个物体的大图,这个可以通过将每幅图像都校正到同一个测量平面上实现。在结果图像上,可以直接在世界坐标系中进行测量。 

图像拼接示意图:

e15974cb13a954542c42c2421527edfd.png

安装: 
        两个摄像机或多个摄像机必须安装在一个稳定的平台上,并且每幅图像覆盖整个场景的一部分。摄像机的方位可以随意,也就是说不需要它们看起来平行或垂直于物体表面。调整摄像机焦距、灯光以及交迭区域,使用一个大的可以覆盖整个视野的参照物。为了保证可以将多幅图像拼接为一副大图,它们之间必须存在一个小的交迭区域。交迭区域可以很小,因为这个交迭区域只是为了保证在拼接的结果图像中没有缝隙,下图为交叠区域示意图。

a356b5bd41c48ac95735812fcfd4c1fe.png

标定: 
        图像的标定可以分为两个步骤。 
        确定每个摄像机的内参。可以分别对每个摄像机进行标定求取摄像机的内参。 
        确定所有摄像机的外参。因为最后要将所有的图像转换到某一个世界坐标系中,所以需要使用一个大的标定物,这个标定物可以出现在所有的图像中,它可以由多个标定板组合而成,标定板的数量和使用摄像机的数量一致。下图为两个相机分别拍摄到的标定图像。 
  
        注意:为了确定摄像机的外参,每个摄像机只需要拍摄一副标定图像就已经足够。标定物在多个摄像机分别进行拍摄标定图像的过程中不可以移动。理想情况下,这些标定图像应该同时获取。

ea4df69df94a80e48946bc42f14ae009.png

将单个图像拼接为一个大图: 
        首先,每幅图像都必须进行校正,将这些图像转换到一个共有的坐标系中,它们之间就会正确匹配。在得到所有进行校正图像需要的映射图后,使用两个摄像机拍摄的每个图像对都可以进行校正并且高效的拼接。拼接的结果图由两幅校正后的图像组成,每个校正后的图像占图像的一个部分,下图为校正后的图像和拼接结果。

a632a8da9f5e8ca01e272d344af563c5.png

应用领域: 
液晶面板表面质量的检测 


2. 非标定方法拼接图像 


简介: 
       此种方法和前三种方法相比精度较低,适用于不需要实现高精度拼接的应用场合。这种拼接方法的优点是不需要进行摄像机标定,并且每幅单独的图像可以自动进行排列。 
拍摄单幅图像规则: 

在拍摄每幅图像时需要遵循下面这些规则: 
        (1) 相邻的图像之间必须有交迭 
        (2) 图像之间的交迭区域必须有比较明显的特征,这样就可以保证比较精确的自动匹配过程。如果在某些交迭区域内的特征不明显那么可以通过定义合适的图像对来克服。如果整个物体的特征都不是特别明显,那么交迭区域就应该更大一些。 
        (3) 交迭的图像的缩放比例必须大约相等。一般情况下,缩放比例的不同不能超过 5-10% 
        (4) 这些图像的亮度应该相似,至少在交迭区域部分的亮度相似。否则,如果亮度区别非常明显的话,图像之间的接缝在结果图像中就非常明显,如下图所示。

6a4594c4088091df73e5c62e2a63ce84.png

定义交叠图像对: 
       需要定义一些交迭图像对,通过匹配确定这些图像对之间的转换关系。匹配的过程只会应用在这些交迭图像对上。

50b794bfe60c2e2593020a718d160626.png

      如果需要拼接的图像比较多,或者交迭图像每行图像比较多,此时合理彻底地安排图像对的配置十分重要。否则就可能有些图像不能实现精确匹配。这主要是因为噪声造成点坐标的一些误差导致不能准确计算图像之间的转换关系,这些误差会由一个图像传到下一幅图像上。 


提取图像中的特征点:
       提取出的特征点的数量影响运行时间以及匹配的结果。特征点的数量越多,匹配的过程就越慢。但是太少的特征点将增大产生错误结果的可能性。 

在交迭的区域中匹配特征点并且确定图像之间转换关系: 
        在进行图像拼接过程中最重要的任务就是图像对之间的匹配过程。匹配的图像对可以有任意的平移和旋转,唯一的要求就是图像应该有大约相同的缩放比例。如果图像之间平移和旋转的信息可用,它就可以用来限定寻找区域,这样就可以加速匹配过程并且使算法更加健壮。匹配特征点过程如下图所示。

f6a44d0235a8a37b8f843e9c7b596ada.png

生成拼接图像 
        知道了图像对之间的转换关系,就可以调用函数进行图像拼接,下图为拼接好的图像。

2e3fcbd6f1e70b83115778479e9331a6.png

注意: 
       需要注意球面拼接的情况,上述方法只适用于摄像机绕光心旋转或缩放。如果摄像机的移动包含平移或不是严格绕光心的旋转,使用这种方法得到的拼接结果将不准确也就不能够用在精确测量的场合。 


应用领域: 
(1) 街景的拼接。 
(2) 电子地图的制作。 
(3) 医学影像的拼接。

============================

下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲

在「小白学视觉」公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲

在「小白学视觉」公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

0ab0fe1f2b7a256345b1c3e94ed59c76.png

17a4fc1158f2c74bda3dac912afca163.png


http://lihuaxi.xjx100.cn/news/272447.html

相关文章

Google重磅发布开源库TFQ,快速建立量子机器学习模型

整理 | 弯月编辑 | 郭芮出品 | AI科技大本营(ID:rgznai100)近日,Google 与滑铁卢大学、大众汽车等联合发布 TensorFlow Quantum(TFQ),一个可快速建立量子机器学习模型原型的开源库。TFQ提供了必…

如何防止我的模型过拟合?这篇文章给出了6大必备方法

选自Medium作者:Mahitha Singirikonda机器之心编译编辑:小舟正如巴菲特所言:「近似的正确好过精确的错误。」在机器学习中,过拟合(overfitting)会使模型的预测性能变差,通常发生在模型过于复杂的…

YUV和RGB格式分析

做嵌入式项目的时候,涉及到YUV视频格式到RGB图像的转换,虽然之前有接触到RGB到都是基于opencv的处理,很多东西并不需要我们过多深入的去探讨,现在需要完全抛弃现有的算法程序,需要从内存中一个字节一个字节的处理&…

用Python做一个游戏辅助脚本,完整编程思路分享

一、说明 简述:本文将以4399小游戏《 宠物连连看经典版2 》作为测试案例,通过识别小图标,模拟鼠标点击,快速完成配对。对于有兴趣学习游戏脚本的同学有一定的帮助。 运行环境:Win10/Python3.5。 主要模块&#xff1…

可编辑表格的实现

表格是网站中最常见的数据表现形式之一,不过大部分表格里数据都是从后台获取后直接展示的。本文将介绍可编辑表格的实现。 自适应宽高的多行输入 多行输入最常用的标签就是textarea,textarea正常使用的话是固定宽高的,内容超出的情况下默认是…

推荐:一款Java开源的Springboot 即时通讯 IM 聊天系统

点击上方“方志朋”,选择“设为星标”回复”666“获取新整理的面试文章# 开篇电商平台最不能缺的就是即时通讯,例如通知类下发,客服聊天等。今天,就来给大家分享一个开源的即时通讯系统。如对文章不感兴趣可直接跳至文章末尾&…

win7x64注册表显卡渲染速度_Geek3D GpuTest GUI(显卡测试软件)下载-Geek3D GpuTest GUI(显卡测试软件)免费版下载v0.7.0...

Geek3D GpuTest GUI 能够对显卡的GPU、OpenGL进行基准压力的测试,而且测试完成也相当的快捷,功能强大,体积小巧,目前支持在windows 64位系统上进行测试,帮助用户检测显卡的型号,让用户更好的使用显卡并发挥…

从零开始一起学习SLAM | 三维空间刚体的旋转

点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达刚体,顾名思义,是指本身不会在运动过程中产生形变的物体,如相机的运动就是刚体运动,运动过程中同一个向量的长度和夹角都不…