本发明涉及相机标定

技术领域:

,具体涉及一种视觉定位中的点集仿射变换算法。

背景技术:

:随着工业自动化技术的推进,越来越多的产线工件组装、检测、测量等工作正在由机器人或自动化设备逐步替代,而这些技术的实现,大多离不开机器视觉。在工业机器视觉应用领域,常常需要建立两个坐标系之间的变换关系实现目标物的特征点定位,从而实现工件的引导组装等目的。2D视觉检测中,物体的图像坐标和世界坐标、图像坐标与图像坐标以及世界坐标和世界坐标之间的映射关系往往由旋转、平移、缩放、翻转、斜切矩阵的任意组合得到。在实际的工业应用中,通常会用到对应点集间的任意变换、刚性变换和相似变换,它们比较适用于解决实际的定位问题。在对目标工件的位置进行视觉定位中,对相机进行线性标定时,常规方法是采用模板匹配、blob分析、角点检测等方法对标定模板进行特征提取,于是便得到了两个坐标系下两组个数相等的对应点集坐标数据,通过建立点集的图像坐标和实际物理坐标之间的仿射变换关系矩阵,便可以得到检测点对应坐标系下的位姿信息。考虑两组点集可能的映射关系不同,就需要不同的变换方式,而不是统一方法,坐标系之间的变换方式的不同,求解变换矩阵解的算法也不同。技术实现要素:本发明要解决的技术问题是提供一种对不同映射关系的两组点集采用不同变换矩阵求解方法的视觉定位中的点集仿射变换算法。为解决上述问题,本发明的技术方案为:一种视觉定位中的点集仿射变换算法,对相机进行线性标定,包括以下步骤:步骤1:拍摄标定板照片,所述标定板具有特征点,所述特征点的位置坐标为已知项,得到点集物理坐标数据;步骤2:对标定板照片进行特征提取,得到点集图像坐标数据,所述点集图像坐标数据和点集物理坐标数据个数相等且一一对应;步骤3:明确两组点集的映射关系,根据两组点集坐标数据求解变换矩阵;对于不同的点集映射关系,采用不同的变换矩阵求解算法。进一步的,两组点集映射关系为任意仿射变换时,采用最小二乘法求解变换矩阵,包括以下步骤:步骤a:通过特征提取得到点集图像坐标数据(x′,y′),点集物理坐标数据为(x,y);步骤b:变换矩阵将点集物理坐标(x,y)变换为点集图像坐标(x′,y′),x=AX′+BY′+Cy=DX′+EY′+F所述A,B,C,D,E,F为坐标转换系数;步骤c:求解A,B,C,D,E,F,采用反向映射,由最小二乘法得:vec1=inv([XYI]′*[XYI])*[XYI]′*Uvec2=inv([XYI]′*[XYI])*[XYI]′*V其中vec1=[ABC],vec2=[DEF];X、Y、U、V、1分别是x,y,x′,y′,1构成的向量,表示如下:进一步的,所述步骤b中将点集物理坐标(x,y)变换为点集图像坐标(x′,y′)时,采用如下变换公式:进一步的,两组点集映射关系为刚性仿射变换时,采用奇异值分解和最小二乘法求解变换矩阵,包括以下步骤:步骤a:两个在二维空间中对应的点集合为P={p1,p2,...,pn}和Q={q1,q2,...,qn),所述点集合之间的刚体变换为旋转矩阵R和平移矩阵t,构建模型:步骤b:求取R和t。进一步的,所述t的求取过程如下:对两个点集合进行去中心化,得到新的点集合X和Y,表示为:此时,转移矩阵进一步的,所述R的求取过程如下:使tr(∑VTRU)达到最大值,I=VTRU逐步化简:V=RUR=VUT。进一步的,两组点集映射关系为相似仿射变换时,采用复数域内的最小二乘法求解变换矩阵,包括以下步骤:步骤a:变换矩阵表达式为:实数域的m阶多项式模型如下:其中j+k≤m,(X,Y)表示变换后的坐标,(x,y)表示变换前的坐标,m表示多项式模型最高阶数,ajk、bjk表示变换参数;步骤b:根据复数运算性质,实数域的模型可以更改为:其中为复数域参数,且有所述多项式的模型为一阶,m=1,由式(1)和式(2)便可以得到实数域的变换(a),实数域的变换共有6个未知参数,在复数域表示时,将实数域的6个参数简化为复数域3参数的一阶多项式模型:式中,为待求复参数,其中包含平移信息,包含了缩放和旋转信息,求取需要的相似变换矩阵;步骤c:所述的相似变换矩阵采用复数域最小二乘平差方法进行参数及中误差计算得到:平移向量:旋转角度:缩放比例:与现有技术相比,本发明具有如下有益效果:本发明公开的算法可以很好地解决在视觉定位中,针对两组点集的映射关系不同,采用不同的映射矩阵求解方式,从而提高了定位的精度,减少了定位的时间。具体实施方式为了对本发明的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体图示,进一步阐述本发明。实施例1:一种视觉定位中的点集仿射变换算法,对相机进行线性标定,包括以下步骤:步骤1:拍摄标定板照片,所述标定板具有特征点,所述特征点的位置坐标为已知项,得到点集物理坐标数据;步骤2:对标定板照片进行特征提取,得到点集图像坐标数据,所述点集图像坐标数据和点集物理坐标数据个数相等且一一对应;步骤3:明确两组点集的映射关系,根据两组点集坐标数据求解变换矩阵;两组映射点集之间的关系矩阵,在几何中,通常表达为一个向量空间进行一次线性变换并接上一个平移,变换为另一个向量空间,两组点集的个数必须是相等的。最小二乘法求解任意仿射变换矩阵:通过特征提取得到点集图像坐标数据(x′,y′),点集物理坐标数据为(x,y);一个对向量严移一般可用如下公式表示:等价于:仿射变换可以由以下基本变换复合而成:平移、缩放、旋转、错切,变换矩阵将点集物理坐标(x,y)变换为点集图像坐标(x′,y′),这些基本的变换如下公式表示:x=AX′+BY′+Cy=DX′+EY′+F求解A,B,C,D,E,F。为了防止出现空像素,一般采用反向映射,由最小二乘法得:vec1=inv([XYI]′*[XYI])*[XYI]′*Uvec2=inv([XYI]′*[XYI])*[XYI]′*V其中vec1=[ABC],vec2=[DEF];X、Y、U、V、I分别是x,y,x′,y′,1构成的向量,表示如下:进一步的,将点集物理坐标(x,y)变换为点集图像坐标(x′,y′)时,采用如下变换公式:实施例2:一种视觉定位中的点集仿射变换算法,对相机进行线性标定,包括以下步骤:步骤1:拍摄标定板照片,所述标定板具有特征点,所述特征点的位置坐标为已知项,得到点集物理坐标数据;步骤2:对标定板照片进行特征提取,得到点集图像坐标数据,所述点集图像坐标数据和点集物理坐标数据个数相等且一一对应;步骤3:明确两组点集的映射关系,根据两组点集坐标数据求解变换矩阵;两组映射点集之间的关系矩阵,在几何中,通常表达为一个向量空间进行一次线性变换并接上一个平移,变换为另一个向量空间,两组点集的个数必须是相等的。奇异值分解法求解刚性变换矩阵:给定两个在二维空间中对应的点集合P={p1,p2,...,pn}和Q={q1,q2,...,qn),为了计算出它们之间的刚体变换,即R和t,其过程如下:构建上述问题的模型为:求取R和t。进一步的,对两个点集合进行去中心化,得到新的点集合X和Y,表示为:此时,转移矩阵进一步的,模型转化为:为了使得tr(∑VTRU)达到最大值,I=VTRU逐步化简:V=RUR=VUT。所以,t可以根据公式计算出来,由此可以得到两个点集之间的旋转矩阵R和平移矩阵t。实施例3:一种视觉定位中的点集仿射变换算法,对相机进行线性标定,包括以下步骤:步骤1:拍摄标定板照片,所述标定板具有特征点,所述特征点的位置坐标为已知项,得到点集物理坐标数据;步骤2:对标定板照片进行特征提取,得到点集图像坐标数据,所述点集图像坐标数据和点集物理坐标数据个数相等且一一对应;步骤3:明确两组点集的映射关系,根据两组点集坐标数据求解变换矩阵;两组映射点集之间的关系矩阵,在几何中,通常表达为一个向量空间进行一次线性变换并接上一个平移,变换为另一个向量空间,两组点集的个数必须是相等的。复数域的最小二乘法求解相似变换矩阵:当两组点集的映射关系由旋转、平移和缩放组合而成,而没有斜切变换的情况下,采用了复数域的最小二乘法求取关系矩阵,从而实现精确定位,变换矩阵表达式为:相似变换矩阵的自由度比刚性变换多了一个缩放因子,而且X和Y方向的缩放因子是相同的。相似变换矩阵的表达式也是由实数域推演而来,通常实数域的m阶多项式模型如下:其中j+k≤m,(X,Y)表示变换后的坐标,(x,y)表示变换前的坐标,m表示多项式模型最高阶数,ajk、bjk表示变换参数。根据复数运算性质,实数域的模型可以更改为:其中为复数域参数,且有有复数域的模型和实数域的模型方程可以看出,复数模型的方程个数比实数域少了一半,参数的维数也少了一半,因此,复数域的模型表达比实数域更高效,在求解点集间的变换矩阵中,也会更高效。基于点集的仿射变换,多项式的模型是一阶的,那么m=1时,由式(1)和式(2)便可以得到实数域的变换(a),实数域的变换共有6个未知参数,在复数域表示时,可将实数域的6个参数简化为复数域3参数的一阶多项式模型:式中,为待求复参数,那么其中包含平移信息,包含了缩放和旋转信息,进而可以求取需要的相似变换矩阵。复数域一阶多项式平差与实数域一节多项式平差有相同的参数估值,两种方法有等价性,由此采用复数域最小二乘平差方法进行参数及中误差计算得到:平移向量:旋转角度:缩放比例:上述三个实施例具体实验结果:下表1是实际实验中,相机下视拍取圆点标定板的数据对应关系,试验中标定板放在大理石平台上,相机安装固定,与大理石平台平面平行,得到的像素坐标pointlx、pointly和对应的标定板坐标point2x、point2y,数据如下表所示:pointlxpointlypoint2xpoint2y716.5381567.9981221123.073581.0117621529.93594.10431021936.396607.01531422343.156620.01971822750.088633.26072223156.945646.3392623563.826659.08413023971.236672.1598342表1已知一特征点的像素位置x:4378.461481,y:685.33244,以及标定板上的坐标值X:38,Y:2,对于像素位置,分别利用表一的数据通过三个方法求得的矩阵进行变换,得到结果如下:坐标相似变换刚性变换任意变换X38.006638.007038.0096Y2.00062.000232.00659表2从上述表格看出,本发明三种求解方式得到的坐标数据精度极高,相似变换和刚性变换的求解方式得到的坐标精度均大于任意变换的求解精度。下表3分别是用10组、100组、1000组以及10000组点对,求解相似变换矩阵、任意变换矩阵以及刚性变换矩阵时运行1000次的平均时间统计,算法在windows10(IntelCorei7-8700KCPU3.7GHZ)系统性下,采用C++编译的release模型下运行测试,通过表格可以看出三种方法求解速度均极快,其中相似变换和刚性矩阵求解在速度上明显快于任意变换矩阵求解,对于相似变换和刚性矩阵来说,采用相应的算法求解速度更快。表3本行业的技术人员应该了解,本发明不受上述实施例的限制,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。当前第1页1&nbsp2&nbsp3&nbsp

