王 堅(jiān),張義兵,陳 雙,何 義
(湘潭大學(xué) 自動化與信息工程學(xué)院,湘潭 411100)
機(jī)器視覺相較于人工檢測具有更強(qiáng)的適應(yīng)性、更高的穩(wěn)定性,在分辨能力、感光范圍、響應(yīng)速度等方面都能很好的彌補(bǔ)人眼的不足[1]。傳統(tǒng)瞄準(zhǔn)鏡缺陷檢測是人眼通過顯微鏡觀察瞄準(zhǔn)鏡鏡片特征,判斷產(chǎn)品是否合格,使用傳統(tǒng)人工方法檢測在這兩方面有明顯的不足。檢測準(zhǔn)確率方面,在比較短的時(shí)間里面,人眼通過顯微鏡檢測會有比較高的識別準(zhǔn)確率,隨著工作時(shí)間的增長,人的大腦和眼睛會出現(xiàn)疲勞,造成檢測準(zhǔn)確率降低。速度方面,與使用機(jī)器視覺技術(shù)檢測相比,傳統(tǒng)人工檢測的速度顯得很緩慢。
目前,應(yīng)用于缺陷檢測的機(jī)器視覺技術(shù)取得了大量的研究成果。Liang Sun[2]等提出了一種基于機(jī)器視覺的混凝土裂縫提取分類算法。通過自適應(yīng)的非線性灰度變換擴(kuò)展圖像與背景之間的灰度差。采用改進(jìn)的OTSU閾值分割法提取裂紋,并將提取結(jié)果中的斷裂點(diǎn)與斷裂骨架線的延伸方向和裂紋邊緣的灰度特征相結(jié)合,得到完整的裂紋圖像。解決了土木工程結(jié)構(gòu)健康監(jiān)測中裂縫圖像提取誤差大的問題。Li Liu[3]等提出了一種新的GANet網(wǎng)絡(luò)框架,解決了尺度變化極大的紋理分類問題。董娜[4]等提出了一種基于機(jī)器視覺雙視場雙工位協(xié)同在線檢測系統(tǒng)。通過將封酒環(huán)輪廓二維信息轉(zhuǎn)換成一維向量,巧妙的解決了封酒環(huán)輪廓缺陷在二維信息中難以提取的問題。葉文煒[5]等提出了基于機(jī)器視覺的雙視野雙遠(yuǎn)心光學(xué)系統(tǒng)設(shè)計(jì),以折射棱鏡為分界,將遠(yuǎn)心系統(tǒng)分為“物鏡”部分與“目鏡”部分,通過增加或更換“目鏡”,解決了遠(yuǎn)心系統(tǒng)更換不同倍數(shù)鏡頭時(shí)過程繁雜,容易影響精度的問題。
使用傳統(tǒng)人工檢測的方法對瞄準(zhǔn)鏡進(jìn)行缺陷檢測,檢測速度慢,目前市面上沒有將機(jī)器視覺技術(shù)應(yīng)用于瞄準(zhǔn)鏡缺陷檢測的方案,為了提高鏡缺陷檢測的檢測速度,將機(jī)器視覺技術(shù)應(yīng)用于瞄準(zhǔn)鏡缺陷檢測。本文針對黑雞絲與黑絲定位困難的問題,提出了一種基于機(jī)器視覺的瞄準(zhǔn)鏡缺陷檢測算法。算法主要分為3個(gè)步驟。第一步,圖像采集和圖像預(yù)處理,對相機(jī)采集到的圖像進(jìn)行二值化處理并找出圖像的輪廓。第二步,雞絲線段定位,在第一步的基礎(chǔ)上,對圖像進(jìn)行局部直方圖均衡化后進(jìn)行累計(jì)霍夫變換處理,利用霍夫變換找到的直線,求出它們的交點(diǎn),根據(jù)交點(diǎn)信息,使用正六邊形循環(huán)擴(kuò)散找出圖像所有的雞絲線段。第三步,判斷雞絲線段是否為黑絲或黑雞絲。
黑絲、黑雞絲與正常圖對比圖如圖1所示。從圖可以看出,黑絲圖像有一條很粗的線段。與正常絲圖像對比,黑雞絲圖像的光纖線段更明顯。由此,可以通過對瞄準(zhǔn)鏡圖像進(jìn)行一系列的圖像處理操作,讓正常的線段消失,保留黑絲與黑雞絲,通過設(shè)定的黑絲與黑雞絲長度閾值來判斷圖像上的雞絲線段是否為黑絲或黑雞絲。
圖1 黑雞絲,黑絲與原圖對比圖
圖2(a)為一組圖像中有黑絲和黑雞絲缺陷的一張圖像。為了提取圖像的目標(biāo)區(qū)域,即瞄準(zhǔn)鏡鏡片部分的圖像。對圖2(a)進(jìn)行二值化處理,二值化后圖像如圖2(b)所示,將原圖與二值化圖像進(jìn)行重疊,原圖與二值化圖像上灰度為0的位置重合的部分灰度置為0,其他位置與原圖保持一致,得到預(yù)處理圖像,如圖2(c)所示。
圖2 原圖與預(yù)處理圖像
因?yàn)殓R筒不同區(qū)域的光透過率不同,造成圖像檢測區(qū)域有亮有暗(外圍暗,內(nèi)部亮),為了減少這些干擾,將一張圖像分為兩塊,亮度較高的部分和亮度較低的部分,如圖3所示,將一張圖像分為兩部分roi1和roi2(各2/3,上下或者左右,計(jì)算左右亮度差和上下亮度差,選擇亮度差大的分塊方式)單獨(dú)處理后將結(jié)果進(jìn)行整合。在這兩張子圖片roi1和roi2中分別進(jìn)行同樣的處理,以rio2為例:使用局部直方圖均衡化[6~9]處理圖片,盡量消除不同區(qū)域的亮度差異,提高圖像對比度,如圖4所示。對局部直方圖均衡化后圖像進(jìn)行自適應(yīng)二值化[10,11],找出產(chǎn)品的骨架,自適應(yīng)二值化后圖像如圖5所示。使用累計(jì)概率霍夫變換[12]對圖5進(jìn)行處理,整合找到的所有線段,將距離接近,角度相同的線段合并成同一條線段,如圖6所示。
圖3 roi1,roi2分塊圖
圖4 局部直方圖均衡化圖像
圖5 自適應(yīng)二值化圖像
圖6 累計(jì)霍夫變換示意圖
由于自適應(yīng)二值化后找出的骨架只是整體骨架的一部分,從圖6可以看出,在這個(gè)基礎(chǔ)上,通過累計(jì)概率霍夫變換找出的雞絲線段也是不完整的,并且還產(chǎn)生了一些瞄準(zhǔn)鏡原始圖像上并不存在的干擾線段,為了找出所有雞絲線段,本文設(shè)計(jì)了一種在累計(jì)概率霍夫變換的基礎(chǔ)上,通過線找點(diǎn),點(diǎn)找線的方法,找出圖中所有的雞絲線段的方法,這個(gè)方法分為3個(gè)步驟:
第一步,利用累計(jì)概率霍夫變換得到的線段信息,求出圖6中所有的線段交點(diǎn)信息,如圖7所示。
第二步,根據(jù)第一步得到的交點(diǎn)信息,找出一個(gè)正六邊形。
鏡筒均由正六邊形的光纖組成,先確定兩條邊再根據(jù)正六邊形性質(zhì)確定第三條邊。如圖7所示,連接ab線段,bc線段,c點(diǎn)的最近相鄰點(diǎn)還有2個(gè),由正六邊形性質(zhì)可以知道,正六邊形的一條邊與它相鄰的邊角度為120度,與相臨邊相臨的邊與它角度為60度。因此,通過第三條邊與第一條邊的角度為60度,與第二條邊角度為120度,可以確定第三條邊的位置。因此,左上角的d點(diǎn)符合和點(diǎn)a,b,c組成正六邊行的條件,右上角的e點(diǎn)不能和點(diǎn)a,b,d組成一個(gè)正六邊形。同樣,根據(jù)正邊形性質(zhì)和圖上點(diǎn)的位置可以確定第四,第五和第六條邊,將六條邊相連,得到一個(gè)正六邊形。如圖8所示。
圖7 交點(diǎn)圖
圖8 六邊形示意圖
第三步,將得到的正六邊形沿與邊垂直的6個(gè)方向平移邊長的根號3倍,循環(huán)擴(kuò)散,找出所有點(diǎn)的信息(剔除第一步中找出的干擾點(diǎn),補(bǔ)齊累計(jì)概率霍夫變換沒有找出的線段交點(diǎn)),將相臨點(diǎn)連接,找出所有雞絲線段。
從圖8可以看出,通過每一個(gè)新的正六邊形,可以確定四個(gè)點(diǎn)的坐標(biāo)。如圖9所示,正六邊形abcdef沿bf向量的方向平移邊長的根號3倍可得正六邊形fekjih。設(shè)a,b,c,d,e,f,h,i,j,k的坐標(biāo)分別為(x1,y1),(x2,y2),(x3,y3),(x4,y4),(x5,y5),(x6,y6),(x7,y7),(x8,y8),(x9,y9),(x10,y10)。由正六邊形性質(zhì)可得,向量bf,向量ah,向量fi,向量ej,向量dk是相等向量。用數(shù)學(xué)關(guān)系式表示如式(1)~式(4)所示。
圖9 向量法求點(diǎn)圖
正六邊形abcdef的六個(gè)頂點(diǎn)的坐標(biāo)已知,根據(jù)式(1)~式(4)可求出h,i,j,k四點(diǎn)的坐標(biāo)。將正六邊形沿與邊垂直的六個(gè)方向平移得出的交點(diǎn)坐標(biāo)和圖7中的交點(diǎn)坐標(biāo)相比較,如果與已有的交點(diǎn)接近,則將該點(diǎn)更改為之前已經(jīng)得到的交點(diǎn)。將點(diǎn)的坐標(biāo)記錄于容器vessel中。如果是圖7中點(diǎn)集中沒有的點(diǎn),則將此點(diǎn)作為繁殖的新點(diǎn)記錄于容器vessel中。將新得到的正六邊形記錄為父正六變形,每個(gè)父正六邊形按照第一個(gè)正六變形的方法平移,找尋其他的交點(diǎn)。平移后得到的點(diǎn),如果與已有的交點(diǎn)接近,則將此點(diǎn)更改為之前已得到的交點(diǎn),再檢查與已尋得的正六邊形點(diǎn)是否接近,如果是將該點(diǎn)更改為已尋得的交點(diǎn)。將新交點(diǎn)信息記錄于容器vessel中。將新得到的正六邊形記錄為新的正六邊形,循環(huán)擴(kuò)散,如果新找到的正六邊形超出瞄準(zhǔn)鏡圖像范圍,則將此正六邊形剔除。超出圖像的偽交點(diǎn)不記錄于容器中。判斷方式為將此點(diǎn)坐標(biāo)代入圓心坐標(biāo)為瞄準(zhǔn)鏡中心,半徑為瞄準(zhǔn)鏡半徑的園中,如果得到的值比瞄準(zhǔn)鏡半徑平方要大,則此點(diǎn)不合格,此點(diǎn)組成的新正六邊形也要剔除。循環(huán)直至最后一個(gè)新正六邊形超出邊界。最終得到的整幅圖面上的所有正六邊形的點(diǎn),這部分只是子圖roi2的部分,得到的結(jié)果還需要跟子圖roi1進(jìn)行整合,將在此圖上得到的局部圖交點(diǎn)信息變成全局的交點(diǎn)信息,只需要把交點(diǎn)的坐標(biāo)(x,y)加上子圖在父圖上的平移位置即可,這個(gè)圖片是父圖上的右側(cè)三分之二的圖片,只需要將點(diǎn)的x值加上父圖的寬度的三分之一。整合所有子圖上的點(diǎn),最終得到完整圖片的所有點(diǎn),如圖10所示。
圖10 完整點(diǎn)圖
根據(jù)正六邊形的邊長與容器vessel中的點(diǎn)集,畫出符合雞絲長度的線段,即可得到圖像上所有的雞絲線段位置。將每一條雞絲線段用矩形框起來,如圖11所示。
圖11 旋轉(zhuǎn)矩形圖
在圖11上尋找一個(gè)旋轉(zhuǎn)矩形,將旋轉(zhuǎn)矩形區(qū)域擺正。對旋轉(zhuǎn)矩形區(qū)域進(jìn)行仿射變換后得到一個(gè)和圖12相似的正矩形區(qū)域roi。
圖12 正矩形roi區(qū)域圖
1)黑絲判定
對圖13(a)進(jìn)行自適應(yīng)二值化處理后,使用3×3的卷積核對圖像進(jìn)行腐蝕,卷積核的中心點(diǎn)逐個(gè)像素掃描圖像,被掃描到的圖像中的像素點(diǎn),只有當(dāng)卷積核周圍的8個(gè)像素的灰度值均為255時(shí),其值才為255,否則其值修改為0,使圖像暗的部分更多,亮的部分減少,腐蝕后得到圖13(b)。從圖上可以看出,正常絲只留下了一個(gè)幾乎看不見的白點(diǎn),黑絲還有一大片白色區(qū)域,對比明顯。在圖13(b)的基礎(chǔ)上,使用findContour找出圖像的輪廓[13],如圖13(c)所示。計(jì)算圖中白色線段的長度,黑絲長度閾值設(shè)置為100,超出閾值判斷為黑絲。
圖13 黑絲正常絲對比圖
2) 黑雞絲判定
如圖14(a)所示,從微觀上看,黑雞絲與正常絲差異不大,黑雞絲比正常絲較為粗了2um~6um,將與圖像長邊平行的方向定義為X軸,與圖像短邊平行的方向定義為Y軸,使用sobel檢測Y軸,得到圖像的垂直邊緣,如圖14(b)所示。在圖14(b)的基礎(chǔ)上,對圖像作二值化處理,凸顯黑雞絲圖像和正常絲圖像的輪廓,如圖14(c)所示。使用findContours去除圖像上的小輪廓,從圖14(d)可以看出,黑雞絲圖像還留下了一條白色的線,正常絲圖像沒有。將圖14(d)對X軸進(jìn)行映射,如果縱坐標(biāo)中有灰度值為255的點(diǎn),則在X軸上將對應(yīng)的橫坐標(biāo)的灰度值標(biāo)記為255,反之標(biāo)記為0,計(jì)算在X軸上灰度值為255的線段長度。根據(jù)產(chǎn)品要求,將黑雞絲長度閾值設(shè)置為100um,在X軸上灰度值為255的線段長度大于黑雞絲長度閾值的線段標(biāo)記為黑雞絲。
圖14 黑雞絲正常絲
本文提出的瞄準(zhǔn)鏡缺陷檢測系統(tǒng)在離線機(jī)上運(yùn)行,圖15為瞄準(zhǔn)鏡檢測系統(tǒng)實(shí)物圖。計(jì)算機(jī)操作系統(tǒng)版本為Win7,64位系統(tǒng),CPU運(yùn)行內(nèi)存為8G,配置1T的硬盤和千兆網(wǎng)卡。瞄準(zhǔn)鏡直徑約為2cm,系統(tǒng)采用4300萬像素相機(jī)(7912×5432)進(jìn)行圖像采集,單像素精度為1um。20000/(7912×1)=2.53,20000/(5432×1)=3.68,因此一個(gè)瞄準(zhǔn)鏡一共需要拍攝3×4=12張圖片,才能滿足檢測需求。在圖像采集過程中,需要對瞄準(zhǔn)鏡進(jìn)行垂直照射進(jìn)行圖像采集,因此系統(tǒng)采用的光源是背光源,如圖15(b)所示,背光源安裝在相機(jī)鏡頭的下方,需要檢測的瞄準(zhǔn)鏡放置于兩者中間。針對瞄準(zhǔn)鏡鏡筒黑絲和黑雞絲的檢測,設(shè)計(jì)了瞄準(zhǔn)鏡缺陷檢測軟件,建立QT界面,用c++語言,在Visuol Studio 2017編譯環(huán)境下編寫算法。構(gòu)建了通過軟件控制相機(jī)進(jìn)行圖像采集,對采集到的圖像進(jìn)行一系列處理,實(shí)現(xiàn)對瞄準(zhǔn)鏡黑絲和黑雞絲檢測系統(tǒng)的集成。圖16是瞄準(zhǔn)鏡缺陷檢測軟件界面示意圖。該界面包括24個(gè)按鍵,界面左下角49個(gè)空格,代表49個(gè)產(chǎn)品。
圖15 瞄準(zhǔn)鏡檢測系統(tǒng)實(shí)物圖
圖16 瞄準(zhǔn)鏡檢測系統(tǒng)界面圖
圖17為檢測流程圖。點(diǎn)擊開始按鈕,系統(tǒng)打開相機(jī),進(jìn)行圖像采集,然后調(diào)動線程函數(shù),進(jìn)行圖像處理,顯示處理結(jié)果,在主界面左下角記錄處理結(jié)果,合格,不良或標(biāo)記為需要人工檢測。
圖17 檢測流程圖
本節(jié)使用兩種不同規(guī)格的瞄準(zhǔn)鏡對瞄準(zhǔn)鏡缺陷檢測系統(tǒng)進(jìn)行測試,驗(yàn)證瞄準(zhǔn)鏡缺陷檢測系統(tǒng)的可行性,給出瞄準(zhǔn)鏡缺陷檢測的檢測效果。
1)實(shí)驗(yàn)過程
第一步,繪制檢測結(jié)果數(shù)據(jù)表,如表1,表2,表3所示。
表1 直徑2.17cm瞄準(zhǔn)鏡測試結(jié)果數(shù)據(jù)表
表2 直徑2.60cm瞄準(zhǔn)鏡測試結(jié)果數(shù)據(jù)表
表3 人工檢測與使用機(jī)器視覺檢測速度對比表
第二步,準(zhǔn)備好兩種待測樣本。
第三步,開啟瞄準(zhǔn)鏡缺陷檢測系統(tǒng)。
第四步,對兩種瞄準(zhǔn)鏡進(jìn)行缺陷檢測,并將缺陷檢測結(jié)果數(shù)據(jù)填于表中。
2)實(shí)驗(yàn)結(jié)果分析
使用直徑2.17cm和2.60cm的瞄準(zhǔn)鏡各20組,其中2.17cm的瞄準(zhǔn)鏡包括合格產(chǎn)品866,黑絲缺陷產(chǎn)品67,黑雞絲缺陷產(chǎn)品73(有的產(chǎn)品同時(shí)具有兩種缺陷),2.60cm的瞄準(zhǔn)鏡包括合格產(chǎn)品857,黑絲缺陷產(chǎn)品71,黑雞絲缺陷產(chǎn)品76,一共1980個(gè)瞄準(zhǔn)鏡對軟件系統(tǒng)進(jìn)行測試,人工檢測時(shí)間來自之前人工檢測數(shù)據(jù)統(tǒng)計(jì)。在光源強(qiáng)度,成像環(huán)境,相機(jī)的曝光,相機(jī)鏡頭,瞄準(zhǔn)鏡與光源的相對位置等成像條件一致的情況下,運(yùn)行瞄準(zhǔn)鏡缺陷檢測系統(tǒng),從上面統(tǒng)計(jì)的測試數(shù)據(jù)分析得出,兩種不同的瞄準(zhǔn)鏡得到的檢測數(shù)據(jù)區(qū)別不大,識別準(zhǔn)確率差不多。兩種產(chǎn)品黑絲缺陷檢測的識別率均達(dá)100%,2.17cm瞄準(zhǔn)鏡黑雞絲缺陷檢測識別率90.4%,合格產(chǎn)品識別率94.5%,2.60cm瞄準(zhǔn)鏡黑雞絲缺陷檢測識別率89.4%,合格產(chǎn)品識別率95.1%。識別錯(cuò)誤的主要原因是在圖像采集的過程中,采集到的圖像質(zhì)量不佳,在對圖像進(jìn)行自適應(yīng)二值化和累計(jì)霍夫變換后,許多雞絲線段缺失,由于缺失雞絲線段信息過多,在邊找點(diǎn),點(diǎn)找邊的過程中,圖像的雞絲線段定位發(fā)生錯(cuò)誤,最后框出來的旋轉(zhuǎn)矩形圖里面沒有雞絲線段,導(dǎo)致識別錯(cuò)誤。從表3可以看出,與使用傳統(tǒng)人工檢測的方法相比,使用機(jī)器視覺的方法節(jié)省了大約(1020-116)/1020=88.6%的檢測時(shí)間。在測試過程中,檢測系統(tǒng)運(yùn)行流暢,沒有出現(xiàn)異常,也沒有卡頓現(xiàn)象。驗(yàn)證了此系統(tǒng)的可行性。
本文提出了一個(gè)基于機(jī)器視覺的瞄準(zhǔn)鏡黑雞絲與黑絲檢測系統(tǒng),針對雞絲線段定位困難的問題,提出了一種以累計(jì)霍夫變換為基礎(chǔ),利用正六邊形性質(zhì),通過線找點(diǎn),點(diǎn)找線,正六邊形循環(huán)擴(kuò)散找出所有雞絲線段的方法。在離線機(jī)上進(jìn)行測試,檢測識別率超過94%,系統(tǒng)運(yùn)行流暢,驗(yàn)證了檢測系統(tǒng)的可行性,與傳統(tǒng)人工檢測相比,利用本文的提出機(jī)器視覺檢測系統(tǒng),縮短了大約88.6%的檢測時(shí)間。本系統(tǒng)適用于由正六邊形光纖組成的瞄準(zhǔn)鏡黑絲與黑雞絲的檢測。目前已應(yīng)用于實(shí)際生產(chǎn),并取得了良好的效果。