线段近似图像轮廓的简单算法
Simple algorithm for approximation image contour for line segment
图像轮廓是一个数组点。我需要在每边接近两个点来创建四个线段。
Image contour
一种可能的方法。
求出这些点的凸包
然后找出距离最远的两个顶点。这给出了第一个对角线。
然后找到离第一条对角线最远的另外两个顶点。这给出了第二个对角线。
现在就可以直接用这四个顶点组成的四边形了
如果您想要更紧密的拟合,您可以考虑由对角线定义的四个象限中的点子集,并计算最佳拟合线,例如通过最小二乘法。
另一个也使用凸包:
求点集的凸包
计算凸包弧长。
最后计算出误差等于弧长 10% 的近似多项式等高线(如果超过 4 个点会增加误差百分比)
CvInvoke.ApproxPolyDP(vec, vecApprox, 0.1 * arcLength, true);
这给出了很好的结果,通常用于车牌检测也是同样的问题。
图像轮廓是一个数组点。我需要在每边接近两个点来创建四个线段。
Image contour
一种可能的方法。
求出这些点的凸包
然后找出距离最远的两个顶点。这给出了第一个对角线。
然后找到离第一条对角线最远的另外两个顶点。这给出了第二个对角线。
现在就可以直接用这四个顶点组成的四边形了
如果您想要更紧密的拟合,您可以考虑由对角线定义的四个象限中的点子集,并计算最佳拟合线,例如通过最小二乘法。
另一个也使用凸包:
求点集的凸包
计算凸包弧长。
最后计算出误差等于弧长 10% 的近似多项式等高线(如果超过 4 个点会增加误差百分比)
CvInvoke.ApproxPolyDP(vec, vecApprox, 0.1 * arcLength, true);
这给出了很好的结果,通常用于车牌检测也是同样的问题。