刚性仿射变换算法_一种视觉定位中的点集仿射变换算法的制作方法相关推荐

  1. 负压式爬壁机器人_一种负压吸附式仿生爬壁机器人的制作方法

    一种负压吸附式仿生爬壁机器人的制作方法 [技术领域] [0001]本发明涉及爬壁机器人领域,具体的说是一种负压吸附式仿生爬壁机器人. [背景技术] [0002]爬壁机器人可广泛应用于建筑物清洗.油漆喷 ...

  2. ft232h引脚_一种基于芯片ft232h的usb接口电路的制作方法

    一种基于芯片ft232h的usb接口电路的制作方法 [技术领域] [0001 ] 本实用新型涉及一种USB接口电路,具体涉及一种基于芯片FT232H的USB接口电路. [背景技术] [0002]USB ...

  3. 协同过滤算法_机器学习 | 简介推荐场景中的协同过滤算法,以及SVD的使用

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是机器学习专题的第29篇文章,我们来聊聊SVD在上古时期的推荐场景当中的应用. 推荐的背后逻辑 有没有思考过一个问题,当我们在淘宝或者是 ...

  4. 扫地机器人水箱背景_一种扫地机器人用水箱及扫地机器人的制作方法

    本实用新型涉及除尘技术领域,并且更具体地涉及一种滤扫地机器人用水箱及扫地机器人. 背景技术: 扫地机器人又叫懒人扫地机,是一种能对地面进行自动吸尘的智能家用电器.因为它能对房间大小.家具摆放.地面清洁 ...

  5. 北斗三号频点_一种北斗三代RNSS多频点接收模块的制作方法

    本实用新型属于北斗导航定位设备技术领域,具体涉及一种北斗三代rnss多频点接收模块. 背景技术: 北斗卫星导航定位系统的建立,促进了我国自主卫星导航事业的发展,使我国在卫星应用方面摆脱了对国外卫星导航 ...

  6. 地质勘查土质分类图片_一种地质勘查用土壤样本采集装置的制作方法

    本实用新型涉及取样设备技术领域,尤其涉及一种地质勘查用土壤采集装置. 背景技术: 取土器用来提起下层试验土壤原状土作为试样以了解其性质,为使更多的了解基层性质,以及在工程地质勘探和勘察工作中, 为了求 ...

  7. hdmi网线延长器_一种百米级HDMI高清网线延长器的制作方法

    本实用新型涉及电子设备领域,特别涉及一种百米级HDMI高清网线延长器. 背景技术: 随着电子技术的飞速发展,HDMI等接口已经成为高清音频领域的标准接口.HDMI目前已经发展到了2.0版本,传输速率达 ...

  8. 两路音频合成一路电路_一种无源多路音频合路处理模块的制作方法

    本发明涉及一种无源多路音频合路处理模块,属于音频合路设计领域. 背景技术: 在现有技术中,通过两种方案来实现音频合路的处理,一种是有源多路音频合路:采用混合放大电路,即经过运算放大器对每一路信号进行整 ...

  9. adc0832对光电二极管进行数据采集_一种基于光电二极管的麦克风跟踪检测电路的制作方法...

    本实用新型涉及一种基于光电二极管的麦克风跟踪检测电路,属于应用电子技术领域. 背景技术: 随着互联网的发展,语音交互应用正在日益变多,近几年视频直播.网络直播.K歌软件都发展得很快,也推高了麦克风的销 ...

