唐世寧,查長禮,程江林
(安慶師范大學(xué) 電子工程與智能制造學(xué)院,安徽 安慶 246133)
在產(chǎn)品生產(chǎn)過程中,需要對產(chǎn)品的尺寸進(jìn)行檢測以判斷產(chǎn)品是否合格。傳統(tǒng)大尺寸測量方法,一般是利用千分尺、游標(biāo)卡尺、百分表等進(jìn)行人工檢測[1],但這些方法都存在著測定速度慢、效率低以及準(zhǔn)確度差等問題。隨著電腦的大量應(yīng)用及視覺技術(shù)的發(fā)展,基于機(jī)器視覺的工件檢測技術(shù)[2]被廣泛應(yīng)用于制造業(yè)領(lǐng)域,而圖像邊緣檢測是影響尺寸檢測精度的關(guān)鍵因素之一。常用的圖像邊緣檢測方法主要是通過圖像和微分算子卷積來實(shí)現(xiàn)邊緣的提取,即使用不同的模板來近似表達(dá)圖像中每個像素的一階偏導(dǎo)數(shù),如Sobel算子[3]、Laplace算子[4-5]和Canny算子[6]等,其特點(diǎn)是檢測不準(zhǔn)確、效率低和適應(yīng)能力差,同時對噪聲也較敏感。因此,圖像邊緣檢測已成為諸多學(xué)者和行業(yè)所研究和關(guān)注的焦點(diǎn)。過去幾十年提出了許多亞像素邊緣檢測方法,有最常見的矩方法[7-13]、插值法[14]和擬合法[15],其中矩方法是目前比較可靠的亞像素邊緣檢測方法,而且Zernike矩[16]具有旋轉(zhuǎn)不變的特性,又能降低噪聲的影響,因而被廣泛運(yùn)用。
為進(jìn)一步提高工件尺寸測量的準(zhǔn)確性,本文提供了一個改進(jìn)Zernike矩的亞像素邊緣檢測方法。首先,對輸入的圖像進(jìn)行灰度化處理,并用各向異性擴(kuò)散濾波進(jìn)行濾波處理,以消除噪聲對后續(xù)工作的影響,再結(jié)合Otsu算法[17(]大津算法)進(jìn)行閾值分割以得到二值圖像。然后,利用蟻群算法來實(shí)現(xiàn)像素級的粗定位,再利用Zernike矩的模型對所獲取的像素級邊界進(jìn)行重新確定,并通過改進(jìn)的閾值以確定算法,從而可以重新定義圖像的亞像素邊緣。
蟻群算法[18]的圖像邊緣檢測,就是在一張圖片中搜尋灰度差最大的區(qū)域。在尺寸為M×N的圖像W上隨意布局P只螞蟻,該圖像上所有像素點(diǎn)都是螞蟻所需要遍歷的節(jié)點(diǎn)。令信息素矩陣μ(0)中的每個元素初值均為常量,搜索的最優(yōu)解就是最符合特征目標(biāo)的輪廓線,也就是灰度差最大、信息素濃度最高的路徑[19]。
在第n步驟的完成過程中,從上述P只螞蟻中隨機(jī)選擇一只,并讓這只螞蟻在圖像上不間歇地移動。這只螞蟻從節(jié)點(diǎn)(a,b)移動到節(jié)點(diǎn)(i,j)的變換概率[20]為,式中為節(jié)點(diǎn)(i,j)的信息素值;Ω(a,b)為節(jié)點(diǎn)(a,b)的鄰域內(nèi)所有像素點(diǎn)的集合;ηij為節(jié)點(diǎn)(i,j)的啟發(fā)信息值;α,β分別是信息素矩陣和啟發(fā)矩陣的影響因子,在各取0.5時,可獲得比較好的檢測效果。
在此流程中,通過對最終的信息素μ(F)使用閾值T,可以判斷某一個像素點(diǎn)是否為邊界點(diǎn),而閾值T可通過自適應(yīng)算法得出。使用信息素的平均值為閾值點(diǎn)的起始值T(0),并根據(jù)是否大于T(0),把信息素矩陣?yán)锩娴脑胤譃閮蓚€部分,新閾值點(diǎn)數(shù)為這兩個部分各自的平均值。這個過程持續(xù)迭代,直到閾值不再產(chǎn)生改變。
迭代過程如
①設(shè)置迭代指數(shù)l=l+1,然后更新閾值T(l)=
②若|T(i)-T(l-1)|>ε,則返回步驟(2);否則迭代結(jié)束并退出,以Gij=為標(biāo)準(zhǔn)來判斷每個像素點(diǎn)位置(i,j)是否為邊緣。若像素點(diǎn)位置(i,j)是邊緣,則Gij=1;否則Gij=0。
在一個單位圓中,連續(xù)圖像f(x,y)的n階m次Zernike矩[22]定義為
離散數(shù)字圖像f(x,y)的n階m次Zernike 矩表達(dá)式為Knm=若圖像旋轉(zhuǎn)α角度,則旋轉(zhuǎn)前后的Zernike 矩多項(xiàng)式之間的關(guān)系滿足Knm=K′nme-ima。由此可以發(fā)現(xiàn),圖像在轉(zhuǎn)動時只是相角出現(xiàn)了改變,而Zernike矩陣的相模不變,這種特性便是Zernike矩陣的旋轉(zhuǎn)不變性。
假設(shè)單位圓(x2+y2=1)的圓心處在圖形的一個像素點(diǎn)處,且圖形邊緣穿過了這個圓,由此可建立理想的階躍邊緣模型,如圖1 所示。每個單位圓內(nèi)含有的垂直曲線是圖像理想邊界,k是階躍幅度,h是背景區(qū)域內(nèi)灰度值,則陰影部分的灰度值就是h+k,l是圓心至理想邊界的垂直距離,α是邊緣豎直方向與x軸線之間的夾角。利用Zernike 矩的旋轉(zhuǎn)不變性,將圖像順時針旋轉(zhuǎn)α角度,使邊緣線垂直于x軸線,如圖1(b)所示。
圖1 Zernike矩理想邊界階躍模型
對圖1所示的理想邊界階躍模型計(jì)算,可得
圖2 Zernike矩7×7模板
針對工件圖像邊緣檢測精度和速度這一問題,王兵等[23]融合卷積網(wǎng)絡(luò)并結(jié)合傳統(tǒng)canny檢測算法來進(jìn)行邊緣檢測,提高了檢測精度,但是該算法對電腦要求較高,且運(yùn)算速度較慢。馬艷娥等[24]將canny算法與Zernike矩亞像素邊緣檢測進(jìn)行融合,提高了邊緣檢測的速度但精度不夠。本文提出了基于蟻群算法的Zernike矩亞像素邊緣檢測算法,先利用蟻群算法以實(shí)現(xiàn)像素級的粗定位,再利用Zernike矩模型對所獲取的像素級邊界進(jìn)行重新確定,簡化了算法并提高了算法精度和運(yùn)算速度,同時在搭建的實(shí)驗(yàn)平臺上進(jìn)行了驗(yàn)證。
驗(yàn)證實(shí)驗(yàn)平臺如圖3 所示,主要包括光源、相機(jī)、調(diào)焦滑軌、支架、圖像采集系統(tǒng)及PC機(jī)等。為了保證從平臺采集的圖像具有高品質(zhì)和好的清晰度,選擇美國COGNEX 公司的COMS 工業(yè)相機(jī)進(jìn)行圖像采集,調(diào)焦范圍為25 mm~**,最大光圈為2.0。圖像像素為3 840 × 2 748,圖像檢測環(huán)境為Windows10,處理器為Intel(R),Core(TM),i5-10400CPU@ 2.90GHz,內(nèi)存為8 GB,在MATLAB2021 上實(shí)現(xiàn)圖像的亞像素邊緣檢測。
圖3 COMS相機(jī)平臺
改進(jìn)的Zernike矩亞像素檢測方法步驟如圖4所示。首先對采集到的圖像進(jìn)行灰度化處理,并用AF算法進(jìn)行濾波處理以消除噪聲對后續(xù)工作的影響,再結(jié)合Otsu 算法(大津算法)進(jìn)行閾值分割以得到二值圖像,以完成圖像預(yù)處理。然后利用ACO(蟻群算法)實(shí)現(xiàn)像素級的粗定位,且利用Zernike 矩模型對所獲取的像素級邊緣進(jìn)行重新確定,并通過改進(jìn)的閾值確定算法重新定義圖像的亞像素邊緣。具體流程如下:
圖4 亞像素檢測流程
(1)對輸入的圖像進(jìn)行預(yù)處理
濾波是圖像預(yù)處理的重要一步,進(jìn)行圖像濾波可使圖像去除噪聲的影響以優(yōu)化圖像質(zhì)量,并最大限度保持圖像邊緣特征?;叶葓D僅占據(jù)較小的內(nèi)存且能夠很好的保存圖像基本特征,減小了算法的運(yùn)算量,所以在濾波之前對圖像灰度化處理很有必要。各向異性擴(kuò)散濾波算法[21]能夠較好地去除噪聲,也能夠更大限度地保存圖像的邊緣特征,并用大津算法[22]進(jìn)行圖像分割。
為了消除噪聲等外界因素對圖像邊緣提取的干擾,并更加快捷有效地定位圖像邊緣,通過二值化方法將圖像數(shù)據(jù)變小,使計(jì)算更快捷,所形成的二值圖如圖5 所示。從圖可以看出,處理過后的圖像邊緣清晰,消除了噪聲對圖像的影響。
圖5 二值圖
(2)圖像邊緣檢測
首先對上述二值圖用ACO 算法進(jìn)行邊緣的粗提取,提取后的邊界特征如圖6 所示。從圖看出,ACO算法雖可以提取出金屬零件的邊界特征點(diǎn),但所提取出的邊緣特征點(diǎn)較為稀疏,圖像也較模糊并且斷點(diǎn)較多,所獲得的邊緣結(jié)果不盡人意。為獲取比較精確的工件邊界,對上述方法抽取的像素級邊界采用Zernike 矩算法以實(shí)現(xiàn)亞像素定位。在定位前,先對7×7的模板進(jìn)行計(jì)算,結(jié)果如圖7所示。
圖6 ACO算法提取的邊緣粗定位
圖7 Zernike矩7×7矩陣。(a)K00模板;(b)K11實(shí)數(shù)模板;(c)K11虛數(shù)模板;(d)K20模板;(e)K31實(shí)數(shù)模板;(f)K31虛數(shù)模板;(g)K40模板
在模板計(jì)算完成后,將模板導(dǎo)入算法中,并通過最大類間方差法算出閾值kt為131。改進(jìn)方法得出的亞像素邊緣提取圖如圖8(a)所示,可以看出提取的邊緣較為完整清晰,很好地還原了圖像原本的樣子,符合尺寸檢測對邊緣特征提取的精度要求。相較而言,圖8(b)所示的傳統(tǒng)Zernike矩亞像素邊緣檢測算法所檢測的圖像邊緣模糊不完整,缺失了過多的邊緣特征點(diǎn),不利于尺寸檢測對工件的精準(zhǔn)定位。
圖8 提取的亞像素邊緣。(a)本文改進(jìn)算法提?。唬╞)傳統(tǒng)Zernike算法提取
為直觀分析改進(jìn)方法與傳統(tǒng)Zernike矩亞像素邊緣提取算法的差異,隨機(jī)選擇亞像素邊緣圖像中5個點(diǎn)的亞像素坐標(biāo)和圖像原始坐標(biāo)進(jìn)行對比,并計(jì)算改進(jìn)方法所提取的亞像素點(diǎn)坐標(biāo)值和原始圖像的像素點(diǎn)坐標(biāo)值之間誤差的絕對值,且記為絕對誤差。如表1 所示,傳統(tǒng)Zernike矩算法檢測到的邊緣特征點(diǎn)像素坐標(biāo)與原始圖像像素坐標(biāo)偏差較大,而改進(jìn)方法的邊緣特征點(diǎn)像素坐標(biāo)與原始圖像像素坐標(biāo)之間的絕對誤差不超過0.5,精度較高,能夠較好地滿足工業(yè)上尺寸檢測精度的要求。
表1 圖像的像素坐標(biāo)
運(yùn)用MATLAB編輯器中的“運(yùn)行并計(jì)時”工具對改進(jìn)的亞像素邊緣檢測算法和傳統(tǒng)Zernike矩亞像素邊緣檢測算法的運(yùn)行時間進(jìn)行計(jì)算??紤]到MATLAB 軟件自身影響,將兩個算法分別做了5次運(yùn)行測試以減少軟件問題對代碼運(yùn)行時間的影響,結(jié)果如表2 所示??梢钥闯觯噍^于傳統(tǒng)的亞像素邊緣檢測算法,改進(jìn)方法的運(yùn)行速度有一定程度的提高,約為原來速度的10倍,能夠較好地滿足工業(yè)上尺寸檢測對算法速度的要求。
表2 邊緣檢測算法程序的運(yùn)行時間/s
為了進(jìn)一步提高工件尺寸測量的準(zhǔn)確性,本文提出了一個改進(jìn)Zernike矩的亞像素邊緣檢測方法。先采用濾波、閾值分解等技術(shù)對圖像進(jìn)行預(yù)處理以得到二值圖,然后利用蟻群算法來實(shí)現(xiàn)像素級的粗定位,再利用Zernike矩模型對所獲取的像素級邊界進(jìn)行了重新確定,并通過改進(jìn)的閾值確定算法,可以重新定義圖像的亞像素邊緣。結(jié)果表明,改進(jìn)的方法相較于傳統(tǒng)邊緣提取方法,其檢測精度更高,運(yùn)行速度更快,能夠達(dá)到工業(yè)尺寸檢測的要求。未來如何解決邊緣檢測算法的普適性和實(shí)時性還需要深入研究。