朱佳鵬 羅梓杰 莊鈞善 陳燕林
摘要:目前市場上貼片機(jī)種類繁多,但它們的整體布局均有類似之處,多數(shù)大型貼片機(jī)上都采用了視覺對中系統(tǒng),但小型桌面貼片機(jī)則較少采用視覺對中系統(tǒng)。因此本文設(shè)計(jì)了一種調(diào)用OpenCV視覺庫的上位機(jī),可應(yīng)用于小型桌面貼片機(jī),構(gòu)建視覺對中系統(tǒng),實(shí)現(xiàn)圖像的采集、處理、輪廓識(shí)別提取、角度偏移計(jì)算以及與下位機(jī)通訊。
關(guān)鍵詞:貼片機(jī);OpenCV視覺庫;視覺識(shí)別;上位機(jī)
Abstract:There are many different kinds of SMT machine on the market at present, but their overall layout all has similarities, visual system is used in most large SMT machine, but less desktop SMT machine use visual system.So this article designs upper machine called OpenCV visual library, can be applied to small desktop SMT machine, build a visual system, realize the recognition of the image acquisition, processing, contour extraction, angular deflection calculation and communicates with the lower machine.
Key words: SMT machine;OpenCV Database;Visual Identity;Upper Monitor System
中圖分類號(hào):TP273 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1674-098X(2016)05 (c)-00
0 引言
當(dāng)前電子產(chǎn)品發(fā)展的方向是更輕,更小以及更穩(wěn)定,精密的電子產(chǎn)品需要高精度的貼片機(jī)來保證制造精度,這樣在制造精度和工作效率上對貼片機(jī)提出了更高的要求,既要降低生產(chǎn)成本與其它費(fèi)用,也要提高市場中的普及程度?,F(xiàn)在國外貼片機(jī)生產(chǎn)廠商紛紛采用視覺對中系統(tǒng)來提高貼裝的精度和準(zhǔn)確性,而國內(nèi)這方面才剛剛起步,雖然有廠家在大型貼片機(jī)上采用了視覺對中系統(tǒng),但經(jīng)濟(jì)的小型桌面貼片機(jī)多數(shù)沒有采用視覺對中系統(tǒng),只能靠機(jī)械對中來貼小元件,其他的密腳芯片等則都需要手工補(bǔ)貼,而且貼裝精度受摩擦抖動(dòng)等因素影響較大。[1]
本文通過設(shè)計(jì)調(diào)用OpenCV視覺庫的上位機(jī)對桌面貼片機(jī)的視覺對中系統(tǒng)進(jìn)行改進(jìn),可應(yīng)用于小型桌面貼片機(jī),使小型桌面貼片機(jī)精度提高,成本降低,維護(hù)更方便。與傳統(tǒng)的貼片機(jī)相比,其低成本、實(shí)用性強(qiáng)的特點(diǎn),可以在保持貼裝精度的前提下降低成本,滿足小企業(yè)及個(gè)人對貼片機(jī)的需求。
1視覺對中系統(tǒng)
在一個(gè)完善的貼裝設(shè)備中,視覺對中系統(tǒng)起著重要的作用。通過精密的硬件裝置、可調(diào)節(jié)的光照條件以及高清晰度的攝像裝置采集到高質(zhì)量的元器件圖像,通過運(yùn)算處理算法計(jì)算出電路板與元器件的調(diào)整參數(shù)。為了提高貼裝速率與整條生產(chǎn)線上的生產(chǎn)量,降低元器件拾取時(shí)所發(fā)生的問題,應(yīng)采用先進(jìn)的視覺裝置。
與傳統(tǒng)的機(jī)械定位方式相比,視覺對中系統(tǒng)對元件的定位是非接觸測量,并且通過PC的高速處理器運(yùn)行先進(jìn)的視覺處理算法,能夠快速得到結(jié)果,節(jié)省了機(jī)械定位行程且不會(huì)對元件引腳等產(chǎn)生破壞,使定位精度和貼裝效率都有了很大的提高。[2]
視覺對中系統(tǒng)的基本要求是處理速度快、實(shí)時(shí)性強(qiáng)、計(jì)算精度高、穩(wěn)定性高。元件檢測與元件糾偏,是指對采集到的元器件圖像提取邊緣和計(jì)算偏差,其對高精度的貼裝而言非常關(guān)鍵。
典型的貼片視覺對中系統(tǒng),由上位機(jī)、貼裝頭和上視攝像裝置三大部分組成,本文著重介紹上位機(jī)部分編寫思路。大型貼片機(jī)上位機(jī)采用的視覺庫過于昂貴,且視覺處理過程難以應(yīng)用于小型桌面貼片機(jī),因此設(shè)計(jì)了一種調(diào)用OpenCV視覺庫的貼片機(jī)上位機(jī),適用于小型桌面貼片機(jī)。
2 貼片機(jī)上位機(jī)設(shè)計(jì)
2.1 貼片機(jī)上位機(jī)
上位機(jī)是控制者控制、操作下位機(jī)的平臺(tái),一般是指計(jì)算機(jī)或者計(jì)算機(jī)上的軟件。其設(shè)計(jì)準(zhǔn)則就是要有良好的人機(jī)交互能力,操作簡便,界面簡潔明了。應(yīng)用于貼片機(jī)的上位機(jī),則是通過攝像頭獲取吸取元件的圖像,分析和處理后得到元件的位置偏移和角度偏差等數(shù)據(jù),并傳遞給控制系統(tǒng),再通過執(zhí)行機(jī)構(gòu)修正偏差,從而提高元件的貼裝精度和準(zhǔn)確度。
現(xiàn)有貼片機(jī)上位機(jī)的視覺庫多數(shù)采用德國MVtec公司開發(fā)的標(biāo)準(zhǔn)機(jī)器視覺算法包Halcon,該算法包擁有應(yīng)用廣泛的機(jī)器視覺集成開發(fā)環(huán)境,但其屬于商業(yè)性機(jī)器視覺庫,源代碼沒有開源,成本過于高昂。用于小型桌面貼片機(jī)上位機(jī)設(shè)計(jì)顯然不劃算,所以本文采用開源視覺庫OpenCV來執(zhí)行。
本上位機(jī)的軟件開發(fā)環(huán)境采用Visual C++6.0中的 MFC方式編寫,再掛接OpenCV視覺庫,最終生成可執(zhí)行的文件(exe格式),可在任意window系統(tǒng)下正常運(yùn)行。該上位機(jī)具備識(shí)別圖像并對圖形圖像進(jìn)行處理的功能,其使用UART串口與下位機(jī)通訊,實(shí)現(xiàn)視覺對中功能。
2.2OpenCV視覺庫簡介
OpenCV是一個(gè)基于C/C++語言的開源的圖像處理函數(shù)庫,全稱是Open source Computer Vision Library,其設(shè)計(jì)的目標(biāo)是提高執(zhí)行速度,主要關(guān)注實(shí)時(shí)應(yīng)用。OpenCV將其API函數(shù)所有的源代碼全部公開,其內(nèi)部程序步驟的實(shí)現(xiàn)過程能夠被使用者清楚地看到,OpenCV的源代碼能夠由使用者進(jìn)行修改,并且編譯生成所需的API函數(shù)。獲取圖像數(shù)據(jù)、數(shù)據(jù)預(yù)先處理、提取圖像特征、選擇圖像特征、設(shè)計(jì)與訓(xùn)練分類器、判別分類,包括以上六個(gè)處理步驟才是一個(gè)典型的計(jì)算機(jī)視覺算法庫,OpenCV對這六個(gè)部分分別提供了API。[3-4]
由于OpenCV可用于實(shí)時(shí)處理圖像,進(jìn)行圖像與視頻的載入、保存和采集的常規(guī)操作;且具有免費(fèi)、持續(xù)更新的特點(diǎn),方便維護(hù),符合小型桌面貼片機(jī)的經(jīng)濟(jì)性要求。
2.3上位機(jī)開發(fā)環(huán)境
Microsoft Visual C++ 6.0,簡稱VC6.0,是微軟設(shè)計(jì)的一種將“高級語言”翻譯為“機(jī)器語言(低級語言)”的程序,也是一款C++編譯器。自從微軟公司于1993年正式推出Visual C++1.0以來,不斷有新的程序版本推出,Visual C++已經(jīng)成為了一個(gè)具有強(qiáng)大編輯功能的可視化軟件開發(fā)工具,多數(shù)程序員優(yōu)先選擇Visual C++作為首選工具進(jìn)行軟件開發(fā)。[5]。
3圖像采集處理識(shí)別
3.1 圖像采集設(shè)計(jì)
圖像最高分辨率由所用的攝像頭決定,為了支持高分辨率圖像采集,得到相對質(zhì)量較好的圖像,可以利用采集多幅圖像后進(jìn)行平均的方式,采集4幅圖像后進(jìn)行平均,由此得到的圖像信噪比是普通方法的兩倍。因需要通過采集連續(xù)的多幀圖像,約需0.25秒,因此適合對象是運(yùn)動(dòng)緩慢或靜態(tài)的物體圖像的采集。本上位機(jī)通過計(jì)算機(jī)的串口連接攝像頭,在上位機(jī)中啟動(dòng)攝像頭,采用 DirectShow 實(shí)現(xiàn)視頻采集,使用時(shí)調(diào)用CameraDS中的函數(shù)來實(shí)現(xiàn)原始圖像被上位機(jī)讀取。
讀取到攝像頭獲取的圖像后,開始進(jìn)行圖像處理,需進(jìn)行灰度、濾波、二值化等圖像處理操作,才能減弱乃至除去圖像中的噪聲得到質(zhì)量良好的圖像,易于對圖像中的元器件輪廓進(jìn)行識(shí)別。
3.2圖像灰度處理
圖像灰度處理的流程如下,先將三通道彩色圖像進(jìn)行轉(zhuǎn)換,轉(zhuǎn)換成單通道的灰度圖像,實(shí)現(xiàn)該操作可通過調(diào)用OpenCV中的函數(shù)cvCvtColor(src,gray,CV_BGR2GRAY);圖像在濾波前有較高的清晰度,邊緣過于分明清楚,故使用Smooth函數(shù)針對單通道的灰度圖像濾波,使邊緣變得更加光滑,圖像變得更加模糊,方便處理外形輪廓,避免后續(xù)處理的二值化黑白處理后,圖像中元器件的邊緣不平整。由于光照等外部條件以及視覺裝置本身精度等問題,得使視覺裝置采集到的圖像存在一定的噪聲,降低了圖像本身的質(zhì)量,通過濾波來去除圖像中的噪聲可提高圖像的質(zhì)量。
3.3圖像濾波處理
圖像濾波處理中,常用的平滑濾波方式有均值濾波與中值濾波,均值濾波算法簡單,通過將每個(gè)像素的周圍的8個(gè)像素,都拿來進(jìn)行均值操作,幅值近似相等且隨機(jī)分布在不同位置上,其執(zhí)行速度相對較快,能夠平滑圖像,但是只能微弱的減弱噪聲,無法完全去除噪聲;常用的非線性濾波方法是中值濾波,同時(shí)也是最常用的圖像預(yù)處理技術(shù),此種方法在平滑脈沖噪聲方面效果顯著,選擇適當(dāng)?shù)狞c(diǎn)來替代污染點(diǎn)的值,處理效果較好,能夠把圖像尖銳的邊緣保護(hù)好。優(yōu)化后的加權(quán)中值濾波使中值濾波的邊緣信號(hào)更加清晰。故采用平滑處理方式為中值濾波。但是濾波也不能過度,因?yàn)闉V完后圖像跟原圖有所不同,會(huì)導(dǎo)致精準(zhǔn)度產(chǎn)生誤差。
3.4圖像二值化處理
濾波后的灰度值圖像直接二值化變成黑白二色圖像。在實(shí)際貼裝時(shí),固定算法的閾值受PCB板的表面材質(zhì)和光源光照的影響,在自動(dòng)閾值的基礎(chǔ)上,為了獲得較為一個(gè)穩(wěn)定的理想閾值,可通過手動(dòng)微調(diào)閾值來給圖像進(jìn)行二值化處理,使圖像中的元器件與背景環(huán)境形成對比明顯的圖像即可,這是一種簡單直接的辦法。
3.5輪廓提取
圖像經(jīng)過適當(dāng)中值濾波后邊緣平滑,二值化后較為平整,通過調(diào)用OpenCV視覺庫中的輪廓識(shí)別函數(shù)cvFindContours()來實(shí)現(xiàn),能夠直接從二值化圖像中檢索出目標(biāo)輪廓,再將目標(biāo)的輪廓在上位機(jī)界面的圖像顯示區(qū)中高亮顯示,使其清楚直觀地被觀察到。
從攝像頭采集到的圖像經(jīng)濾波、二值化處理后和執(zhí)行輪廓識(shí)別后的圖像分別發(fā)送到上位機(jī)的三個(gè)窗口顯示出來,并顯示元件具體的位置與偏差參數(shù)。
4 上位機(jī)功能界面設(shè)計(jì)
4.1 上位機(jī)界面功能設(shè)計(jì)
上位機(jī)界面設(shè)置了以下多種控件,輸入控件如對串口進(jìn)行設(shè)置的選擇串口、波特率、數(shù)據(jù)位、校驗(yàn)位、停止位與關(guān)閉串口、smooth函數(shù)光滑濾波除燥以及二值化黑白圖像的滑動(dòng)桿、開始識(shí)別、關(guān)閉攝像頭、退出程序清除發(fā)送與接收字節(jié)計(jì)數(shù)按鈕、接收與發(fā)送數(shù)據(jù)格式在十進(jìn)制與十六進(jìn)制之間進(jìn)行切換按鈕、清空接收與發(fā)送區(qū)域按鈕、設(shè)置數(shù)據(jù)發(fā)送為手東發(fā)送或自動(dòng)發(fā)送按鈕,另外還有角度校正、XY校正、暫停校正、一鍵校正,執(zhí)行拋料等按鈕;顯示控件如經(jīng)smooth函數(shù)平滑濾波除燥圖像顯示區(qū)域、二值化黑白圖像顯示區(qū)域、輪廓捕捉處理圖像顯示區(qū)域、串口通訊狀態(tài)、發(fā)送與接收字節(jié)顯示區(qū)域、數(shù)據(jù)接收顯示區(qū)域、元器件偏移角度、PCB應(yīng)放置的中心點(diǎn)坐標(biāo);其它命令如開/關(guān)燈、啟動(dòng)/停止、手/自動(dòng)矯正指令。
4.2 上位機(jī)操作過程
經(jīng)過編程和反復(fù)調(diào)試,本上位機(jī)具體的操作步驟是:先調(diào)節(jié)光照亮度,增大背景與物體顏色的反差,再調(diào)節(jié)smooth函數(shù)濾波除燥滑塊對原始圖像進(jìn)行適當(dāng)濾波,并調(diào)節(jié)二值化滑塊使圖像顯示出平滑邊緣,通過上述操作后可以比較準(zhǔn)確的地識(shí)別出圖像中的物體,要使得圖像識(shí)別精準(zhǔn)度越高,則要使圖像清晰度夠高,可以通過調(diào)節(jié)攝像裝置各種參數(shù)達(dá)到最佳效果,完成元件位置參數(shù)的設(shè)置后,再點(diǎn)擊一鍵校正按鈕,完成元件的校正。
5 結(jié)論
經(jīng)過測試,本上位機(jī)可以在搭載Window系統(tǒng)的電腦里面正常運(yùn)行。該上位機(jī)采用 DirectShow 實(shí)現(xiàn)視頻采集功能,調(diào)用OpenCV視覺庫中的函數(shù)cvCvtColor(src,gray,CV_BGR2GRAY)將三通道的彩色圖像進(jìn)行轉(zhuǎn)換,轉(zhuǎn)換成單通道的灰度圖像,再將灰度值圖像進(jìn)行二值化,直接轉(zhuǎn)換成黑白圖像,調(diào)用視覺庫中的輪廓識(shí)別函數(shù)cvFindContours()直接檢索出目標(biāo)輪廓,最后通過按鍵交互串口實(shí)現(xiàn)與下位機(jī)通訊。
參考文獻(xiàn)
[1]李存鵬.STM多功能PCB貼標(biāo)機(jī)的設(shè)計(jì)與實(shí)現(xiàn)[J].長江大學(xué)學(xué)報(bào)(自然版)理工上旬刊,2014,11(1):68-70.
[2]鮮飛.貼片機(jī)現(xiàn)狀及發(fā)展趨勢[J].電子工業(yè)專用設(shè)備,2006,(7):29-37.
[3]黎志華,李新國.基于OpenCV的紅外弱小運(yùn)動(dòng)目標(biāo)檢測與跟蹤[J].紅外與激光工程,2013,(9):2561-2565.
[4]田甜,肖曙紅,徐攀等.基于OpenCV的貼片機(jī)基準(zhǔn)點(diǎn)定位與實(shí)現(xiàn)[J].機(jī)床與液壓,2015,43(11):16-19.
[5]譚浩強(qiáng).C++程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2011.
作者簡介:朱佳鵬,(1994-),男,廣東汕頭人,本科生,主要研究方向?yàn)殡娮釉O(shè)計(jì);