2011-07-20 113 views
0

我有一个笔划点的列表,我想检测这个笔划是否是矩形。 因此4个角度大约为90度。之后我需要矩形的大小,位置和方向。识别矩形形状

我正在使用C#,但其他语言或伪代码中的算法也是有用的。

感谢

+0

是你使用winforms? – Illuminati

+0

你已经做了什么? –

+0

不,我正在使用WPF。我已经做的是计算所有点之间的角度,但不认为这会起作用... – Tom

回答

1

嗯,我做了这样的事情在不久前。
您可以下载here
http://up352.siz.co.il/up2/lhmjmdenn53m.png
这个东西允许你检测边缘 - 因为你看到它的相当准确。
当你得到的边缘,你需要的是计算它们之间的角度 - 如果它是~90那么它是一个矩形。

1

我会假设你收集每个笔画成一个单独的列表:

  1. 找到趋势线行程(我开始Simple linear regression此)。
  2. 找到每两条相交的趋势线之间的角度(与具有某个阈值的90度相比)。
  3. 查找任何趋势线的取向(角度)以获得形状的方向(当然,任何接近0模90度的东西与正方形情况下的0相同)。
  4. 找到任何趋势线(从一个交叉点到另一个交叉点的距离)以及它的相邻(相交)线的长度的长度,这两个长度将是您的长度和宽度(或宽度和高度如果你喜欢)尺寸计算(面积,或其他)。

    • 在第1步中,您可以使用许多趋势线计算算法,并且您可能需要花些时间检查其中的几个。

如果所有点都采样到同一集合,首先需要打破这种收集到4招(这是它自己的一个任务,虽然...艰巨的任务)