李長有,王 振,何開振
(河南理工大學(xué) 機(jī)械與動力工程學(xué)院,焦作 454000)
近年來隨著智能手機(jī)的快速發(fā)展,手機(jī)玻璃蓋板的需求日益增多,工廠對手機(jī)玻璃尺寸檢測效率和精度要求越來越高。機(jī)器視覺在非接觸測量方面有更高的效率和精度,能滿足相關(guān)需求。目前基于機(jī)器視覺的尺寸檢測方法已經(jīng)取得了一定的發(fā)展和成果。在國外,Song等人[1]提出了一種基于機(jī)器視覺的燈絲尺寸實時測量方法,實驗結(jié)果表明該方法的最大測量誤差為0.21mm,滿足燈絲尺寸測量的要求。Kikuhito等人[2]針對復(fù)雜環(huán)境中的工件內(nèi)徑尺寸測量進(jìn)行研究,平均測量誤差達(dá)到0.5mm,Xiao等人[3]提出了一種基于機(jī)器視覺技術(shù)的在線尺寸精度測量方法,實現(xiàn)了紡紗過程中被紡工件的直線度和圓度的實時測量。在國內(nèi),左東祥等人[4]使用圖像形態(tài)學(xué)和灰度值特征,定位出剎車片外圍邊緣,尺寸測量誤差率為1%。謝紅等人[5]研究了圓孔的視覺檢測方法,實現(xiàn)一般工業(yè)零件的非接觸式測量。
上述文獻(xiàn)中尺寸檢測方法都是在圖像邊緣的基礎(chǔ)上進(jìn)行,邊緣的定位精度和正確性直接影響到尺寸的檢測精度[6],對于玻璃等透光、反光物體,邊緣提取的結(jié)果不理想,提取的邊緣出現(xiàn)虛假、丟失、錯誤等問題,例如,邊緣直線由多個線段錯位組成使直線成了斜線、邊緣上有間隔的出現(xiàn)類似波浪的紋路、直角出現(xiàn)丟失等。普通的邊緣處理方法無法從眾多虛假邊緣中識別并提取真實邊緣,零件的DXF圖形文件中記載了零件的實體數(shù)據(jù),可以作為先驗知識指導(dǎo)圖像真實邊緣的提取。本文提出一種基于DXF數(shù)據(jù)的真實邊緣提取算法,處理有上述問題的圖像邊緣,使處理后的邊緣圖像更符合實際情況,提高邊緣定位精度和正確性。
本文研究對象是手機(jī)玻璃蓋板,整個算法流程分為3個部分,首先使用高分辨率相機(jī)采集待測手機(jī)玻璃蓋板圖像,通過仿射變換校正目標(biāo)圖像,得到水平放置的手機(jī)玻璃蓋板圖像。使用Canny算法得到手機(jī)玻璃蓋板粗邊緣。其次按閉合輪廓將幾何圖形逐一提取出來,并用與粗邊緣相同的像素點填充閉合輪廓,通過線掃描統(tǒng)計像素點,計算填充輪廓邊緣的像素長度。提取手機(jī)玻璃蓋板DXF圖形文件中的直線、圓弧等實體段數(shù)據(jù),將物理數(shù)據(jù)按比例轉(zhuǎn)換為像素數(shù)據(jù),得到理論邊緣數(shù)據(jù),按照理論邊緣數(shù)據(jù)設(shè)置一定的區(qū)間,在數(shù)據(jù)區(qū)間內(nèi)的邊緣識別為真實邊緣。對于真實邊緣之外的虛假邊緣線段,予以消除;對于真實邊緣上丟失的部分,若其8鄰域內(nèi)其他像素點灰度值總和大于等于閾值、符合直角端點位置關(guān)系,在該部分補(bǔ)充與真實邊緣上其他部分相同的像素點,得到完整的真實邊緣。最后對處理后的各輪廓填充圖像使用Canny邊緣提取算法得到邊緣圖像,將各邊緣圖像整合到一張圖像中形成完整的手機(jī)玻璃蓋板邊緣圖像。
工業(yè)現(xiàn)場環(huán)境復(fù)雜,采集到的工件圖像中含有椒鹽噪聲和高斯噪聲,本文采用自適應(yīng)中值濾波算法進(jìn)行濾波去噪[7]。
工業(yè)現(xiàn)場工件的擺放角度具有一定的隨機(jī)性,采集的圖像需要校正。對于采集到手機(jī)玻璃蓋板傾斜擺放的圖像,首先通過OTUS閾值法將目標(biāo)圖像與背景進(jìn)行分割[8],然后計算目標(biāo)圖像最小外接矩形,獲得中心坐標(biāo)C(x,y)和水平角度θ,求出旋轉(zhuǎn)矩陣M,最后由仿射變換[9]可以將目標(biāo)圖像旋轉(zhuǎn)水平。對圖像做仿射變換,需要先求出旋轉(zhuǎn)矩陣M,通過式(1)求得:
其中:α=S·cosθ,β=S·sinθ,C(x,y)是最小外接矩陣的中心坐標(biāo),S為放縮系數(shù),θ為矩形的旋轉(zhuǎn)角度。
旋轉(zhuǎn)角度θ為圖1中矩形長與X軸的夾角,先求出θ角的對邊和鄰邊長度,然后使用反三角函數(shù)求出角度。如式(2)所示:
圖1 矩形旋轉(zhuǎn)角度
在計算圖像最小外接矩形時其矩形偏轉(zhuǎn)角度是以X軸正方向為起點,順時針為正,逆時針為負(fù)。在計算圖像旋轉(zhuǎn)矩陣時,旋轉(zhuǎn)角度是以X軸正方向為起點,順時針為負(fù),逆時針為正。式(2)計算出θ角度后,帶入式(1)中計算旋轉(zhuǎn)矩陣M,原圖像乘以旋轉(zhuǎn)矩陣M即可得到水平圖像,設(shè)置ROI區(qū)域?qū)⑹謾C(jī)玻璃蓋板圖像提取出來。圖2(a)為待矯正圖像,圖2(b)為旋轉(zhuǎn)校正后的圖像。
圖2 圖像校正
圖像邊緣提供了目標(biāo)物體的輪廓信息,這些信息為圖像的檢測與識別起到了主要的作用[10]。通過邊緣檢測得到待測區(qū)域的粗邊緣信息,常用的邊緣檢測算子有Robert算子、Sobel算子、Prewitt算子、Laplace算子、Canny算子。其中Canny邊緣檢測算子效果最好[11],本文采用Canny算子提取邊緣。圖3為Canny算子提取的手機(jī)玻璃蓋板邊緣圖像。
圖3 邊緣提取
圖4為圖3中手機(jī)玻璃蓋板邊緣的局部圖和與其對應(yīng)的原圖,從圖4中可以看到提取的邊緣出現(xiàn)虛假、錯誤和丟失的問題,圖4(a)中提取的直角出現(xiàn)丟失,圖4(b)部分邊緣由于光照不均和玻璃透光、反光等原因,邊緣局部由有間隔的小段線段組成,形成波浪紋,圖4(b)和圖4(c)中原本由一個線段組成的直線,現(xiàn)在由多個線段錯位組成。
圖4 Canny邊緣提取局部圖
DXF是用于AutoCAD和其他應(yīng)用程序之間數(shù)據(jù)交換的CAD數(shù)據(jù)文件格式。DXF文件從整體上來看可以分為7段[12]:HEADER、CLASSES、TABLES、BLOCKS、ENTITIES、OBJECTS、END OF FILE。每個段又包括多個組。每個組在文件中占兩行內(nèi)容:組值和組碼。DXF文件中用十進(jìn)制整數(shù)表示組碼,組碼包含組值的數(shù)據(jù)類型等信息,組值的數(shù)據(jù)類型一般有整型、浮點型或字符串型等。這7個組成段中BLOCKS段或ENTITIES段記錄了所有圖形實體對象的信息數(shù)據(jù),提取實體對象數(shù)據(jù)作為先驗知識,用于指導(dǎo)圖像真實邊緣的識別。讀取DXF圖形文件中圖形實體數(shù)據(jù)[13,14]的步驟為:
1)打開DXF文件,按行讀取數(shù)據(jù),將讀出的數(shù)據(jù)暫時存入一個變量中。
2)判斷變量是否為BLOCKS、ENTITIES組值。
3)尋找BLOCKS、ENTITIES段中直線、圓弧等實體數(shù)據(jù),將數(shù)據(jù)按所屬類別存儲起來并處理。
4)判斷該變量是否為字符串“EOF”?!癊OF”是文件結(jié)尾的標(biāo)志。如果到達(dá)文件結(jié)尾則結(jié)束讀取過程。
使用DXF圖形文件中的實體數(shù)據(jù)指導(dǎo)圖像真實邊緣的提取,需要將實際的長度轉(zhuǎn)化為圖像中的像素長度,即物理參數(shù)轉(zhuǎn)化為計算機(jī)參數(shù)[4]。本文使用的相機(jī)的分率為3456×4608首先確定標(biāo)定板一個方格邊長的實際尺寸d(單位:mm),然后利用機(jī)器視覺尺寸檢測系統(tǒng)采集標(biāo)定板的圖像并進(jìn)行處理,最后算出以像素為單位的尺寸D(單位:pixel),則轉(zhuǎn)換系數(shù)k=k/D,測得標(biāo)定系數(shù)k=0.028212。
2.3.1 閉合輪廓的提取和填充
圖3中的幾何要素過多無法一次處理所有邊緣,需要按幾何輪廓逐一處理。首先將圖3按閉合輪廓逐一提取出來,其次用灰度值為255的白色像素點填充輪廓內(nèi)部,提取的部分輪廓填充后如圖5所示。
圖5 閉合輪廓填充
對各輪廓填充圖像的像素點進(jìn)行2次線掃描,在掃描結(jié)果上進(jìn)行真實邊緣的提取。第一次線掃描識別真實邊緣,第二次線掃描處理真實邊緣之外的虛假邊緣線段和真實邊緣上丟失的白色像素點,然后再次提取邊緣,得到真實的輪廓邊緣。
2.3.2 真實邊緣的識別
對于填充后的閉合輪廓,第一次掃描統(tǒng)計每一行(列)灰度值為255的像素點個數(shù),即白色像素點的個數(shù)。統(tǒng)計公式為:
其中g(shù)(i,j)表示灰度值為255的像素點,Tk為統(tǒng)計的白色像素點個數(shù)。
以圖5(c)為例,將各行(列)的像素統(tǒng)計值Tk,選取DXF圖形文件中記錄了圖5(c)所示圖形的左右兩邊直線長度L,由轉(zhuǎn)換系數(shù)k=d/D,求出L對應(yīng)的像素長度l=L/k。當(dāng)最右側(cè)線段的長度Tk<l/2,為圖像真實邊緣之外的虛假邊緣,需要消除;在l/2<Tk<l+α之間,為圖像真實邊緣,若邊緣上有丟失的部分,需要補(bǔ)全丟失的邊緣像素點,α為最大允許誤差;l≤Tk則不做處理。其他真實邊緣的識別同理。
2.3.3 直線的真實邊緣提取
第一次掃描確定真實邊緣、非真實邊緣后,第二次掃描采取從每一行的右端即列數(shù)最大的位置開始,往左逐漸移動。
對于圖像真實邊緣之外的虛假邊緣線段,線段上所有像素點的灰度值全部置為0,消除在幾何圖形輪廓外部突出的線段,例如在圖5(c)中最右側(cè)突出的線段。
對于圖像真實邊緣線段,搜索該線段上灰度值為0的像素點,若有灰度值為0的像素點,則遍歷其8鄰域內(nèi)灰度值為255的像素點,當(dāng)白色像素點個數(shù)大于等于4個,則該點為真實邊緣上的點,將該點的灰度值賦為255,否則此點為圖像真實邊緣外的點,不予賦值。如式(4)所示,其中h(i,j)為真實邊緣上灰度值為0的點,V為某一像素點8鄰域內(nèi)像素灰度值的和。
圖6為模擬閉合輪廓填充后邊緣直線的局部,圖6(a)中的邊緣直線局部有部分白色像素點缺失,若對圖6(a)使用Canny邊緣提取算法得到圖像輪廓,輪廓邊緣直線會出現(xiàn)錯層。圖6(b)為圖6(a)使用式(4)處理后的效果圖,灰色部分為補(bǔ)齊的像素點。對圖6(b)再次使用Canny邊緣提取算法,得到的邊緣直線筆直完整沒有錯層。
圖6 直線邊緣處理原理圖
圖7(a)為手機(jī)玻璃蓋板內(nèi)輪廓邊緣直線局部圖,使用Canny邊緣提取后的圖像出現(xiàn)錯層和波浪紋,如圖7(b)所示,對其使用直線的真實邊緣提取方法處理之后,使用Canny算法重新提取邊緣得到的圖像,如圖7(c)所示。
圖7 直線的真實邊緣提取
2.3.4 直角連接處的真實邊緣提取
圖8(a)是采集到的手機(jī)玻璃蓋板圖像的直角局部圖,圖8(b)顯示了其直角處灰度值有比較大的波動。圖8(c)為Canny算子提取的圖像邊緣,其直角有一定丟失,直線局部有錯層和波浪紋。對于直線的錯層和波浪紋,根據(jù)直線的真實邊緣提取方法可以將其處理,但是遇到兩直線交點處缺失的直角則需要新的處理方法。
圖8 采集的玻璃局部圖像
圖9(a)為模擬四個角有缺陷的矩形,設(shè)矩形的外圍像素點灰度值為0。通過直線的真實邊緣提取方法可以將矩形邊緣直線上的丟失像素補(bǔ)充完整,但是對于直線交點處的像素點,上述方法并不適用,如圖9(b)所示。圖9(b)中A,B,C,D四個角無法被上述方法補(bǔ)齊,分析四個角的共同特征是8鄰域內(nèi)灰度值為255的點只有3個,V值為765。以這個共同特征點為依據(jù)消除直角鋸齒。
圖9 直角邊緣處理原理圖
對于圖9(b)中上端直線的左端點A(x,y),A下方的點(x+1,y)=255,且點A右下方點(x+1,y+1)=255,左下方點(x,y-1)=0,同時滿足上面3個條件的像素點為直線左端點,可以將該點灰度值賦為255。同理對于點B,條件變?yōu)锽點下方點與左下方點灰度值為255,右下方點灰度值為0。矩形四角的判斷方式如圖10所示。
圖10 直角邊緣處理流程圖
圖8(c)中矩形的完整體經(jīng)過按閉合輪廓逐一提取、填充后,使用直線的真實邊緣提取方法和圖10所示的直角邊緣處理方法處理之后,原來矩形填充圖邊緣直線上錯層線段、波浪紋等虛假邊緣被校正,缺失的直角被修復(fù)。重新提取邊緣后的直角局部如圖11所示。
圖11 直角邊緣處理效果圖
2.3.5 直線圓弧鏈接處的真實邊緣提取
當(dāng)與圓弧相交的直線長度Tk,滿足l<Tk<l+α?xí)r邊緣沒有出現(xiàn)虛假、丟失、錯誤等問題,不做任何處理,如圖12(a)所示的圓弧與直線連接。圖12(b)為與圓弧相交的直線出現(xiàn)波浪紋等虛假邊緣,需要做一定的處理。對于直線與圓弧的交點,需保證不偏離原有的連接弧度,在直線與圓弧的真實邊緣提取過程中加入偏移量β來保持原有的直線圓弧連接處的弧度。根據(jù)圖10可知,直線端點的判斷有4種情況,與圓弧連接的直線端點也可以用這4種情況判斷,判定之后將端點往直線中心縮進(jìn)β個像素,使連接處的弧度符合實際情況。多次實驗后β取值為3。圖12(c)為處理之后的直線與圓弧的連接圖。
采集3組玻璃蓋板的圖像進(jìn)行真實邊緣提取,圖13中每一組第一張圖為玻璃蓋板邊緣輪廓全局圖,其余4張圖是第一張圖的局部圖。第一組圖像中圖13(a)是沒有經(jīng)過處理的玻璃蓋板邊緣圖,圖13(a)中邊緣有波浪紋、多重邊緣、直角丟失和錯位線段等問題。圖13(b)是圖13(a)經(jīng)過基于DXF數(shù)據(jù)的真實邊緣提取算法處理后的圖像。圖13(b)中直線消除了波浪紋和多重邊緣等虛假邊緣,補(bǔ)齊了真實邊緣上丟失的部分,校正了錯層的直線,使新的玻璃蓋板邊緣輪廓更加符合實際情況。第二組圖像圖13(c)中主要的問題是邊緣直線由錯層線段組成,直線不連貫,圖13(d)是處理線段錯層之后的圖像,邊緣由成連貫的直線組成。第三組圖像圖13(e)中的邊緣出現(xiàn)的問題和圖13(a)類似,處理后的邊緣如圖13(f)所示,解決了波浪紋、直線錯層、多余的邊緣和直角邊緣的缺失等邊緣問題。
圖13 真實邊緣提取結(jié)果
由實驗結(jié)果可知基于DXF數(shù)據(jù)的圖像真實邊緣提取方法對于規(guī)則的玻璃蓋板邊緣提取有很好的適用性,使提取的邊緣與實物更切合,減少了圖像采集和圖像處理過程中造成的邊緣提取誤差,提高了邊緣定位精度和正確性。
本文利用DXF圖形文件中實體數(shù)據(jù)的先驗性,指導(dǎo)圖像處理提取圖像真實邊緣,消除真實邊緣之外的虛假邊緣和補(bǔ)全真實邊緣上丟失的部分,校正了錯誤的邊緣,解決了在復(fù)雜環(huán)境下,傳統(tǒng)邊緣提取算法會造成玻璃等透光、反光物體圖像邊緣出現(xiàn)虛假、丟失、錯誤等問題。實現(xiàn)了圖像真實邊緣提取的目的,提高了邊緣的定位精度和正確性,對其他平面玻璃制品的視覺測量有一定借鑒意義。