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.

[参考译文] VLIB 霍夫变换参数

Guru**** 2554840 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/606345/vlib-hough-transform-parameter

您好!

对于通道检测算法,我想使用 VLIB 的 VLIB_HOGLELINEFromList()。 我正在使用 TDA3x、ALGO 应该在 C66x DSP 上运行。

我的问题是:如何获取 hoghLineFromList 函数以生成正确的 theta 和 Rho 值? 假设在我的示例中、图像/ROI 为1920x500像素。 如何为 NUMTHETA 和 RHOMAX 选择正确的值以获得正确的结果? °我希望 θ 介于-90°至89之间、我只需将 NUMTHETA 设置为180吗? 我应该将 RHOMAX 设置为2*sqrt (W^2+H^2)吗?

我查看了 VLIB 版本中包含的 HoughLinesDemo、无法真正理解为什么您选择值267 (NUMTHETA)和600 (RHOMAX)。 我还在 e2e 论坛中搜索、但遗憾的是、我找不到答案。 我使用的是 VLIB_c66x_3_3_3_0_3。

提前感谢、

托比亚斯

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

    我已将此内容转发给 c66c DSP 库专家。 他们的反馈应发布在此处。

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

    大家好、

    我  也 有兴趣  回答  这个问题。

    此致、
    米兰

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

    专家能帮我解决这个问题吗?

    我还注意到、我必须将 RHOMAX 设置为一个高值(6000)、以获得一条只有1像素宽的实际行(在 Draw 行函数中)。 如果我将 RHOMAX 设置为低电平(例如600)、则打印线的宽度类似于6像素。 但是 θ 值看起来是正确的。

    此致、
    托比亚斯
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    RHOMAX 与 HoughforLines 内核中的直径参数相关。 直径通常设置为 sqrt (W^2+H^2)。 因此,如果您希望直方图中的 rho 分辨率为1,则可以设置 RHOMAX = 2*diameter。 (-RHOMAX 至+RHOMAX)。
    NUMTHETA 是您在 θ 侧需要的箱数。 内核将 θ 分辨率设置为1。 您可以将 NUMTHETA 用于所需的任何范围(根据需要从-90到89)。 但是、θ 值是根据查找表生成和存储的。 因此、您需要相应地修改查找表。 希望这对您有所帮助。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Prashanth、您好!
    感谢您的回答。

    我还有一个问题:我将 RHOMAX 设置为3846 (2*sqrt (1920^2+100^2)、并将 NUMTHETA 设置为180 (-90至80、我修改了 LUT)。 作为测试图片、我使用了仅包含一条直线的图像、该直线距离图像左边框500像素。 在 VLIB_HoughLineFromList 和 HoughLinesDemo 中的代码之后、我获得了一些 maxRho 和 maxTheta 的结果:
    maxTheta 被设定为90、这看起来是正确的、因为我的 Theta-LUT 中的90个元素为 Theta、角度为0度。 (垂直线)
    maxRho 被设置为2274、这对我来说是毫无意义的。 根据 Rho 测量的起始点位置、我预计 maxRho 为500或2420 (1920+500)。 如何将 maxRho 值变为"正确"值?

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

    您好 Tobias、

     内核中的 Diameter 不计算为2*sqrt (W^2 + H^2)。 相反、根据内核、它被优化为 sqrt (2)* max (W、H)。 您可以相应地设置 RHOMAX。 此外、由于对齐访问、可能会发生舍入。 最后一个 honghspace 缓冲器被分成4个大小为 RHOMAX 长度的 ping、pong、peng 和 pang 缓冲器。 这些缓冲器会更新、假设它们是对齐访问。 因此、您也需要对此进行考虑。

    无论如何、我有一个问题:当你将2274的 maxRho/maxtheta 返回到图像坐标时、它是否代表了图像中的垂直线?

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

    您是说 Draw 行函数吗? 是的、它输出正确的 x 坐标和 y 坐标并正确绘制在直线中(从[500:0]到图像中的[500:99])。 所以我猜它工作正常、但 maxRho 值失真、这是我不理解的。

    对于工作假设、我做了一些权变措施、并使用公式 Rho =(x * cos (Theta)+ y * sin (Theta))计算了 x、y 和 Theta 的"实际" Rho、该公式目前可以正常工作。

    此致、
    托比亚斯
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    那么、您知道吗、为了获得500或2420 (1920+500)的 maxRho 值、我必须为 RHOMAX 或 Draw ()中的"直径"参数使用哪一个确切的值? 因为从定义上讲、这是正确的 Rho 值、我对吗? (请参阅 此处的 en.wikipedia.org/.../Hough_transform) 这些是我可以更轻松地使用的值。

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

    正如我之前提到的、请考虑内核中使用的直径公式、以及内核中完成的所有优化、并相应地设置 rhomax。 我没有亲自尝试过、因此我不知道您的具体示例的答案。