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