GStreamer GPU Blob Detector Element

From RidgeRun Developer Wiki



Previous: GStreamer Plugins/CPU Blob Detector Index Next: GStreamer Plugins/Motion Overlay







The GStreamer element is called "rrcudablobdetector". This element performs the blob detector stage, described in the Overview section, with the difference that this plugin does not draw the bounding boxes, this function corresponds to another plugin called “rrmotionoverlay”. The rrcudablobdetector performs the blob detection using GPU and receives as input a bit mask GRAY8 format and outputs different formats that you can see in the capabilities section in the src template:


Main Properties

  • Algorithm: With this property you can choose the algorithm to use for the blob detection. The options are:
  • Ha4: HA4 connected components detection (default). Reference:
Arthur Hennequin, Lionel Lacassagne, Laurent Cabaret, Quentin Meunier. A new Direct Connected Component Labeling and Analysis Algorithms for GPUs. 2018 Conference on Design and Architectures for Signal and Image Processing (DASIP), Oct 2018, Porto, Portugal. ff10.1109/dasip.2018.8596835ff. ffhal-01923784f


  • Min-area: With this property you can set the minimum normalized blob area. If the blob is smaller than this area, the blob will be discarded. By default it is “0,0006”, which is a percentage of the image area.

Capabilities

This section overviews the GPU Blob Detector input and output capabilities.

Below is the full output of the gst-inspect-1.0 command:

Factory Details:
  Rank                     none (0)
  Long-name                GPU based Blob Detector
  Klass                    Filter/Editor/Video
  Description              Detect blobs from a binary image
  Author                   Melissa Montero <melissa.montero@ridgerun.com>

Plugin Details:
  Name                     rrmotiondetection
  Description              Motion detection components based on OpenCV
  Filename                 /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstrrmotiondetection.so
  Version                  0.1.1
  License                  Proprietary
  Source module            gstrrmotiondetection
  Binary package           gstrrmotiondetection
  Origin URL               www.ridgerun.com

GObject
 +----GInitiallyUnowned
       +----GstObject
             +----GstElement
                   +----GstAggregator
                         +----GstCudaBaseMiso
                               +----GstRrCudaBlobDetector

Pad Templates:
  SINK template: 'mask'
    Availability: Always
    Capabilities:
      video/x-raw
                 format: GRAY8
                  width: [ 1, 2147483647 ]
                 height: [ 1, 2147483647 ]
              framerate: [ 0/1, 2147483647/1 ]
    Type: GstAggregatorPad
    Pad Properties:
      emit-signals        : Send signals to signal data consumption
                            flags: readable, writable
                            Boolean. Default: false
  
  SINK template: 'video'
    Availability: Always
    Capabilities:
      video/x-raw(memory:NVMM)
                 format: { (string)I420, (string)I420_10LE, (string)P010_10LE, (string)I420_12LE, (string)UYVY, (string)YUY2, (string)YVYU, (string)NV12, (string)NV16, (string)NV24, (string)GRAY8, (string)BGRx, (string)RGBA, (string)Y42B }
                  width: [ 1, 2147483647 ]
                 height: [ 1, 2147483647 ]
              framerate: [ 0/1, 2147483647/1 ]
      video/x-raw
                 format: { (string)I420, (string)YV12, (string)YUY2, (string)UYVY, (string)AYUV, (string)VUYA, (string)RGBx, (string)BGRx, (string)xRGB, (string)xBGR, (string)RGBA, (string)BGRA, (string)ARGB, (string)ABGR, (string)RGB, (string)BGR, (string)Y41B, (string)Y42B, (string)YVYU, (string)Y444, (string)v210, (string)v216, (string)Y210, (string)Y410, (string)NV12, (string)NV21, (string)GRAY8, (string)GRAY16_BE, (string)GRAY16_LE, (string)v308, (string)RGB16, (string)BGR16, (string)RGB15, (string)BGR15, (string)UYVP, (string)A420, (string)RGB8P, (string)YUV9, (string)YVU9, (string)IYU1, (string)ARGB64, (string)AYUV64, (string)r210, (string)I420_10BE, (string)I420_10LE, (string)I422_10BE, (string)I422_10LE, (string)Y444_10BE, (string)Y444_10LE, (string)GBR, (string)GBR_10BE, (string)GBR_10LE, (string)NV16, (string)NV24, (string)NV12_64Z32, (string)A420_10BE, (string)A420_10LE, (string)A422_10BE, (string)A422_10LE, (string)A444_10BE, (string)A444_10LE, (string)NV61, (string)P010_10BE, (string)P010_10LE, (string)IYU2, (string)VYUY, (string)GBRA, (string)GBRA_10BE, (string)GBRA_10LE, (string)BGR10A2_LE, (string)GBR_12BE, (string)GBR_12LE, (string)GBRA_12BE, (string)GBRA_12LE, (string)I420_12BE, (string)I420_12LE, (string)I422_12BE, (string)I422_12LE, (string)Y444_12BE, (string)Y444_12LE, (string)GRAY10_LE32, (string)NV12_10LE32, (string)NV16_10LE32, (string)NV12_10LE40 }
                  width: [ 1, 2147483647 ]
                 height: [ 1, 2147483647 ]
              framerate: [ 0/1, 2147483647/1 ]
    Type: GstAggregatorPad
    Pad Properties:
      emit-signals        : Send signals to signal data consumption
                            flags: readable, writable
                            Boolean. Default: false
  
  SRC template: 'src'
    Availability: Always
    Capabilities:
      video/x-raw(memory:NVMM)
                 format: { (string)I420, (string)I420_10LE, (string)P010_10LE, (string)I420_12LE, (string)UYVY, (string)YUY2, (string)YVYU, (string)NV12, (string)NV16, (string)NV24, (string)GRAY8, (string)BGRx, (string)RGBA, (string)Y42B }
                  width: [ 1, 2147483647 ]
                 height: [ 1, 2147483647 ]
              framerate: [ 0/1, 2147483647/1 ]
      video/x-raw
                 format: { (string)I420, (string)YV12, (string)YUY2, (string)UYVY, (string)AYUV, (string)VUYA, (string)RGBx, (string)BGRx, (string)xRGB, (string)xBGR, (string)RGBA, (string)BGRA, (string)ARGB, (string)ABGR, (string)RGB, (string)BGR, (string)Y41B, (string)Y42B, (string)YVYU, (string)Y444, (string)v210, (string)v216, (string)Y210, (string)Y410, (string)NV12, (string)NV21, (string)GRAY8, (string)GRAY16_BE, (string)GRAY16_LE, (string)v308, (string)RGB16, (string)BGR16, (string)RGB15, (string)BGR15, (string)UYVP, (string)A420, (string)RGB8P, (string)YUV9, (string)YVU9, (string)IYU1, (string)ARGB64, (string)AYUV64, (string)r210, (string)I420_10BE, (string)I420_10LE, (string)I422_10BE, (string)I422_10LE, (string)Y444_10BE, (string)Y444_10LE, (string)GBR, (string)GBR_10BE, (string)GBR_10LE, (string)NV16, (string)NV24, (string)NV12_64Z32, (string)A420_10BE, (string)A420_10LE, (string)A422_10BE, (string)A422_10LE, (string)A444_10BE, (string)A444_10LE, (string)NV61, (string)P010_10BE, (string)P010_10LE, (string)IYU2, (string)VYUY, (string)GBRA, (string)GBRA_10BE, (string)GBRA_10LE, (string)BGR10A2_LE, (string)GBR_12BE, (string)GBR_12LE, (string)GBRA_12BE, (string)GBRA_12LE, (string)I420_12BE, (string)I420_12LE, (string)I422_12BE, (string)I422_12LE, (string)Y444_12BE, (string)Y444_12LE, (string)GRAY10_LE32, (string)NV12_10LE32, (string)NV16_10LE32, (string)NV12_10LE40 }
                  width: [ 1, 2147483647 ]
                 height: [ 1, 2147483647 ]
              framerate: [ 0/1, 2147483647/1 ]
    Type: GstAggregatorPad
    Pad Properties:
      emit-signals        : Send signals to signal data consumption
                            flags: readable, writable
                            Boolean. Default: false

