Mar*_*arc 8 language-agnostic geometry image-processing
想象一下,我有一个热狗的二维图像.我可以在两端的热狗上划一条直线.称之为中线.它的一个特性是它是(2D)热狗具有最低惯性矩的轴.
现在,如果我将热狗弯成弧形,这条中线也会扭曲.
鉴于弯曲的热狗的图片,我如何确定这个弯曲的中线?该算法应该容忍图像中适量的噪声.
如果我理解你的问题,你需要穿过你的物体的一条线,其中每个点都在物体的中间,即如果你从中线的任何一点开始并沿垂直于中线的方向行走,你必须走同样的路线.两个方向上的距离,直到您遇到对象的边界:

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

如果你为每一点都这样做,你应该得到更好的近似中线.
我说这很快和很脏,因为我不确定是否只是重复这个过程总是收敛到一个稳定的解决方案.这可能取决于在弯曲和扭结的情况下如何计算中线的垂直方向.
解决这个问题的一种方法是使用更具物理风格的模型:

要找到这一行,我会使用类似于活动轮廓/蛇的算法:
您需要为曲线的这些平滑度调整一些参数(与活动轮廓一样),但是您获得定义明确且表现良好的近似值的机会远远优于上述简单方法.