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.

[参考译文] EVE 仿真器上的边缘检测示例

Guru**** 2613065 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/656669/edge-detection-example-on-eve-simulator

e2e.ti.com/.../VGA_5F00_out.y.txte2e.ti.com/.../customImage640x480.raw.txte2e.ti.com/.../VGA.y.txte2e.ti.com/.../customImage_5F00_output640x480.raw.txtHi香榭丽舍

我将 CCS 5、4用于 EVE 仿真器。 它经过编译、我尝试运行形态测试案例、它运行良好。

现在、我想使用 sobre 检查边缘检测。 下面是我的步骤。 更改了文件扩展名以上载为.txt。 请 删除.txt 以查看内容

  1. 更新"CONFIG_LIST.txt"、请参见附件
  2. 更新了"EDGE_DETECer_random.cfg"、请参见附件。
  3. 我对本应包含的代码进行了评述、以便它生成输出文件。 在 EDGE_DETECer_TB.c 中启用"ENABLE_OUTP_Dump"
  4. 启动模拟器,提供.elf 文件并运行模拟器并等待生成 Out。
  5. 我使用了封装随附的参考图像、而其他方面、我的结果保持不变。
  6. PFA 控制台日志、输入和输出映像。 输入和输出图像的屏幕。

如果我偏离正轨、请帮助我、或者我应该使用不同的步骤向前迈进。

谢谢、

穆罕默德

