工業影象處理入門二基礎思想
上次說完基礎,這次我們來聊聊關於工業影象處理的一些基礎思路。
踏入行業一年,我所接觸到的工業影象處理包括:元件表面檢測、元件尺寸檢測、元件位置校準、鐳射定位列印等。
舉個例子,我想對元件的表面進行檢測。那麼第一個要做得就是搭建現場環境。要保證你實驗的環境要和現場十分相近或者相同,從相機到光源,然後是固定支架等等。一經選擇後面更改的餘地就越來越小。所以這個要慎重。(PS:不要想著自己就是個寫軟體的,指望著別人給你搞好,對於新人來說,這是個學習的過程。讓你對硬體有著一定的瞭解。)
環境搭建完了,接下來就是採集影象。注意採集影象的時候,一定要更換不同種類,不同顏色的光源,力求影象效果達到最佳。這個時候應該有個疑問,我怎麼知道影象怎麼算最好呢。
對於影象有著幾點硬性要求:1.背景不干擾表面資訊。比如你想檢測工件的表面劃傷,然後很不幸的是工件自身也有條紋,這個時候條紋和劃傷可能會重合,然後導致漏檢誤檢情況。2.目標影象清晰完整。對於你想檢測的目標,一定要保證在影象中的完整性。3.多角度不影響。稍微晃動工件,保證和擺正的時候影象質量差別不大即可。
聊完影象還要聊到程式設計。對於工業處理,最重要的幾個函式如下(Opencv版本)
CvThreshold:二值化。這個是基礎中的基礎,幾乎99%的影象處理都要使用這個函式。其作用也不用多說
CvFindContours:找輪廓。百度百科裡有詳細介紹我就不多說了。這個函式關聯著其他幾個函式,比如CvBoundingRect啦、擬合函式啦、其作用很大很大。一般情況下的表面檢測最終也是這個函式在起作用。主要是找目標的輪廓,然後畫出來。
CvCanny:一樣是找輪廓,但是找不到輪廓資訊,一般是在去背景干擾時用一下,然後再CvFindContours。
還有其他的也就不一一列舉了,比如腐蝕、膨脹、影象加減等等。
當試了很多次,目標都能被完美檢測出來的時候,也就宣告程式主體功能完成。接下來就是優化人機互動工作即可。
PS:工業上最怕的是軟體記憶體洩露,尤其是視覺,一張影象有時上百兆,傷不起。這裡主要注意,記憶體還有GDI的洩露