【发布时间】:2016-01-26 04:28:34
【问题描述】:
我有一个程序可以可视化三角形网格并允许用户使用笔在网格上绘图。我想在我的系统中有一个“捕捉”模式。捕捉模式为用户执行绘图校正,因为用户绘制的线捕捉到网格的该部分最近的边缘(或轮廓)。
我正在寻找一种算法,可以从给定的角度计算网格上可见的边缘。通过边缘,我指的是形状的轮廓:角点和它们之间的线(类似于计算机视觉/图像处理中边缘的定义——例如 Canny 边缘)。
到目前为止,我已经想到了两种方法:
边缘检测:目前我只找到this paper。他们的方法是可以理解的,但实现并不简单(由于张量计算和他们的解释有些模糊)。这种方法的问题在于它会产生“边缘强度值”,它是每个顶点的 [0, 1] 范围内的值。值为 1 表示具有高置信度的边顶点。这在系统中引入了我不想拥有的额外阈值参数。他们的输出看起来像这样(范围 [0, 1] 缩放到 [0, 65535]):
渲染或非真实感方法,例如在this question 或this paper 中提出的方法。他们似乎能够创造出我所追求的轮廓,如下所示: 我不是图形专家,目前我不知道他们的方法是否可以用于计算特征线而不是渲染。
我想知道是否有人对我想做的好算法有任何想法。由于系统交互性很强,因此性能很重要。捕捉功能不必一直启用(因此,如果该方法计算量很大,则在算法计算边缘时,可以容忍切换“捕捉启用”模式时的一些延迟。)另外,如果你知道任何实现(最好是开源),如果您能与我分享,我将不胜感激。
【问题讨论】: