方乃偉,呂學(xué)強,2,張 丹+,王 濤,2
(1.北京信息科技大學(xué) 網(wǎng)絡(luò)文化與數(shù)字傳播北京市重點實驗室,北京100101;2.北京拓爾思信息技術(shù)股份有限公司,北京100101)
機械設(shè)計圖像是對機械設(shè)計進行描述的主要載體,反映了設(shè)計者的技術(shù)水平和設(shè)計思想,在機械工程中有至關(guān)重要的作用。如圖1所示,機械設(shè)計圖像 (圖1(a))一般為二值圖像,主要包含標(biāo)引 (圖1(c))和機械設(shè)計主體(圖1(b))兩個部分,而機械設(shè)計圖像的主輪廓 (圖1(d))指去除機械設(shè)計主體內(nèi)部所有信息后得到的最大邊界。在對機械設(shè)計圖像的研究和應(yīng)用中,人們往往只對其主輪廓感興趣,主輪廓對機械設(shè)計圖像的邊界信息描述、零件配準(zhǔn)[1]、矢量化或尺寸測量[2]等有重要的作用,是這些工作得以進行的前提,因此需要將主輪廓準(zhǔn)確地分離出來,從而能夠?qū)ζ渥鲞M一步地分析和處理。
圖1 機械設(shè)計圖像組成
目前國內(nèi)外針對機械設(shè)計圖像主輪廓提取的研究比較缺乏,而且現(xiàn)有的輪廓提取方法不能很好地應(yīng)用于機械設(shè)計圖像。但通過借鑒已有的各種圖像處理技術(shù)處理機械設(shè)計圖像,解決主輪廓提取存在的問題,是一種可行的方法。本文通過利用和改進圖像形態(tài)學(xué)、區(qū)域填充和輪廓跟蹤的方法,實現(xiàn)了機械設(shè)計圖像主輪廓的提取。
二值圖像的輪廓提取通常要依靠邊緣檢測算法[3]或邊界跟蹤算法[4]來實現(xiàn),但由于標(biāo)引及其內(nèi)部孔洞的干擾,機械設(shè)計圖像在使用這些方法的時候往往都得不到理想的主輪廓,如圖2所示,對圖1(a)進行canny邊緣檢測后非但沒有達到輪廓提取的目的,反而使圖像變得更復(fù)雜(邊緣線原本應(yīng)為單像素組成的細線,為達到更好的顯示效果,圖2中本文對邊緣檢測結(jié)果做了加粗處理)。
圖2 機械設(shè)計圖邊緣檢測
由機械設(shè)計圖像的特點可知,要有效地將機械設(shè)計圖像的主輪廓提取出來,需要解決以下兩個問題:首先需要對圖像內(nèi)部存在的孔洞進行填充,避免輪廓提取時在內(nèi)部產(chǎn)生不必要的邊界;其次是將相互粘連的主輪廓和標(biāo)引分離開,消除標(biāo)引線對主輪廓的干擾??锥刺畛鋯栴}需要依靠圖像區(qū)域填充的方法來解決,目前圖像區(qū)域填充主要有形態(tài)學(xué)填充方法和種子填充方法兩種。
形態(tài)學(xué)填充方面,文獻 [5]根據(jù)式 (1)選擇初始標(biāo)記圖像F,并對圖像進行重構(gòu)操作,實現(xiàn)了對圖像孔洞的有效填充,但由于該方法需要從圖像邊界開始逐步向圖像內(nèi)部進行擴張,需要經(jīng)過多次的迭代才能得到圖像的邊界,比較耗時。文獻 [6]針對文獻 [5]存在的問題,利用式(2)對初始標(biāo)記圖像F進行設(shè)置,仍利用重構(gòu)方法得到圖像輪廓,迭代的次數(shù)比文獻 [5]大大減少,填充效率得到極大的提高,但該方法在圖像的區(qū)域面積較大時處理仍然較慢
種子填充算法可以細分為Flood Fill[7],掃描線種子算法[8,9]等,這些算法的核心思想是一致的,都是從區(qū)域內(nèi)指定的種子點開始,向各個方向搜索并對像素進行逐個處理直到區(qū)域邊界,各個種子填充算法只是在區(qū)域邊界的方式上有所不同,且不需要對圖像和圖像之間的操作進行不斷地迭代,直接在輸入圖像上進行基于像素的操作就能達到目的,填充效率較形態(tài)學(xué)填充要快得多,但是每次填充都需要給出區(qū)域中的一個點作為填充的起始點,在機械設(shè)計圖中,內(nèi)部孔洞區(qū)域較多且難以確定,因此現(xiàn)有的種子填充算法不適用于對機械設(shè)計圖像區(qū)域填充進行自動處理;文獻 [10]提出一種凸多邊形的掃描線算法,利用掃描線與邊的交點確定填充的區(qū)域,這種方法能對凸多邊形進行有效地填充,但只適用于單個區(qū)域的處理。
在實現(xiàn)孔洞填充的基礎(chǔ)上,機械設(shè)計圖標(biāo)引和主輪廓的分離問題可以考慮圖像形態(tài)學(xué)的開操作進行解決,開操作一般會使對象的輪廓變得光滑,斷開狹窄的線段和消除細的突出物,文獻 [3]將其操作定義為
從式 (3)可以看出,開操作通過一次腐蝕操作對消除細線,再通過一次膨脹操作恢復(fù)圖像的輪廓,但在處理標(biāo)引線寬度較大的機械設(shè)計圖像時,腐蝕操作無法將二者分離開,開操作就得不到理想的效果。
本文的主輪廓提取方法主要包含兩個部分:第一部分,通過觀察和總結(jié)機械設(shè)計圖像的區(qū)域分布特性,提出一種能夠自動選取種子點的區(qū)域填充方法,實現(xiàn)機械設(shè)計圖像內(nèi)部孔洞的自動填充;第二部分,在孔洞填充基礎(chǔ)上,結(jié)合機械設(shè)計圖像標(biāo)引的普遍特點,對圖像形態(tài)學(xué)開操作進行改進,從而將標(biāo)引從主輪廓上分離出來,并利用圖像輪廓跟蹤原理提取出機械設(shè)計圖像主輪廓。以下對本文提出的主輪廓提取方法進行具體的描述。
種子填充算法能夠高效地填充圖像區(qū)域,但前提是能夠為每個區(qū)域都能找到正確的種子點,若要對機械設(shè)計圖像孔洞進行完全填充,需要為每個內(nèi)部的孔洞區(qū)域手動確定一個種子點,這種方式在處理大量機械設(shè)計圖像的時候顯然是不可行的。
通過對大量機械設(shè)計圖的觀察可知,除了極少部分機械設(shè)計圖中的標(biāo)引外,機械設(shè)計的內(nèi)容都不與出現(xiàn)圖像的邊界相交,也就是說,對于大部分機械設(shè)計圖像,它們的外部可以看成一個由圖像邊界和機械設(shè)計圖像外輪廓共同圍成的 “孔洞”,若對機械設(shè)計外部區(qū)域進行填充則只需要選擇一次種子點并進行一次孔洞填充。本文利用這一特點,提出一種間接獲取無孔洞機械設(shè)計圖像的方法。首先,為保證方法的普遍適用性,我們對機械設(shè)計圖像進行預(yù)處理,處理方法如式 (4)
式中:A(x,y)——機械設(shè)計圖像,PMark——孔洞填充的像素值,預(yù)處理操作將圖像的邊界全部設(shè)置為填充像素值,將邊界上的標(biāo)引像素消除,保證了機械設(shè)計的外部只有一個連通的區(qū)域。對經(jīng)過處理的機械設(shè)計圖外部進行孔洞填充,具體的方法為:從左到右,從上到下開始掃描圖像,選擇和邊界相鄰的第一個背景像素作為種子點,并執(zhí)行種子填充算法,得到一幅外部孔洞填充的圖像 (如圖3(a)所示)。從外部孔洞填充圖像得到內(nèi)部無孔洞的圖像的方法可以用式 (5)來表示,它將機械設(shè)計圖像的輪廓線及其內(nèi)部所有點和外部孔洞區(qū)域根據(jù)填充像素值區(qū)分開來,這樣就得到了內(nèi)部孔洞全部得到填充的機械設(shè)計圖像 (圖3(b))
圖3 機械設(shè)計圖像孔洞填充
2.1 節(jié)解決了機械設(shè)計圖像的孔洞填充問題,但并沒有對機械設(shè)計圖像的標(biāo)引進行處理 (如圖3(b))。本節(jié)主要對機械設(shè)計圖像的標(biāo)引和主輪廓分離的方法進行研究。對孔洞填充后的機械設(shè)計圖進行分析,可以發(fā)現(xiàn)以下幾個特點:
(1)和機械設(shè)計圖主輪廓相比,標(biāo)引線的寬度較小。
(2)圖像中的數(shù)字幾乎不和機械設(shè)計圖主輪廓直接相連。
(3)主輪廓所圍的區(qū)域面積明顯大于其它區(qū)域面積,是圖像中各區(qū)域面積中的最大者。
基于以上分析可知,標(biāo)引線分離是標(biāo)引消除的一個關(guān)鍵問題。圖像形態(tài)學(xué)中的膨脹能使圖像擴大而腐蝕能使圖像縮小[11],利用這一原理我們可以考慮先利用腐蝕操作將標(biāo)引線條逐漸變細并和主輪廓分離,再通過膨脹操作恢復(fù)主輪廓形狀,但腐蝕操作過多有可能對主輪廓的形狀產(chǎn)生影響,因此需要確定腐蝕和膨脹的量。將上述輪廓和標(biāo)引分離的操作定義為S,則S可以用式 (6)表示
式中:Dilate、Erode——膨脹、腐蝕操作,n——重復(fù)進行腐蝕和膨脹的次數(shù),特別地,當(dāng)n=1時,式 (6)等價于式 (3),即相當(dāng)于對圖像進行了一次開操作。本文通過選取不同的參數(shù)n,分別測試引線分離的效果,經(jīng)實驗表明,當(dāng)n在取2時能夠取得最理想的效果。
如圖4(a)所示,經(jīng)過標(biāo)引和主輪廓的分離后,機械設(shè)計圖主輪廓已經(jīng)基本獨立出來,但圖像中有很多細小的區(qū)塊存在,本文通過基于輪廓跟蹤的算法解決這些圖像的主輪廓提取問題。圖像的輪廓跟蹤算法現(xiàn)在已經(jīng)比較成熟,此處不再贅述。根據(jù)文獻 [12]算法提取出圖像中的所有輪廓并利用邊界跟蹤的方法計算輪廓面積,其中面積的最大者即機械設(shè)計圖像的主輪廓 (如圖4(b)所示)。
圖4 標(biāo)引分離與主輪廓提取
本文實驗平臺是:CPU為Intel Core i7-2670QM,主頻2.2GHz,內(nèi)存8G,操作系統(tǒng)為Windows7。
為驗證主輪廓提取方法的有效性,對1000幅機械設(shè)計圖像進行主輪廓提取實驗,并統(tǒng)計主輪廓提取的成功率,由于對單幅圖像的主輪廓提取成功與否很難定量地分析,本文給出了兩個條件用以判定一幅機械設(shè)計圖像的主輪廓被正確提取出來:
(1)圖像中的標(biāo)引已經(jīng)被完全清除。
(2)主輪廓邊界的細小凸起沒有因為腐蝕操作而被消除。
根據(jù)以上兩個判斷標(biāo)準(zhǔn),1000幅圖像中有842幅圖像成功提取了其主輪廓,成功率達到84.2%,實驗表明本文方法具有一定的實際意義。圖5給出了部分機械設(shè)計圖像主輪廓提取的過程及結(jié)果。其中,第一列為機械設(shè)計原圖,第二列為孔洞填充結(jié)果,第三列為標(biāo)引分離結(jié)果,第四列為主輪廓提取結(jié)果。
圖5 部分機械設(shè)計圖像輪廓提取結(jié)果
對于提取主輪廓失敗的機械設(shè)計圖像,主要是由于出現(xiàn)了以下情況:
(1)原圖的主輪廓上存在斷線,導(dǎo)致孔洞填充結(jié)果不正確。
(2)圖像的標(biāo)引線寬度較大,開操作無法將其與主輪廓分離開。
(3)機械設(shè)計圖輪廓填充主輪廓上存在寬度較小的部分,在圖像開操作過程中被誤當(dāng)稱標(biāo)引去除掉。
為驗證本文孔洞填充算法的有效性,首先選取了5幅機械設(shè)計圖像,分別用文獻 [5,6]和本文的方法進行孔洞填充并分別統(tǒng)計消耗的時間,實驗結(jié)果見表1。然后,測試了3種方法在同時處理不同數(shù)量圖像時的表現(xiàn),仍然以時間作為衡量標(biāo)準(zhǔn),實驗結(jié)果如表2所示,為更直觀地觀察3種算法的效率,如圖6所示給出了表2對應(yīng)的時間對比折線圖。由于文獻 [5,6]的方法每次迭代操作都需要進行一次膨脹操作,一次圖像 “與”操作,以及一次圖像比較操作,每一步的操作都需要對不同圖像的大量像素進行訪問操作,極大影響了算法的執(zhí)行效率,而本文方法則直接在輸入圖像上對圖像像素值進行操作,因此效率更高,如表1所示,本文方法在單幅圖像的處理上效率得到了極大的提高,另外,從圖6可以看出,隨著處理圖像的數(shù)目的增加,本文方法在處理時間上的優(yōu)勢變得越來越明顯。
表1 單幅圖像填充時間對比
表2 處理不同數(shù)量圖像時的填充時間對比
本文結(jié)合孔洞填充、形態(tài)學(xué)處理和輪廓跟蹤相關(guān)理論,提出一種機械設(shè)計圖像主輪廓提取算法。該算法分為機械設(shè)計圖像孔洞填充和標(biāo)引消除兩個部分。在機械設(shè)計圖像孔洞填充中,提出一種自動種子填充算法,提高了孔洞填充的效率;在標(biāo)引消除中,根據(jù)定義的標(biāo)引分離操作實現(xiàn)標(biāo)引線和輪廓的分離,并通過輪廓區(qū)域面積計算獲得機械設(shè)計圖像的主輪廓。通過實驗表明,本文方法能夠快速提取出符合要求的機械設(shè)計圖像主輪廓。但本文方法不適用于對斷線比較明顯以及包含特殊標(biāo)引線 (如引線的部分區(qū)域和機械設(shè)計輪廓形成封閉區(qū)域)的機械設(shè)計圖像,今后的研究將著眼于圖像主輪廓斷線的連接以及孔洞的正確識別。
圖6 3種算法的時間對比折線
[1]SUN Qiang,YE Yutang,SONG Yuncen,et al.Fast and stable method based on optimized RANSAC algorithm for two-dimensional image [J].Computer Engineering and Design,2012,33 (6):2373-2377 (in Chinese). [孫強,葉玉堂,宋昀岑,等.基于優(yōu)化RANSAC算法的二次元快速穩(wěn)定配準(zhǔn)[J].計算機工程與設(shè)計,2012,33 (6):2373-2377.]
[2]LIU Kewen,ZHOU Ping,F(xiàn)U Binbin.Measurement of circular ring parts’form and position size base on machine vision[J].Industrial Control Computer,2010,23 (7):1-3 (in Chinese).[劉科文,周平,付斌斌.基于機器視覺的圓環(huán)形零件形位尺寸自動測量 [J].工業(yè)控制計算機,2010,23(7):1-3.]
[3]LIU Chao,ZHOU Jiliu,HE Kun.Adaptive edge-detection method based on Canny algorithm [J].Computer Engineering and Design,2010,31 (18):4036-4039 (in Chinese). [劉超,周激流,何坤.基于Canny算法的自適應(yīng)邊緣檢測方法[J].計算機工程與設(shè)計,2010,31 (18):4036-4039.]
[4]CHEN Youguang.Boundary tracing、region filling and applications of chains code [D].Shanghai:East China Normal University,2006:13-33 (in Chinese). [陳優(yōu)廣.邊界跟蹤、區(qū)域填充及鏈碼的應(yīng)用研究 [D].上海:華東師范大學(xué).2006:13-33.]
[5]RUAN Qiuqi.Digital image processing using MATLAB [M].Beijing:Publishing House of Electronics Industry,2009:273-276(in Chinese). [阮秋琦.數(shù)字圖像處理:MATLAB版[M].北京:電子工業(yè)出版社,2009:273-276.]
[6]Hasan M M,Mishra P K.Improving morphology operation for 2Dhole filling algorithm [J].International Journal of Image Processing,2012,6 (1):1-12.
[7]LEE J,KANG H.Flood fill mean shift:A robust segmentation algorithm [J].International Journal of Control,Automation and Systems,2010,8 (6):1313-1319.
[8]Bei L,Ying P,Xiaohua W.One improved scan line seedfilling algorithm [C]//China-Ireland International Conference on Information and Communications Technologies,2007:936-942.
[9]Daewoong K,Kilhyung C.Adaptive scanline filling algorithm for OpenVG 2Dvector graphics accelerator [J].IEICE Transactions on Information and Systems,2009,92 (7):1500-1502.
[10]CAI Shijie,SONG Jiqiang,CAI Min.Computer graphics with OpenGL [M].3rd ed.Beijing:Publishing House of Electronics Industry,2010:159-167 (in Chinese). [蔡 世杰,宋繼強,蔡敏.計算機圖形學(xué) [M].3版.北京:電子工業(yè)出版社,2010:159-167.]
[11]RUAN Qiuqi,RUAN Yuzhi.Digital image processing [M].2nd ed.Beijing:Publishing House of Electronics Industry,2007:423-431 (in Chinese). [阮秋琦,阮宇智.數(shù)字圖像處理 [M].2版.北京:電子工業(yè)出版社,2007:423-431.]
[12]GE Weihua,CHEN Youguang.Calculation of image’s region area based on contour tracing [J].Computer Application and Software,2008,25 (6):239-274 (in Chinese). [葛偉華,陳優(yōu)廣.基于邊界跟蹤的區(qū)域面積計算 [J].計算機應(yīng)用與軟件,2008,25 (6):239-274.]