e2e.ti.com/.../terminal_5F00_log.txte2e.ti.com/.../3823.config_5F00_list.txt

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

    您好、 Mohammed、

      您是否尝试更改阈值(EDGE_DETECTOR_TI_InArgs.THRESHOLD1)? BTW 在仿真器上运行完整的应用程序并不是一个很好的主意、因为它可能真的很慢。 相反、我建议您使用主机仿真。 使用起来会更快、更容易。

    此致、

    安州

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢 Anshu 的快速回复、
    我没有更改阈值1。 您想让我尝试一下吗? 请告诉我什么是最合适的阈值1。
    当然,我将使用仿真,我尝试并行编译它将会因我在不同线程中遇到的仿真问题而使您感到错误。 :)。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Mohammed、

      您可以尝试从非常小的阈值开始多个阈值、以排除问题是因为阈值或其他问题。


    此致、

    安州

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

    您好、安州、

    我尝试不同的阈值、但还没有运气。 我想阈值可能不会影响输出转储。

    无论如何...

    请建议更多选项、以便我可以尝试与阈值更改并行。

    谢谢、

    穆罕默德

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    让我们返回到您的步骤列表:

    更新"CONFIG_LIST.txt"请查找附件>>这是可以的
    更新了"EDGE_DETECer_random.cfg"、请参见附件。 >>我无法在附件中找到此内容。
    我对本应包含的代码进行了评述、以便它生成输出文件。 在 EDGE_DETECER_TB.c >>中启用"enable_output_dump"您是说您已注释#define enable_output_dump 0行吗? 您应该改为将其设置为1。 #define ENABLE_OUTPUT 1
    启动模拟器,提供.elf 文件并运行模拟器并等待生成 Out。 >>没关系
    我使用了封装随附的参考图像、而其他方面、我的结果保持不变。 >>我无法得到这一点
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请直接查找我的答案;

    更新"CONFIG_LIST.txt"请查找附件>>这是可以的
    穆罕默德:这是相同的。
    更新了"EDGE_DETECer_random.cfg"、请参见附件。 >>我无法在附件中找到此内容。
    Mohammed:我已更改 cfg.txt、没问题、请参阅以下文件内容。

    ============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
    numTestCases = 1.
    testCaseName ="test_Functional_1"
    performanceTestcase = 1.
    DESC =“随机测试用例,Sobel:640 x 480”
    inImage ="D:\eve_sw_01_18_00_CCS54Jan12\apps\EDGE_Detector \testvecs\input\customImage640x420.ray"
    outImage ="D:\eve_sw_01_18_00_CCS54Jan12\apps\EDGE_Detector \testvecs\output\customImage640x480_output.rain"

    imageWidth = 640
    imageHeight = 480
    imagePitch = 640
    outputPitch = 640
    kernelSize = 3
    阈值1 = 5
    阈值2 = 150
    对于字节边沿映射、# outputFormat = 0;对于 binPack 网上点映射、则为1
    outputFormat = 0
    使用 Sobel 进行边缘检测时、# method = 0、而 method = 1用于 Canny
    方法= 0
    randSeed = 0
    numIter = 1

    ============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
    我对本应包含的代码进行了评述、以便它生成输出文件。 在 EDGE_DETECER_TB.c >>中启用"enable_output_dump"您是说您已注释#define enable_output_dump 0行吗? 您应该改为将其设置为1。 #define ENABLE_OUTPUT 1
    Mohammed:我执行了与 ENABLE_OUTPUT 1相同的操作。
    启动模拟器,提供.elf 文件并运行模拟器并等待生成 Out。 >>没关系
    ENABLE_OUTPUT 1:这正常。
    我使用了封装随附的参考图像、而其他方面、我的结果保持不变。 >>我无法得到这一点
    穆罕默德:我的图片"customImage640x420.rain"随软件包一起提供。 除此之外,我还可以从互联网上看到几幅图像。一幅是 VGA 图像,一幅是.bmp。

    当我设置 THRESHOLD1 =5并在文件"EDGE_DETECTOR_TB.c"中的代码转储部分注释掉图像处理时,我会看到一些失真数据,请找到附加的输入和输出图像。


    谢谢、
    穆罕默德

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

    我不更改输入或输出的间距、它与.cfg 文件中定义的一样(outputPitch = 640)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    测试用例是否通过了测试映像? 如果是、则您可以与正在运行的映像共享配置文件。 我可以尝试在我的末尾运行、以查看我获得的输出。 BTW 您使用的是哪个版本的 EVE 软件?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我使用的是 EVE 软件版本“EVE_SW_01_18_00_00”。

    我的测试用例与图像一起通过。 请查找随附的输入图像。 请在使用图像之前删除.txt 扩展名。 我更改了上传文件的扩展名、因为文件未上传到 TI 论坛

    配置文件内容与上述主题中的内容相同

    e2e.ti.com/.../4532.customImage640x480.raw.txte2e.ti.com/.../input_5F00_400x400.yuv.txte2e.ti.com/.../8780.VGA.y.txt

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

    您好、安州、

    祝你好运吗?

    谢谢、

    穆罕默德

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

    您好、Mohammed、

     我找到了问题。 问题出在转储逻辑中。 目前、假设输出是 Canny Edge 检测器、它正在将输出转换为更好的人眼视觉效果(而不是1和0、而是将其转换为255和0)、则会发生转储。 但是、Sobel 输出已采用此格式(255和0)、因此无需进行此转换。 您能否在  1109行转储 targetOutputImage 而不是 edgeImage。

    此致、

    安州

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是要绕过 for 循环吗? 我尝试绕过 for 循环...

    请告诉我应该从以下代码片段中尝试什么;
    #if enable_output_dump
    if (strcmp ((const char *) testcaseParams[testcase].outImage、""))

    uint8_t * edgeImage = NULL;
    uint8_t * targetOutputImage;
    targetOutputImage =(uint8_t *) outBufs.bufDesc[EDGE_Detector_TI_BUFDESC_OUT_IMAGE_buffer]->bufPlanes[0].buf;
    edgeImage =(uint8_t *) malloc (testcaseParams[testcase].outputPitch * testcaseParams[testcase].imageHeight);
    if (edgeImage == NULL)

    test_printf ("无法为转储分配边缘映像\n");
    转到 exit_loop;


    对于(j = 0;j < testcaseParams[testcase].imageHeight - 2;j++)

    对于(I = 0;I < numBytesToCompare;I++)

    if (targetOutputImage[i + j * testcaseParams->outputPitch)=1)

    edgeImage[i + j * testcaseParams->outputPitch = 255;

    其他

    edgeImage[i + j * testcaseParams->outputPitch = 0;




    TI_file * fp = FOPEN ((const char *) testcaseParams[testcase].outImage、"WB");

    if (fp==空)

    test_printf ("打开输出文件失败:%s\n"、testcaseParams[testcase].outImage);
    返回-1;


    fwrite (edgeImage、testcaseParams[testcase].outputPitch * testcaseParams[testcase].imageHeight、1、fp);

    fclose (FP);

    if (edgeImage)

    FREE (网上图像);




    字节序

    谢谢、
    穆罕默德
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    而不是循线
    fwrite (edgeImage、testcaseParams[testcase].outputPitch * testcaseParams[testcase].imageHeight、1、fp);
    使用
    fwrite (targetOutputImage、testcaseParams[testcase].outputPitch * testcaseParams[testcase].imageHeight、1、fp);


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

    感谢 Anshu、它为我们提供了帮助。
    我对此有一个权变措施、因为我在测试后立即调用了 FWRITE:在964行。

    感谢合理的建议/理由,我从那时起就没有想到。 我想知道我的一方是否有问题。 )