视觉检测系统设计过程中遇到的问题

一、工业相机丢包问题

前言

使用环境:

        海康的工业相机相机、海康MVS软件。

问题描述:

        通过架设的两个相机采集图像,其中一个相机采集图像数量少于另一个相机。MVS提示相机丢包。

        首先可以肯定的一个相机丢包了,另一个不确定。

原因

工业相机丢包原因是什么?

        1、可视化软件问题

        主要查看图像空间等待可视化软件进行计算,是否存在缓冲机制,以增加图像缓存的缓冲时间,从而可以处理程序的操作。如果图像在稳定操作下比CPU的整体处理速度更快地进入,则当缓存过载时,将发生帧丢失。

        简而言之:一次性给予的数据太多处理不多来,所以丢包了。如果有缓存机制一定程度上能解决这个问题,但不能彻底解决。

        2、工业相机本身问题

        图像传感器首先将图像传送到工业相机的芯片,然后传送到PC。如果PC系统太忙而不能及时处理接收到的图像,并且图像传感器继续传送新图像,则工业相机必须有足够的存储器缓存,否则它将导致帧丢失。

        在PC来不及处理的情况下,相机会把一定数量的图像存储在自身缓存中,也能在一定程度上保留图像数据。

        3、PC系统硬件原因

        PC硬件驱动程序有偏差。对于PC机来说,最重要的事情是驱动程序的效率和CPU中内核模式的线程数。接收效率不高,工业相机没有足够的缓冲存储器。帧丢失也会发生。

  工业相机出现掉帧现象的原因是数据通道被阻塞,无法进行技术处理。因此,当捕获新图像时,可以强制丢弃先前图像,或者强制丢弃新图像。为了解决这个问题,设计者需要精确地设计驱动和工业相机硬件数据传输的每个部分。

  工业相机出现掉帧现象的原因是数据通道被阻塞,无法进行技术处理。因此,当收集新图像时,可以强制丢弃先前的图像,或者强制丢弃新图像。一般来说,工业相机的帧丢失与工业相机所使用的传输接口无关。无论是USB、1394、GigE还是相机链接,设计不当的驱动程序或工业相机硬件都是帧丢失的真正原因。

        总的来说:当PC因各种原因,对数据的处理数据慢于接受的数据,额外的数据就可能被丢弃,从而造成丢包。提高驱动效率增加线程数,保持数据通道畅通,提高PC的数据处理能力才能真正解决丢包问题。

解决方法

        精确地设计驱动和工业相机硬件数据传输的每个部分。从上述三方面着手,处理相机丢包问题。

1、增加相机的缓存区大小

2、增加相机缓存机制

3、加强pc处理能力

虽然上面这么说,但是不知道怎么做

        但是如果自己写软件,可以使用

1、多线程方式。创建多个线程,分别侦听各个端口上的连接。

2、用poll或epoll方式,异步接收每个端口上的数据。

3、创建缓存区,定时读取缓存内容(加锁)。

还是不会

现成的相机和软件的丢包处理方式:

1、推荐使用英特尔芯片的千兆网口

2、PC设置:

        (1)网卡巨型帧为9KB或9014字节

                控制面板搜索网络共享中心→属性→ 巨型帧

        (2)设置网卡接收与缓存区最大

                控制面板搜索网络共享中心→属性→transmit buffers

        (3)关闭网卡休眠节能选项

                网卡属性→电源管理→取消✔(允许计算机关闭此设备以节约电源)

3、电源设置

        高性能

4、防火墙

        关闭防火墙

6、网线选择

千兆网口工业相机需使用超五类及其以上规格网线(cat5e、cat6…)

万兆网口工业相机,根据接口类型,分为光口与电口线缆,电口需使用7类网线(cat7)

7、相机设置

        检查相机Transport Layer Control属性下GevSCPSPacketSize,GevSCPD参数数值

        (1). 检查Packet Size(GEV SCPD上方的参数)的数值是否为8164/1500

        (2). 修改GevSCPD值,视具体情况,调大GevSCPD(400>800>1200…)

        (3).开启相机端Pause帧功能,此功能需同步设置网卡端参数(流量控制>启用Rx>Tx)

实操如上,好像有用。

参考

参考链接:

工业相机丢帧的原因 - 知乎 (zhihu.com)[相机配置] 海康相机丢包配置环境_丶布布的博客-CSDN博客_jumbo packet设置

实时摄像头数据传输丢包问题_魏波.的博客-CSDN博客_摄像头丢包怎么解决

你可能感兴趣的:(检测系统设计问题集,视觉检测,人工智能,计算机视觉)