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: 关于DMPAC.DOF

Part Number: TDA4VM


各位TI的专家,请教一个问题,关于DMPAC里面的DOF。

tda4的开发工具链里面有这样一个文件:ti-processor-sdk-rtos-j721e-evm-08_04_00_06/tiovx/kernels_j7/include/TI/j7_dmpac_dof.h

关于dof的数据结构是这样的:

/*!
 * \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;

我对dof的这几个参数不是很明白:

1)vertical_search_range和horizontal_search_range是什么意思,从字面意思上看,它们是一个搜索范围,它们表达的是什么的搜索,是块匹配吗,能告知这两个参数的具体含义吗?

2)motion_smoothness_factor,从字面意思上看是运动平滑,这个参数是如何作用于算法的?在算法层面该如何理解?

3)motion_direction,从字面意思上看是运动的方向,不明白是什么意思。

4)iir_filter_alpha,这个iir又是在算法中发挥什么作用的?

简单说,我没找到TI关于DOF算法的详细说明文档,所以,根据公开文档和DOF相关的算法原理,我不知道TI的DOF算法的具体实现的原理,进而无法理解这几个参数是什么意思?

所以,能不能介绍一个相关的TI的文档,或者相应的paper,不然,我不知道在实践中应该如果对这些参数进行设置