2009-08-19 140 views
4

我需要計算多邊形周圍的最小面積矩形(最小可能的矩形)。計算多邊形的最小面積矩形

我唯一的輸入是多邊形中的點數。

我也有點的協調。

+1

只有數量的點共面反轉?還是你有協調? – Naveen 2009-08-19 05:59:49

+0

它是一個常規的形狀? – nickf 2009-08-19 05:59:57

+4

多邊形是否處於任意方向或矩形必須與座標系正交? – 2009-08-19 06:03:29

回答

5

rotating calipers算法用於凸多邊形,否則使用凸包。你當然需要多邊形中點的座標,而不僅僅是點的數量。

+0

我認爲這將幫助我..更確切地說,我必須計算多邊形的寬度和長度! – Samra 2009-08-19 06:12:45

+1

這不是問題:在應用該算法時,可以依次計算與每個邊對齊的邊界框的寬度和長度。 – p00ya 2009-08-19 07:33:59

-2

顯然,您需要點的座標才能得到答案。如果矩形與X和Y aces對齊,那麼解決方案很簡單。如果你想要任何角度的最小矩形,那麼你需要做一些優化過程。

+0

感謝mark for ur comment 是的,我需要任何角度的直腸。 你能不能詳細說明優化過程 – Samra 2009-08-19 06:18:14

+0

有幾個人已經提到了旋轉卡尺算法。這基本上是如何完成的。您可以使用基本的最小/最大邊界框,但座標系會旋轉到每個邊的角度。 – 2009-08-21 05:25:22

7

這叫做Minimum Bounding Box,它是OCR包中使用的最基本的算法。您可以使用OpenCV包裝中的旋轉卡尺來查找實現。一旦你的源代碼,看看這個文件,

cv/src/cvrotcalipers.cpp 

你需要的方法是cvMinAreaRect2()

+0

我無法找到這個方法。 你能給我這個精確的 謝謝 – Samra 2009-08-19 07:45:26

+0

它在這裏http://www.google.com/codesearch/p?hl=en&sa=N&cd=1&ct=rc#WMkTvnMDpLM/cv/src/cvrotcalipers.cpp&q=cvMinAreaRect2 – 2009-08-19 11:10:41

0

按照下面的算法

  1. 多邊形旋轉到XY平面
  2. 選1個邊緣和調整與X軸(使用反正切)這個邊緣。使用min/max x,y查找邊界矩形。計算區域並存儲在列表中
  3. 對剪切後的多邊形中的其餘邊執行相同操作。
  4. 選取最小面積的矩形。
  5. 旋轉邊界矩形回的步驟1和步驟2

用於更詳細地檢查鏈接Minimum-Area-Rectangle