有人问一款相机,正常输出时的速度为640FPS,使用PLUS模式时帧率可以达到1230FPS,这个PLUS模式是什么模式?

这里我们不追究PLUS的字面意思,也不去追究PLUS模式的具体实现方法,也不讨论640FPS或1230FPS能不能实现。这里只浅谈一下相机提高输出速度的可能实现方法,即从640提高到1230可能的方法。本人不是研究相机的,如果有说的不对的地方,不怪。

一种数据接口的总带宽是固定的,所以要提高速度,那就只能减小每帧图像的数据量才可以。下面的一些方法可以考虑一二:

方法1、缩小AOI

即减小图像输出的区域。这种方法,在工业相机中是非常常见的,即使用不同的视频模式(改变分辨率),可以有效的提高相机的速度。

方法2、使用上一帧图像的部分数据

这种方法早期的工业相机就有曾使用过。如隔行扫描。原理上大概是当前帧的图像只读取奇数行(或偶数行),其图像的偶数行(或奇数行)使用上一张图像的数据进行组合。这种方法在针对运动目标的检测时,会出现锯齿效应。

方法3、Binning模式

这种方法,在目前的工业相机中,是比较常用的一种方法,可以有效的提高图像的输出速度。Binning是一种图像读出模式,将相邻的像元中感应的电荷加在一起,以一个像素的模式读出。Binning分为水平方向Binning和垂直方向Binning,水平方向Binning是将相邻的行的电荷加在一起读出,而垂直方向Binning是将相邻的列的电荷加在一起读出。Binning这一技术的优点是能将几个像素联合起来作为一个像素使用,提高灵敏度,输出速度,降低分辨率,当行和列同时采用Binning时,图像的纵横比并不改变,当采用2:2Binning,图像的解析度将减少75%。

Binning模式

方法4、抽样采集,插值还原

这种方法,与方法2或方法3类似。也是通过抽样的方式,得到原始数据。即如果1280行的数据,那么只读取640行。然后通过插值的方法,直接计算得到另外的640行的数据。这种方法,不会出现锯齿效应,但是会降低清晰度,使图像变模糊。因为通过计算得到的数据是估计值,并不能代表真值。

方法5、平滑区域使用Binning、抽样等,跳变区域逐像素输出

这种方法,类似于图像处理中的轮廓分析、几何匹配、纹理分析等方法。可以对原始数据进行一次粗的扫描,如果当前区域没有太多的变化,即不存在边缘,相对比较平滑的话,那可以直接使用插值、Binning等方法输出,这样可以减少数据量。而对于有跳变,即有边缘的地方,则不使用抽样等方法,直接每个像素都输出。这样可以有效的减少数据量而又不损失图像的边缘细节。但是这其中的计算量,算法的实现,计算速度跟不跟得上,都需要考虑。能不能实现还是需要考虑的。

方法6、提高数据率

相机传输采集的图像数据时,并不是一次将所有图像数据都传到电脑内存中,而是使用更小的数据包的方式传输的,每个数据包,都会包含一些固定的数据,如下面的UDP协议:

UDP Packet

如UDP的数据包中,就包含了46字节的固定数据。而Data的数据字节则不是固定的。所以,如果数据包越小,那么Data占的比率就越小,而如果数据包越大,则Data占的比例就越大。举一个简单的例子来说,如果是8/10的数据率,2字节的其他数据,那么有效的数据只有80%,而如果同样还是2字节的其他数据,但是按照126/128的数据率,那么有效的数据占用98.4375%。这时的传输速度就会提高了。但是这种方法的提升方法是有限的,并不会提速非常明显,大恒图像的水星一代、二代相机就有使用这种类似的提速方法(猜测的,相机参数中未明确描述),例如MER-2000-5Gx速度是5FPS,而到二代的MER-2000-6Gx,则速度是5.6FPS,只提高了0.6FPS。

转自:机器视觉沙龙

注:文章版权归原作者所有,本文内容、图片、视频来自网络,仅供交流学习之用,如涉及版权等问题,请您告知,我们将及时处理。