Matlab 对像素化二维曲线进行多边形化

Matlab 对像素化二维曲线进行多边形化,matlab,endpoints,Matlab,Endpoints,我有一堆像素化的二元曲线(也就是说,如果曲线在其上运行,像素为1,否则为0),我正在寻找一种算法,可以返回一个多边形链,很好地逼近曲线。像素化曲线通常只有一个像素薄,并且它们是完全连接的。我查阅了一些文献,但我的主要问题似乎是我甚至不知道曲线的端点在哪里 有谁知道有什么算法可以在合理的时间内做到这一点?如果有区别,我将在MATLAB中实现它。您可以尝试查看活动轮廓算法(或者蛇,如果您愿意)。 它将尝试根据分数图像找到局部最优多边形。曲线转弯时,它将自动处理线段长度。因为你已经有了一个二值图像和

我有一堆像素化的二元曲线(也就是说,如果曲线在其上运行,像素为1,否则为0),我正在寻找一种算法,可以返回一个多边形链,很好地逼近曲线。像素化曲线通常只有一个像素薄,并且它们是完全连接的。我查阅了一些文献,但我的主要问题似乎是我甚至不知道曲线的端点在哪里


有谁知道有什么算法可以在合理的时间内做到这一点?如果有区别,我将在MATLAB中实现它。

您可以尝试查看活动轮廓算法(或者蛇,如果您愿意)。

它将尝试根据分数图像找到局部最优多边形。曲线转弯时,它将自动处理线段长度。因为你已经有了一个二值图像和你的曲线,这部分应该工作得很好。它并不完全适合您的问题,因为它通常设计用于处理闭合轮廓。但是,我认为它可能会起作用(只需闭合曲线两端之间的多边形),或者可以进行调整。如果您的曲线非常接近,它可能无法工作,因为它会寻找局部最小值,并且很容易被卡住

它并没有那么快,需要适当的初始化。如果它们始终是完全相连的,那么您最好自己来处理它们,但这可能意味着从头开始

您可以从可用的工具箱开始(还有很多其他工具箱):

您可以尝试查看活动轮廓算法(或蛇,如果您愿意)。

它将尝试根据分数图像找到局部最优多边形。曲线转弯时,它将自动处理线段长度。因为你已经有了一个二值图像和你的曲线,这部分应该工作得很好。它并不完全适合您的问题,因为它通常设计用于处理闭合轮廓。但是,我认为它可能会起作用(只需闭合曲线两端之间的多边形),或者可以进行调整。如果您的曲线非常接近,它可能无法工作,因为它会寻找局部最小值,并且很容易被卡住

它并没有那么快,需要适当的初始化。如果它们始终是完全相连的,那么您最好自己来处理它们,但这可能意味着从头开始

您可以从可用的工具箱开始(还有很多其他工具箱):

也许可以研究一下图像处理技术(膨胀、腐蚀等),你能发布一张样本图像吗?根据形状,有一些简单的解决方案,例如
[x,y]=find(BW);sp=样条曲线(x,y);fnplt(sp)也许研究一下图像处理技术(膨胀、腐蚀等等),你能发布一张样本图像吗?根据形状,有一些简单的解决方案,例如
[x,y]=find(BW);sp=样条曲线(x,y);fnplt(sp)