(華南理工大學 廣東省高端芯片智能封測裝備工程實驗室,廣州 510641)
在注塑行業,表面缺陷是影響注塑工件質量的重要問題,因此對其的檢測是該行業中的必要一環。目前,對于注塑工件的表面檢測主要是通過人工完成,這種方式費時費力,而機器視覺能夠高效準確地完成這項任務。然而,在采集圖像的過程中,不均勻的光照常常會給接下來的處理步驟帶來困難,例如分析注塑工件表面情況、提取缺陷特征等。圖像的光照不均勻主要體現在局部高光以及較低的灰度值,這些現象都會給接下來的處理帶來麻煩。這些現象通常是由圖像采集系統光照環境的局限而造成的,這種局限性一般很難通過改變光照環境來解決。因此,對這種光照不均勻的注塑工件圖像進行灰度校正就十分重要了。
目前,有很多研究者已經在校正不均勻光照領域做了大量的研究。比較常見的方法有Retinex方法,基于模糊理論的自適應增強算法等。Uddin MS等人提出了一種改進的輻射傳輸理論,通過這種方法來解決光照不均的光片顯微成像(LSM)圖像的對比度降低問題,并且通過實驗驗證了該方法的高效性。同時,也有很多學者在直方圖均衡化方面做出了顯著的貢獻。例如由Kim JY提出的子塊部分重疊直方圖均衡化算法(POSHE)以及由Wang Yu提出的二元子圖分割直方圖均衡化方法(DSIHE)等等。這些算法要么沒有消除普通直方圖均衡化的局限性,要么是針對圖像中有強光源的情況進行圖像增強,而對文中討論的注塑工件不均勻光照圖像的校正效果都不佳。而圖像分割就是將圖像中的前景和背景分開的過程,因而直觀的方法時選擇一個背景和前景之間有較大區別的閾值,比較著名的是1979年由日本學者大津(Otsu)提出的最大類間方差法,這是一種基于全局的自適應閾值確定方法,又叫大津法,簡稱OTSU算法。
直方圖均衡化是一種簡單但十分有效的圖像增強技術,因此它被廣泛應用在醫學圖像處理、計算機視覺以及遙感圖像處理等領域。這項技術能夠增強圖像的全局對比度,尤其是當圖像的整體灰度值都處于一個較小的范圍內時。直方圖均衡化的主要的思路是將灰度圖原本集中在一個較小的灰度區間中的直方圖轉換成一個在整個灰度區間中均勻分布的直方圖。
直方圖均衡化的數學表達式可以寫成:

其中S是初始的灰度圖像,R是經過均衡化之后的圖像,T代表了變換方程。如果令ni為灰度等級i出現的次數,那么該灰度等級i在圖像中出現的概率可以表示成:

其中L是灰度圖中灰度等級的總數,通常是256;n是該圖像中的總像素數;px(i)是每個灰度等級i出現的概率,它被歸一化到區間[0,1]中。
因此,變換方程T可以表示成:

其中所有參數的含義都與前述相同。
對于采集到的注塑工件圖像,其表面缺陷通常與正常表面具有相似的灰度值,因此可以通過直方圖均衡化來增大這兩者之間的灰度差,從而突出表面缺陷與正常表面的區別,便于提取缺陷。然而,由于大多數圖像采集系統無法從光源系統本身消除不均勻光照,因此采集到的圖像通常都會表現出一定的高光區域,如圖1所示。顯然,圖中的注塑工件被圓圈標記的上半部分比下半部分要亮得多,同時為了便于將工件圖像從背景圖像上分離出來,注塑工件和純黑色的背景之間也有很強的對比度。這兩個事實導致很難直接利用直方圖均衡化將圖像的灰度級進行拉伸,因為該方法只對低對比度的圖像有較好的效果,而對于高對比度的圖像效果則不是非常顯著。而在進行缺陷的分割時,基于全局閾值的圖像分割方法的效果也不盡如人意。可以看到因為光照不均現象,圖像下半部分前景(白色斑點缺陷)和背景(工件正常表面)之間無法產生較明顯的分割閾值,甚至同樣是背景的部分也會有不同的灰度級,此時單一閾值顯然無法實現分割。
因此提出了一種基于行像素灰度校正的不均勻光照圖像增強算法。該算法引入了一個行像素灰度校正系數,該系數能夠對圖像的每一行的像素的灰度值進行校正,從而消除高光區域和正常光照區域的光照差別,之后再使用直方圖均衡化來對圖像進行增強。由此可以將注塑工件的表面缺陷在圖像突顯出來。再使用基于二次定位的閾值圖像分割法對工件圖像進行粗略和精確兩次定位來準確檢測缺陷的邊緣信息。算法的總體流程圖如圖2所示。

圖1 機器視覺系統采集的注塑工件圖像(圓圈用于表示出高光區域)

