2010-08-22 181 views
7

我需要使用邊緣檢測技術統計倉庫中的盒子;圖像將從倉庫的3D模型中獲取,並且建議的系統將以3個不同角度使用3幅圖像來覆蓋倉庫的整個區域。圖像邊緣檢測

因爲在對使用哪種算法感到困惑之前,我對圖像處理沒有經驗。

+1

嘗試http://stackoverflow.com/questions/1391212/best-articles-to-start-learning-about-edge -detection-image-recognition – PaulG 2010-08-22 09:32:59

+3

這是一個非常非常複雜的問題來解決!我懷疑你會收到全面的答案,你最好的選擇可能會搜索一些研究論文的谷歌。 – 2010-08-23 10:29:01

+4

對不起,這聽起來像「我沒有駕駛經驗,你能告訴我如何從倫敦飛往東京747」。閱讀一些關於圖像處理和計算機視覺的書籍,實施算法並對其進行實驗。在你這樣做之前,我認爲你不能解決這樣的問題。 – Niki 2010-08-23 20:20:46

回答

10

對於一個快速啓動,我建議在看這兩個:

這些是非常好的結果。使用最廣泛的邊緣檢測過濾器。

如果您開始學習計算機視覺,您還應該瞭解typical operations in image processingconvolution

OpenCV library是一個偉大的庫,它實現了許多計算機視覺算法,包括上面提到的兩個運算符。

+0

非常感謝你的評論,我選擇了canny作爲我的alogrithm, 如果我使用OpenCV或Mathlab,我的講師不會太高興,請問你有什麼建議可以找到C#中canny實現的細節或教程嗎? – sha123 2010-08-22 09:57:59

+0

有一個很好的CodeProject文章關於Canny在C#中的實現:http://www.codeproject.com/KB/cs/Canny_Edge_Detection.aspx – 2010-08-22 19:09:39

1

結賬AForge。它具有完整的C#實現一些邊緣檢測算法。

+0

k我會檢查,非常感謝你4評論 – sha123 2010-08-22 10:51:55

0

看一看Image Processing Library for C++的問題。你可以在這裏找到幾個有用的鏈接。建議的庫不僅有算法描述,而且還有它們的實現。

+0

謝謝你的評論,但我使用C#作爲我的編程語言 – sha123 2010-08-23 10:46:15

+0

肯定會由您決定。但是這個級別的圖像處理是相當耗費資源的東西,性能很重要。因此將其委託給託管的運行時將是不明智的。 OpenCV有一些低級優化,他們甚至建議英特爾處理器明確。但是如果你堅持使用C#,你可以在非託管DLL之上輕鬆創建託管包裝。 – 2010-08-23 18:43:09

0

看看我的兩個edge detection tutorials - 一個基於卷積,另一個 - 只是簡單的數學。哦,你必須熱愛像素着色器閱讀本:)

問候

0

OpenCV的一個非常好的算法檢測圖像中的封閉輪廓和將它們作爲點名單。然後,您可以丟棄所有沒有4點的輪廓,然後檢查其餘部分(長方形的長寬比等)的一些約束,以找到剩餘的盒子邊。這至少應該解決圖像處理問題的一部分,但將這些輪廓列表轉換爲倉庫中的盒子數量會很困難。

檢查這裏OpenCV的功能:

http://opencv.willowgarage.com/documentation/structural_analysis_and_shape_descriptors.html#findcontours

http://opencv.willowgarage.com/documentation/drawing_functions.html#drawcontours