机器视觉halcon——概念:CCD/CMOS/动态/静态相机?相机选型

      工业上机器视觉的应用越来越普遍,每个应用场景的系统设计根据需求不同,首先需要考虑的就有相机选型:动态相机还是静态相机,多少像素的相机合适?肯定还有对这些概念不很了解的,接下来就对这些概念简单介绍一下。

以迈德的一款相机为例,我截取了官网上的数据如下:

  • 传感器类型:指的是相机感光芯片的类型,常用的有CMOS和CCD两种。

  CMOS传感器和CCD传感器在感光部分原理是相同的。不同的是在每个像素单元中,CMOS类型的芯片除感光部分外,还有放大器和读出电路部分,整个CMOS传感器还集成了寻址电路、放大器和A/D。

  • 曝光方式(快门): 分为global shutter(全局曝光),rolling shutter(滚动曝光)。

  1. Global shutter 是传感器阵列中所有像素同时曝光,曝光周期由预先设定的快门时间确定。

  2. 而在一些CMOS传感器使用的rolling shutter,传感器上的所有像素不是同时曝光,而是同一行上的像素同时曝光,不同行的曝光起始时间是不同的。图像上的第一行最先曝光,最先结束,后面的行开始和结束曝光均比前一行略有延迟,相互有交迭,每一行的曝光时间是相同的,行间的延迟是不变的。

    因此,由曝光方式和感光芯片特性决定相机的响应速度,使用全局曝光的相机可拍摄运动物体得到较好的图像,是动态相机;而那些使用滚动曝光的部分CMOS相机由于在Rolling shutter方式下,整个图像曝光需要一定的时间,对于高速运动的物体,会造成图像模糊、变形,称之为静态相机。

  3. 动态相机有:CCD相机、部分全局曝光的CMOS相机;

    静态相机:使用滚动曝光的CMOS相机。

  • 曝光:曝光时间由快门控制。传统的照相机是通过机械快门对照射在底片上的光进行遮光动作实现曝光控制。在CCD或CMOS摄像机中是利用电子快门实现曝光控制。照射在传感器上的光不断发生光电转换,电子快门的原理是只储存一定曝光时间的信号电荷,然后进行输出。

  • 像元尺寸:每个像素的面积。单个像素面积小,单位面积内的像素数量则多,摄像机的分辨率增加,利于对细小缺陷的检测和增大检测视场。但随着像素面积的缩小,满阱能力(每个像素能够储存的电荷数量)也随之减小,造成摄像机动态范围的降低。因此,在分辨率允许的情况下,选择像素尺寸大的相机,会有较大的动态范围;增大的像素尺寸,同时还会提高摄像机的感光度(感光度是指多暗的情况下,摄像机能够工作)。当然,在更多电荷被积累和存储的同时,伴随其产生的各类噪声也会加大。

  • 像素深度:指每个像素用多少比特位表示。一般来说,每个像素的比特位数多,表达图像细节的能力强。

应用:(摘自迈德威视)

如何计算全局快门相机能拍多快的运动物体没有拖影

1.      假设客户拍照的视野范围宽度为W 米;

2.      假设客户拍照物体的运动速度为X 米/秒;

3.      假定相机曝光的最小时间为 Y 微秒;

4.      在相机最小曝光时间内,拍照物体移动的距离S = Y 乘以 X ,单位为微米

5.      假定相对于整个视野移动的百分比为Z,Z  =  S 除以 (W 乘以 1000000)

6.      假定相机一行的像素个数为 A ,只需要满足 Z <  (1/A) 就能无拖影。

      具体例子说明,假设视野范围为 2米,运动速度为1米每秒,最小曝光时间为30微秒,那么一次曝光移动的距离就是30 X 1 = 30 微米。 相当于视野的百分比Z = 30/(2X1000000) = 0.000015 ,假设相机一行像素 A 为1280个,那么 1/1280 = 0.00078125, 满足了Z < (1/A)的规律,因此这个条件下,拍照是没有拖影的。

百家号:机器视觉halcon——概念(二):CCD/CMOS/动态/静态相机?

Halcon相机标定代码.hdev 1.初始化 for example: Full image (640*480) Subsampling (320*240) ImageWidth 640 320 ImageHeight 480 240 2.标定板初始化 CaltabName := 'caltab_30mm.descr'//标定板描述文件 set_calib_data_calib_object (CalibDataID, 0, CaltabName) 3.创建数据模型 create_calib_data ('calibration_object', 1, 1, CalibDataID) 4.获取标定图片 相机拍摄不同位姿下图片8-15张,拍摄图片时标定板尽量覆盖整个视场(标定板要根据工作距离、视场大小定制);拍摄图片上的圆直径不得小于10个像素 5.加载所有图像,寻找标定板区域,确定圆心,将结果加载到组元中 for I := 1 to NumImages by 1 ... acquire image ... find_caltab (Image, Caltab, CaltabName, SizeGauss, MarkThresh, MinDiamMarks) find_marks_and_pose (Image, Caltab, CaltabName, StartCamPar, StartThresh, \ DeltaThresh, MinThresh, Alpha, MinContLength, MaxDiamMarks, RCoord, CCoord, StartPose) set_calib_data_observ_points (CalibDataID, 0, 0, I, RCoord, CCoord, 'all', StartPose) endfor 下面将Halcon中提取目标点的大致原理说一下: 首先find_caltab 算子对图像高斯滤波(核大小为SizeGauss),接着阈值分割(与之大小为MarkThresh)将标定板的区域找出来, find_marks_and_pose 算子对区域中的圆进行分割,找到圆的个数,周长,坐标位置等应该和标定板描述文件中的一致,否则会自动调整StartThresh,使得StartThresh按照DeltaThresh步长减小到MinThresh,知道找到准确的圆心。 6.有了所有图像中的圆心就可以标定了 calibrate_cameras (CalibDataID, Errors) 返回平均投影误差Errors
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值