背景
在工业应用中,使用面阵相机识别传送带上的物体,当要识别的目标的最小包围矩形(不是最小包围旋转矩形)小于相机视野时,可以进行后续处理。但是当要识别的目标很大,比如超长的物体,如果还使用面阵相机,有两种办法,一种是硬件改进,另一种是软件改进。硬件改进就是在传送带运动方向均布多个面阵相机,通过同步触发同时采集图片,然后根据事先标定好的相机相对位置进行拼接。软件改进需要对传送带上的视频流进行处理,拼接出比较大的视野。
解决方法
一般在工业上会采用硬件改进的方法。当需要提高视觉识别的精度或者范围时,会采用多个相机图像进行拼接的办法。但是在实验室,我们可以尝试使用软件的方法来解决。
解决这个问题的关键是图片的拼接,而图像的拼接需要图像中有明显的特征点。而目标上是否有特征点我们不能控制,所以需要事先在传送带上布置特征点。
传送带上只有平移,所有对于图像拼接的3个参数x,y和θ,只需要计算x,如果相机成像平面和传送带平面不平行,需要先做一个透视变换。
特征的设计及摆放考虑如下:容易识别,编码容量不需太大,循环布置。
原始视频
以下是在传送带运动时采集到的视频:
拼接结果
算法原理
第一步:从视频流中提取一帧图像,作为关键帧,转到第2步。
第二步:提取下一帧,根据识别到靶标计算该帧图像和当前关键帧平移距离x1,如果x1约等于
0.4倍的视频运动方向图像像素,则把这一帧作为次关键帧,转到第三步,否则重复第二步。
第三步:提取下一帧,根据识别到靶标计算该帧图像和当前次关键帧平移距离x2,如果x1+x2 约等于
0.8倍的视频运动方向图像像素,则把当前帧作为新的关键帧,转到第二步,否则重复第三步。
在23步循环的时候,把所有关键帧按照顺序,根据当时的平移距离x1+x2进行拼接就得到一幅长图。当然也可以实时输出关键帧和对应的x1+x2。这样,在高层算法开发时,可以认为这是一个帧触发信号有点波动(由于帧率和传送带运动速度的不确定性,x1+x2不是固定值)的线阵相机。这也相当于做了一个中间层,屏蔽了底层的硬件细节,使得原本为线阵相机开发的算法也可以用在面阵相机上。
全部0条评论
快来发表一下你的评论吧 !