How to serialize two image sequences using InsertImage operator?

  • Hello silverfly


    operator ImageSequence can cause timing errors (see release notes). Consider using operator FrameBufferRandomRd to build the ImageSequence functionality. See example http://www.siliconsoftware.de/…%20exposure%20fusion.html. Here the functionality of ImageSequence is rebuilt.


    Do you actually need the functionality of image sequence or just 1 out of 4 images?


    Johannes

    Johannes Trein
    Teamleader Applications and Development
    SiliconSoftware GmbH
    siso-logo-animation2_2.gif



  • I need the entire image sequence, just to make it easier to synthesize, so only one image is output.


    Thanks, I will try to use the FrameBufferRandomRd operator to build what I need instead.


    By the way, the design I provided has been successfully synthesized, and it reports timeout at runtime instead of timing errors during synthesis.

  • By the way, the design I provided has been successfully synthesized, and it reports timeout at runtime instead of timing errors during synthesis.

    Oh sorry. I did not see that.


    Are you using microDisplay? I have an idea: As you are using GigE Vision both cameras needs to be started at the same time and be 100% synchronous. microDisplay can only start one camera when you click the "play" button inside the program.


    If you check the buffer fill levels I think that one of them will be in overflow while the other one will be empty.


    There are two solutions:

    1. Use the new version of microDisplay called microDisplayX. It is included in runtime 5.7.0 and you can find it in %sisodir5%/bin/microDisplayX.exe. There is a synchronization option which can be used to start all cameras at the same time
    2. If you want to use the old microDisplay you need to start GenICam explorer in parallel and manually start the second camera by writing to parameter "StartAcquisition"

    Note: If you set both cameras to the same frame rate they will still be a little asynchronous. Soon or later the buffers will be filled. You ned to externaly trigger the cameras to be 100% synchronous.


    Johannes

    Johannes Trein
    Teamleader Applications and Development
    SiliconSoftware GmbH
    siso-logo-animation2_2.gif



  • We later performed experiments in microDisplayX. For sequence images generated by ImageSequence and subsequent InsertImage operations, timeout errors will still be reported soon.


    We are working on FrameBufferRandomRd operator for our design. The design block diagram is shown in the screenshot below. We also verified the design in microDisplayX. Although the timeout error is not reported, the path after the InsertImage operator still does not reach the bandwidth we expect, and the two FrameBufferRandomRd operators will quickly overflow (you can rule out that the two cameras are out of sync).


    In addition, we cannot find the "StartAcquisition" parameter in GenICam, and the new version of microDisplayX seems to be powerless for 64bit DmaToPC output.

  • Dear silverfly,


    in your design "pmp_two_cameras" the adress generation in boxes "ImageSequence" is not correct.


    To adapt the "ImageSequence" box from example "ExposureFusion.va" ,( under "Examples\Processing\HDR_ImageComposition\ExposureFusion\ExposureFusion.va" in your Visualapplets installation directory )

    to your image dimensions right-mouse click on box "ExposureFusion", click on "properties" and set the image dimensions

    to 600x800. This automatically sets all the relevant parameters in box "ImageSequence". Copy now the "ImageSequence" box to your design.


    The two cameras should run withh the same frame rate. But as Johannes has written:


    "..

    Note: If you set both cameras to the same frame rate they will still be a little asynchronous. Soon or later the buffers will be filled. You ned to externaly trigger the cameras to be 100% synchronous...."


    best regards


    Carmen Z

  • Hi, Carmen Z!


    We don't have a license for the Parameters Library, but I can be sure that our address generation is correct. In order to increase the transmission bandwidth, the 4 parallelisms of the camera input are merged into a kernel. You can check this carefully.


    We are testing the effect of the FrameBufferRandomRd operator on bandwidth. We tried to use 8 kernels for input images and 2 parallelisms for address generation and still couldn't reach our expected bandwidth. I wonder if you can answer our concerns.

  • I watched your video and I fully understand what you mean.


    But it just doesn't work on our machine. It can barely run when both cameras are 10fps.


    This is a bit weird. We will find out what is going on.


    Thank you, Johannes.

  • Sorry, Björn, I have kept you waiting.


    I am a bit confused about the results of our DMA test. Two logs have been uploaded. Please look at it.


    Also, as Johannes said, I tried to use Action Command to start the second camera, but the settings at Firmware could not be edited.

    Files

    • log.zip

      (4.76 kB, downloaded 1 times, last: )
    • 捕获2.PNG

      (85 kB, downloaded 5 times, last: )
  • Dear Silverfly,


    In the log I found:

    • PCIe Performance: PCIe is not highspeed capable
    • Currently trained PCIe speed: Gen 1 x4
    • ... payload size 128

    That at least indicates that 4 PCIe lanes are used, and a PCI payload size of 128.


    The facts above should deliver above 600 MB/s as DMA performance in your system.


    You can do a DMA performance test in mDisplay manually if you want to:

    1. Load a Acquisition Applet in mDisplay(X)
    2. Enable the simulator and the ROI at the expected target resolution
    3. Increase the frame rate step by step until you can see the buffer overflow and balance this to a working frane rate
    4. Resolution * Framerate * Pixeldepth = maximum target bandwiodth of DMA/PCIe