Element has no clocking capabilities.
Element has no URI handling capabilities.

Pads:
  SRC: 'src'
    Pad Template: 'src'
  SINK: 'video'
    Pad Template: 'video'
  SINK: 'mask'
    Pad Template: 'mask'

Element Properties:
  algorithm           : The algorithm type to use for blob detection
                        flags: readable, writable
                        Enum "GstRrCudaBlobDetectorAlgorithm" Default: 0, "ha4"
                           (0): ha4              - HA4 connected components detection
  latency             : Additional latency in live mode to allow upstream to take longer to produce buffers for the current position (in nanoseconds)
                        flags: readable, writable
                        Unsigned Integer64. Range: 0 - 18446744073709551615 Default: 0 
  min-area            : The minimum normalized blob area. If blob is smaller it will be discarded
                        flags: readable, writable
                        Float. Range:               0 -               1 Default:          0,0006 
  min-upstream-latency: When sources with a higher latency are expected to be plugged in dynamically after the aggregator has started playing, this allows overriding the minimum latency reported by the initial source(s). This is only taken into account when larger than the actually reported minimum latency. (nanoseconds)
                        flags: readable, writable
                        Unsigned Integer64. Range: 0 - 18446744073709551615 Default: 0 
  name                : The name of the object
                        flags: readable, writable
                        String. Default: "rrcudablobdetector0"
  parent              : The parent of the object
                        flags: readable, writable
                        Object of type "GstObject"
  start-time          : Start time to use if start-time-selection=set
                        flags: readable, writable
                        Unsigned Integer64. Range: 0 - 18446744073709551615 Default: 18446744073709551615 
  start-time-selection: Decides which start time is output
                        flags: readable, writable
                        Enum "GstAggregatorStartTimeSelection" Default: 0, "zero"
                           (0): zero             - Start at 0 running time (default)
                           (1): first            - Start at first observed input running time
                           (2): set              - Set start time with start-time property
  sync                : Enable the synchronization using the incoming buffers timestamps
                        flags: readable, writable
                        Boolean. Default: false

Element Signals:
  "on-new-motion" :  void user_function (GstElement* object,
                                         gchararray arg0,
                                         gpointer user_data);


Previous: GStreamer Plugins/CPU Blob Detector Index Next: GStreamer Plugins/Motion Overlay