系列文章目录
机器视觉系列(1)-概述 机器视觉系列(2)-机械部件 机器视觉系列(3)-电气部分 机器视觉系列(4)-相机部分
文章目录
- 系列文章目录
- 前言
- 什么是工业镜头?
- 二、工业镜头分类
- 三、工业镜头的主要性能参数
- 四、工业镜头选型步骤
- 五、其它组件
- 六、相机镜头校正
- 总结
- 参考资料
前言
延续之前的机器视觉系列文章,从应用的角度介绍工业镜头的相关整理内容。
什么是工业镜头?
工业镜头是,光学系统由多个镜头(或反射器)组成,形成正确的物理图像关系,确保正确清晰的图像,是镜头的核心;机械装置包括固定光学元件(如镜筒、镜头座、压力圈、连接环等)、镜头调节机构(如光圈调节环、调焦环等)、连接机构(如常见C接口、CS接口)等。此外,一些镜头还具有自动调光圈、自动调焦或感知光强度的电子结构。。
二、工业镜头分类
按实际用途可分为: ①FA就是Factory Automation,工厂自动化,指用于工厂自动化的镜头,简称工业镜头。 ②远心镜头主要是为了纠正传统工业镜头的视差,,这对于被测物体不在同一物体上是非常重要的。由于其独特的平行光路设计,远心镜头受到计算机视觉应用场合的青睐,对镜头畸变要求很高。 有时用于追求高精度,其入射和出射光瞳均投射到无限远处,其畸变系数为普通镜头的1/20,一般小于0.1%。
③M12镜头是小螺纹口径镜头,整体尺寸远小于FA镜头和远心镜头,板卡相机。
根据焦距类型,FA镜头也可以进一步分为: ①定焦镜头特指只有一个固定焦距的镜头,它只有一个焦段,或者说只有一个视野,没有变焦功能。定焦镜头的设计相对变焦镜头而言要简单得多,但一般变焦镜头在变焦过程中对成像会有所影响,而定焦镜头的优点是对焦速度快,成像质量稳定。对于使用定焦镜头的数码相机,它所拍摄的运动物体图像清晰而稳定,对焦非常准确,画面细腻,颗粒感非常轻微,测光也比较准确。 ②变焦镜头通过镜头中镜头之间的相互移动,在一定范围内改变镜头的焦距,使相机不仅可以获得全景图像,还可以获得局部细节图像。通过改变焦距,获得不同宽度的视角、不同大小的图像和不同场景范围的相机镜头。变焦镜头可以通过改变焦距来改变拍摄范围,而不改变拍摄距离,因此非常有利于画面构图。 【其实变焦镜头很好用,就是价格太贵…】 ③鱼眼镜头视角接近或等于180°镜头是一种极端的广角镜头。它的视角力求达到或超出人眼所能看到的范围。因此,鱼眼镜头与人们眼中真实世界的场景有很大的不同。我们在现实生活中看到的风景是规则的固定形式,鱼眼镜头产生的画面效果超出了这一类。。 ④微距镜头是一种特殊的微距摄影镜头,主要用于拍摄非常微妙的物体,并努力尽可能详细地呈现目标的细节。。 此外还有,镜头沿图像的横轴或纵轴倾斜,透视镜头和远心镜头有两种形式,。
三、工业镜头的主要性能参数
在实际的机器视觉中,最常用的是FA这里只讨论定焦镜头。FA定焦镜头的主要参数。 ①:其中,镜头与焦点的距离是镜头的重要性能指标。镜头焦距的长度决定了拍摄的成像大小、视角大小、景深大小和图片的透视强度。焦距越大,成像越大。根据镜头的不同用途,焦距的大小也不同镜头焦距为5mm、8mm、12mm、16mm、25mm、35mm、50mm、75mm等。其计算公式为: 式中,WD工作距离(物距)。 ②:计算公式如下:
相对孔径的倒数为光圈系数,光圈系数一般为F数字表示。例如,如果镜头的相对孔径为1:2,则其光圈系数为F2.这个指标将标记在相机的镜头上。常用的光圈系数是F1.4、F2.0、F2.8、F4.0、F5.6、F8.0、F11.0、F16.0、F22.等几个等级。。为了提高镜头的可靠性,降低成本,一些视觉系统采用固定光圈设计,即当光圈不能改变时,通过调整光源强调或相机增益来调整图像亮度。
对照度要求不高、使用手动光圈的高清相机可考虑将光圈稍缩小一点。
③:镜头靶面尺寸是指镜头成像直径可覆盖的最大感光芯片尺寸,主要为1/2英寸、2/3英寸、1英寸和1英寸以上。 ④:它是镜头和相机之间的连接方式用的接口包括C、CS、F、V、T2等。 ⑤,在机器视觉应用中,最关键的像差是畸变(变形率)和场景(传感器连接的参数已被严格校正)。畸变会影响测量结果,特别是在精确测量中,必须通过软件进行校准和补偿。 ⑥:它代表镜头记录物体细节的能力是指在成像平面上1mm在间距内,可分辨的黑白线对数为线对//mm”。。镜头的分辨率不能与相机的分辨率混淆。
一般,单位线对/mm,镜头的最低分辨率为38线/2英寸mm,镜头的最低分辨率为50线/3英寸mm,相机的靶面越小,镜头的分辨率就越高。 ⑦:它用来衡量镜头可以收集的光的角度范围。其计算公式为:
式中,n空气中是镜头工作介质的折射率n=1.0;a光进入镜头时的最大孔径锥角。数值孔径与分辨率和光学放大倍数成正比。换句话说,数值孔径直接决定镜头的分辨率。数值孔径越大,分辨率越高,否则分辨率越低。 ⑧:其计算公式为:
式中,f为焦距;WD工作距离。
⑨:其等于芯片尺寸除以视场,其计算公式为:
⑩:即物距,指镜头最下端机械面到被测物体的距离。由于有些系统工作空间很小,因而要求镜头有较小的工作距离;但有的系统在镜头前需要安装光源或其他工作装置,因而必须有较大的工作距离保证空间。需要的工作距离越大,保持小视野的难度和成本就越高。 注意,计算景深时还会使用对焦距离,。 ⑪:指相机接口平面到芯片的距离。简单来说,当安装上标准镜头(标准C/CS接口镜头)时,后焦距是使被拍摄物体的成像恰好在CCD图像传感器的靶面上的距离。在对线扫描镜头或大面阵相机的镜头选型时,后焦距是一个非常重要的参数,它直接影响镜头的配置。一般工业相机在出厂时都对后焦距做了适当的调整,因此,在配接定焦镜头的应用场合,一般不需要调整工业相机的后焦距。而在有些应用场合,如出现当镜头对焦环调整到极限位置仍不能使图像清晰时,如果镜头接口正确,则需要对工业相机的后焦距进行调整。 ⑫:用于计算镜头景深所需要的参数。不同的厂家对容许弥散圆直径有不同的定义,一般给定参数为,芯片尺寸24mm36mm对应弥散圆直径0.035mm,6cm9cm对应0.0817mm,4”5”对应0.146mm。通常情况下,肉眼分辨率为二千分之一至五千分之一。人眼在明视距离(眼睛正前方30厘米)能够分辨的最小的物体大约为0.125mm。所以,弥散圆放大在7寸照片(这是个常用尺寸)也只能是0.125mm以内,也就是图像对角线长度的1/1730左右。这个1/1730左右的容许弥散圆大小对于任何大小的底片或者CCD都适用,因为它们放大出来的7寸照片,都可以将弥散圆控制在0.125mm。所以蔡斯公司制定的标准就是弥散圆直径=1/1730底片对角线长度。实际使用中如果需要,还可。另外,因为弥散圆最根本目的是界定你是否能够看出清晰或者模糊,那么至少需要22个像素(4个像素的方块)来分辨是否清晰,。
⑬:其是镜头的一个重要的外部参数,它表示满足图像清晰要求的远点位置与近点位置的差值,如下图:
前景深ΔL1、后景深ΔL2及景深ΔL的计算公式为:
在相机中可清晰成像的距离范围为:L-△L1~L+△L2。 式中,f为焦距;F为光圈系数;L为对焦距离(即工作距离*(1+1/放大倍率))。
对比下前景深与后景深的区别:
另从后景深的计算公式可以看出,很容易出现△L2<0的情况,这就引出超焦距的概念。即当镜头对焦在无穷远时,景深前界(离镜头最近清晰点)到镜头的距离称之为超焦距。就是。如果超焦距是2米,则景深就是1米到无穷远。当使用超焦距时,我们希望获得尽可能大的景深。
超焦距的计算公式为:
这时的清晰成像距离为>fH/2。 ,则: L = 700 + 12 = 712mm △L1 = 2.80.011712^2 / (12^2 + 2.80.011712) = 94.10mm △L2 = 2.80.011712^2 / (12^2 - 2.80.011712) = 127.91mm △L = 94.10+127.91 = 222.01mm fH = 12 + 12^2/(2.8*0.011) = 4687.32mm 可以看到,影响景深的最主要因素是工作距离,工作距离越大景深越大。此外,光圈越大景深越小,焦距越大景深越小。 实际使用中,: ①固定光圈,保证其他测试条件相同。 ②放置一个条码目标物,调节镜头至条码刚好能识别出的状态,即极限状态。再用相同的另一张条码上移到能识别出的极限高度,此段高度即为景深。
四、工业镜头的选型步骤
① E=B/C,相机长边和短边的像素数都要大于E ②像元尺寸=产品短边尺寸B/所选相机的短边像素数; ③ =所选相机芯片短片尺寸/相机短边的视野范围 ④ =像元尺寸/放大倍率(判断是否小于C) ⑤ =工作距离*(1+1/放大倍率)单位mm ⑥,否则将出现黑角 ⑦,即要求像面分辨率要大于1/(2*单个像元尺寸<单位取mm>)以上,单位线对/mm 另外,对于恒定光照条件的环境(一般为实验室环境),可选用固定光圈的镜头。对于光照度变化不明显的环境,常选用手动光圈镜头,即将光圈调到一个比较理想的数值后固定住。如果照度变化较大,应选用自动光圈镜头。在使用自动光圈镜头时,一般需要镜头配合摄像机的背光补偿功能来实现,采用宽动态范围的摄像头也有比较不错的效果。
五、其他组件
①,其是根据光线的偏振原理制造的镜片,用来排除和滤除光束中的直射光线,使光线能于正轨之透光轴投入眼睛视觉影像,使视野清晰自然。例如,。在拍摄这样的场景时,光源的投射角度与相机拍照的角度要趋近一致,并且其最大的偏折角度需介于30-40°之间。使用的时候可以通过慢慢转动滤镜前组的镜片来进行调整,力求把景物表面的反光降到最低程度。另外,,这是因为偏光镜可以吸收大气中雾气或灰尘反射出的各种方向的杂光,从而使拍摄出的影像更加纯净。 ②,其是用来选取所需辐射波段的光学器件。滤光片的一个共性,就是没有任何滤光片能让天体的成像变得更明亮,因为所有的滤光片都会吸收某些波长,从而使物体变得更暗。。但是,如果在镜头前放一个黄色滤光片,阻挡一部分绿叶散射出的绿光、蓝天散射出的蓝光,而让黄花散射出的黄光大量通过,这样,黄花就显得十分明显了,突出了“黄花”这个主题。
六、相机镜头校正
这里只介绍面阵相机的针孔相机模型的标定。 我接触过的相机镜头校正软件有:OpenCV、Matlab、Halcon三种,其都可以分为4个步骤: ①, ②, ③, ④。 步骤①三者之间没有差别。 关于拍摄用于标定的图像时的注意细节有: <1>; <2>保持相机不变,; <3>拍摄图像最少10张,; <3>; <4>,如下图: <5>; <6>; <7>。 在本文实验中,我分别使用标称制造精度±0.01mm的棋盘格和圆点阵的两种标定板各拍摄了21张不同位姿的图像:
步骤④三者之间没有差别。 步骤③主要是使用的针孔相机模型的差别,OpenCV和Matlab差别很小,OpenCV的相机内参数矩阵定义为:
Matlab的相机内参数矩阵定义为:
Matlab提供了一个传感器x轴和y轴相对偏斜的自由度s,而Halcon的相机内参数矩阵使用焦距f,像元缩放sx和sy,中心点坐标cx和cy来表示,将上述参数整理后形式与OpenCV的定义相同。fx = fsx,fy = fsy,其中f为镜头焦距,单位mm;sx和sy为每个像元的实际尺寸,转换为每mm对应多少个像素,单位pixel/mm。这里使用的是Basler acA1300-30gc,其像元尺寸为3.75μm,对应的sx=sy=266.67。 而关于镜头畸变的模型定义,三者都提供多项式畸变校正模型,只是OpenCV提供的自由度最大,3个径向畸变系数k1、k2、k3和2个切向畸变系数p1、p2都可以选择性配置;Matlab的自由度略小,相比OpenCV不能配置只使用k1的多项式模型;而Halcon的自由度最低,5个系数必须全部使用。但Halcon还提供了一个只用系数kappa表示的可进行解析求解的除法畸变模型。 步骤②是后面两个步骤的基础,Matlab(在2021版之后,而我用的是2019,不能提取圆点阵)可以提取棋盘格和圆点阵两种图案的特征点亚像素坐标;OpenCV也可以提取棋盘格和圆点阵两种图案的特征点亚像素坐标(cv.findChessboardCorners+cv.cornerSubPix以及cv.findCirclesGrid);Halcon只可以提取圆点阵图案的特征点亚像素坐标。 :分别使用OpenCV提取两种图案的特征点的亚像素精度坐标,Matlab提取棋盘格、Halcon提取圆点阵。然后分别求每幅图像提取的特征点的X和Y坐标的均值(X和Y混在一起),然后将不同软件提取的特征值进行相减得:
可以看到,OpenCV的提取值X和Y坐标都比Matlab 小约1个像素;OpenCV的提取值X和Y坐标都比Halcon大约0.02个像素。 如上面所述,。 基于上述特征点提取结果,先在3种软件中,分别测试使用5畸变校正系数和1畸变校正系数(Matlab为2畸变校正系数)。,哪一种软件二者的校正后投影特征点的平均坐标偏差都小于0.005个像素。因此,在整理对比实验数据时只列出使用少系数畸变校正模型的标定结果。
可以看到最终投影平均误差最小的是:使用OpenCV算法+圆点阵+OpenCV提取特征点的算法。 这个结果可能跟很多博文中的比较结果都不一样,但这个结论其实不重要,主要是因为:使用的标定板、相机、镜头、拍摄标定图像时的相对位置、使用的图像数量都会对这个结论产生影响。 先排除能排除的影响:使用的图像数量。这里以OpenCV算法+圆点阵+OpenCV提取特征点的算法为例,分别:
从上图可以看出:基本上超过20张图像,其平均误差就已经收敛,不会再有明显的下降改进;从13-21张的变化过程中,最大误差波动也才0.003个像素,对于上述所有算法,其对于最终平均误差指标的影响都小于0.003/0.049100%≈6%。所以可以确定,使用图像数量基本上不影响上述指标波动。 上面也说过,校正算法本身的影响很小,从上表数据也可以得到验证。 而对于剩下的使用的标定板、相机、镜头、拍摄标定图像时的相对位置这几个影响因素,我们是没有办法进行对比实验的。再加上在标定算法的最后一步,都会有一个非线性的精炼过程,其是数值最优的(严格依赖于数据),但不一定是真实的。也就是说,这个步骤会导致即使使用的标定板、相机、镜头全部相同,仅是由于使用了不同的标定图像,就会造成最终的平均误差的波动,所以我们也没有必要太过关注于平均误差的绝对值。 但在实际使用中,我们还是需要从上述各种算法中选择一种,来获得最优的相机镜头校正结果,所以还是需要对上述算法进行量化比较。这里我以来进行评价:。 通过上述准则,我们就可以确定如何选择相机标定算法了。这里的图像中心是640和480,所以依然是使用OpenCV算法+圆点阵+OpenCV提取特征点的算法最佳。从算法层面分析,这。 另外,在Janne Heikkila and Olli Silven的 《A Four-step Camera Calibration Procedure with Implicit Image Correction》中,其说明。还要将上述标定误差从像素换算到实际长度单位(这里是25/420.049≈0.03mm),其。 基于以上分析,在实际进行相机镜头标定时,为追求高精度,(即相机光圈、焦距、镜头、工作距离、曝光时间都尽可能接近真实使用值),然后使用圆点阵标定板,按照上述标定用图像注意事项,采集超过20张标定图像,最后进行亚像素级的相机镜头标定。这样获得的结果不一定是真实的,但由于其高度的数据相似性,会使其在实际使用中,获得更小的标定后校正误差。
附上使用OpenCV+圆点阵校正的Python代码如下:
dirs = "D:\circles"fns = os.listdir(dirs)fns = [os.path.join(dirs,k) for k in fns]CHECKERBOARD = (7,7)objpoints = []imgpoints = []objp = np.zeros((1, CHECKERBOARD[0] * CHECKERBOARD[1], 3), np.float32)objp[0,:,:2] = np.mgrid[0:CHECKERBOARD[0], 0:CHECKERBOARD[1]].T.reshape(-1, 2)objp = objp * 25 # 得到真实世界坐标for fname in fns: img = cv2.imread(fname) gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) ret, corners = cv2.findCirclesGrid(gray, CHECKERBOARD) # 直接得到浮点数 if ret == True: objpoints.append(objp) imgpoints.append(corners)flag = cv2.CALIB_ZERO_TANGENT_DIST | cv2.CALIB_FIX_K2 | cv2.CALIB_FIX_K3 # 只使用k1畸变系数ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(objpoints, imgpoints, gray.shape[::-1], None, None, flags=flag)
总结
以上就是关于工业镜头要讲的内容,欢迎大家对本文章进行补充和指正。
参考资料
《Halcon机器视觉算法原理与编程实战》,北京大学出版社 《机器视觉算法与应用》,清华大学出版社 《海康机器视觉认证工程师官方资料》 《Handbook of Machine and Computer Vision——The Guide for Developers and Users》,Alexander Hornberg,Wiley OpenCV官方文档,https://opencv.org/ Matlab官方文档,https://ww2.mathworks.cn/help/vision/ug/evaluating-the-accuracy-of-single-camera-calibration.html Halcon官方文档,https://www.mvtec.com/doc/halcon/12/en/calibrate_cameras.html https://learnopencv.com/understanding-lens-distortion/