工业相机存图丢帧及解决方案
一、工业相机在连续存图时为什么会丢帧
1、PC性能不足
当我们在使用windows主机连接工业相机时,不做存图时、采集帧率一般可以跑满,但当我们使用树莓派这种微型计算机平台时,连接2000万分辨率的相机时,采集状态时就会出现大量丢帧、残帧现象,如我过去出现这个现象 出现这种残阵、丢帧的现象的因素有:内存小、读写速度慢、CPU性能不足等 ,无法支持如此大的数据量的处理。
2、硬盘读写速度不够
不管是windows还是linux系统,当采集帧率可以稳定时,需要将采集到的图像存储到硬盘中需要考虑一下几点:
- 存图的帧率多少?或者说每秒存入多少MB的的数据
- 硬盘的写入速度是多少?
关于第一点,当使用2500万黑白相机存图时、一张图像时25M大小、每秒存一张的话硬盘写入速度至少达到25MB/s,这点大部分硬盘都可以达到。以下为我的硬盘测试读写速度,
可以我到我的硬盘连续4K读写速度在90MB/s,也就是说当连续存图时,3帧的速度存储时不会丢帧的,但是当存图速度大于3帧时,则会出现丢帧丢图现象,以下为测试结果
当以3帧/秒的速度存储时,保存100张图像,没有丢弃帧数的现象
当以4帧/秒的速度存储时,保存100张图象则会有丢弃帧数的现象出现
(以上测试结果以大恒ME2P-2621-15U3M测试结果)
关于第二点,相机的存图都是小文件存储,而市面上大部分硬盘标称的都是大文件顺序存储的速度,在选购硬盘时,注意查看硬盘的4K读写速度
二、避免丢帧的解决方案
1、更换高速固态硬盘
如果想连续存图不丢图、建议采用PCIE4.0的固态硬盘,4K写入速度大于存储速度时,则几乎不会产生丢帧现象。
2、使用商用专业存图软件
使用专业的存图软件如VT-HSS1000、Streampix等高速存图商业软件、这类软件的基本逻辑就是将大量数据存储到内存中,再将内存的图导出到硬盘中。购买这类软件不代表一般的主机使用就可以不丢图,当然也需要配置大内存和高速固态硬盘,厂家会根据客户存图的大小、速度、时长需求配制出合适的主机硬件。
3、将图存到RAM(内存)中
如果内存足够大使用魔方内存工具将自己的部分内存转换为硬盘使用,由于内存的写入速度很快,再存图的过程中基本不会出现丢帧现象,缺点则是电脑内存需要大一些,且容量很小,当你是学生做实验,存储数据小时可以这样使用。
以我的电脑举例,内存64G,分配出30G模拟成硬盘。
可以看到我们成功用内存模拟出了一个30G的硬盘,接下来让我们测试一下他的写入速度。
可以看到4K顺序写入速度大约为720MB/s,也就是说25M大小的图像可以达到28帧不丢图,接下来我们测试一下,由于USB带宽限制,相机最大速率为15帧/秒,因此我们就用最大速率直接测试。
在以15帧的速度存储时,存600张图像基本内有丢弃帧数的情况。
三、20230830外置USB存储测试补充
普通的USB3.0外置存储保存图像时,仅仅可以对1Gbps的传输量的数据保证不丢真的连续存储,大部分千兆网口相机都可以满足USB3.0设备满帧存图不丢真。
但是对于USB3.0相机来说,外置USB3.0存储设备写入图片速度远远不足,这个时候需要升级外设,采用USB3.2 Gen2 10G的存储设备进行存图,但是依旧存储速度不足,经过测试,USB3.2 Gen2 10G只能对3.2Gbps的数据量连续存图不丢帧,因此对于USB3.0的相机,只能以80%的帧率进行连续存图不丢帧。
但是把USB外设有更高的速度的设备可以采用如USB3.2 Gen2 x2 20G 这个传输速度的接口足以对USB3.0的工业相机实现连续存图不丢帧。