当前位置:网站首页>Blackfly s usb3 industrial camera: buffer processing
Blackfly s usb3 industrial camera: buffer processing
2022-07-07 02:00:00 【The moon shines on the silver sea like a dragon】
Blackfly S USB3 Industrial camera : Buffer processing
The technical content of this blog can be applied to FLIR Network interface and USB3 The camera
Flir Blackfly S USB3 Product introduction
Blackfly S Adopt the advanced ice shape sensor in the industry .
It's powerful , You can easily generate the exact image you need , And accelerate application development .
Including automatic and precise manual control of image capture and camera preprocessing .
Blackfly S Provide GigE、USB3、 Suit and board versions .
Accurate image SONY CMOS Choices among sensors include : Global shutter 、 Polarization and high sensitivity BSI sensor .
The following mainly explains the essence and working mode of buffer and buffer processing mode , And provide an example of the expected effect of the captured image
Camera buffer introduction
After the image is taken by the camera , Automatically transferred to PC And stored in RAM in .
The space allocated in memory for storing images is called buffer .
The number of buffers depends on the maximum frame rate of the camera , Memory is automatically allocated by default .
The number of buffers associated with the camera can be changed by switching the stream buffer count mode from automatic to manual and assigning a value to the manual stream buffer count at the same time .
The maximum number of buffers depends on RAM Available memory for , The size of each buffer depends on the image size .
Spinnaker 1.13 And later versions have the function of automatic buffer counting mode . Previous versions set the number of buffers to 10.
When using images , You can only interact with images after they are retrieved from the buffer . This type of interaction includes displaying images on the screen 、 Save to disk or apply image processing .
Buffer processing
Buffer processing determines what is available for each camera Number of buffers ( If you can cover ) as well as The order in which images are retrieved .
Buffer processing mode
Spinnaker There are four types of buffer processing :
1、 First deal with the latest :
The application processes the image at the end of the output buffer queue ( The latest one available )
This method is better for applications such as motion prediction, which need to always obtain the latest frame, but the previous frame can also add valuable information .
2、 Only the latest :
Applications always process recently completed images ( The latest one ). Discard the previous image . Stream buffer count ignored . This mode is usually used for real-time display GUI, It requires that there is no delay between the camera and the display .
3、 First deal with the earliest :
The application always processes the first image of the output buffer queue ( The first one available )
4、 First write the earliest :
The application always processes the first image of the output buffer queue ( The earliest available ). If a new image is imported , It overwrites the buffer from the beginning of the queue . It looks like a circular buffer .
Example of buffer processing mode
The above explanation is still quite abstract , Here are a few examples to make it clear
Example 1
Trigger the camera 6 Time . After each trigger , We will retrieve the image , Then the output FrameID(Frame ID Always from 0 Start ).
Example condition :
- 1 FPS
- No image processing
- There is no change in the number of buffers or buffer processing mode
Sample results : - 0、1、2、3、4、5
No matter which buffer processing mode is used , The results should all be the same . however , If the camera triggers faster than the processing power of the host , Or if there is a delay on the host , Then the image will be discarded . In this case , The output frame ID It may not match the results shown above Again , When the image retrieval position is different from its transmission position , The buffer processing mode will determine the retrieved images and the order of images .
Example 2
Trigger the camera 6 Time . After the sixth trigger , We start to retrieve three images , Then the output FrameID.
Example condition :
- 1 FPS
- No image processing
- Set the number of buffers to 3(PC Only in memory 3 Zhang image )
- Apply each buffer processing mode one by one
First deal with the latest :
- 2、1、0
- Not covered , The camera retains the first three images , discarded 3、4、5 frame
Only the latest :
- 5、 error
- The camera retains the latest image , But when trying to retrieve an image that does not exist , There was a mistake
First deal with the earliest :
- and “ First deal with the latest ” equally , The difference is that the earliest image is retrieved first
First write the earliest :
- 3、4、5
- frame 0、1 and 2 Covered , Representation frame 3 It is the earliest image and the first to be retrieved , Then retrieve the frame 4 and 5
Transmission queue ( Camera onboard image buffer )
Each camera has an onboard image buffer , Each captured image passes through the buffer . As long as the camera remains powered , It can also be used to store images indefinitely . The image buffer can store multiple images .
Blackfly S The camera has 240 MB Image buffer of .
The space occupied by each image is four times the maximum resolution of the camera . for example ,BFS-U3-13Y3C The resolution of the camera is 1.3 MP, Then each image will occupy the image buffer 5.2 MB Space . The maximum number of images that can be stored is shown in TransferQueueMaxBlockCount node . The number of images currently buffered on the camera is shown in TransferQueueCurrentBlockCount node .
If USB3 After the camera takes images PC There is no buffer available on , Then the image will be automatically stored in the onboard buffer . once PC There's space available , The images in the camera's onboard buffer will be automatically transferred to PC. If you are using “ First deal with the latest ” Pattern , This situation will interfere with the expected image sequence .
adopt Code Change buffer size
adopt Spinnaker C++ Interface Change the buffer size to 11, The default is 10
Spinnaker::GenApi::INodeMap & sNodeMap = cam->GetTLStreamNodeMap();
CIntegerPtr StreamNode = sNodeMap.GetNode(“StreamDefaultBufferCount”);
INT64 bufferCount = StreamNode->GetValue();
StreamNode->SetValue(11);
adopt GetTLStreamNodeMap get NodeMap
adopt GetNode get Node
adopt GetValue Default buffer size
adopt SetValue Set the buffer size to 11
边栏推荐
- 一文带你走进【内存泄漏】
- 初识MySQL
- Golang foundation - data type
- AcWing 904. Wormhole solution (SPFA for negative rings)
- PartyDAO如何在1年内把一篇推文变成了2亿美金的产品DAO
- Modify the system time of Px4 flight control
- BigDecimal 的正确使用方式
- Appium automation test foundation uiautomatorviewer positioning tool
- Yiwen takes you into [memory leak]
- 爬虫实战(六):爬笔趣阁小说
猜你喜欢
爬虫实战(六):爬笔趣阁小说
Command injection of cisp-pte
ROS学习(24)plugin插件
3D激光SLAM:Livox激光雷达硬件时间同步
C语言关于链表的代码看不懂?一篇文章让你拿捏二级指针并深入理解函数参数列表中传参的多种形式
Yiwen takes you into [memory leak]
刨析《C语言》【进阶】付费知识【二】
ROS学习(22)TF变换
mongodb查看表是否导入成功
Errors made in the development of merging the quantity of data in the set according to attributes
随机推荐
Mongodb checks whether the table is imported successfully
Redis configuration class redisconfig
Right mouse button customization
AcWing 345. Cattle station solution (nature and multiplication of Floyd)
盒子拉伸拉扯(左右模式)
Flir Blackfly S 工业相机:通过外部触发实现多摄像头同步拍摄
Make DIY welding smoke extractor with lighting
Ros Learning (23) Action Communication Mechanism
Input and output of C language pointer to two-dimensional array
初识MySQL
ROS learning (25) rviz plugin
Ds-5/rvds4.0 variable initialization error
Appium基础 — Appium Inspector定位工具(一)
使用nodejs完成判断哪些项目打包+发版
String to date object
ROS learning (21) robot slam function package -- installation and testing of orbslam
JVM memory model
Flir Blackfly S 工业相机 介绍
Modify the system time of Px4 flight control
Public key \ private SSH avoid password login