Math 检测点阵列中的形状

Math 检测点阵列中的形状,math,Math,我有一系列的要点。我想知道这个点阵列代表的是圆、正方形还是三角形 我应该从哪里开始?(我用C#) 谢谢 Jon我要大刀阔斧地说,如果你有3个点,形状代表一个三角形,4个点是某种四边形,就像那是一个圆一样 也许您可以提供更多关于您的问题的信息。想象一下,一个接一个地是这些图形,然后尝试在数据上拟合这些图形。。对于正方形,您可以找到四个极端点,然后尝试绘制一个穿过所有这些点的正方形。 一旦你有了一个合适的形状。。您可以测量每个点与形状最接近的部分之间的距离。。然后将这些距离平方并相加。。具有最小平方

我有一系列的要点。我想知道这个点阵列代表的是圆、正方形还是三角形

我应该从哪里开始?(我用C#)

谢谢
Jon

我要大刀阔斧地说,如果你有3个点,形状代表一个三角形,4个点是某种四边形,就像那是一个圆一样


也许您可以提供更多关于您的问题的信息。

想象一下,一个接一个地是这些图形,然后尝试在数据上拟合这些图形。。对于正方形,您可以找到四个极端点,然后尝试绘制一个穿过所有这些点的正方形。

一旦你有了一个合适的形状。。您可以测量每个点与形状最接近的部分之间的距离。。然后将这些距离平方并相加。。具有最小平方和的形状可能是您的最佳选择。

根据您的问题,解决此问题的一个好方法可能是使用及其派生算法

它包括图像空间到其他空间的转换,其中坐标表示对象参数(直线的角度和初始点、圆心的坐标和半径)

该算法将在其他空间的点中变换点阵列的每个点。然后,如果某些点占主导地位,您必须在新空间中搜索。从这些点,您将获得对象的参数

当然,你需要做一次识别线(这样你就能知道位图中有多少线以及它们在哪里)和识别圆(这不是完全相同的算法)

您可以查看(Hough圆变换),但可以轻松找到直线的算法

编辑:你也可以看看这些答案


哦,是的。我有500多个点,需要弄清楚我是有直线还是有圆,我有一个(x,y)的数组。一直有几百个。我需要弄清楚这后面的形状,这些点应该在形状的周长上,还是在形状的内部?不,对不起,但据我所记得的,算法非常简单(但仍然需要一些工作):a)用数学变换在新图像中变换图像(只需要应用公式)b)需要寻找最重要的点(即值大于给定阈值的点)c)应用逆变换(同样使用公式),得到直线/圆的坐标d)根据线的数量,可以知道是三角形还是正方形(假设只有一个对象需要识别)是的,这是Hough变换的优点。例如,如果圆不是完美的(例如,如果它是模糊的),则新图像(在变换的空间中)将没有一个点这个值非常高,但你会有几点,所有邻居,如果我不清楚(但在讲座中已经很好地解释了),请告诉我是否有javascript中的库来详细说明这一点?