假设我有一个热狗的二维图像。我可以在热狗的两端之间画一条直线。这就是中线。它的一个属性是它是(2D)热狗绕其具有最小转动惯量的轴。
现在如果我把热狗弯成弧形,这条中线也会变形。
给出一张弯曲的热狗的照片,我如何确定这条弯曲的中线?该算法应该容忍图像中的适量噪声。
发布于 2010-12-30 03:34:03
如果我理解你的问题,你想要一条线穿过你的对象,每个点都在对象的中间,也就是说,如果你从中线上的任何一点开始,沿着垂直于中线的方向走,你必须在两个方向上走同样的距离,直到你遇到对象的边界:

(这只是一个例子--可能不是几何校正的中线!)
我的快速解决方案是从一个中轴(可以很容易地从一阶和二阶矩计算出来)开始,通过取这条线上的每个点来细化它,在与当前方向垂直的线上找到该点上最近的边界点,然后将该点移动到这两个点的几何中心:

如果你对每个点都这样做,你应该会得到一个更好的中线近似值。
我说这是快速和肮脏的,因为我不确定简单地重复这个过程是否总是收敛到一个稳定的解决方案。这可能取决于在存在折弯和扭结的情况下如何计算中线的垂直方向。
绕过这一问题的一种方法是使用更受物理启发的模型:

为了找到这条线,我会使用类似于活动轮廓/蛇的算法:
的好文章
您将需要调整一些参数来获得这些曲线的平滑度(与活动轮廓一样),但您获得定义良好且行为良好的近似值的机会远远好于上面的简单方法。
发布于 2010-12-30 00:14:36
也许你可以skeletonize你弯曲的热狗。
您必须首先对其进行thresold,然后使用细化算法。
这里有一些很酷的链接:
http://xphilipp.developpez.com/contribuez/Skeleton-Algorithm.pdf http://www-prima.inrialpes.fr/perso/Tran/Draft/gateway.cfm.pdf http://www.geometrictools.com/Documentation/Skeletons.pdf
发布于 2010-12-30 02:27:58
如果骨架化方法不起作用,你可能会看到一个更难的问题--这带来了许多问题:你的形状有多大的限制?它们总是凸的吗?根据答案,您可能会考虑将形状参数化。
首先,我会考虑计算凸壳(google QHull),然后确定形状的Delaunay三角剖分。从那里,我相信你可以计算一个Voronoi图,并实现你需要的中线。注意:这是大量的工作--考虑到这种程度的努力,看看一个简单的框架是否可以调整到足够的程度,这可能会有所帮助。
https://stackoverflow.com/questions/4555682
复制相似问题