线段近似图像轮廓的简单算法

Simple algorithm for approximation image contour for line segment

图像轮廓是一个数组点。我需要在每边接近两个点来创建四个线段。

Image contour

一种可能的方法。

求出这些点的凸包

然后找出距离最远的两个顶点。这给出了第一个对角线。

然后找到离第一条对角线最远的另外两个顶点。这给出了第二个对角线。

现在就可以直接用这四个顶点组成的四边形了

如果您想要更紧密的拟合,您可以考虑由对角线定义的四个象限中的点子集,并计算最佳拟合线,例如通过最小二乘法。

另一个也使用凸包:

求点集的凸包

计算凸包弧长。

最后计算出误差等于弧长 10% 的近似多项式等高线(如果超过 4 个点会增加误差百分比)

CvInvoke.ApproxPolyDP(vec, vecApprox, 0.1 * arcLength, true);

这给出了很好的结果,通常用于车牌检测也是同样的问题。