圖2 本文算法流程圖
工業生產中使用的機器視覺系統,其光源通常可以看作是一個點光源,從固定角度給待檢工件提供光照,如圖3所示。根據輻射度學的相關知識,定義點光源S0的輻射強度I為點光源向單位立體角發射的能量流。

圖3 點光源與立體角
若dA為與S0距離為r的接收面的一個小面積元,則dA與S0組成的立體角dω等于dA與S0組成的錐面與單位球相交得到的面積元dA0,則有:

其中θ為光源方向與接收面法線方向之間的夾角。
單位時間內dA上接收到的S0的能量流為:

定義物體表面單位面積接收的能量流為輻照度Li,則可得:

當工件接受到光源照射后,就會發出反射光,該反射光經過攝像機采集形成圖像。
圖4顯示了圖像上的亮度與反射光的光輻射度Lr的關系。圖像上某一像素的面積為dAp,則工件平面上面積為dA0的面源向dAp發射的能量流d2Φr為:

其中α為OA與dA0的法線之間的夾角,ω0為鏡頭與A點構成的立體角。
由圖4可知,由O點與dA0組成的立體角等于O點與dAP組成的立體角,因此:

聯立式(7)和式(8)可得:


圖4 圖像亮度與物體表面光輻射度的關系
將ω0用透鏡直徑d表示,并將代入上式,可得dAp上輻照度為:

其中f為鏡頭的焦距。
一般情況下,攝像機的視角很小,即上式中的θ很小,dAp上的輻照度(與圖像灰度值成正比)可近似寫成:

討論的注塑工件可視為一個散射模型,即工件引起的散射光與物體表面的輻照度Li成正比,與散射方向無關。工件輻射度Ld(下標d表示散射)為常數。

其中rd<1,稱為反射系數,與工件材料有關。
由于工件表面的反射可以看作散射模型,因此工件表面的輻射度為:

而點光源到工件的輻射度Lio由式(7):

此時工件相當于一個面輻射源,因此攝像頭接收到工件的輻照度為:

當攝像機參數、攝像機與工件距離、光源等參數固定時,Kd為一未知常量,即工件表面的圖像亮度只與表面的輻射度有關。因此,如果表面的反射僅由散射光引起,物體表面點的圖像亮度Ip等于:

由式(16)可得,采集到的圖像亮度只和光源與工件表面的夾角有關,即在光源與工件相對位置不變的情況下,圖像中同一行的像素亮度只與表面的反射系數有關,而同一列的像素亮度變化是連續的。
針對這個問題,引入了一個行像素灰度校正系數,它可以對于每一行的不均勻光照進行校正,從而使得整幅圖像處于一個較為均勻的亮度,也就是說壓縮了整幅圖像的亮度,使其處于一個較小的灰度區間之中,從而導致圖像的對比度降低,然后用直方圖均衡化來對圖像進行對比度拉升,從而增強缺陷區域和注塑工件正常表面區域的對比度。
算法具體步驟如下:
Step1:載入待校正的RGB圖像。
Step2:將RGB圖像轉化成灰度圖像f,并利用掩膜操作得到圖像的感興趣區域(Region of Interest,ROI)g。
Step3:計算每一行的像素灰度值中位數Mi,再計算所有中位數的中位數M。
對于圖像g的每一行,計算該行像素灰度值的中位數Mi:

其中Mi是第i行的像素灰度值的中位數,g(i,m)是第i行,第m列的像素灰度值。每行灰度值中位數的中位數是:

其中M是所有行中位數的中位數,M1,…,Mn則表示從第i行到第n行的行中位數。
Step4:計算每一行的行像素灰度校正系數,并且利用該系數對圖像的每一個像素進行灰度校正。
定義每行的行像素灰度校正系數為Ci:

用于對圖像的每一行像素進行灰度校正,校正的公式如下:

其中h(i,j)是經過校正之后的像素灰度值,g(i,j)是ROI中像素灰度值,Ci是對應行的行像素灰度校正系數。
Step5:對校正之后的圖像進行直方圖均衡化,最終得到對比度被拉伸的圖像。
在經過上述灰度校正之后的圖像,其工件表面已經具有了較為均勻的灰度分布,此時再使用基于全局閾值的分割方法就可以將缺陷分割出來。但是缺陷區域和背景的灰度值仍然十分接近,不太容易通過一個單一閾值將其準確地從背景中分割并定位。
因此考慮到在一個較小的區域內其光照是較為均勻的,使用了基于二次定位的閾值圖像分割方法來對缺陷部分進行分割。
算法的具體步驟如下:
Step1:首先對原圖f(x,y)利用掩膜操作獲取感興趣區域ROI,記為g(x,y)。

