视觉应用工程师
前言
工作以来,实习以及后面工作偏向都不一样,既有偏硬件又有偏纯软的开发。与硬件开发有关的则是对工业相机以及设备的了解。本期系类则是自己对硬件开发的一些汇总,希望能帮助到大家。作者有过3D,2D的相机使用以及识别,大致在这里说一说自己的一些认识,但自己也可能对此认识不深或者有错误的地方,权当一个抛砖引玉,有错误还希望大家留言指出。
硬件
对于视觉上我们要知道的硬件大概就是相机 镜头 光源。同时可能我们会做运动控制的类的,这就需要我们熟悉一些常见的运动控制卡
- 轴卡:固高 雷赛等运动控制卡。
- 平台:平台类型也有分为XYR平台 UVW平台。
软件
标定
-
相机标定
相机标定就是标定相机内外参数,可以参考这篇文章 相机标定原理介绍(一) - Jessica&jie - 博客园 (cnblogs.com) 。一般的2D的工业相机厂商都已经帮我们矫正了,如果需要更加精准度,则可以自己相机矫正。3D的相机,厂商一般有自带的矫正相机内外参的软件,按照厂商软件的说明手册进行标定即可。作者对于相机标定的也是不太深入,之前做公司做3D相机,是有3D相机的标定软件的。
-
手眼标定
基本上抓取类识别的设备,都会进行手眼标定,这个标定在我认为是计算得到从机械坐标系到相机坐标系的一个旋转矩阵。一般而言坐标系为3维度,无论是2D 还是3D(2D本质就是Z轴是一个固定的常量)我们都会得到一个3*3的矩阵。从而这个旋转矩阵乘以物体在相机中的坐标就能得到物体在机械坐标系下的坐标(这里参照机器人学的位姿转换,旋转矩阵的运算则是利用线性代数计算出来)。无论是halcon还是opencv里的九点标定,都是这个道理。
一些解答
- 关于得到旋转矩阵:一般而已halcon opencv都有这个算子,3D的可以利用matlab进行计算,如果你比较懂线性代数,则可以自己编写(作者参照了很多资料,还是没有写出来)
图像识别
很多情况下,我们都是用的是模板匹配,无论是halcon的基于形状还是基于灰度值,要在图像上找到与模板匹配的区域,至于特征点一般取该区域的中心点。如果不能很好做的模板,则可以通过一些流程化
模板如何更好寻找
- 打光:光源的选择是一个很重要的标准,打光的不同则会影响我们后面的计算,所以打光很重要,如果打光情况下特征点明显,则完全就可以不用做后续的图像处理,直接匹配即可。当然,彩色相机的打光尤为重要,做技术方案前最好去光源公司实际打光试一试。
- 流程化:在打光已经做的完好的情况下,模板怎么做的,匹配就应该怎么做。模板如果清晰,则可以直接在原图取模板图像。如果不明显,则可以先二值化,腐蚀或膨胀 画的感兴区等操作达到自己想要的效果。(halcon有三种匹配模式,还是很强大的)
匹配的角度
- halcon匹配是能直接计算出角度的,这一点对于我们快速上手出成果很好。
- opencv则是需要自己编写一套计算出合适的角度。一般就是不断让模板选择去匹配,选择最合适的一个旋转角度就行。 求解图像旋转角度的方法_thequitesunshine007的博客-CSDN博客_图形旋转角度的计算 这篇文章对我们有帮助我们理解
这篇文章写的还是有点凌乱的,大佬看了如果发现有错误,欢迎私信给我。下一篇打算发 相机取图 轴卡控制 UVW平台的概要。