This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TDA4VM: DOF of DMPAC

Part Number: TDA4VM

Hi team,

Here's an issue from the customer may need your help:

There is a file in the development tool chain for tda4: Ti-processor-SDK-RTOS-j721e-EVM-08_04_00_06/tiovx/kernels_J7/include/TI/J7_dmpac_do f.h 

The data structure for DOF is as follows: 

/*!
 * \brief The configuration data structure used by the
          TIVX_KERNEL_DMPAC_DOF kernel.
 *
 * \ingroup group_vision_function_dmpac_dof
 */
typedef struct {
    /*! Range [0, 62]   Recommended = 48, 48
        if horizontal_search_range is 191 then
        (vertical_search_range[0] (upward) +
            vertical_search_range[1] (downward) <= 112)
    */
    uint16_t  vertical_search_range[2];
    /*! Range [0, 191] Recommended value = 191
        if vertical_search_range[0] = vertical_search_range[1] = 62
        then horizontal_search_range <= 170
    */
    uint16_t  horizontal_search_range;
    /*! 0: Disabled; 1: Enable post-processing median filter [recommended] */
    uint16_t  median_filter_enable;
    /*! Range [0, 31]   recommended = 24 */
    uint16_t  motion_smoothness_factor;
    /*! 0 = Motion neutral, 5x5 Census Transform
        1 = Forward motion
        2 = Reverse motion
        3 = Motion neutral, 7x Census Transform */
    uint16_t  motion_direction;
    /*! Predictor for the base image */
    uint16_t  base_predictor[2];
    /*! Predictor for the intermediate pyramid level  */
    uint16_t  inter_predictor[2];
    /*! IIR filter alpha value recommended = 0x66 */
    uint16_t  iir_filter_alpha;
    /*! Number of internal delay slots to use for applying previous flow vector
     *  output to temporal predictor. The use of this field and the valid values
     *  it can take is as explained below:
     *  - Range [0 TIVX_DMPAC_DOF_MAX_FLOW_VECTOR_DELAY]
     *  - This field is validated and used only if temporal predictor is ON. This
     *    is a pre-condition for all the cases below.
     *  1) When pipelining is OFF, then this field must be set to 0. The understanding
     *     is that with this configuration, external delay object shall be used for
     *     providing the input flow vector.
     *  2) When pipelining is ON and if an external delay object is used, then this
     *     field must be set to 0.
     *  3) When pipelining is ON and if no external delay object is used, then this
     *     field must be set to a valid non-zero value.
     *
     *  In case (3) above, the node stores pointers to the previous output flow vectors
     *  to be used as potential inputs later so it is important that under this configuration
     *  the higher level application does not alter the output buffer data in any way. Also, the
     *  node parameter must be configured with the buffer depth appropriately such that all the
     *  configured buffers are used and recycled during the pipelining operation.
     */
    uint16_t  flow_vector_internal_delay_num;

} tivx_dmpac_dof_params_t;

Regarding a few parameters in DOF, the customer has the following questions:

1) What does vertical_search_range and horizontal_search_range mean? Looks like a search range, but what do they represent? The block match? 

2) Motion_smothickness_factor, how does this parameter work with the algorithm? How to understand it at the algorithmic level? 

3) Motion_direction, literally, the customer is not sure what it means. 

4) IIR_filter_alpha, what does "iir" do in the algorithm? 

OR is there any docs tell more about the principle of the specific implementation of the DOF algorithm for reference? Thanks.

Best Regards,

Cherry

  • Hi Cherry,

    For all of these parameters, i would recommend referring the DMPAC specs/TRM/Datasheet. 

    Regards,

    Brijesh 

  • Hi Brijesh ,

    Thanks for your support.

    And here're some questions persist:

    1) The DOF describes tiny movements at the pixel level, and as per the docs, horizontal_search_range is 191 and vertical_search_ranges is 61. This range is very large even when the magnification of the pyramid is considered. How does TI do this? 

    2) Motion_smoothness_factor and iir_filter_alpha are both motion smooth, so what is the difference between them? 

    3) Motion_direction, how does the direction of motion be determined in the algorithm? 

    Thanks and Regards,

    Cherry

  • Hi Cherry,

    This is algorithm level details, cannot be shared in open forum. Pleas send email to me for these questions. 

    Regards,

    Brijesh