2013-10-07 158 views

回答

5

我想在這裏你已經擁有了Canny edge detection implemented基於的問題是制定了道路 -

可以使用的方法such as this(用Java編寫的,但應該很容易翻譯成JavaScript)和/或也許有些有限使用line-fitting approaches(統計)。

其實質是,你將不得不找出哪些像素連接,並根據邊緣檢測的結果創建多邊形對象/數組。

一旦擁有連接的像素,您可以使用點減少算法(如Ramer–Douglas–Peucker算法(JavaScript implementation here))避免多邊形包含類似斜線等的每個單點。

你會遇到各種各樣的挑戰,儘管由於原始圖像或「弱線」中過多的噪聲導致短分段線條,「線條」簇使得很難找出如何將它們連接爲多邊形。

0

我不知道這方面的任何庫的,但是你可以:

  • 使用getImageData()訪問一個byte []像素數據的
  • 對這些數據的頂端實現自己的卷積濾波器(這個例子可以在線存在)

通過這種方式,你可以找到的高對比度區域(邊緣)

編輯我同意肯 - 我可能誤解了這個問題。

除了肯的回答,如果你知道你正在尋找什麼樣的形狀,那麼你可能會喜歡看Hough Transform,它非常適合檢測線條,橢圓和其他形狀,只能使用幾何定義幾個參數。