Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 直线段图像轮廓近似的简易算法_C#_Image Processing_Emgucv_Opencv Contour - Fatal编程技术网

C# 直线段图像轮廓近似的简易算法

C# 直线段图像轮廓近似的简易算法,c#,image-processing,emgucv,opencv-contour,C#,Image Processing,Emgucv,Opencv Contour,图像轮廓是一个阵列点。我需要在每一侧接近两个点来创建四条线段 一种可能的方法 找到这些点的凸包 然后找到相距最远的两个顶点。这给出了第一条对角线 然后找到距离第一条对角线最远的两个其他顶点。这给出了第二条对角线 现在您可以使用由这四个顶点形成的四边形 如果你想要更紧密的拟合,你可以考虑由对角线定义的四个象限中的点的子集,并计算最佳拟合线,例如用最小二乘法。< /P> 另一个也使用凸面外壳: 求点集的凸包 计算凸包弧长 最后计算一个近似多项式轮廓,如果超过4个点的误差增加了百分之十,则误差等于弧长

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

一种可能的方法

找到这些点的凸包

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

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

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

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


另一个也使用凸面外壳:

求点集的凸包

计算凸包弧长

最后计算一个近似多项式轮廓,如果超过4个点的误差增加了百分之十,则误差等于弧长的百分之十

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

这会产生很好的效果,通常用于车牌检测,但也存在同样的问题。

请澄清您的具体问题或添加其他详细信息,以突出显示您所需的内容。正如目前所写的,很难说清楚你在问什么。那么,当你试图实现这一点时,问题是什么?StackOverflow不是代码编写服务。预计您已经做了一些研究,并试图自己解决这个问题。有关更多信息,请参阅并阅读该页。然后编辑问题以反映这一点。这种使用赫尔凸的方法确实简单有效。谢谢