最新文章

  1. C语言中冒泡排序及优化
  2. Linux 创建指定大小空文件
  3. C++leetcode找出两个有序数组的中位数(2)
  4. BugKuCTF 杂项 签到题
  5. pyppeteer(python版puppeteer)基本使用
  6. 程序员的3年之痒改变的不止薪水(转载)
  7. 已知ABAP tcode,需要查找assign了该tcode的PFCG role
  8. 流行的编程语言及其趋势
  9. activiti的springboot模块
  10. Go语言跨平台预编译
  11. 安恒赛php_安恒强网杯部分web
  12. Javashop电商系统7.1.5源码,Java电商系统源码分享
  13. jdk32位安装包下载_天正T20V5.0软件安装包下载(建筑,给排水,结构,电气,暖通)+安装教程...
  14. 一文带你了解云原生安全 | 云安全解决方案(CASB、CSPM、CWPP、CNAPP)
  15. 微软bing搜索引擎疑似被屏蔽 国内多地无法访问
  16. i5 10400 + B460M 黑苹果 EFI Big Sur 11.6
  17. [开源]免费天气预报接口,提供七天预报(包括省市代码)
  18. 2022茶艺师(中级)理论题库及答案
  19. CLH Lock 原理
  20. 副业新风口:TikTok(海外抖音)搬运视频,1天1小时!一月3W!(可批量操作)...

热门文章

  1. Win10怎么看内存条频率
  2. java 主机字节序_java字节序、主机字节序和网络字节序扫盲贴
  3. 母牛生小牛java_Java实现:工厂有一头母牛,一年生一头小母牛,小母牛五年后可以生小牛,问20年工厂有多少头牛?...
  4. JAVA读取Excel表格,建数据库建表,并生成java实体实例
  5. c mysql加密解密_mysql内置加密函数对数据加密
  6. 习题11-7 奇数值结点链表 (20分)
  7. 利用OpenCV实现欧拉数的计算
  8. python 战舰_419. 甲板上的战舰(Python)
  9. 【REACT-受控组件和非受控组件】
  10. 配置路由urlconf