Step2:根據實驗平臺實際光照情況對ROI確定一個經驗閾值T0,進行一次全局閾值分割,并去除與邊緣相接的連通域。

Step3:由Step2得到的分割圖像,對取得缺陷的位置進行粗略定位,并返回到g(x,y)中,從中截取缺陷的周圍區域子圖像d1(x1,y1),d2(x2,y2),…dn(xn,yn)。在這些子圖像中可以認為光照是均勻的。
Step4:對Step 3中得到的子圖像進行灰度級擴展,拉大其灰度區間,得到h1(x1,y1),h2(x2,y2),…hn(xn,yn)從而擴大背景與前景的灰度間距。
Step5:利用大津算法對上步中得到的子圖像計算其全局閾值Tn,并分別進行分割,從而得到缺陷的精確定位。
Step6:將缺陷在子圖像中的精確定位換算到g(x,y)中,從而在原圖像中對缺陷的邊緣進行檢測。
針對圖1中的柱狀工件,該算法每一步的實現效果如下:
首先利用掩膜操作獲取圖像中的ROI,即工件的下半部分,提取出的ROI如圖5所示,記為g(x,y),可以看出頂白區域與正常表面的灰度值差距很小,而一部分側壁則有較大的灰度差。

圖5 圖像的ROI
因此,根據本實驗平臺的光照條件,設置一個經驗閾值T0=10,用此閾值對圖5進行全局分割,并去除小連通域和圖像邊界上的無用連通域,所得的結果如圖6所示。可以看出缺陷的粗略位置被標記出來,但是缺陷的邊界卻不是非常準確,因此需要對缺陷的位置進行二次精確定位。

圖6 粗略定位缺陷
根據缺陷的粗略位置,從g(x,y)中獲取缺陷周邊區域的子圖像,如圖7所示。可以看出各子圖像中的光照情況都較為均勻,且灰度級較為集中,利用灰度級拉伸的方式可以增大缺陷區域與正常表面區域的灰度差,從而便于進行全局閾值分割。灰度級拉伸之后的子圖像如圖8所示。

圖7 缺陷周邊區域子圖像

圖8 灰度拉伸后的子圖像
對這些經過灰度拉伸之后的圖像使用大津算法進行分割,就能夠得到較為精確的缺陷邊緣信息,如圖9所示。
使用了三幅不同的圖像來分別驗證基本的直方圖均衡化和文中提出的改進算法對圖像的增強效果。

圖9 缺陷的精確邊緣

圖10 米粒圖像與不同處理方法處理結果的比較圖
圖10(a)是一張經典的MATLAB圖片,常用來檢驗圖像增強算法的效果,如圖10(a)所示。在這張米粒原圖像中,圖像上部的平均亮度明顯比下面部分要高。圖10(b)顯示的是應用了基本直方圖均衡化方法之后的圖像結果,圖10(c)顯示的是應用了所提出的方法之后的圖像結果。從圖10(b)中可以看出,圖像中仍有光照不均勻的現象,這種現象甚至有惡化的情況;而在圖10(c)中,圖像的背景與圖10(a)相比變得更加均勻,圖像中的米粒的亮度得到了加強,這對后續的處理步驟是十分有利的。

圖11 圓柱形注塑工件圖像與不同處理方法處理結果的比較圖

圖12 片狀注塑工件圖像與不同處理方法處理結果的比較圖
第二組圖片使用一個圓柱形注塑工件的圖片來進行對比。圖11(a)是一個注塑工件表面缺陷檢測儀中的工業攝像頭采集的圓柱形待測工件的圖像。可以很清楚地看出在待測工件頂部區域有明顯的高光區域,其側壁表面也有光照不均勻的現象。圖11(b)顯示的是應用了基本直方圖均衡化方法之后的圖像結果,圖11(c)顯示的是應用了文中提出的方法之后的圖像結果。在圖11(b)中,頂部的高光區域仍然存在,而且待測工件下半部分側壁表面的白色斑點與周圍表面的對比度仍較低。但在圖11(c)中,由于對其應用了文中提出的灰度校正,其頂部的高光區域被消除,側壁的不均勻光照現象也幾乎消失。而且下半部分的白色斑點也比原圖中更清楚,從而被突顯出來。不過,我們也注意到待測工件的兩側出現了反常的區域,這是由于在原圖中這些區域所在的行有較大的灰度變化,這在灰度校正時就會出現這樣的反常區域。這種反常區域不會影響后續的缺陷處理過程,因為這些區域會被掩膜操作忽略掉,從而只處理我們需要的地方。
第三組圖片使用一個片狀注塑工件的圖片進行對比。圖12(a)是用圖11(a)相同的工業攝像頭拍攝的圖像。可以看出注塑件自上向下亮度逐漸降低。圖12(b)顯示的是應用了基本直方圖均衡化方法之后 的圖像結果,圖12(c)顯示的是應用了文中提出的方法之后的圖像結果。選擇了三個指標來衡量算法對原圖像的增強性能,分別是圖像的平均灰度,圖像熵以及峰值信噪比(peak signal to noise ratio,PSNR)。
圖像的平均灰度反映了圖像的亮度信息,通過對比處理結果和原圖的平均灰度,就可以驗證該圖像的亮度是否得到提升。對于一幅光照不均勻的圖像來說,校正之后圖像是否變得更亮是判斷校正算法是否有效的重要標準之一,也就是說平均灰度越高,圖像校正效果越好。
圖像熵反映了圖像中灰度的分布情況,可以由下式計算:

