王湘明, 孫建建, 傘宏力
(沈陽工業(yè)大學 信息科學與工程學院, 沈陽 110870)
隨著工業(yè)技術和市場經(jīng)濟的高速發(fā)展,工業(yè)自動化的需求逐年增加,尤其是近幾年人工智能、機器視覺等技術的飛速發(fā)展,更是激起了對自動檢測在各種工業(yè)應用的熱情.基于機器視覺的表面缺陷檢測技術已經(jīng)應用在紡織、金屬零件加工、玻璃、農(nóng)產(chǎn)品等領域[1-4],王湘明等[5]在自動上料機器人視覺系統(tǒng)中實現(xiàn)了電檢定位抓取.在基于機器視覺的整個檢測過程中,獲取原始圖像信息尤為重要,清晰完整的畫面圖像為后面的檢測工作奠定了良好的基礎.對于一些回轉體物體,獲取完整圖像的方法一般有兩種:一種是固定相機,把物體旋轉360°進行拍照;另外一種是固定物體,旋轉相機一周進行拍照.無論哪種方式圖像邊緣都會存在信息壓縮,針對該問題,本文以模具棒模型為例,對安全套圖像邊緣存在的信息壓縮問題進行了數(shù)學建模計算,并對其進行了柱面展開,用以后續(xù)檢測安全套表面缺陷.
柱狀物體由于柱體兩側弧度的原因,在拍攝過程中存在兩側邊緣部分信息壓縮問題,信息壓縮比例在圓周方向上是逐漸變化的,不同位置不同視場有著不一樣的信息損失比例.在安全套生產(chǎn)行業(yè)中,用于生產(chǎn)安全套的模具棒類似于圓柱物體,因此可以對模具棒上的安全套進行拍照,通過視覺處理的方式來檢測其表面是否存在可見缺陷,代替低效率的人工檢測方式.為了更好地獲取原始圖像,對圓周方向上的信息壓縮比進行了計算.
首先,建立數(shù)學模型,如圖1所示,假設圓柱體半徑為r,周長c、弧長L及弦長AB可以表示為
(1)
現(xiàn)對弧長L取值為0.1 mm(本文選取該值為最小弧長),半徑r取值為20.5 mm(某款模具棒的半徑值),代入式(1)計算得出弦長lAB為0.099 9 mm,由此可以得出弦長lAB的值近似等于弧長L,因此,在接下來的計算中使用弦長值來代替弧長.
有效投影角度接近180°時的示意圖如圖2所示,選取邊緣部分0.1 mm的圓弧對其投影,求投影之后的長度.由圖2可知,三角形ODE相似于三角形EDC,0.1 mm的弧長近似等于弦長CE,根據(jù)三角形相關知識可以求得投影長度CD近似為0.000 487 8 mm,通過計算可知原長度曲線投影成直線之后被壓縮了約205倍.
當有效投影角度接近120°時,同理選取邊緣部分0.1 mm的圓弧,對其向水平軸線方向進行投影,求投影之后的長度,其計算表達式為
圖2 有效投影角度示意圖Fig.2 Schematic diagram of effective projection angle
(2)
由式(2)計算可得,投影MN長度約為0.050 211 mm,通過把原長度值與投影值MN做比值可知,原長度曲線壓縮了大約2倍.
當有效投影角度接近60°時,求投影之后的長度,其計算方法和有效投影角度接近120°的時候一樣,只不過是改變了計算的角度值.計算可得投影QP長度為0.086 724 mm,將原長度值與投影值QP做比值,發(fā)現(xiàn)原長度曲線壓縮了大約1倍.同理,當有效投影角度接近30°時,將原長度值與投影值ST做比值,發(fā)現(xiàn)原長度曲線同樣壓縮了約1倍.
通過上述不同的有效投影角度可知,隨著有效投影角度逐漸變小,所得到的畫面越來越清晰,即信息壓縮量逐漸減少.有效投影角度無限接近180°時壓縮最嚴重;接近120°的時候效果明顯要好于180°的時候,此時壓縮比約為2;接近于60°和30°時壓縮比都約為1,可以看出有效投影角度從120°往后壓縮比變化越來越小.用于缺陷檢測的圖片要完整地表示出整個物體,同時為了提高檢測效率,圖片個數(shù)要盡可能的少,基于這兩方面的考慮,本文對一個模具棒拍攝三張圖片.
柱面投影變換是將攝像機拍攝到的圖像映射到一個標準柱面坐標空間上.柱面投影變換是柱面全景圖生成的基礎,解決了不同視角的圖像直接拼接造成的圖像場景視覺不一致的問題[6-7].
柱面投影變換公式是整個投影過程實施的關鍵,公式推導圖如圖3所示,圖3a表示原始平面圖像I投影到柱面投影空間K上,得到柱面投影圖像.為了便于計算,取圓柱中心點作為坐標原點,坐標原點同時也是投影中心點,且相機的光軸垂直于圖像的中心,交于點O.從圖3a中可以看出,經(jīng)過投影之后,圖像的四個角出現(xiàn)向內(nèi)彎折的現(xiàn)象,但是圖像的最大高度依舊等于原圖像的高(垂直于中軸線上的點投影前后位置不變),因此投影前后圖像的高度不變,圖像的寬度相比于原圖像變小.假設圓柱半徑為r,原圖像的寬度為W,原圖像的高度為H,投影角度為θ,根據(jù)圖3b三角形相關知識可知,投影圖像寬度為W′=2rsin(θ/2).假設P為圖像I上的任意一點,其坐標為(x,y),因為圖像的坐標原點都在左上角,所以在計算過程中要轉換到以圖像中心為坐標原點的坐標系中,P點轉換后的坐標為(x-W/2,y-H/2),要計算出P點在柱面圖像上對應的P′點坐標.假設P′的坐標為(x′,y′),則轉換后的坐標為(x′-W′/2,y′-H/2),通過圖3c可以求得P′的縱坐標y′,柱面投影變換表達式為
(3)
圖3 推導圖Fig.3 Derivation graph
對于原圖像上任意一點可通過式(3)求得對應的柱面投影圖像上的點.此算法相比于其他柱面正投算法公式更加簡單,參數(shù)合理易懂,計算量小.
生活中許多物體外形類似于圓柱體,圓柱狀包裝應用于各行各業(yè),給包裝加工過程帶來了極大便利,但對表面缺陷檢測環(huán)節(jié)增加了難度.圓柱表面視覺缺陷檢測時由于柱面成像原因會造成圖像失真,直線特征會變彎曲,難以提取.因此,對圓柱狀物體的圖像進行柱面展開意義重大[8-9].
柱面展開是柱面正投影的一種逆變換,即柱面圖像反投影變換.在2.1節(jié)中已經(jīng)推導出了柱面正投影變換公式,按照上述計算方法,同理可得柱面反投影變換公式.
通過上述信息壓縮計算可知,模具棒在圓周方向上存在著不同程度的信息壓縮,導致安全套邊緣部分的小缺陷無法準確檢測.為了提高缺陷檢測的準確率,先將安全套圖片按照上述柱面展開算法進行展開,然后再進行缺陷檢測.本文主要對安全套表面存在的破損和粘連兩種缺陷進行檢測,兩種缺陷如圖4所示.為了便于觀察,將標定板貼在模具棒上進行拍照,圖5a為未進行柱面展開的模具棒圖像,圖5b為柱面展開的模具棒圖像.
圖4 缺陷圖Fig.4 Defect images
圖5 模具棒柱面展開效果Fig.5 Cylindrical expansion effect of model rod
原圖片中的噪聲會對后續(xù)的檢測實驗產(chǎn)生影響,為了消除干擾,更好地檢測出缺陷,需要先去除噪聲.針對不同的噪聲有與之相對應的濾波方法,濾波器可以分為線性濾波器、非線性濾波器以及混合濾波器等.中值濾波是一種典型的非線性濾波,相對于線性濾波,不會在去除噪聲的同時使圖像的邊緣變得模糊,對椒鹽噪聲的處理效果較好.其主要思路是將圖像像素按照灰度值從小到大排列,并取中間位置的灰度值進行表示.文中采用中值濾波對安全套圖像進行降噪處理,濾波效果圖如圖6所示.
圖6 濾波效果Fig.6 Filtering effect
將圖像中的目標物體與背景分離的操作叫做圖像分割[10],又稱為前景與背景的分離.通過觀察破損處與正常部位的灰度值分布,發(fā)現(xiàn)它們之間存在著明顯的差異.本文充分利用這一特征,根據(jù)不同的灰度值,可以將破損區(qū)域提取出來.圖像分割將圖像像素分為目標像素與背景像素,對于灰度圖像最常用的方法是圖像二值化,通過設置合適的閾值,將像素值大于或者等于分割閾值的像素劃分為目標物體,其他閾值像素劃分為背景.為使目標物體與背景的對比度達到最大,需要將圖像進行二值化處理.
對多張具有破損缺陷的圖像進行測試發(fā)現(xiàn),由于光照等外界環(huán)境的影響,每幅圖像的閾值不固定,且人工設置閾值會浪費大量時間,因此本文采用基于自適應閾值分割的最大類間方差法,其將目標和背景的最大方差值作為分割閾值T.記t為目標與背景的分割閾值,目標點數(shù)占圖像比例為PA,平均灰度為uA;背景點數(shù)占圖像比例為PB,平均灰度為uB,圖像總平均灰度可以表示為
u=PAuA+PBuB
(4)
目標與背景的方差表達式為
E=PA(uA-u)2+PB(uB-u)2
(5)
(6)
`在圖像L個灰度級中遍歷t,當t為某個值使得E的取值最大時,此時t值便為圖像的最佳閾值T.
直線檢測是霍夫變換最常用的一種應用,一條直線在圖像空間中可由斜率m和截距b來表示,但對于斜率無窮大的情況,這種表達方式便不再適用.為了解決該問題,可以用極徑r和極角θ來描述直線,即r=xcosθ+ysinθ.對于圖像中任意一點,找出經(jīng)過該點的所有直線區(qū)域,采用累加器計數(shù)的方式遍歷所有像素點,通過設置閾值就可以找出這條直線.安全套粘連缺陷有直線特征,因此可以采用該方法進行檢測.
本文使用處理器為Intel Core i5-5200,內(nèi)存為4 GB的計算機,在Windows 7系統(tǒng)環(huán)境下借助opencv與C++編程語言對安全套表面存在的破損、粘連缺陷進行了實驗.根據(jù)實際工作環(huán)境,本文采用500萬像素相機拍照,鏡頭光軸垂直于模具棒縱向截面,工作距離為0.3 m,實驗中可以檢測出的最小缺陷為0.1 mm.為了提高實驗數(shù)據(jù)的可靠性,將標準標定板貼在模具棒上,計算圖片上顯示出來的每個圓點代表的實際值大小,每行為一組,記錄6組,依次從左到右記錄6個圓點的數(shù)值.表1為原圖片的數(shù)據(jù)記錄;表2為經(jīng)過柱面展開后的數(shù)據(jù).
表1 原圖片數(shù)據(jù)Tab.1 Original image data mm
表2 經(jīng)過柱面展開的數(shù)據(jù)Tab.2 Data after cylindrical expansion mm
通過對不同大小、形狀的安全套缺陷進行圖像采集,與合格安全套圖片一起組成一個包含200張圖片的圖庫進行測試,其中有缺陷的圖片84張,包括漏洞缺陷的安全套圖片39張,粘連缺陷的安全套圖片45張,進行柱面展開的測試結果如表3所示,正確檢測率為99%.同等條件下,對未進行柱面展開的安全套圖片進行實驗,測試結果如表4所示,正確檢測率為87%,缺陷結果如圖7所示.由實驗可知,進行柱面展開的安全套表面缺陷更容易被檢測出來.在圖像處理速度上本文算法可以達到120 ms,按照本文對每個模具棒拍攝三幅圖像計算,每只安全套檢測用時360 ms,遠遠高于人工檢測效率.
表3 經(jīng)過柱面展開的實驗結果Tab.3 Experimental results after cylindrical expansion
表4 未經(jīng)過柱面展開的實驗結果Tab.4 Experimental results without cylindrical expansion
圖7 缺陷檢測結果Fig.7 Defect detection results
本文將機器視覺應用到安全套表面的缺陷檢測中,用圖像處理的方式檢測缺陷,并以模具棒為例,對回轉體柱面物體兩側存在的像素壓縮問題進行了數(shù)學建模計算.采用柱面展開算法解決了安全套圖像邊緣處存在的小缺陷難以準確檢測的問題.實驗證明,通過柱面展開的安全套表面缺陷檢測正確率遠高于未進行柱面展開的安全套,因此,可將該方法應用到安全套的工業(yè)化生產(chǎn)過程中,實現(xiàn)工業(yè)自動化生產(chǎn).