如何计算图像采集应⽤所需要的带宽?
转⾃:
问题:
我正在开发⼀个图像采集的应⽤,需要知道图像采集所需要的带宽,应该如何来计算每秒钟我采集的数据⼤⼩呢?
解答:
当考虑图像采集所需要的带宽时,我们需要考虑两种数据传输速率:瞬时速率和平均速率。下⾯就向⼤家来详细介绍这两种速率的概念以及他们的计算⽅法,同时在本⽂的最后为⼤家提供了⼀个案例。
1. 瞬时数据传输速率
数据传输速率中最重要,最需要考虑的就是瞬时数据传输速率。它是指相机将数据流向采集卡的传输速率,它是由相机的像素时钟速率所决定的。如果该速率过⾼,采集卡就不能够将相机的图像及时有效地从总线上取⾛,导致缓冲区溢出的错误。
计算瞬时数据传输速率,需要知道:
· 像素深度 (bytes/pixel)*
· 相机的像素时钟速率 (in MHz)
· 拍数(The number of taps)梦幻西游孩子
*10 & 12 ⽐特的图像在内存中占据16⽐特的宽度。
使⽤下⾯的公式来计算瞬时数据传输速率:
瞬时数据传输速率 (MB/s) = 像素时钟速率(MHz) x 像素深度(Bytes) x 拍数
⼀旦我们知道瞬时数据传输速率,我们就可以判断我们的硬件是否能够应付图像采集的任务。如果图像采集卡的数据吞吐量⼤于瞬时数据传输速率,那么我们就不会得到缓冲区溢出的错误。
如果采集卡的吞吐量⼩于瞬时数据传输速率,那么我们就需要考虑板载FIFO的填充速率了。如果⼀帧图像还没有采集完成FIFO就已经溢出,我们同样会得到⼀个缓冲区溢出的错误,即便我们只是采集⼀帧图像。
使⽤下⾯的公式来计算FIFO的填充速度:
FIFO填充速度(MB/s) = 瞬时数据传输速率 - 采集卡总线吞吐量
我们同时需要知道从相机采集⼀帧图像所需要的时间。该参数会随着相机的帧速率⽽改变,但它是由相机的时钟速率来决定的:
帧时间 (s/frame) = 分辨率 / (拍数 x 像素时钟速率)
我们可以通过FIFO填充速率和帧时间来确定每帧图像所需要的FIFO⼤⼩:
FIFO⼤⼩ = FIFO填充速率 x 帧时间
系统维护是什么意思2. 平均数据速率
平均数据速率是指软件从相机接收⼀整帧图像的速率,它是由帧速率来决定的。如果像素帧太⼤⽽导致在指定的时间内数据不能从总线上传输到软件中,那么我们会得到⼀个采集超时的错误。
计算平均数据速率,你需要知道如下参数:
小甜甜抖音· 图像的分辨率
· 像素深度 (bytes/pixel)
· 帧速率 (Hz)
使⽤下⾯的公式来计算每秒钟采集的数据⼤⼩:
路由器密码修改1. 长 x 宽 = 分辨率 (像素)
2. 分辨率 x 像素深度 = 字节数/帧
3. 字节数/帧 x 帧速率 = 字节数/秒
注意: 该值应该在106 量级,或者MB/s。
案例:
我要使⽤PCIe-1427图像采集卡来采集⼀个1280x1024 12-bit 的图像,帧速率为10 fps (frames per second)。我的相机速率为80 MHz,采集卡的接⼝为1x PCIe接⼝,采集时配置的拍数为2,我能够顺利的采集⼀帧图像吗?
注意:PCIe-1427板载的内存有16 KB,1x PCIe插槽最⼤的数据吞吐量为 200 MB/s.
1. 计算瞬时数据传输速率:
80M pulses/s x 2 pixels/pulse x 2 Bytes/pixel = 320 MB/s
因为 320 MB/s > 200 MBs,所有我们需要将数据缓存到板载的FIFO上⾯。
2. 计算FIFO的填充速率:
320 MB/s – 200 MB/s = 120 MB/s
3. 计算帧时间:
(1280 pixels/line x 1024lines/frame) / (2 pixels/pulse x 80 pulses/s) = 8.2e-3 s/frame
4. 计算所需的FIFO⼤⼩:
端午节放假安排2020高速免费吗120 MB/s x 8.2e-3 s/frame = 984 KB/frame
因为所需要的FIFO⼤于板载的内存⼤⼩(984 KB > 16 KB),所以我们不能够有效的采集⼀帧图像,同时会在采集过程中得到⼀个缓冲区溢出的错误。
>短头发造型
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论