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

时间:2017-09-27 13:46:18

标签: c# image-processing emgucv opencv-contour

图像轮廓是一个阵列点。我需要在每一侧接近两个点以创建四个线段。

Image contour

2 个答案:

答案 0 :(得分:0)

一种可能的方法。

找到这些点的凸包。

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

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

现在你可以使用由这四个顶点组成的四边形。

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

enter image description here

答案 1 :(得分:0)

另一个使用凸包的人:

找到点集的凸包

计算凸壳弧长。

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

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

这给出了良好的效果,并且通常用于车牌检测同样的问题。