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.

[参考译文] PROCESSOR-SDK-J721E:视觉应用的密集光流演示中存在疑似错误

Guru**** 2365970 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1493910/processor-sdk-j721e-suspected-bug-in-dense-optical-flow-demo-of-vision-apps

器件型号:PROCESSOR-SDK-J721E

工具/软件:

在`ti-processor-sdk-rtos-j721e-evm-10_01_00_04/vision_apps/basic_demos/app_DOF/main.c`中、我发现`vxGaussianPyramidNode`的输出被分配给`obj->pyumidObj.PYR_ref`、如下代码片段所示。

        status = app_create_graph_pyramid(obj->graph,
                                            &obj->pyramidObj,
                                            obj->pyramidObj.input_img[0],
                                            obj->pyramidObj.pyr_ref );

`obj->pyramidObj.PYR_ref`是`pyramidObj->PYR_delay`延迟对象的索引-1、如下所示 ` ti-processor-sdk-rtos-j721e-evm-10_01_00_04/vision_apps/basic_demos/app_dos/app_dof/DOF_bily_module.c `的代码片段。

  pyramidObj->pyr_delay = vxCreateDelay(context, (vx_reference)pyr_exemplar, 2);
  APP_ASSERT_VALID_REF(pyramidObj->pyr_delay);

  pyramidObj->pyr_ref = (vx_pyramid)vxGetReferenceFromDelay(pyramidObj->pyr_delay, -1);
  APP_ASSERT_VALID_REF(pyramidObj->pyr_ref);
  vxSetReferenceName((vx_reference)pyramidObj->pyr_ref, "PyramidReference");

  pyramidObj->pyr_cur = (vx_pyramid)vxGetReferenceFromDelay(pyramidObj->pyr_delay,  0);
  APP_ASSERT_VALID_REF(pyramidObj->pyr_cur);
  vxSetReferenceName((vx_reference)pyramidObj->pyr_cur, "PyramidCurrent");

如果我没有误解、则索引-1是 延迟对象的前一帧、而延迟对象的索引0是当前帧(即`pyramidObj->pyr_curr`)。

`、`将`obj->pyramidObj.pYR_cur`和`obj->pyramidObj.pYR_ref`分别分配给`tivxDmpacDofNode `的参数` input_current`和 `input_reference`、如下所示 ti-processor-sdk-rtos-evm-10_domain/dos/j721e_apps/main_demos/himension_00/apps 的代码片段。

        status = app_create_graph_dofproc(obj->graph,
                                            &obj->dofprocObj,
                                            obj->dofprocObj.dof_config,
                                            obj->pyramidObj.pyr_cur,
                                            obj->pyramidObj.pyr_ref,
                                            obj->dofprocObj.flow_vector_field_in,
                                            obj->dofprocObj.flow_vector_field_out );

我的问题是: `` vxGaussianPyramidNode `的最新输出分配给` obj->pyumidObj.pYR_ref `(即前一帧)而不是` obj->pyumidObj.pYR_cur (即当前帧)? 这是一个错误吗? 但生成的输出图像似乎正确。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Alvin:

    感谢您发布此问题、我将在内部检查此问题、并在下周之前返回、因为 我们的专家已经离职。

    此致、
    Gokul

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Gokul:

    感谢您对此进行研究。 期待下周收到您的回复。

    此致、

    Alvin

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Alvin:

    由于假期、我们一半的团队将不在办公室。 请预计  响应将延迟~1天。 感谢您的耐心。

    -法比亚纳

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Fabiana:

    很好理解、感谢您提供的信息。 我会等待假期后的回复。

    此致、

    Alvin  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Fabiana & Gokul:

    两周后是否有任何更新?

    此致、
    Alvin

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Alvin:

    很抱歉 延迟、 DOF 需要两个金字塔、当前和上一个金字塔。 这就是金字塔节点从参考金字塔开始、然后生成当前金字塔以开始处理的原因。  

    此致、

    Brijesh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Brijesh、

    感谢您的答复。 我知道 DOF 需要当前和上一个金字塔。 但我 `的是` vxGaussianPyramidNode `的输出被分配给` obj->pyramidObj.PYR_ref `而不是` obj->pyramidObj.PYR_cur。  `不是` obj->pyramidObj.pyr_cur?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Alvin:

    否、因为 Pydamid 将处理第一个参考金字塔。  

    此致、

    Brijesh  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Brijesh、

    如果参考金字塔是由金字塔节点生成的、那么当前参考是如何生成的?

    此致、

    Alvin

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Alvin:

    但这会在下一帧上生成、对吧? 当它们都可用时、即 DOF 被触发。  

    此致、

    Brijesh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Brijesh、

    我不认为是这样(?) 根据`ti-processor-sdk-rtos-j721e-evm-10_01_00_04/vision_apps/basic_demos/app_DOF/main.c`、图中 Pyramid 节点的输出始终连接到参考金字塔。 没有单个节点输出到当前金字塔。

    此致、

    Alvin

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Alvin:

    是的、但这是创建时的情况。 一帧处理后、由于使用了延迟对象、它将在每一帧上发生变化。  

    此致、

    Brijesh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Brijesh、

    我在代码中看到了以下行。

    status = vxRegisterAutoAging(obj->graph, obj->pyramidObj.pyr_delay);

    `vxRegisterAutoAging`用于触发您描述的延迟。 但是、根据我的理解(如果我错了、请更正我)、`vxRegisterAutoAging`每次 完成图形后对延迟对象进行"保存"。 所以,为什么 DOF 节点不会得到错误顺序的金字塔(即延迟之前)?

    此致、
    Alvin

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Brijesh、

    因此、我认为我的主要问题是以下哪些执行步骤是正确的:

    1. 金字塔节点的最新输出被传递到延迟对象的索引-1 (上一个)时隙-->延迟对象被自动分页、最新的金字塔输出被交换到延迟对象的索引0 (当前)时隙--> DOF 节点接收到延迟对象的处理(延迟对象的当前时隙为最新金字塔)-->…-->图形已完成
    2. 金字塔节点的最新输出被传递到延迟对象的索引-1 (上一个)时隙--> DOF 节点接受延迟对象的处理(延迟对象的当前时隙为旧金字塔)-->...-->已完成图形--> 延迟对象自动老化、最新的金字塔输出被交换到延迟对象的索引0 (当前)时隙

    此致、
    Alvin

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Brijesh、

    您能 回答我的问题吗? 这真的让我感到困惑。 谢谢。

    此致、
    Alvin

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Alvin:

    您能否参阅延迟对象的文档?  

    https://registry.khronos.org/OpenVX/specs/1.1_SC/html/de/d09/group__group__delay.html

    此致、

    Brijesh