2013-03-19 163 views
4

我剛開始探索OpenCV和它的EmguCV .NET包裝器,需要大家瞭解其功能的全貌和可能是那些解決類似於我需要完成。零件識別/ OpenCV分類

我會有一系列的靜態照片,並在每個圖像中會出現一個對象或沒有任何東西。這些物體是金屬硬件(螺栓),並將以它們的長度平行於圖像的頂部/底部放置(即,圖片從上面拍攝)。如果有物體,它將是大約100個離散類型的螺栓中的一個,其中一些具有非常相似但不相同的特徵和尺寸。例如,它們在輪廓上大部分都是矩形的,但是其長度和寬度(直徑)會有所不同,並且可以具有六角形或圓形的頭部(這將在輪廓中分別被看作長方形或圓形的小部分) )或者將具有用於沉頭應用的圓錐形頭部。類型我說的是部分的說明(這只是爲了顯示類型的部件 - 我的圖片是單件的照片):

An Illustration http://donsnotes.com/home_garden/images/bolts-type.gif

我需要把它們歸類,使得各種規模和類型是有區別的。即使是相同直徑且頭部類型相同的1-3/8「螺栓應該與1-1/2」螺栓不同。尺寸之間的最小長度差將是1/8「,而不是標準的1/16」。

如果它的事項,我有以下的良好控制:

  • 照明(但背光將不會成爲現實)
  • 背景的外觀(可能爲背景扣除有用?)
  • 從相機到物體的距離(相同的物體將 始終顯示爲在圖像中的大小相同)
  • 通常,螺栓的位置 - 這將在 水平鋪設其與圖像 框架的頂部/底部邊緣平行。我無法控制它的頭是否在 的圖像左側或右側。

不幸的是,我找不到任何在線論文或文章,直接解決我需要做的事情 - 但很多說明簡單的任務,如找到彩色的球或尋找矩形。我無法找到識別和分類大量(ish)數量不同但相似形狀的任何內容。我確實有兩個建議的OpenCV書籍,儘管它們很棒,但它們似乎沒有解決這個問題。

我發現在我的樣品圖像上很乾淨的Canny邊緣,但由於照明,零件內部有很多噪音。這使得找到乾淨的霍夫線段有點多斑點。

我不確定如果我應該嘗試使用通過跨Canny邊測量計算的絕對尺寸精簡可能的匹配列表,然後使用像級聯分類器一樣更穩健的東西......?或者是什麼。

我真的只是想找個人對一個總體戰略,或在正確的方向點意見...

誰能給我點開始嘗試?我真的很茫然。

謝謝!

+1

嗡嗡聲,這聽起來像一個噩夢般的3人/月(或更多)軟件開發項目,如果純粹用相機完成。你不能獲得額外的信號?現在數字讀數的比例很便宜,它可能會減少搜索空間。亞知道,計算機視覺的第二定律:「計算機視覺沒有問題,無法通過足夠的硬件來解決」;-) – 2013-03-20 01:04:58

+0

考慮添加其他功能,而不僅僅是圖像功能,以「雜草」瞭解一個實例可能會/可能不會。我想到的是重量。但是和其他人一樣,你是這個領域的專家,所以你需要成爲具有高級特色的人。不幸的是,純粹的圖像分類將非常困難,除非您能夠消除大部分上述圖像噪點(如照明)。 – Porkbutts 2013-03-20 22:29:46

+0

謝謝,夥計們,您的意見。我希望我能衡量他們,但他們正在[快速]運動。這足以讓照明和快門速度正確。阻止他們進行稱重並不切實際,我相當肯定我承受不起任何能夠可靠地衡量他們動作的東西! – 2013-03-21 17:24:32

回答

2

從我的經驗,我會建議你以下。你比我們大多數人都知道如何手動分類,對吧?所以想想你分類時發生在你的大腦裏的事情。假設你從頂視圖看到一個圓形的形狀,那麼現在你的問題變成了如何識別那個形狀?在這裏發佈這樣的問題,對其他人來說會容易得多。特徵提取不過是大腦在看到該對象時所想的。

對於這個問題,我建議你先保留一個黑暗的背景,這樣就有必要二值化該圖像。然後,如果它是一個頂視圖,你可以看到一個圓形,六邊形等,然後只得到邊緣。然後得到一個最小的邊界圓並得到它的直徑。算法和代碼找到最小的邊界圈可以獲得here

就形狀而言,我建議您採用該二值圖像的梯度,然後僅在邊緣點(您在頂視圖中獲得)計算該梯度的角度。該漸變的直方圖將成爲您的特徵向量。看到不同形狀的條形圖。如果你的大腦可以區分,那麼你可以考慮使用哪個分類器。我現在不想對此評論,因爲它取決於許多事情,例如功能分佈,可分離性以及最重要的速度要求。但現在不用擔心分類器。

現在,讓我們嘗試解決高度。我假設你可以得到前視圖,然後計算邊界框(你可以從MATLAB中的regionprops函數中獲得)。

請注意,我只是想象和談論所有這些事情。你必須先在第一段中說出我所說的,然後看看答案的其他部分是否對你有意義。我假設你有一定的數學背景來理解這個答案中的某些術語。如果不是,請不要猶豫,問。

P.S. +1是一個很好的問題。

+1

非常感謝您的回覆。我將首先在最小邊界矩形上工作。希望從我能可靠地確定部分長度。如果我然後在該矩形的中間裁剪圖像,我應該只處理螺栓杆的一部分並可以確定其寬度。那時我已經半路回家了 - 將繼續處理更復雜的頭部形狀分類問題。希望在第一部分中能夠獲得足夠的經驗,在頭上工作時我的問題會更少。再次感謝!上面提到的形狀描述符 – 2013-03-21 17:19:58

+0

也有一個開源代碼。 – 2013-03-21 19:36:40

2

你的問題是一個典型的模式識別任務。 在您的場景中,我將使用形狀描述符,然後將其用於識別。一個有趣的方法描述在論文"Shape Matching and Object Recognition using Shape contexts".

其中一個authour Jitendra Malik是一個有趣的coursera計算機視覺課程的老師,我參加了幾個月前。

+0

謝謝你 - 它看起來像一個非常有用的紙張,但很多東西讓我的頭。我認爲這將適用於我正在做的事情的螺栓頭部分類部分。我非常感謝你的回覆! – 2013-03-21 17:22:19