機器視覺軟件開發新人入門必看 --機器視覺軟件開發學習路徑

機器視覺是機械、運動、控制、光學、軟件、算法於一體的交叉學科,對於學工科的人來說,機械、運動、控制都有一定的瞭解,對於軟件、算法、光學不是很瞭解。一臺設備,有一個到二個機械設計師或者結構工程師,那麼這個角色就勝任了機械部分,有一個電氣工程師,那麼就勝任了控制部分了,再來一個視覺工程師,擔當視覺軟件開發部分,那麼整套系統就構成一套機器視覺系統, 對我們視覺軟件發來說,做好光學(相機、鏡頭、光源)的選擇,軟件框架設計好,算法的實現,就可以了。

機器視覺軟件開發新人入門必看 --機器視覺軟件開發學習路徑

視覺系統

機器視覺軟件開發新人入門必看 --機器視覺軟件開發學習路徑

視覺系統

從業多年,可以看到,機器視覺軟件開發是跟機械、電氣緊密相連的,從而,我見過很多機械、電氣行業從業人員進行轉行進入到視覺軟件開發,直接的接觸讓很多電氣、機械的同學想進入機器視覺軟件開發領域,今天我來說說從零基礎學習視覺軟件開發的學習路徑,需要學習哪些知識?

機器視覺軟件開發新人入門必看 --機器視覺軟件開發學習路徑

學習概要

1. 圖像基礎知識

做這個行業,需要知道圖像的基礎知識,至少先在文字層面上進行學習,比如什麼是灰度,什麼是位圖,什麼是深度,什麼是通道,什麼是像素,什麼是灰度,什麼是濾波等等,在第一個階段,不要去深挖各種理論,先在文字層面上理解這是什麼意思即可,其實,對我們應用層開發來講,機器視覺工程師講究的是一個系統集成的能力,對工程工藝的理解,而不是深挖理論,術業有有專攻,第一階段切勿對不理解的公式去深挖,不懂得跳過這個,後期循序漸進或者學習,不懂的也不會對你後期開發有多大的影響,至於書籍方面,可以推薦看數字圖像處理(岡薩雷茨),對於初學的人來說,讓你去看這本書是難免有點多,但我不能不介紹他, 你也可以去搜索相關的圖像處理基礎知識掃盲也可以,這個階段有點像萌芽的意思。

機器視覺軟件開發新人入門必看 --機器視覺軟件開發學習路徑

數字圖像處理

2. 光學成像部分

光學成像部分,需要了解成像系統的選型,包括相機、鏡頭、光源,這三大件必不可少,在這裡學習,如果每個三大件展開,又有很多的知識點,相機的種類、相機的選擇、相機sensor尺寸、鏡頭種類、鏡頭選型、光源種類、光源選型等等,那麼在這個階段就是一個積累和總結的過程了,你一個時候記不到這麼多,記到了你不用也會忘記,我當年實習是在實驗室打光測試做了1個半月,至少在光源和鏡頭方面實驗的都實驗了,但還是很多不知道,也是在後期工作中用到了哪一塊就深入的去了解了。

機器視覺軟件開發新人入門必看 --機器視覺軟件開發學習路徑

光源

機器視覺軟件開發新人入門必看 --機器視覺軟件開發學習路徑

鏡頭

3. 編程語言學習

上位機編程語言,有兩種選擇,C#和C++開發語言的學習,初學入門,建議學習C#作為上位機開發首選,C#語言入門簡單,一本《C#入門經典》即可,語法規則熟悉一週左右即可,界面開發可以使用Winform、WPF,熟悉界面庫也就差不多一到二週的時間。

C++語言就不一樣了,C++語言很複雜,知識點很多,在短時間內很難理解那麼多知識點,並且哪怕有三五年C++編程經驗的程序員,也不敢說對C++語言精通,我等只有“會使用”的地步了,C++界面開發庫常見的有MFC,MFC稍微有點過氣了,現在廣泛使用的界面庫是Qt,熟悉Qt界面庫一週到二週,真正在項目中熟悉使用需要積累和通過項目的錘鍊。

我當年的學習路徑是在大學先學的C++,學的MFC做界面,看的是孫鑫的C++教學視頻,我的第一個MFC+Halcon程序顯示圖像、結果顯示就搞了我一週,然後我學習的C#,界面開發庫使用Winform,WPF,出來工作後主要使用C++開發,有時候也會使用C#開發,大多數時候是兩種語言都會涉及,Winform\\wpf做界面,算法層、通信層等會封裝成C的接口。

4. 算法工具的學習

有哪些算法工具,我有文章介紹過,沒看過的可以去看

如果你有了一定的圖像處理基礎,編程基礎,你現在去看算法工具的學習,就相對會順暢很多,算法工具推薦使用halcon,學了halcon,其他的算法工具學起來都很快,並且halcon能夠解決機器視覺領域內所有簡單、複雜的項目,而且會halcon算法的工資待遇會更高。

學習halcon也是有方法的,先要對halcon的總體算法功能有個瞭解,以及知道每個功能模塊的應用例程的經典案例。 再就是halcon的基本數據格式,算子的參數輸入輸出表示方法,圖像參數、控制參數,再瞭解halcon常用的一些算子功能,那麼入門開發就可以了,要深入,需要通過項目經驗案例來進行學習和深入,開始學習。

這一步也是每個視覺任務要解決的核心問題,所以這部分內容也是最重要的,花的時間也最多。

5. 項目代碼演練

前面的幾個步驟,你不一定需要根據順序來完成,你可以直接從3、4跳到這裡,那麼這一步就很關鍵了,前面那些知識點是一個零散的知識,這一步是把所有化零為整的步驟,這一步也是很多人最頭疼的地方,如果沒有師傅帶, 你自己摸索,那是比較困難,最好是找到項目源碼,找到合適的有經驗的師傅進行學習,最開始可以從流程簡單的到中級到高級的步子學習,單相機單流程,你的軟件流程就簡單,如果是單相機多流程,多相機多流程,線程之間的交互,以及數據的融合,那就是比較高級的項目了,所以這也是有經驗的工程師的重要之處。


分享到:


相關文章: