Posts by CarmenZ

    Dear community members,

    in the VisualApplets design in the attachment you find an implementation for a fast 90° rotation for image sizes up to 16384x30016 pixels.

    The design is implemnetd for marathon VCLx platform. A rotation bandwidth of up to 850 Mbyte/s was measured in hardware for this design.


    Design idea:Images are stored in DRAM Buffer and are read in columns of 32x512.

    Next, these columns are rotated with BRAM buffer and results appended.


    DRAM is slow when it comes to non-linear read. Therefore the colums of width 32 are

    used to increase the burst size. In addition the input image is split to two DRAM buffers which run simultanously to increase the speed.

    The additional BRAM sorting can be performed at parallelism 1 sufficiently fast enough.

    free versions of Vivdo are available. I recommend to use a free version first.

    Under "http://www.siliconsoftware.de/download/live_docu/VA3/en/manuals/content/introduction.html"

    you can see an overview which XilinX versions are possible for which frame grabber.

    Dear Arjun Lucid,

    sorry for the late response. I built your design "IRT_8K_V1.21.va" using Vivado 2018. No problems occured and the overall processing time was 26 minutes.

    Which XilinX version and which VisualApplets version do you use?

    Dear Ryuyi Narita,

    thank your for the explanation .

    1. So the values of parameters X0, X1, Y0,Y1 CenterX and CenterY in each module LiteROI_Fifo will be different to the X0, X1, ... parameters in the other 'LiteROI_Fifo" modules in the final implememation?


    Summary of design:In the current implemnetation the output of each box "LiteROI_Fifo" is a 1 bit pixel value which gives information, whether at least one detected object has parameters (x0, x1, center of gravity ,...) in a specific range (defined with parameters X0,X1,...). In the end you sum the output of the multiple "LiteROI_Fifo" boxes up to get information in how many specified ranges at least one object exists? Finally you set Threshold "outputCondition" which gives you information whether at least one object is detected in more than a specific number of defined ranges.


    Suggestion: Instead of using "Register, ,IsLastPixel and Remove Pixel, use "FrameMax" or "Row Max" in each module "LiteROI_Fifo" , "then you can add the output of the 100 modules "LiteROI_Fifo" up without using SYNC operator. After that you can select only the last pixel.



    Remark:2. If the parameters X0, y 1 ,y0 in each module 'LiteROI_FIFo" will be the same simply use only one module "LiteROI_FiFo" in your design and replace the content after operator "And" in the module with operator "Framesum". This will give you the number of objects, which are found in one specific range defined by X0,x1,....


    3. May I introduce the operator "imageBufferMultiROIDyn" to you? It may ´be helpful for you in the context of Blob analysis

    Dear Zhuomuke,

    a convulution of an image with a filter in the frequency domain can be performed via multiplication.

    In the VisualApplets design "FFtandbandpass.va" this is done correctly. After the image is transformed via FFT to frequency space a multiplication with a filter image (buffered in operator CoefficientBuffer) is performed. The filter image ( e.g. bandpass filter) buffered in the operator Coefficient Buffer can be generated using external software.

    Dear Zhuomuke,

    thank you for your question. The meaning "Foward" as value of Parameter "Transformation Mode" of the operator "FFT" means transformation to frequency space. With value "Inverse" the FFT operator transforms the frequency space to "normal"image space. The functionality of FFT operator in this mode corresponds to Inverse Fast Fourier Transform. To transform an image with no imaginary part to frequency space set the lower (imaginary ) input node of operator "FFT" to constant value "Zero". In your VisualApplets installation directory under Examples/processing/Advanced/FastFourierTransform you can find an example implementation.

    In the design snippet in the attachment a way to buffer a sequence of 3 images and output them simulataneously is implemented. With simple modifications the example can be modified for other image sequence lengths. To process images of a sequence simultaneously is e.g. important for High Dynamic Range Imaging or Exposure Fusion.

    Please see also the Visual Applets example implementations (in the installation directory) for High Dynamic Range Imaging and Exposure Fusion to see the usage of the image sequence operation.

    Hi,

    in the VisualApplets design "AddDummies.va" a simple way to create dummy pixel for empty images is introduced. For some image operations like Blob analysis or thresholding with subsequent pixel removement empty images might occur. Using operator "IsLastPixel" you have the possibility to simply create dummy pixels for this case. Please find more informations in the commentboxes in the design.

    Files

    • AddDummies.va

      (11.93 kB, downloaded 18 times, last: )