随着机器视觉的发展,精度越来越高,速度越来越快。以前一台设备上使用1个500万像素的相机都非常罕见,现在一台电脑上使用好几个500万像素的设备也有许多了。那么电脑或设备是不是可以任一连接500万像素的相机呢?是否可以满足速度上的要求呢?下面请看石鑫华视觉网给大家带来的分析。
首先说一下基本知识总线的带宽。1394B总线(因为本次评测使用的是1394B卡与1394B相机)的理论带宽是800Mbps(100MB,1Byte=8bit),PCI的理论带宽为133MB(32位)或266MB(64位),PCI-e X1的理论速度为双向各256MB。我们使用的500万像素的相机分辨率为2588*1940,因此其一张图片的大小为2580*1940*8/1024/1024/8=4.788MB。使用的相机满分辨率时全速为13FPS,因此每秒的数据传输量为13*4.788=62.244MB。因此,理论上来说。一个1394B控制器,相机全速时只能负载一个相机。负载两个相机时,需要的带宽为125MB左右,1394B的100MB是无法满足的。而PCI总线如果没有其它占用,也是可以支持两个相机的,如果有其它开销,则无法支持两个相机。PCI-e即使有一些开销,应该能够满足传输速度要求的。另外,1394总线的传输速度与包的大小对应表如下:
Camera Speed | Maximum Cumulative Packet Size |
100 Mbps | 1024 bytes |
200 Mbps | 2048 bytes |
400 Mbps | 4096 bytes |
800 Mbps* | 8192 bytes |
表一 1394传输速度与最大包对应
图1 四个500万像素1394B相机
图2 相机型号为AVT的Guppy Pro 503B黑白相机
使用的相机具体型号为AVT的Guppy Pro 503B黑白CMOS相机,其分辨率为2588*1940,全分辨率时的最高帧率为13FPS。
图3 PCI卡与PCI-E卡
图4 PCI卡为双1394B+单1394A, PCI-E卡为四通道1394B
首先我们将四个AVT的500万相机连接到下面的两块PCI双通道1394B卡上。
图5 四个500万像素相机连接到两块PCI卡上
如上的连接中,下面一块PCI卡上面一个相机为1号相机,下面一个为2号相机,上面一块卡上面一个相机为3号相机,下面一企业4号相机。我们没有使用AVT自己的驱动程序,而是使用NI 的LabVIEW + IMAQdx进行图像采集。
图6 设备管理器中的硬件设备
从设备管理器,我们可以看到,共有四个相机,两块Texas的1394控制器,这个是2通道的PCI卡。两块LSI1394控制器,这个是4通道的PCI-E卡,这卡中有两个控制器芯片。
图7 一块PCI卡+1个相机最大包8K OK
图7中参数基本解释:Speed为1394总线的速度大小,有100M,200M,400M,800M可选,我们选择最快的800M。Packet Size为包大小,从表一中可以知道,选择800M速度时最大包为8K。从1394总线看书中可以知道,包越大,单个相机传输的速度越快,可以同时连接的相机越少。包越小则单个相机传输速度越慢,但是可以同时采集的相机会越多。其需要满足相机数*相机数<=最大包。Shutter::Value表示相机曝光时间,如果未有此参数,则为相机默认的曝光时间2000(相对值,约120ms)。使用相机X按钮,表示是否使用此相机。相机X,表示第几个相机,相机X帧率表示第几号相机的帧率,相机X错误为某个相机的错误输出。
从图7中可以看到,当我们使用一块卡一个相机,设置为最大包时,帧率可以达到13帧的。且无花屏干扰等异常出现,采集非常好。
图8一块PCI卡+1个相机4K包 NG
当我们使用一个相机,一块卡,包设置为4K时,不知道为什么,采集得到的图像反而有花屏干扰的情况出现。可能原因是驱动程序有问题或采集程序有问题又或者硬件本身也有问题。理论上来讲,8K时都可以,4K时应该也是可以的。其它的使用一块卡一个相机2K包、1K包均能正常采集且无花屏。
从上面的分析中可以得到,一块卡,一个相机,是可以达到此500万像素相机的全速13帧的。
图9一块PCI卡+2个相机8K包 NG
当我们使用一块卡,连接两个相机(相机1、相机2)且包设置为8K时,有一个相机能正常工作,另一个相机会提示配置错误。错误原因是没有足够的资源。因此多个相机在一块PCI卡时同时工作时,所有相机是共享总线最大包的。
图10一块PCI卡+2个相机4K包 OK
图11一块PCI卡+2个相机4K包 NG
从图10、图11中可以看出,一块卡+2个相机+4K包也会出现花屏干扰。也就是说只要包设置成4K,都会出现花屏的现象。
图12一块PCI卡+2个相机2K包 OK
将包大小设置为2K、1K,一块卡带两个相机,都是OK的。当然速度上,也会对应的下降。
图13 两块PCI卡+2个相机8K包 OK
图14 两块PCI卡+2个相机8K包 NG
图13、14是将两个相机分别连接到两块PCI卡上,然后设置包大小为8K。从图中可以看到,有花屏现象。这说明PCI总线带宽不够同时支持两路数据的采集。从经验值来看,PCI的理论带宽为133M,实际的带宽只有90M左右。从图13中可以看到,即使OK,帧率也未达到额定的帧率。
图15 两块PCI卡+2个相机4K包 OK
图16 两块PCI卡+2个相机4K包 NG
从图15、16中发现,两卡两相机,将包设置成4K,也会有花屏现象,这与单块卡的情况较类同。
而当我们将包设置成2K、1K时,则采集、显示正常。
图17 两块PCI卡+4个相机4K包 NG
图18 两块PCI卡+4个相机2K包 OK
图19 两块PCI卡+4个相机2K包 NG
图20 两块PCI卡+4个相机1K包 OK
从图17~图20可以发现。当使用两块PCI卡连接4个相机时,按照理论值可用的4K连接时花屏,按照2K连接时,有时花屏有时正常。而按照1K连接时,此时采集正常。但是速度仅为1.5帧左右,速度非常慢。因此使用两块两通道的PCI卡连接四个500万像素的1394B接口相机,能正常工作时的最大速度只有1.5FPS。
图21 将四个500万像素相机连接到PCI-E卡上
现在我们将四个500万像素的相机连接到一块四通道的PCI-E卡上。此PCI-E卡为1X速度的,其双向同时工作理论速度分别为250MB。
图22 一块PCI-E卡+1个相机+8K包 OK
从图22中可以看到,在PCI-E卡的连接一个相机时,将曝光时间设置较比较短,包设置为8K时,可以达到我们相机标称的13FPS。
图23 一块PCI-E卡(一个控制器)+2个相机+8K包 NG
从图23中可以看到,当1、2两个相机连接到PCI-E卡的同一控制器的两个通道时,无法设置成最高的8K数据包,提示没有足够资源错误。
图24 一块PCI-E卡(两个控制器)+2个相机+8K包 OK
从图23中可以看到,当1、3两个相机连接到PCI-E卡的不同控制器的两个通道时,设置成最高的8K数据包,可以正常采集图像,而且速度很快。
图25 一块PCI-E卡(两个控制器)+4个相机+8K包 NG
一块PCI-E卡连接四个相机,设置成8K包,没有足够的资源,有两个相机无法正常工作。只有两个相机能正常工作。
图26 一块PCI-E卡(两个控制器)+4个相机+4K包 OK(6.5FPS)
图27 一块PCI-E卡(两个控制器)+4个相机+4K包 OK
图28 一块PCI-E卡(两个控制器)+4个相机+2K包 OK
图29 一块PCI-E卡(两个控制器)+4个相机+1K包 OK
从图26~29中可以看到,当一块PCI-E卡四个通道连接4个相机时,只要将包设置成4K以下,均可以理想的采集图像。并且最高可达6.5FPS,即为相机满分辨率最高速13FPS的一半。
从以上分析的数据可得到,当总线上的某个控制器,只连接一个相机时,可以设置最大包,可以使相机达到最快的采集速度。而当连接多个相机时,则需要减小包大小,并且降低速度,才能正常的采集图像。相机数量x包大小不应超过总线最大包大小。而要想获得高分辨率高速采集,使用1394B相机时,则需要考虑使用PCI-E卡进行采集卡扩展。