解文卓,陳星宇,倪德鵬
(寶雞鈦業(yè)股份有限公司,陜西 寶雞 721014)
隨著制造行業(yè)的不斷發(fā)展,自動化水平在不斷提高,傳統(tǒng)的一些計數(shù)、計量方法已經(jīng)慢慢的凸顯出它的不足,例如在小規(guī)格棒材生產(chǎn)過程中,不同工序之間進行轉(zhuǎn)料的時候,為了防止混料、遺料、滿足合同量等要求,每次轉(zhuǎn)料都要對轉(zhuǎn)入當(dāng)前工序的批料進行計數(shù),與工藝卡片中的數(shù)量進行核對,確定無誤后方可進行該工序的加工,這種手動計數(shù)耗時費力,人為因素大,經(jīng)常需要多次計數(shù)或多人計數(shù),不但影響生產(chǎn)進度,給顧客的發(fā)貨數(shù)量也常有數(shù)量方面的問題,直接影響公司的銷售收入和顧客滿意度?;诖?,本文提出了一種棒材數(shù)量檢測的方法,可以通過攝像頭采集棒材端面的圖像,利用MATLAB軟件進行灰度變換、邊緣檢測、腐蝕及平滑處理,利用算法自動計數(shù)。利用這種方法可以準(zhǔn)確、快速計算出結(jié)果,避免了批量大時人工計數(shù)耗時、繁瑣、易出錯的因素。
棒材數(shù)量檢測的方法分為以下幾個部分:①圖像采集及預(yù)處理;②二值化及邊界提??;③計算模板匹配度,得到圓心的大致坐標(biāo)。圓心的數(shù)量就是棒材的數(shù)量。
在棒材生產(chǎn)過程中工序之間的轉(zhuǎn)料、成品包裝前,都需要對棒材進行打捆,核實數(shù)量,為了使用棒材自動檢測技術(shù),我們需要對棒材的端面進行圖像采集,計算端面中圓形的數(shù)量,通過處理、運算得到棒材的數(shù)量。
采集圖像可以用普通攝像頭,攝像頭的像素越高,分辨率越清晰,運算速度就越快。在圖形采集過程中,由于太陽光的存在會使得棒材端面產(chǎn)生反光現(xiàn)象,采集到的圖像一側(cè)偏亮,一側(cè)偏暗;以及捆狀棒材端頭不是很齊整,圖像出現(xiàn)明暗不均勻,不利于軟件處理。為了解決這個問題,經(jīng)過遮擋光線、燈光補償?shù)榷啻螄L試,問題基本上得到解決,本文采用一個環(huán)形光源對棒材端面進行照射,削弱太陽光的影響,并制作一個簡易的黑底工裝,黑布之類的即可,用來增強端面與相背景的對比度,從而使后續(xù)處理變得簡單。
基于matlab的這種棒材數(shù)量檢測方法需要對顏色進行處理,所以在圖像預(yù)處理過程中,將彩色圖像轉(zhuǎn)化為灰度圖像[1],如圖1所示:
圖1 灰度圖像
將圖像處理為灰度圖片之后,需要對圖像進行分割,也就是將圖像中有意義的特征部分提取出來,這是進一步進行圖像識別、分析和計算的基礎(chǔ)。在眾多的圖像分割算法中,閾值分割是一種簡單的、常用的方法。閾值法圖像分割通過設(shè)置閾值,把像素點按灰度級分成若干類,從而實現(xiàn)圖像分割。把一幅灰度圖像轉(zhuǎn)換成二值圖像是閾值分割的最簡單形式,設(shè)原始圖像為f(x,y),首先以一定準(zhǔn)則在f(x,y)中找出一個灰度值t作為閾值,將圖像分為兩部分,即把大于等于該閾值的像素點的值設(shè)為0。閾值運算后的圖像為二值圖像g(x,y)如式1所示:
式1中全局閾值T的選擇直接影響分割效果。Otsu方法是一種常用的求取圖像閾值的方法。該方法基于使圖像灰度類間方差最大化的方法求出最佳分割閾值,在matlab中可以使用graythresh語句求出,并基于該閾值進行圖像分割[2],如圖2所示。當(dāng)圖2中的一個點的8鄰域內(nèi)至少有一個為0的時候,認(rèn)為該點處于圖像的邊界處,保留該點的坐標(biāo)。最后可以得到邊界圖像,如圖3。
圖2 二值化
圖3 邊界圖像
從圖3可以看出,棒材的端面是很多圓形,檢測出這些圓形的數(shù)量就得到了棒材的數(shù)量。圓形檢測傳統(tǒng)方法是Hough變換,可以準(zhǔn)確的檢測出圓形并求出圓心,但由于Hough變換算法是一對多的映射匹配算法,有很大的缺陷,如計算量大,所需的計算時間長;需要將參數(shù)空間單元預(yù)存到存儲單元中,耗費大量的存儲空間。
本文采用模板檢測的方法來檢測圓形并得到圓心的大致位置,通過計算圓心的數(shù)量就可以得到棒材的數(shù)量,可以減少運算量,避免了Hough變換運算時間長的缺點[3]。
環(huán)形模板可以用Matlab中的strel('disk',r)語句來生成一個實心的圓形,設(shè)置r1和r2兩個半徑(r1>r2),就得m×m階的較大圓形f1和n×n階的較小圓形f2,其中,m=2×r1-1,n=2×r2-1。然后如式2所示,在f1中相應(yīng)位置減去f2,就可以得到寬度為(r2-r2)的m×m階圓環(huán)f,如圖4所示。其中,f中白色部分的數(shù)值為1,黑色部分的數(shù)值為0。則該m×m階圓環(huán)矩陣f稱為檢測模板。
圖4 環(huán)形模板
將m×m階圓環(huán)矩陣f與另一個m×m階的矩陣g(g中的數(shù)值只有0和1)的相應(yīng)位置進行相乘,并將m×m個乘積進行相加,得到的數(shù)值s就是匹配值,如式3。
當(dāng)g不為圓或者半徑過大或過小,匹配值s的值為g與f相交的像素的個數(shù),這個值是一個很小的值。
通過設(shè)置匹配值的閾值a,就能判斷出一個圖像矩陣g中的圖形是不是半徑為特定范圍的圓環(huán)。
在圖3所示的邊界圖像G的左上角提取一個m×m階的子矩陣gi,j,用式3的方法與環(huán)形模板f計算匹配值s,并與匹配值閾值a進行比較,并建立一個大小與G相同的空矩陣b來記錄圓心的位置。如果s<a,表示gi,j內(nèi)不是一個待檢測的圓,則將b中與此時模板的中心坐標(biāo)對應(yīng)的點設(shè)為0;如果s≥a,表示gi,j內(nèi)檢測到了一個符合規(guī)定的圓,將b中與此時模板的中心坐標(biāo)對應(yīng)的點設(shè)為1。
將模板在G上逐行逐列進行歷遍,就得到了圓心的矩陣b,如圖5所示。可以看到,圖5中有一些圓心區(qū)域相對較小,這是因為這些區(qū)域?qū)?yīng)的圓不完整,所以得到的圓心區(qū)域較小。
圖5 圓心圖像
對圖5得到的圓心圖像用regionprops函數(shù)求取重心,重心就是圓心大致的位置。求取圓心的目的是為了在原圖像上添加標(biāo)記,以便用肉眼進行輔助識別。由于本文的目的是求取棒材數(shù)量,所以對圓心位置的精確度要求不高,用重心的位置作為圓心是可行的。圖6所示即為最終處理結(jié)果,計算出圓心數(shù)量即為棒材的根數(shù)。
圖6 最終結(jié)果
隨著工業(yè)化、信息化的不斷發(fā)展,企業(yè)加工能力不斷提升,利用計算機檢測棒材數(shù)量將是勢在必行的趨勢。除了能大量的節(jié)省時間、物力、人力,還可以極大地降低傳統(tǒng)計數(shù)出錯率。
本文主要研究和解決了:①在小規(guī)格棒材數(shù)量檢測方面利用matlab進行處理的算法分析;②對圖像灰度化、二值化的圖像處理方法;③研究解決光線對圖像處理的影響;④選取合適的閥值進行邊緣檢測達到檢測棒材數(shù)量的目的。
在整個試驗過程中也發(fā)現(xiàn)了部分問題,例如太陽光對檢測數(shù)量的影響;必須制作相應(yīng)的工裝使棒材檢測斷面的一頭大體對齊;角度把握不好會導(dǎo)致拍照背景同棒材斷面有較大色差,通過試驗同樣也發(fā)現(xiàn)這些制約條件都可以通過改善工裝等外界條件進行解決。