其中C代表圖像灰度的分布概率。如果圖像的不均光照被削弱,圖像熵就會變小,這也就意味著圖像的灰度分布更均勻。
峰值信噪比表明了原圖與被處理圖像的差距。它是一種衡量圖像變化或者噪聲級別的客觀指標。對于一幅光照不均勻的圖像來說,PSNR越大意味著被處理的圖像與原圖的差距越大,這是我們所期望的結果。
從表1~表3的結果可以看出,所提出的算法能夠提供比原圖更大的平均灰度以及更小的圖像熵,這說明改進算法對于不均勻光照圖像有很好的增強能力,包括注塑工件的圖像。同時與用基本直方圖均衡化方法處理的結果相比較,改進的算法也有著更好的表現。其平均灰度、圖像熵以及峰值信噪比等性能均有所提高,其中圖像熵平均減少36.3%,峰值信噪比平均增加50.5%。提出的方法能夠有效得消除注塑工件圖像中的光照不均勻問題,為接下來可能的處理步驟提供較大便利。

表1 米粒圖像評價指標

表2 圓柱形注塑工件評價指標

表3 片狀注塑工件評價指標
以柱狀注塑工件為例進行實驗,工件進行360°的視頻圖像采集,對于采集到的視頻序列等距抽取6幅圖像幀,可以獲得每隔60°的工件圖像,從而檢測工件的整個側面缺陷。如圖13所示。

圖13 由視頻序列抽取圖像幀

表4 多個工件序列圖像檢測時間(s)
最后將這些缺陷的邊緣坐標變換到原圖像,從而得到最終的檢測結果,如圖14所示。由此圖可以看出整個缺陷的邊緣被較好地提取并標記出來。

圖14 最終缺陷邊緣檢測結果

圖15 全部視頻序列圖像檢測結果
對于整個序列圖像的檢測結果如圖15所示,可以看到除了下半部分的頂白缺陷被檢測出來之外,圖15(d)、圖15(e)中的側壁上的黑色異色點也被正確檢出,說明了本算法對于注塑工件表面缺陷的適用性。
本實驗在i5-2450M 2.5GHz CPU、GT630M、4G RAM、Win7 64bit操作系統的計算機上使用MATLAB對多個同類的柱狀注塑工件進行了檢測,將檢測時間統計如表4所示。
使用一個元胞數組存儲圖像序列,通過循環來對個角度圖像進行缺陷檢測,因此上表中0°圖像的檢測時間會由于申請內存、初始化數組等過程而耗時較多,越0.66s,除此之外每幅圖像的檢測速度約為0.2s,檢測完所有6幅圖片的總時間約為1.6s。由2.2節的內容可知,圖像的檢測發生在載物臺下降的過程中,而下降的時間約為5s,檢測時間小于下降過程,可以在機械運動過程中完成缺陷的檢測,滿足實時在線檢測的要求。
為了解決注塑工件圖像中普遍存在的光照不均勻問題,提高缺陷提取的成功率,通過分析一般圖像采集系統的光照模型,可以推導出采集到的圖像每一行的亮度只與物體表面的反射系數有關,且相鄰行之間的灰度是均勻變化的,提出了一種基于行像素灰度校正的不均勻光照圖像增強算法。通過引入行像素灰度校正系數來對圖像中的每個像素進行灰度校正,從而消除在注塑工件檢測中常見的光照不均勻現象。實驗結果顯示所提出的方法對于不均勻光照的注塑工件圖像相較于基本的直方圖均衡化方法有更好的增強效果,其平均灰度、圖像熵以及峰值信噪比等性能均有所提高,其中圖像熵平均減少36.3%,峰值信噪比平均增加50.5%。所提出的方法能夠有效得消除注塑工件圖像中的光照不均勻問題,為接下來可能的處理步驟提供較大便利。提出了基于二次定位的閾值圖像分割算法,通過粗略、精確兩次定位來準確檢測缺陷的邊緣信息,并通過實驗檢驗了該算法的良好效果,對于柱狀工件的檢測總時間約為1.6秒,滿足實時在線檢測要求,證明了其工程應用的有效性。