2011-07-20 111 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招(這是它自己的一個任務,雖然...艱鉅的任務)