在與大家交流的過程中,發(fā)現(xiàn)了一個問題,一直想說出來。可是通常實話都不會那么順耳,所以總有些猶豫。可后再一想,既然大家來此的目的不過是為了討論問題、互通有無,那么說了也應(yīng)無妨。這個問題就是:我發(fā)現(xiàn)國內(nèi)80%搞這行(機器視覺)的朋友所走的路子是錯的。
這個感覺是從論壇上大家所問的問題得出來的。因為。在論壇中看到不少朋友所問的問題,是相當(dāng)可笑的。說可笑并非指所提問題過于簡單幼稚,而是所問的問題一看就是從書本上抄來的,而不是在實際情況下所遇到的。換句話說,論壇中的朋友大多只是在紙上談兵,極少有人真正自已動手開發(fā)視覺系統(tǒng)。這樣說是因為自己搞開發(fā)的人絕對問不出某些奇怪問題來的。往深了說一點,好象國內(nèi)的朋友們只喜歡啃書本,并不愿意(也可能是懶得)動手。
現(xiàn)在就回到本文的題目上來:到底如何學(xué)習(xí)機器視覺?為了說明這個問題,我覺得應(yīng)該先要簡單地說明另一個問題:國內(nèi)外機器視覺發(fā)展的不同。我本人認為,只有先搞清了兩邊的不一樣,才便于說清如何下手學(xué)習(xí)。國外機器視覺發(fā)展到今天,已經(jīng)從“一包到底”式的工作程序,發(fā)展到了細致分工的階段了。由于篇幅問題。就不細講這一行當(dāng)如何從“一包到底”發(fā)展到細致分工過程。
一句話,國外機器視覺發(fā)展到今天,已經(jīng)可以清清楚楚分為三個部分:
1,底層開發(fā)部分。
2,二次開發(fā)部分。
3,最終使用部分。
于是在國外,從事這一行業(yè)的人現(xiàn)在也就可以簡單而清楚地分成三種人:
1,底層開發(fā)的人(從事底層開發(fā)工作的人)。
2,二次開發(fā)的人(從事二次開工作的人)。
3,使用及操作機器視覺系統(tǒng)的人(從事最終使用工作的人)。
第一類人。就是我們常說的,開發(fā)通用視覺系統(tǒng)(如:DVT,西門子,歐姆龍,EVISION,COGNEX等等)的開發(fā)人員,也就是DVT,COGNEX這些公司開發(fā)部的技術(shù)職工。
第二類。就是大家所說的OEM用戶。是專門用第一類人所開發(fā)出的系統(tǒng),給第三類人搞二次開發(fā),開發(fā)各種專為第三類人所用的系統(tǒng)。第三類人,就是用戶(end user)。這類人是真正將機器視覺系統(tǒng)應(yīng)用到各個領(lǐng)域中的人,他們不僅在各自的行業(yè)中使用種種已經(jīng)開發(fā)成型的機器視覺系統(tǒng)。而且負責(zé)對各類系統(tǒng)進行測試及評估。
舉個實際例子,這里有不少朋友問過這類問題:如何檢測某一工件;檢測光盤表面的系統(tǒng)該如何配置CCD相機、鏡頭及燈源等。問這些問題的朋友應(yīng)該算是第三類人。他們公司要他們尋找一個系統(tǒng)可以用來檢測本公司的產(chǎn)品。但由于第一類人所開發(fā)的,只是通用的系統(tǒng)以及視覺系統(tǒng)開發(fā)工具的軟件包。并沒有哪家公司專門開發(fā)一套系統(tǒng)來檢測光盤或是某種特定的工件。所以,這些朋友就應(yīng)該來找我,因為我是第二類人。
我的工作就是,專門用DVT,EVISION,COGNEX等的視覺卡,以及視覺系統(tǒng)開發(fā)工具軟件包為他們專門開發(fā)一套他們所需要的光盤檢測系統(tǒng)或是工件檢測系統(tǒng)。 但是,我在這里所看到奇怪的現(xiàn)象卻是,這些第三類的朋友一直問的,都是第二類人所問的問題。如:問應(yīng)該用哪家公司的開發(fā)軟件;用什么樣的CCD;如何標(biāo)定等等。我真的不知道如何回答你:你明明是第三類人,要找第二類人幫忙。現(xiàn)在卻以第二類人的身份甚至是以第一類人的身份問問題。繞了老大一圈,其實要說的問題就是一個----我所發(fā)現(xiàn)的問題:這里80%以上朋友把自己的身分混淆了,越俎代庖。
或許有的朋友會這樣說:我雖然是第三類人,但我對機器視覺有興趣,想自己學(xué)習(xí)啊!。這就是我想討論的:到底如何學(xué)習(xí)機器視覺?我個人認為,應(yīng)該先確定自己的身份,從自己具體的需要入手來學(xué)習(xí)。舉個例子:大家一定都有學(xué)習(xí)英文的經(jīng)驗,而且也一定都有同樣的感覺----怎么學(xué)也學(xué)不好----我就是這樣。我們拋開所謂的語言天分不說,大家學(xué)不好的原因其實很簡單:沒有語言環(huán)境。一語中的啊!學(xué)而不用,怎么也不會學(xué)好。
同樣,學(xué)習(xí)機器視覺,無論你在書本上看了多少理論,你自己若沒有實際動手操作、編程的經(jīng)驗也是枉然。還不如從你每天能接觸得到的東西開始學(xué)習(xí)。教游泳的教材隨手可得,但為什么并非人人都下得了水呢?!不客氣的說,目前國內(nèi)搞這行的朋友似乎都有些好高騖遠。不少從事第二部分工作朋友(搞二次開發(fā)的第二類人)對于機器視覺有關(guān)知識的了解,尚不如國外第三類人的知識水平(我是從大家所問的問題感覺到的)。而國內(nèi)第三類朋友知識水平就更可想而知。
可是奇怪的是,每個人所問的卻都是第二類人要問的,有些甚至是一類人才會問的問題。好象,機器視覺是個十分簡單的技術(shù),憑大家隨便問幾個“關(guān)鍵性”的問題,再由所謂的“專家”三言兩語的回答一下。大家就一夜之間都可以自己搞底層開發(fā),成第一類人了。
要成為第一類人,又分硬件及軟件兩種。要對自己所負責(zé)的這個模塊非常了解,搞軟件要知道算法及運行速度;搞硬件要明白公司所選用芯片的特點等等。同時還要清楚對手公司的優(yōu)缺點以及機器視覺這一行的種種動態(tài)和最新技術(shù)。
想成為第二類人,你一定要是個通才。就是說什么都要知道一點。不僅要了解第三類人的要求,而且也要知道各種第一類人(不同品牌的視覺卡及軟件包)的水平。
要成為第三類人,不僅要有機器視覺基本的相關(guān)知識。而且,要對自己所工作的行業(yè)及領(lǐng)域的機器視覺系統(tǒng)非常熟悉。專作你這行的機器視覺公司有哪幾家?各有什么優(yōu)缺點等等。總結(jié)一下。這三種人相比,第一類人一定要專業(yè),對機器視覺的某一領(lǐng)域非常非常了解;第二類人雖比不上第一類人那么專業(yè),但更加全面;第三類人更熟悉各個應(yīng)用系統(tǒng)開發(fā)公司(第二類人)的優(yōu)缺點。
現(xiàn)在大家可以看得出,機器視覺發(fā)展到今天,其分工已經(jīng)越來越細,每個部分的工作其實是很難相互取代的。大家不要以為第三類人就比第一類人低一等,這是一個錯誤的等級概念。我本人過去曾屬于第一類人,現(xiàn)在作的是第二類工作。而我的幾個“師弟師妹”(當(dāng)初曾一起作第一類人時的同事)現(xiàn)在就在干第三類工作。大家別小看第三類工作,以為這是小兒科,你能真作好這一行也不是很容易。畢竟這也是一門行當(dāng)也是一個飯碗!另外,以我個人來看:以國內(nèi)現(xiàn)在機器視覺的水平,對于那些想作第一類人的朋友我在這里勸一句:還是算了吧。
國內(nèi)的機器視覺水平打根子上就差,您還打算搞底層?算法本身都是抄人家的,就只能和對手拼程序的寫法了。不過我覺得那更沒戲。這樣說我絕沒有看不起初學(xué)者的意思。我說過:所問的問題再簡單,我都不會笑話你。對于每樣事物我們都是從無知開始的。但是,對于那些極不實際的好高騖遠的問題,我還是要說,希望大家踏實下來,戒浮躁,從最基本地學(xué)起----先確定自己的身份。