一、工业相机拍摄产生拖影原因?
物体只要是运动的,拖影就一定会有的,为了使其不对检测产生显著影响,不同的项目类型,对拖影相对 长度的限制不尽相同。
对于尺寸测量的项目,拖影对测量精度会有严重影响。在这种情况下,就会要求拖影长度尽可能短,例如不超过1/3像素,或者不超过一个像素等。
1.对于识别、计数等相关的项目,对拖影的要求会相对宽些。
2.这些要求一般情况下如此,并非绝对,具体看实际情况需要。
运动速度和曝光时间是直接影响拖影的两个因素。为了保证图像中的拖影不超过s单位像素,则需要做到如下等价说法:
1、芯片上光学像在曝光时间内移动的位置不超过s单位像素;
2、物体与成像系统之间在曝光时间内相对移动(垂直于光轴平面内)距离不超过s单位的系统精度。
二、详细计算拖影和精度要求之间的关系:
拖影对飞拍不造成影响的条件为:曝光时间 * 物体运动速度 ≤ 运动方向精度需求
三、解决问题
例如:相机现在的曝光时间是2000us,传送带运动的速度是 100 mm/s ,使用的相机分辨率为 2448∗2048,视野范围是 300mm ∗ 250 mm,物体运动的方向是水平方向,精度要求拖影不超过 1/2 像素。此时的场景能满足飞拍要求吗?
曝光时间物体运动速度=100(2000/1000000)=0.2mm
水平方向像素精度要求为=300/24481/2=0.061mm
由于 0.2 mm > 0.061 mm ,所以无法满足此飞拍运动场景的精度要求。
根据上面的公式我们就有了两种解决办法:
(a)降低相机的曝光时间
根据上面例子继续计算,0.061 m/100 mm/s = 0.00061 s = 610 us
所以曝光降低到 610us 以下时,拖影就不会超过1/2 像素,精度就能够达到要求。但是注意,降低曝光后需要加强光源亮度或调大光圈来让图片达到同一亮度。
(b)降低传送带的运动速度
同理根据上面的例子继续计算,0.061 mm/2000 us = 0.0000305 mm/us = 30.5 mm/s
所以传送带速度降低到 30.5 mm /s 时,拖影就不会超过1/2 像素,精度就能够达到要求。
飞拍的拖影与被拍摄物体的运动速度、曝光时间强相关。除此之外,还可能与图像传感器(Sensor)有关系,一般来说,Sensor 在进行电荷读出过程中,同时也还是在接收外部光信号的输入,形成寄生光电荷,通常用寄生光灵敏度(Parasitic Light Sensitivity,缩写为 PLS)来表征。一旦 PLS 足够大,当前帧读出阶段所产生的寄生光,可能会在下一帧图像中形成影响,如边缘阴影或者过渡带。
PLS 的问题无法根除,一般有两种方式减弱:
1.通过与机械快门的同步配合,通过减少读出阶段的进光量来减弱
2.选择PLS 小的全局快门Sensor
三、实际问题
最近做的机器视觉项目需要相机运动拍摄,结果速度稍大以后就无法识别,保存图像有拖影。现在把问题解决思路记录下。
一开始怀疑相机不支持动态拍摄,后来知道全局曝光的相机基本都是可以动态拍摄的。这里涉及全局曝光和卷帘曝光的概念,CCD相机都是全局曝光,而CMOS相机有全局曝光和卷帘曝光两种,卷帘曝光是逐行曝光,存在拖影,拍摄运动物体不行,所以问题不在这里。
后来发现是曝光时间的问题,这里比较容易忽略。关于曝光时间的问题:相机上的图像采集过程包括两个截然不同的部分。第一部分是曝光(exposure)。曝光完成后,进行第二部分即从传感器的寄存器中读出数据并传送出去(Readout)。曝光时间越长,拍摄速度越慢,但是曝光时间短了以后,进光量少了,这时候需要调大光圈,增加光照,才能保证图像的亮度。检查发现我们用的相机默认的曝光时间是127,这个数经过多次试验改成了10(同时光圈已经达到最大),此时手持相机抖动还是能够清晰拍摄,效果稳定。附上Linux下调整相机曝光时间方法:
先装一个工具 apt-get install v4l-utils
然后执行 v4l2-ctl –d /dev/video1 –c exposure_absolute=10