我有一堆像素化的二进制曲线(也就是说,如果曲线越过像素,则像素为 1,否则为 0),我正在寻找一种算法,该算法可以返回很好地近似曲线的多边形链。像素化曲线通常只有一个像素细,它们是完全连接的。我为此查阅了一些文献,但我的主要问题似乎是我什至不知道曲线的端点在哪里。
有谁知道可以在合理的时间内做到这一点的任何算法?如果它有所作为,我将在 MATLAB 中实现它。
您可以尝试查看 Active Contours 算法(或 Snakes,如果您愿意)。 http://en.wikipedia.org/wiki/Active_contour_model
它将尝试根据分数图像找到局部最优的多边形。当曲线转动时,它会自动处理线段长度。由于您已经有了带有曲线的二进制图像,因此该部分应该可以正常工作。它并不完全适合您的问题,因为它通常设计用于处理闭合轮廓。但是,我认为它可能无论如何都可以工作(只需关闭曲线末端之间的多边形)或可以进行调整。如果您的曲线非常接近,则它可能无法工作,因为它会寻找局部最小值并且很容易卡住。
它不是那么快,并且需要适当的初始化。如果它们始终完全连接,您最好自己逐步完成它们,但这可能意味着从头开始。
您可以从可用的工具箱开始(还有很多其他工具箱): http: //www.mathworks.com/matlabcentral/fileexchange/11643-active-contour-toolbox