当前位置:网站首页>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

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 .
 Insert picture description here
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 .
 Insert picture description here
3、 First deal with the earliest :
The application always processes the first image of the output buffer queue ( The first one available )
 Insert picture description here
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 .
 Insert picture description here

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

原网站

版权声明
本文为[The moon shines on the silver sea like a dragon]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/188/202207061823093214.html