【问题标题】:3D mesh edge detection / feature line computation algorithm3D网格边缘检测/特征线计算算法
【发布时间】:2016-01-26 04:28:34
【问题描述】:

我有一个程序可以可视化三角形网格并允许用户使用笔在网格上绘图。我想在我的系统中有一个“捕捉”模式。捕捉模式为用户执行绘图校正,因为用户绘制的线捕捉到网格的该部分最近的边缘(或轮廓)。

我正在寻找一种算法,可以从给定的角度计算网格上可见的边缘。通过边缘,我指的是形状的轮廓:角点和它们之间的线(类似于计算机视觉/图像处理中边缘的定义——例如 Canny 边缘)。

到目前为止,我已经想到了两种方法:

  1. 边缘检测:目前我只找到this paper。他们的方法是可以理解的,但实现并不简单(由于张量计算和他们的解释有些模糊)。这种方法的问题在于它会产生“边缘强度值”,它是每个顶点的 [0, 1] 范围内的值。值为 1 表示具有高置信度的边顶点。这在系统中引入了我不想拥有的额外阈值参数。他们的输出看起来像这样(范围 [0, 1] 缩放到 [0, 65535]):

  2. 渲染或非真实感方法,例如在this questionthis paper 中提出的方法。他们似乎能够创造出我所追求的轮廓,如下所示: 我不是图形专家,目前我不知道他们的方法是否可以用于计算特征线而不是渲染。

我想知道是否有人对我想做的好算法有任何想法。由于系统交互性很强,因此性能很重要。捕捉功能不必一直启用(因此,如果该方法计算量很大,则在算法计算边缘时,可以容忍切换“捕捉启用”模式时的一些延迟。)另外,如果你知道任何实现(最好是开源),如果您能与我分享,我将不胜感激。

【问题讨论】:

    标签: algorithm graphics mesh


    【解决方案1】:

    您要检测两种类型的边缘:

    • 轮廓边缘取决于视点,它们对应于视线与曲面相切的位置。使用三角模型,它们很容易确定,因为它们由一个正面三角形和一个背面三角形共享。

    • “角”边与视点无关,由切平面方向的不连续性形成。由于三角模型本身就有这种不连续性,因此没有准确的标准来找到它们。只需在两个三角形形成的角度上设置一个阈值。此阈值必须确保不会触发平滑补丁。

    通过这种方法,您将在 3D 中找到想要的边缘。

    这还不够,因为它们的一部分被其他表面隐藏了。您可以选择将它们作为边缘集成到 3D 模型中并让渲染引擎完成其工作,或者,如果您有勇气,可以实现 hidden lines removal 算法。 (维基百科链接有点简洁。)

    【讨论】:

    • 感谢您的解释!您提到的第一种方法似乎更适合我的情况(因为用户将从单个角度用笔绘制,然后旋转/平移模型并从不同的角度绘制)。具体计算如何?对于每个三角形,如果有一个相邻的背面三角形,我们可以假设其中一个边是我们正在寻找的“那个”边?
    • @M2X:也许我解释得不够清楚。您无法选择另一种,您需要同时处理两者(除非您的对象没有显着边缘)。
    • @M2X:你可以依次考虑每条边,知道它所属的两个三角形。此信息通常在您进行网格剖分时可用。如果它丢失了,你需要重建它。
    • @YvesDaoust,你有什么纸可以推荐“棱角”边缘吗?
    • @YvesDaoust 我认为您的见解是正确的,我正在研究一个角度版本的 atm,但我找不到类似的发布。
    【解决方案2】:

    自从发布这个问题后,我的脑海中浮现出别的东西。由于 2D 边缘检测是一个经过充分研究的问题,解决该问题的一种方法是对网格的投影图像执行 2D 边缘检测。

    换句话说,给定网格的特定视图,可以生成 2D 图像。然后可以在 2D 图像上运行 2D 边缘检测算法(例如 Canny 边缘检测器),并将结果反投影到 3D 以确定相关网格的轮廓。这样做的一个可能优点是简单!

    编辑(2017 年):

    即使我离开了这个问题,我还是出于不同的目的再次回到这个问题上。对于其他研究此问题的人:there is a paper 讨论了值得一读的网格中的各种轮廓(论文是 DeCarlo 等人的“用于传送形状的建议轮廓”)。

    本文讨论的方法的工作实现是available here

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-04
    • 1970-01-01
    • 1970-01-01
    • 2015-11-30
    • 2021-06-02
    • 2013-11-19
    • 1970-01-01
    相关资源
    最近更新 更多