答案取决于上下文:如果您仅研究少量(有界)段,则可能能够提供计算上昂贵的解决方案。但是,您似乎可能希望将此计算合并到某种形式的对良好标记点的搜索中。如果是这样,那么具有一个计算速度快或在候选线段略有变化时允许快速更新解决方案的解决方案将非常有利。
例如,假设您打算进行系统的搜索分布在轮廓的整个连接分量上,表示为点P(0),P(1),...,P(n)的序列。这可以通过将一个指针(序列的索引)s = 0(“ s”表示“开始”)和另一个指针f(用于“ finish”)初始化为距离(P(f), P(s))> = 100,然后将s向前推进,直到距离(P(f),P(s + 1))> =100。这将生成候选折线(P(s),P(s + 1)...,P(f-1),P(f))进行评估。评估其“适合度”以支持标签后,您将s加1(s = s + 1),然后将f增加到(例如)f',将s增加到s',直到候选折线再次超过最小值跨度为100,表示为(P(s'),... P(f),P(f + 1),...,P(f'))。这样,顶点P(s)... P(s' 高度期望可以仅根据落下和添加的顶点的知识来快速更新适应度。 (此扫描过程将一直持续到s = n;照例,在此过程中,必须允许f从n“回绕”到0。)
这种考虑排除了健身的许多可能的措施(弯度,弯曲度等),否则可能是有吸引力的。它使我们支持基于L2的度量,因为当基础数据稍有变化时,它们通常可以快速更新。与主成分分析类似,建议我们采取以下措施(应要求,取小者为佳):使用协方差矩阵的两个特征值中较小的一个点坐标。在几何上,这是折线的候选部分内顶点“典型”侧向偏移的一种度量。(一种解释是,它的平方根是椭圆的较小半轴,代表折线顶点的第二惯性矩。)仅对于共线顶点集,该值等于零;否则,它将超过零。它测量相对于由折线的起点和终点创建的100像素基线的平均左右偏差,从而具有简单的解释。
因为协方差矩阵只有2 x 2,所以通过求解单个二次方程可以快速找到特征值。此外,协方差矩阵是折线中每个顶点的贡献之和。因此,当删除或添加点时,它会快速更新,从而导致针对n点轮廓的O(n)算法:这将很好地缩放到应用程序中设想的高度详细的轮廓。
这是此算法的结果示例。黑点是轮廓的顶点。红色实线是该轮廓内端到端长度大于100的最佳候选折线段。(右上角视觉上明显的候选对象不够长。)