項新建,黃 佩,鄭永平,王文麗
(浙江科技學院 自動化與電氣工程學院,杭州 310023)
水平儀作為測量小角度的常用工具,在機械行業(yè)和儀表制造中,廣泛應用于水平位置的傾斜角測量以及機床類設(shè)備導軌的平面度和直線度與設(shè)備安裝的水平位置等測量。水平儀按照工作原理主要分為氣泡水平儀、激光水平儀、電子水平儀等[1-3]。其中氣泡水平儀使用最廣泛,它的水準管用透明材料制成,內(nèi)部裝有酒精液體或乙醚,向水準管內(nèi)充稀薄氣體形成氣泡,測量時根據(jù)氣泡偏離中心刻度來判斷平面是否水平。劉玲[4]提出用圖像檢測方法檢測萬向水準器,通過圖像灰度轉(zhuǎn)換、閾值分割等預處理,采用Hough變換檢測水準器的刻度圓心與氣泡圓心。該方法主要側(cè)重于用機器視覺的技術(shù)測量水泡的偏移量,但是閾值分割的準則是將圖像分割為相似的區(qū)域,當氣泡周圍有一些不連續(xù)的相似區(qū)域會對輪廓的提取產(chǎn)生影響。魏煜等[5]介紹了一套基于計算機圖像處理和識別的水平尺標定系統(tǒng),通過最優(yōu)閾值變換和邊緣檢測相結(jié)合的方法提取圖像的輪廓進行跟蹤,得到氣泡偏移中心的實際距離,檢測精度能夠達到0.1 mm,但檢測精度有待提高。在水平儀氣泡的實際生產(chǎn)過程中,由于生產(chǎn)技術(shù)的局限,有的水平儀氣泡會過大或過小,從而影響測量精度。目前,還沒有一個十分完善精確的系統(tǒng)能夠直接對水平儀氣泡大小進行分類。而國內(nèi)的許多廠家主要依據(jù)人工測量來判斷氣泡的大小從而進行區(qū)分[6],這存在人眼判斷偏差大、速度慢,易隨著外界環(huán)境的變化而使判斷失誤等問題。為了能快速剔除氣泡過大或過小的水準管,保證水平儀測量時高精度使用,有必要研發(fā)一種高效的識別系統(tǒng)將水平儀氣泡快速分類。
Halcon是一套完善標準的機器視覺算法軟件[7],擁有應用廣泛的機器視覺集成開發(fā)環(huán)境。它由1 000多個各自獨立的函數(shù),以及底層的數(shù)據(jù)管理核心構(gòu)成,其中包含各類濾波、數(shù)學轉(zhuǎn)換、分類識別、形狀搜尋等基本功能,以及3D相機標定、雙目視覺、立體匹配等性能優(yōu)良的算法,尤其是Halcon基于形狀的匹配,由于速度快,在視頻處理中得到了廣泛的應用。使用Halcon軟件來實現(xiàn)分揀系統(tǒng)的設(shè)計具有快速性、全面性、精確性和魯棒性的特點[8]。針對現(xiàn)有工業(yè)生產(chǎn)中水平儀氣泡分類檢測技術(shù)的不足,筆者設(shè)計了一種基于Halcon視頻圖像處理技術(shù)的水平儀氣泡自動分類系統(tǒng)。本系統(tǒng)可用于水平儀氣泡生產(chǎn)流水線上,先在特定位置裝設(shè)攝像頭以獲取水平儀氣泡信息,再結(jié)合企業(yè)要求,通過對比特定參數(shù),將不同大小的氣泡自動分類,以達到剔除氣泡大小不符合要求水準管的目的。
本系統(tǒng)的硬件部分主要包括上位機控制系統(tǒng)和下位機控制系統(tǒng)。如圖1所示,上位機主要包括計算機、工業(yè)攝像機(含遠心鏡頭),下位機由STM32、傳送帶、紅外傳感器和分類執(zhí)行機構(gòu)組成。本文使用的工業(yè)攝像頭選用一款型號為CM-140GE的千兆網(wǎng)接口工業(yè)數(shù)字相機,此型號的相機具有特定的時序控制特點,可以實現(xiàn)動態(tài)修改相機曝光時間、增益和ROI的功能。且遠心鏡頭能保持相機CCD上物體尺寸基本不變,不會隨著目標物的距離發(fā)生畸變,鏡頭的解析度高,特別適合用于高精度尺寸的測量。同時采取正反面打光措施,減弱環(huán)境光照對采集圖片的影響。紅外傳感器價格低廉、性能穩(wěn)定、響應時間短,選擇紅外傳感器檢測水平儀氣泡到達檢測點以實現(xiàn)外部觸發(fā)。在實際工業(yè)生產(chǎn)應用中,水平儀氣泡在傳送帶上傳輸,當紅外傳感器檢測氣泡到達檢測點后,通過外部觸發(fā)工業(yè)攝像機采集獲取圖片,并對所采集圖像采用基于Halcon的圖像處理技術(shù)進行識別處理,獲得水平儀氣泡的各項參數(shù),包括橢圓氣泡的長軸、短軸以及面積。最后按照用戶設(shè)定的分類標準進行分類,計算機將類別信息經(jīng)過串口傳送到網(wǎng)絡數(shù)據(jù)庫和STM32控制器,控制器控制分類處理機構(gòu)的機械手進行抓取分類。
采集圖像之前先采用柵格識別的方式進行標定[9]。獲取AcqHandled的圖像采集算子主要有:grab_image(Image,AcqHandle);grab_image_async(Image,AcqHandle,MaxDelay)。
這兩個函數(shù)對應的采集方式分別為同步采集和異步采集[10]。前者采集完圖像后先通過算法處理圖像,之后再采集下一張圖像;后者是采集完一張圖像之后馬上采集下一張圖像,不會受到前面一幅圖像處理速度的影響。為了符合本設(shè)計中流水線上采集圖片的實際操作,選擇后者。
采集的圖像一般都存在隨機噪聲污染,為了能夠更進一步地提取有效的圖像信息,需要對采集的圖像進行濾波操作,消除噪聲干擾[11]。中值濾波采用排序理論非線性方法,它將每一像素點的灰度值設(shè)置為該點某鄰域窗口內(nèi)灰度值的中值,在處理平滑脈沖噪聲方面非常有效,同時可以保護圖像尖銳的邊緣。其中中值濾波公式為:
q(x,y)=med{f(x-k,y-l)},(k,l∈D)。
(1)
式(1)中:f(x,y)、q(x,y)分別為原始圖像和處理后圖像的灰度值;D為二維模板。
圖2 采集的原圖和中值濾波后的圖像Fig.2 Original image and median filtered image
邊緣的噪聲都是一些灰度不連續(xù)的點,在頻域分量中均為高頻,直接使用微分運算難以克服噪聲的影響。在未經(jīng)預處理的原始圖像中任何邊緣檢測算法都不能很有效地處理圖像,本文調(diào)用函數(shù)mean_image(Image,ImageMean,7,7)進行去噪,獲得的圖像比原始采集圖像有些許模糊,這樣孤立的一個像素噪聲在經(jīng)過平滑處理的圖像上變得基本上沒有影響。而且由于中值濾波具有保護邊緣信息的優(yōu)勢,使后期的邊緣檢測更加清晰。原圖與濾波后圖像對比見圖2。
邊緣檢測是機器視覺關(guān)鍵的處理技術(shù)之一,是仿照人類視覺的一個處理過程,是目標檢測、識別、跟蹤和形狀分析的重要基礎(chǔ)。圖像邊緣包含數(shù)字圖像重要信息[12],所以提取邊緣信息能夠降低圖像處理數(shù)據(jù)量。在進行物體邊緣檢測時,先大致對其輪廓點進行提取檢測,然后通過特定的連接方式將輪廓點連接,包括原來遺留的邊界點,同時去除虛假的邊界。本文利用基于灰度圖像的亞像素邊緣提取函數(shù)edges_sub_pix(Image,Edges,Filter,Alpha,Low,High),直接返回由像素點構(gòu)成的邊緣,具有亞像素精度[13-14]。其中各參數(shù)含義見表1。
表1 各參數(shù)含義Table 1 Meaning of each parameter
Canny邊緣檢測是一種相對較好的邊緣提取方法[15],其檢測的邊界連續(xù)性好,非常適合本系統(tǒng)。實現(xiàn)Canny邊緣檢測算法的主要過程有:
2.3.1 尋找圖像中的強度梯度
Canny算法主要是找到圖像中灰度強度變化最強的位置當做邊沿。變化最強,就是指梯度方向。平滑處理后圖像中每個像素點的梯度可以通過Sobel算子得到。沿水平(x)方向和垂直(y)方向的梯度Gx和Gy計算如下:
(2)
式(2)中,K為原始圖像作用點像素值。
像素點的梯度度量值G計算如下:
為了標定邊界的真正位置,還必須存儲梯度角θ:
θ=arctan(Gy/Gx)。
2.3.2 利用滯后的邊界跟蹤
為了避免使用單閾值造成的輪廓中斷,滯后處理根據(jù)設(shè)置的高閾值和低閾值來判定灰度梯度,認為和強邊界相連的弱邊界是邊界,其他的弱邊界則被抑制。圖3(a)為文獻[4]中采用的閾值分割提取感興趣的邊緣圖像,圖3(b)為采用文獻[5]中提到的Sobel算子提取的邊緣圖像,圖3(c)為采用本文基于亞像素Canny算法提取的邊緣圖像。
圖3 3種方法提取的邊緣圖像Fig.3 Edge images extracted by three kinds of methods
從圖3中的比較可以看出,使用基于亞像素的Canny算法提取的邊緣更加清晰,有效地抑制了弱邊緣,且基本上完整地保留了目標邊緣,有利于后期輪廓的提取與擬合,從而提高了檢測精度,所以本文選擇函數(shù)edges_sub_pix提取邊緣。
為了在檢測到的所有輪廓中準確選擇出氣泡輪廓,采用函數(shù)select_contours_xld(Contours,Selected Contours,Feature,Min1,Max1,Min2,Max2)進行提取。參數(shù)Feature的類型含義見表2。
表2 參數(shù)Feature的類型含義Table 2 Type meaning of parameter feature
圖4 輪廓提取圖像Fig.4 Contour extraction image
經(jīng)過對大量不同水平儀氣泡的檢測表明,F(xiàn)eature的參數(shù)選擇closed,設(shè)置固定的Max1的值來提取出氣泡輪廓是最有效的方式,篩選后輪廓如圖4所示。
橢圓擬合的基本思路是將圖像中的一組數(shù)據(jù)以橢圓方程為模型進行擬合,使某一橢圓方程盡可能包含這些數(shù)據(jù),并求出該橢圓方程的各個參數(shù)。本文選擇基于最小二乘法的橢圓擬合函數(shù)fit_ellipse_contour_xld(Contours:Algorithm,MaxNumPoints,maxCloisureDist,ClippinhEndPoints,VossTabSize,Iteration,ClippingFactor:Row,Column,Phi,Radius2,StartPhi,EndPhi,PointOrder)來提取目標輪廓。此算法通過約束條件4ac-b2=1,最小化距離誤差。利用最小二乘法進行求解,首先引入拉格朗日因子獲得等式組,然后求解等式組得到最優(yōu)的擬合橢圓。其原理如下:
設(shè)橢圓方程為
ax2+bxy+cy2+dx+ey=1。
min‖Dm‖2,
s.t.mTCm=1。
(3)
式(3)中:Dn×5為數(shù)據(jù)樣本集合,n為采樣點個數(shù);C為常數(shù)矩陣。
根據(jù)拉格朗日乘子法,引入拉格朗日因子λ,得到以下方程:
2DTDm-2λCm=0。
(4)
令S=DTD,那么式(4)改寫為:
Sm=λCm。
(5)
此算法用在本設(shè)計具有計算高效性,且由于橢圓的特異性,在任何噪聲的情況下都會給出有用的結(jié)果,對噪聲具有很高的魯棒性。擬合的橢圓圖像如圖5所示。擬合后的橢圓與實際的的輪廓有微小的誤差,如圖6所示。從圖6中可以看出兩個輪廓之間沒有完全重合,存在一定的誤差。通過大量的試驗表明,此誤差可以控制在±0.02 mm以內(nèi),對水平儀的分類基本上沒有影響。
圖5 擬合橢圓圖像Fig.5 Fit ellipse image
圖6 輪廓誤差圖像Fig.6 Contour error image
本設(shè)計采用Qt作為GUI界面的編程工具。圖7為系統(tǒng)軟件設(shè)計流程圖,圖8為設(shè)計的用戶界面,圖9為分類標準按鍵打開后的設(shè)置子窗口。
圖7 系統(tǒng)軟件設(shè)計流程圖Fig.7 Design flow chart of system software
圖8 用戶界面Fig.8 User interface
圖9 分類標準子窗口Fig.9 Classification standard sub-window
此軟件用戶界面左側(cè)有操作按鈕,同時可以直接顯示檢測窗口,通過按鈕的選擇可以打開不同的子窗口進行基本的設(shè)置,界面的底部有即時的狀態(tài)提示,可以直接顯示檢測成功或失敗。檢測全部完成后可以直觀地從頁面讀出各類水平儀氣泡個數(shù),也可根據(jù)具體需要刷新重置參數(shù)。
(6)
式(6)中:n為樣本數(shù);xj為第j個樣本長軸誤差。
通過試驗測試,單張圖像檢測平均時間為786 ms,控制在1 000 ms以內(nèi),可見,檢測速率足以滿足實際需求。
本文介紹了基于Halcon的視頻圖像處理技術(shù)自動分類識別系統(tǒng),通過攝像頭獲取生產(chǎn)線上水平儀氣泡圖像信息,經(jīng)過圖像濾波、輪廓檢測、形狀提取信息等圖像處理,根據(jù)檢測的氣泡輪廓的面積對比用戶設(shè)定的分類標準,可以準確識別水平儀氣泡所屬的類別。經(jīng)過大量的試驗表明,本系統(tǒng)能夠在實際生產(chǎn)線上將氣泡快速準確地進行分類,實現(xiàn)真正的機器換人。需要說明的是,由于個別水平儀氣泡在生產(chǎn)的過程中表面會有比較深的劃痕,故采集圖片后在檢測過程中會有較大的誤差影響,接下來會在進一步的試驗中針對有缺陷的氣泡進行缺陷檢測并剔除。