本發(fā)明屬于自動(dòng)化檢測領(lǐng)域,涉及工業(yè)視覺技術(shù)領(lǐng)域,具體涉及一種快速穩(wěn)定的亞像素級精度器件厚度檢測方法。
背景技術(shù):
隨著我國制造業(yè)的飛速發(fā)展,對質(zhì)量的重視日益重要。在各種產(chǎn)品的生產(chǎn)過程中,對各種元器件利用自動(dòng)化設(shè)備進(jìn)行質(zhì)量檢測,就可以降低廢品率,降低對材料的損耗,這已經(jīng)成為提高企業(yè)利潤和品牌影響力的強(qiáng)有力的手段。工業(yè)視覺技術(shù)是自動(dòng)化檢測領(lǐng)域最常用的技術(shù)。
對元器件的厚度和尺寸進(jìn)行測量,是工業(yè)視覺檢測的最常見的應(yīng)用。在得到元器件的尺寸參數(shù)之后,就可以判斷器件是否合格,從而提前加以剔除,防止對后續(xù)制造環(huán)節(jié)造成影響。通過測量元器件的各種尺寸參數(shù),然后與標(biāo)準(zhǔn)尺寸進(jìn)行對比,就可以知道哪些元器件是不合格的,以及不合格的比例和詳細(xì)情形。
器件的厚度檢測,是自動(dòng)化檢測中的最常見的步驟。目前的厚度檢測,都是通過在圖像中,對器件的亞像素邊界進(jìn)行定位而實(shí)現(xiàn)的。但是,當(dāng)前常見的亞像素邊界定位算法,復(fù)雜度過高,存在較高程度的冗余計(jì)算,導(dǎo)致自動(dòng)檢測設(shè)備的效率降低,從而降低了產(chǎn)能,影響了企業(yè)的利潤。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明目的是提供一種快速穩(wěn)定的亞像素級精度器件厚度檢測方法,針對亞像素邊界定位算法進(jìn)行改進(jìn),從初定位、參數(shù)大致估計(jì)、快速搜索最佳參數(shù)三個(gè)方面,在保證了定位精度滿足要求的基礎(chǔ)上,進(jìn)一步實(shí)現(xiàn)了算法速度的提升,從而提高亞像素邊界定位算法的應(yīng)用潛力。
為了實(shí)現(xiàn)以上目的,本發(fā)明采用的技術(shù)方案為:一種快速穩(wěn)定的亞像素級精度器件厚度檢測方法,包括以下步驟:
1)邊界初步定位:將圖像分成目標(biāo)和空氣兩個(gè)區(qū)域,然后得到這兩個(gè)區(qū)域的分界線,作為初步的邊界定位結(jié)果;
2)亞像素精準(zhǔn)定位:采用反正切曲線擬合的方法,采用粒子群優(yōu)化算法進(jìn)行求解,針對每一列的定位結(jié)果,再采用貝塞爾曲線進(jìn)行擬合;
3)異常情況處理。
進(jìn)一步的,邊界初步定位的初定位位置與最終的亞像素景區(qū)坐標(biāo)的偏差在1個(gè)像素的距離之內(nèi)。
再進(jìn)一步的,所述的邊界初步定位包括以下步驟:
a)由粗到精的邊界初步定位
按照如下流程來得到分界面的初步定位坐標(biāo)點(diǎn):
1a)圖像縮?。簩D像先進(jìn)行縮小,縮小到原有尺寸的四分之一;
2a)提取目標(biāo)區(qū)域參考亮度值、空氣區(qū)域參考亮度值:預(yù)先計(jì)算圖像中,目標(biāo)區(qū)域和空氣區(qū)域的亮度參考值,采用聚類方法,對所有像素,根據(jù)亮度值,分成兩個(gè)大類,然后計(jì)算每一類的亮度平均值,分別作為目標(biāo)亮度和空氣區(qū)域亮度的參考值;
3a)二值化操作:在得到目標(biāo)區(qū)域和空氣區(qū)域的參考亮度值之后,利用二者的均值,作為整幅圖像的二值化閾值,對所有像素進(jìn)行二值化操作;
4a)提取最大連通區(qū)域:提取二值化操作結(jié)果中的最大連通區(qū)域;
5a)基于對稱性的初步邊界定位;利用邊界附近的像素亮度變化規(guī)律曲線的對稱性來得到初步判定;
6a)初定位時(shí)的異常處理;
b)承重界面的定位
1b)設(shè)定傾斜角度的范圍,對該角度進(jìn)行遍歷,根據(jù)設(shè)定的角度值,對二值圖像進(jìn)行水平投影,得到投影曲線;
2b)對各種角度下的投影曲線,進(jìn)行分析,統(tǒng)計(jì)投影值從0增長到圖像寬度值n,所需要經(jīng)歷的行數(shù),選擇行數(shù)最少的情形對應(yīng)的角度值作為承重界面的傾斜角;
3b)找到傾斜角對應(yīng)的投影曲線,對其進(jìn)行差分計(jì)算,計(jì)算上下兩行投影值的差,選擇差分值最大的一行,作為承重界面的位置;
4b)然后在差分曲線中,濾除承重界面對應(yīng)的值,再搜索其中最大的差分值,作為器件頂部邊界的初定位位置;
c)器件左右邊界的定位:
1c)利用前面步驟得到的器件頂部邊界位置,以及承重界面的位置,得到二者的分界線;
2c)將所有邊界點(diǎn)中的坐標(biāo)值位于分界線上方的點(diǎn)提取出來;
3c)根據(jù)被提取出來的點(diǎn),找到最左側(cè)和最右側(cè)的;
4c)在左側(cè)點(diǎn)周邊20個(gè)像素范圍內(nèi),對二值圖進(jìn)行垂直投影;
5c)對投影曲線進(jìn)行差分,找到差分值最大的位置,作為器件的左邊界;
6c)在右側(cè)點(diǎn)周邊20個(gè)像素范圍內(nèi),對二值圖進(jìn)行垂直投影,對投影曲線進(jìn)行差分,找到差分值最大的位置,得到器件的右邊界;
d)器件頂部坐標(biāo)圓角的定位
1d)利用前面步驟得到的承重面坐標(biāo)、器件頂部坐標(biāo)、器件左右邊界位置,將器件對應(yīng)的子輪廓提取出來;
2d)針對器件子輪廓,計(jì)算其對應(yīng)的凸包;
3d)利用該凸包,生成新的二值圖像,凸包區(qū)域填充為白色;
4d)凸包區(qū)域圖像與原來的器件圖像做差;
5d)差值圖中,定位到面積最大的四個(gè)連通區(qū)域;
6d)計(jì)算得到四個(gè)連通區(qū)域的位置,得到器件圓角位置。
進(jìn)一步的,所述的亞像素精準(zhǔn)定位通過對反正切曲線與邊界位置附近的列像素曲線進(jìn)行擬合,反正切曲線的數(shù)學(xué)表達(dá)式為:y=p1*atan(p2*x+p3)+p4,得到當(dāng)前列的亮度曲線的精確數(shù)學(xué)模型,然后,利用下式得到:x0=-p3/p2,計(jì)算得到每一列的亞像素坐標(biāo)。
再進(jìn)一步的,所述的亞像素精準(zhǔn)定位包括以下步驟:
a)p1和p4兩個(gè)參數(shù)的直接估值:提前利用亮度曲線的形狀,將p1和p4兩個(gè)參數(shù)算出來,再計(jì)算出來的這兩個(gè)參數(shù)值作為p1和p4的初始值:
按照如下流程:
1a)從初始邊界位置的上方開始,逐漸將當(dāng)前列的像素加入到集合中,如果集合中的像素亮度標(biāo)準(zhǔn)差小于5,則繼續(xù)增加新的像素,如果大于5,則停止增加新的像素,計(jì)算此時(shí)集合中的像素亮度的平均值,作為該上側(cè)的平均亮度;
2a)從初始邊界位置的下方開始,逐漸將當(dāng)前列的像素加入到集合中,如果集合中的像素亮度標(biāo)準(zhǔn)差小于5,則繼續(xù)增加新的像素,如果大于5,則停止增加新的像素,計(jì)算此時(shí)集合中的像素亮度的平均值,得到該下側(cè)的平均亮度,該上側(cè)的平均亮度與該下側(cè)的平均亮度的差值為p1;
3a)p4的計(jì)算:將亮度曲線上所有的像素亮度值計(jì)算平均值,得到邊界曲線中心點(diǎn)位置的縱坐標(biāo);
b)基于粒子群算法的反正切曲線求解:
按照如下流程:
1b)設(shè)定一組粒子,總共20個(gè),每個(gè)粒子包含4個(gè)參數(shù),隨機(jī)設(shè)定初始值,代表反正切曲線的一個(gè)解;
2b)計(jì)算當(dāng)前20個(gè)粒子所對應(yīng)的曲線,與實(shí)際的亮度曲線的誤差,將誤差取反,作為適應(yīng)度;
3b)找到當(dāng)前最合適的曲線參數(shù),然后調(diào)整各個(gè)粒子的方向和位置,繼續(xù)計(jì)算;
4b)重復(fù)2b)、3b)兩個(gè)步驟,直到最好的粒子的誤差小于閾值10為止;
5b)根據(jù)式x0=-p3/p2計(jì)算得到精確的亞像素邊界位置;
c)前一列結(jié)果的應(yīng)用,得到p2和p3的初始值:
在完成指定一列曲線擬合之后,將該列的參數(shù)中的p2和p3的值,作為下一列的亮度曲線的參數(shù),p1和p4依然通過計(jì)算進(jìn)行估計(jì);
d)噪聲干擾的解決:
通過判斷擬合過程中的誤差,來決定當(dāng)前列的擬合結(jié)果是否正確,對于誤差較大的情形,該列不進(jìn)行邊界的精準(zhǔn)定位,是后期通過邊界平滑得到修補(bǔ);
e)邊界平滑:
采用貝塞爾曲線擬合方法,完成邊界點(diǎn)坐標(biāo)的擬合。
進(jìn)一步的,所述的異常情況處理包括
a)沒有器件預(yù)警:通過分析玻璃分界面上的垂直坐標(biāo)進(jìn)行檢測,將分界面的坐標(biāo),擬合成一條直線,然后計(jì)算每一個(gè)點(diǎn)到直線的距離,如果所有點(diǎn)到直線的距離,都小于3個(gè)像素,則沒有器件,對于圖像中沒有器件存在的情形,需要進(jìn)行預(yù)警;
b)多個(gè)器件預(yù)警:包括:
1b)多塊器件彼此分開:如果上升次數(shù)和下降次數(shù)都超過1次,預(yù)警;
2b)多塊器件發(fā)生交疊:在利用器件坐標(biāo)上升和下降的規(guī)律,得到器件的左右邊界之后,考察左右邊界之間的器件的厚度分布,在左右邊界之間,如果某一個(gè)位置的厚度值,等于或者超過兩倍厚度的高度,則說明發(fā)生了多個(gè)器件的交疊,進(jìn)行預(yù)警;
c)縫隙預(yù)警:
1c)器件區(qū)域的輪廓提取:在器件邊界的初步定位過程中,已經(jīng)得到了器件的左右邊界的位置,根據(jù)這個(gè)位置,將器件對應(yīng)的二值化子圖像截取出來,然后提取輪廓,后續(xù)步驟將在輪廓的基礎(chǔ)上,進(jìn)行縫隙的檢測;
2c)器件頂部和左右兩側(cè)輪廓的濾除:利用初定位過程中得到的承重界面坐標(biāo),以及器件左右邊界坐標(biāo),得到器件的左下角和右下角坐標(biāo),然后根據(jù)這兩個(gè)坐標(biāo)值,將器件的頂部輪廓、左側(cè)輪廓、右側(cè)輪廓都過濾掉,只留下縫隙區(qū)域的輪廓點(diǎn);
3c)縫隙區(qū)域尺寸測量:經(jīng)過前面1c)、2c)兩個(gè)步驟的處理,此時(shí)留存下來的直線段,是器件與玻璃平面之間的縫隙所對應(yīng)的輪廓,分析此時(shí)的輪廓點(diǎn),計(jì)算該區(qū)域的邊界,如果該區(qū)域的高度小于5個(gè)像素,而寬度大于20個(gè)像素,則是縫隙,需要預(yù)警;
d)灰塵干擾的過濾:
1d)對亞像素邊界坐標(biāo),進(jìn)行局部直線擬合:采用邊增長,邊搜索的方式,試探性的將邊界點(diǎn)分成多個(gè)字跡合;
2d)將距離大于閾值的坐標(biāo)點(diǎn),挑選出來;在每一個(gè)子集中,將輪廓點(diǎn)到直線距離大于閾值的坐標(biāo)點(diǎn)挑選出來;
3d)針對被挑選出來的坐標(biāo)點(diǎn),進(jìn)行分段;分析子集中被挑選出來的坐標(biāo)點(diǎn),根據(jù)是否連接,分成多個(gè)子段;
4d)考察每一個(gè)子段的寬度,寬度小于閾值的,都算作是灰塵;
5d)重新計(jì)算坐標(biāo)點(diǎn):濾除灰塵對應(yīng)的子段,將該子段上的坐標(biāo)點(diǎn),全部用對應(yīng)的擬合的直線上的坐標(biāo)點(diǎn)來替代;
e)拖尾現(xiàn)象的預(yù)警
1e)器件頂部邊界垂直坐標(biāo)一致性的判斷:在器件的左右兩端,各自選擇一個(gè)長度為20的區(qū)域,然后在器件的中心位置,選擇一個(gè)長度是50的區(qū)域,分別計(jì)算這三個(gè)區(qū)域的器件的頂部輪廓點(diǎn)垂直坐標(biāo)的平均值,如果左右兩端之中有一個(gè)區(qū)域,其平均坐標(biāo)與中心區(qū)域平均坐標(biāo)相比,差值大于5,則存在拖尾現(xiàn)象,預(yù)警;
2e)器件中心區(qū)域,與首尾兩端區(qū)域的亮度一致性分析:與1e)一樣,在器件的左右兩端,各自選擇一個(gè)長度為20的區(qū)域,然后在器件的中心位置,選擇一個(gè)長度是50的區(qū)域,分別計(jì)算這三個(gè)區(qū)域的平均亮度,如果左右兩端之中有一個(gè)區(qū)域,其亮度與中心區(qū)域平均亮度,差值大于20,則存在拖尾現(xiàn)象,預(yù)警。
本發(fā)明的技術(shù)效果在于:
1、速度快,本發(fā)明所提出的亞像素邊界定位方法,在算法的各個(gè)環(huán)節(jié),都進(jìn)行了最大限度的優(yōu)化,將計(jì)算量降低了到了最低限度,能夠最大限度提高系統(tǒng)的整體運(yùn)行速度;
2、精度高,與器件的實(shí)際厚度(使用游標(biāo)卡尺多次測量),偏差在3微米以內(nèi);
3、能適應(yīng)各種干擾情況,針對系統(tǒng)真實(shí)使用過程中,可能遇到的各種異常情況進(jìn)行了處理,保證這些異常情況不會(huì)干擾正常檢測,在必要的情形下,還可以對異常情況進(jìn)行預(yù)警。
附圖說明
圖1為本發(fā)明器件厚度檢測系統(tǒng)總流程圖;
圖2為本發(fā)明器件邊界初步定位流程圖;
圖3為本發(fā)明器件承重界面定位流程圖;
圖4為本發(fā)明器件左右邊界的定位流程圖;
圖5為本發(fā)明器件圓角位置計(jì)算流程圖;
圖6為本發(fā)明亞像素邊界定位流程圖;
圖7為本發(fā)明參數(shù)p1和p4的估計(jì)流程圖;
圖8為本發(fā)明基于pso算法的反正切曲線求解流程圖;
圖9為本發(fā)明器件厚度檢測過程中的異常情況處理流程圖;
圖10為本發(fā)明多個(gè)器件存在時(shí)的檢測流程圖;
圖11為本發(fā)明器件縫隙預(yù)警流程圖;
圖12為本發(fā)明灰塵過濾流程圖;
圖13為本發(fā)明拖尾現(xiàn)象預(yù)警流程圖。
具體實(shí)施方式
參照附圖,本發(fā)明處理的異常情況包括:視野中沒有器件,視野中有多個(gè)器件,器件發(fā)生交疊,器件與玻璃盤面之間存在縫隙,器件上的灰塵干擾,器件角度擺放不準(zhǔn)造成的甩尾現(xiàn)象。針對亞像素邊界定位算法進(jìn)行改進(jìn),從初定位、參數(shù)大致估計(jì)、快速搜索最佳參數(shù)三個(gè)方面,在保證了定位精度滿足要求的基礎(chǔ)上,進(jìn)一步實(shí)現(xiàn)了算法速度的提升,從而提高亞像素邊界定位算法的應(yīng)用潛力。
1、邊界的初步定位
將圖像分成目標(biāo)和空氣兩個(gè)區(qū)域,然后得到這兩個(gè)區(qū)域的分界線,作為初步的邊界定位結(jié)果。這樣后續(xù)的亞像素級別的精確定位,在此基礎(chǔ)上展開,從而節(jié)約了大量的搜索時(shí)間。此外,初步定位階段,還將根據(jù)邊界點(diǎn)的坐標(biāo),得到器件所在的水平位置。
2、亞像素精準(zhǔn)定位
本發(fā)明采用反正切曲線擬合的方法。來實(shí)現(xiàn)邊界點(diǎn)的亞像素級精度定位。為了提高曲線擬合的速度,采用粒子群優(yōu)化算法進(jìn)行求解。最終,針對每一列的定位結(jié)果,再采用貝塞爾曲線進(jìn)行擬合,使最終的邊緣變的平滑。
3、異常情況處理
這個(gè)步驟,需要解決一些異常情況:視野中沒有器件,視野中有多個(gè)器件,器件發(fā)生交疊,器件與玻璃盤面之間存在縫隙,器件上的灰塵干擾,器件角度擺放不準(zhǔn)造成的甩尾現(xiàn)象。
具體是,1.快速定位器件在圖像中的位置:由于每個(gè)坐標(biāo)點(diǎn)位置,進(jìn)行亞像素坐標(biāo)的精確求解,所需要的計(jì)算量是很大的,因此必須在亞像素坐標(biāo)求解之前,就得到邊界的初定位位置。初定位位置與最終的亞像素景區(qū)坐標(biāo)的偏差在1個(gè)像素的距離之內(nèi)。這樣可以在后續(xù)的反正切曲線擬合時(shí),降低搜索的次數(shù),盡快完成求解。
a)由粗到精的邊界初步定位
按照如下流程來得到分界面的初步定位坐標(biāo)點(diǎn):
1a)圖像縮小
為了提高粗定位的精度,將圖像先進(jìn)行縮小,縮小到原有尺寸的四分之一。這樣算法可以處理盡量少的像素,同時(shí)又不會(huì)影響最終的精度。
2a)提取目標(biāo)區(qū)域參考亮度值、空氣區(qū)域參考亮度值
在進(jìn)行二值化操作之前,需要預(yù)先計(jì)算圖像中,目標(biāo)區(qū)域和空氣區(qū)域的亮度參考值。采用聚類方法,對所有像素,根據(jù)亮度值,分成兩個(gè)大類。然后計(jì)算每一類的亮度平均值,分別作為目標(biāo)亮度和空氣區(qū)域亮度的參考值。
3a)二值化操作
在得到目標(biāo)區(qū)域和空氣區(qū)域的參考亮度值之后,利用二者的均值,作為整幅圖像的二值化閾值,對所有像素進(jìn)行二值化操作。
4a)提取最大連通區(qū)域
為了盡量降低噪聲的干擾,需要提取二值化操作結(jié)果中的最大連通區(qū)域。因?yàn)槠骷c承重面是粘連的,它們共同組成目標(biāo)區(qū)域,因此只需要找到最大面積的連通區(qū)域,就可以濾除各種噪聲的干擾。
5a)基于對稱性的初步邊界定位
二值化操作后,連通域的邊界,可能與真實(shí)的邊界位置有一定的偏差,這是因?yàn)槎祷撝?,并不一定等于真?shí)邊界位置的亮度值。為了得到足夠精準(zhǔn)的初始邊界位置,降低后續(xù)搜索的復(fù)雜度,本發(fā)明利用邊界附近的像素亮度變化規(guī)律曲線的對稱性來得到初步判定估計(jì)。
具體做法如下:以二值化邊界作為中心點(diǎn),設(shè)置一個(gè)長度為21的列向搜索窗口;然后對這21個(gè)像素進(jìn)行逐一考察,每個(gè)像素上都采集長度為11的一列像素;然后,分析這11個(gè)像素的中心對稱性;選擇對稱性最好的位置,作為初定位邊界。
6a)初定位時(shí)的異常處理
實(shí)際拍攝的圖像中,會(huì)受到各種異常情況的干擾——器件與玻璃盤面之間因?yàn)槠骷A角而出現(xiàn)的縫隙,或者是邊界周邊因?yàn)槎祷霈F(xiàn)的噪聲。這些干擾情況都會(huì)使邊界的初步定位遇到挑戰(zhàn)。
采用如下辦法來實(shí)現(xiàn)干擾情況下的邊界定位:如果該列像素亮度變化正常(僅僅存在一處變化),則是正常情形,沒有干擾;如果該列像素亮度跳變多次,則屬于干擾情況。
b)承重界面的定位
承重界面是用來放置被檢測器件的平臺(tái),一般能夠轉(zhuǎn)動(dòng),其表面可以認(rèn)為是完全平滑的。為了得到器件的精準(zhǔn)位置,需要從初定位邊界坐標(biāo)中提前得到承重界面的坐標(biāo)。為了提高穩(wěn)定性,降低噪聲的干擾,本發(fā)明采用投影的方法,來實(shí)現(xiàn)承重界面的定位。同時(shí),為了防止稱重接線可能存在的傾斜,還需要在一定范圍內(nèi)對圖像進(jìn)行旋轉(zhuǎn),然后才能投影。
具體是:
1b)設(shè)定傾斜角度可能的范圍,對該角度進(jìn)行遍歷。根據(jù)設(shè)定的角度值,對二值圖像進(jìn)行水平投影,得到投影曲線;
2b)對各種角度下的投影曲線,進(jìn)行分析,統(tǒng)計(jì)投影值從0增長到圖像寬度值n,所需要經(jīng)歷的行數(shù),選擇行數(shù)最少的情形對應(yīng)的角度值作為承重界面的傾斜角;
3b)找到傾斜角對應(yīng)的投影曲線,對其進(jìn)行差分計(jì)算,計(jì)算上下兩行投影值的差,選擇差分值最大的一行,作為承重界面的位置;
4b)然后在差分曲線中,濾除承重界面對應(yīng)的值,再搜索其中最大的差分值,作為器件頂部邊界的初定位位置。
c)器件左右邊界的定位
為了便于后續(xù)亞像素級別的精確定位,同樣需要確定器件的左右邊界。為了降低噪聲的干擾,利用垂直投影來確定邊界。具體步驟如下:
1c)利用前面步驟得到的器件頂部邊界位置,以及承重界面的位置,得到二者的分界線(二者垂直坐標(biāo)平均值);
2c)將所有邊界點(diǎn)中的坐標(biāo)值位于分界線上方的點(diǎn)提取出來;
3c)根據(jù)被提取出來的點(diǎn),找到最左側(cè)和最右側(cè)的;
4c)在左側(cè)點(diǎn)周邊20個(gè)像素范圍內(nèi),對二值圖進(jìn)行垂直投影;
5c)對投影曲線進(jìn)行差分,找到差分值最大的位置,作為器件的左邊界;
6c)同樣的方法,得到器件的右邊界;
d)器件頂部坐標(biāo)圓角的定位
由于有些器件的四角是圓角的,其邊界點(diǎn)的坐標(biāo)值,比正常的頂部邊界點(diǎn)要低。如果不能對圓角位置進(jìn)行精確定位,則會(huì)對后續(xù)的精準(zhǔn)厚度測量造成影響。本發(fā)明采用如下方法定位圓角范圍:
1d)利用前面幾個(gè)步驟得到的承重面坐標(biāo)、器件頂部坐標(biāo)、器件左右邊界位置,將器件對應(yīng)的子輪廓提取出來;
2d)針對器件子輪廓,計(jì)算其對應(yīng)的凸包;
3d)利用該凸包,生成新的二值圖像,凸包區(qū)域填充為白色;
4d)凸包區(qū)域圖像與原來的器件圖像做差;
5d)差值圖中,定位到面積最大的四個(gè)連通區(qū)域;
6d)計(jì)算得到四個(gè)連通區(qū)域的位置,進(jìn)而推算得到器件圓角位置。
2.亞像素邊界定位
在高清的工業(yè)相機(jī)拍攝的圖像中,器件的邊界,在亮度上會(huì)形成一種緩慢下降的階梯形狀。這種形狀與反正切曲線的形狀非常相似。出現(xiàn)這種形狀的原因,是工業(yè)相機(jī)在捕獲圖像時(shí),由于數(shù)據(jù)采樣的精度以及鏡頭的清晰度等問題,導(dǎo)致器件空氣的邊界不能截然分開,從而發(fā)生了一定程度的模糊現(xiàn)象。通常這種帶有一定過渡效應(yīng)的邊界,需要采用亞像素邊界定位技術(shù),否則會(huì)影響器件尺寸的測量。
傳統(tǒng)的亞像素邊界定位技術(shù),諸如灰度矩方法等,計(jì)算量都較大,影響了算法的實(shí)時(shí)性能。本發(fā)明通過對反正切曲線與邊界位置附近的列像素曲線進(jìn)行擬合,來實(shí)現(xiàn)邊界的亞像素定位。反正切曲線的數(shù)學(xué)表達(dá)式如下:
y=p1*atan(p2*x+p3)+p4(1)
假定邊界位置附近的列方向圖像亮度曲線,也是符合反正切曲線的形狀的。因此只需用式(1),求解出當(dāng)前列的亮度曲線的四個(gè)參數(shù):p1,p2,p3,p4,即可得到當(dāng)前列的亮度曲線的精確數(shù)學(xué)模型。然后,精準(zhǔn)的亞像素邊界位置,就是反正切曲線的中心點(diǎn)位置,可以利用下式得到:
x0=-p3/p2(2)
根據(jù)式(2),很快就能計(jì)算得到每一列的亞像素坐標(biāo)。
為了提高求解的速度,本發(fā)明不再利用諸如lm之類的迭代求解方法,而直接采用粒子群優(yōu)化算法(pso)進(jìn)行快速搜索,從而實(shí)現(xiàn)了求解過程的大規(guī)模提速。
亞像素定位過程流程如下:
a)p1和p4兩個(gè)參數(shù)的直接估值
反正切曲線總共有四個(gè)參數(shù),為了降低搜索次數(shù),可以提前利用亮度曲線的形狀,將p1和p4兩個(gè)參數(shù)算出來,這樣后續(xù)可以將計(jì)算出來的這兩個(gè)參數(shù)值作為p1和p4的初始值。
p1的計(jì)算——p1描述的物理量其實(shí)就是反正切曲線在垂直方向上的覆蓋范圍。因此該值的估算,可以通過計(jì)算邊界兩側(cè)的亮度平均值,然后做差得到。但是,在計(jì)算兩側(cè)亮度平均值時(shí),需要將亮度過渡區(qū)域?yàn)V除掉,以免造成干擾。具體做法如下:
1a)從初始邊界位置的上方開始,逐漸陸續(xù)將當(dāng)前列的像素加入到集合中。如果集合中的像素亮度標(biāo)準(zhǔn)差小于5,則可以繼續(xù)增加新的像素。如果大于5,則停止增加新的像素。計(jì)算此時(shí)集合中的像素亮度的平均值,作為該上側(cè)的平均亮度。
2a)同樣,從初始邊界位置的下方開始,也進(jìn)行同樣的操作,得到下側(cè)的平均亮度。兩個(gè)亮度值的差值,就是p1。
3a)p4的計(jì)算——p4其實(shí)就是邊界曲線中心點(diǎn)位置的縱坐標(biāo)。該值的計(jì)算比較簡單,只需要將亮度曲線上所有的像素亮度值計(jì)算平均值即可。
b)基于粒子群算法(pso)的反正切曲線求解
式(1)中的反正切曲線模型包含4個(gè)參數(shù),無法使用解方程的方式得到精確地解,因此常規(guī)的方法是利用諸如梯度下降法等迭代方法,逐步逼近較好的結(jié)果。這些方法往往搜索次數(shù)較多,而且容易陷入局部最優(yōu)。為了同時(shí)解決速度和局部最優(yōu)的問題,本發(fā)明采用最優(yōu)化搜索策略(pso算法),來進(jìn)行反正切曲線模型的求解。
粒子群算法(pso)是一種經(jīng)典的演化計(jì)算方法。該算法模擬了鳥類尋找食物的規(guī)律。一群鳥在某個(gè)區(qū)域搜索食物,它們具有各自的位置和速度。如果某一只鳥找到了食物,周邊的其它鳥則會(huì)參考它的方向,對自己的飛行方向進(jìn)行調(diào)整。同時(shí),每一只鳥也具有一定的記憶,它們會(huì)記住到目前為止,曾經(jīng)食物最多的地方,其飛行的方向,也在一定程度上參考該位置。這樣,經(jīng)過少數(shù)幾次迭代之后,鳥群的整體適應(yīng)度,就可以達(dá)到一個(gè)較高的值,從而得到一個(gè)較好的解。
利用pso算法求解反正切曲線的參數(shù)的具體辦法如下:
1b)設(shè)定一組粒子,總共20個(gè),每個(gè)粒子包含4個(gè)參數(shù),隨機(jī)設(shè)定初始值,代表反正切曲線的一個(gè)解;
2b)計(jì)算當(dāng)前20個(gè)粒子所對應(yīng)的曲線,與實(shí)際的亮度曲線的誤差,將誤差取反,作為適應(yīng)度;
3b)找到當(dāng)前最合適的曲線參數(shù),然后調(diào)整各個(gè)粒子的方向和位置,繼續(xù)計(jì)算;
4b)重復(fù)上述兩個(gè)步驟,直到最好的粒子的誤差小于閾值10為止;
5b)此時(shí)最好的粒子的4個(gè)參數(shù),就是最終需要的反正切曲線的參數(shù),根據(jù)式(2)計(jì)算得到精確的亞像素邊界位置。
c)前一列結(jié)果的應(yīng)用,得到p2和p3的初始值
在完成指定某一列的曲線擬合之后,可以將該列的參數(shù)中的p2和p3的值,作為下一列的亮度曲線的參數(shù)。而p1和p4依然通過計(jì)算進(jìn)行估計(jì)。這樣可以使得當(dāng)前列在進(jìn)行結(jié)果搜索時(shí),一開始的初始值就是比較接近真實(shí)位置的,這樣可以進(jìn)一步降低搜索量。
d)噪聲干擾問題的解決
噪聲的存在,會(huì)引起亮度曲線與常規(guī)的反正切曲線的形狀,相差極大。此時(shí)直接套用反正切曲線模型進(jìn)行求解,最終的結(jié)果與沒有噪聲干擾的情形,相差也很大。本發(fā)明通過判斷擬合過程中的誤差,來決定當(dāng)前列的擬合結(jié)果是否正確。對于誤差較大的情形,該列不進(jìn)行邊界的精準(zhǔn)定位,而是后期通過邊界平滑得到修補(bǔ)。
e)邊界平滑
對初步得到的邊界亞像素坐標(biāo)值,相鄰列之間的坐標(biāo)進(jìn)行平滑操作,以降低噪聲干擾,或者是圖像采樣過程中的隨機(jī)偏差,引起的邊界抖動(dòng)現(xiàn)象。如果不對邊界坐標(biāo)進(jìn)行平滑,則可能會(huì)對后續(xù)的灰塵濾除過程造成影響,導(dǎo)致很多真實(shí)的灰塵檢測不出來,從而影響測量結(jié)果。
本發(fā)明采用貝塞爾曲線擬合方法,來完成邊界點(diǎn)坐標(biāo)的擬合。
3.異常情況處理
a)沒有器件預(yù)警
檢測視野中是否存在器件的策略比較簡單,但是要注意節(jié)約時(shí)間,提高算法效率。本發(fā)明采用如下方法,快速驗(yàn)證視野中是否存在器件:
不存在器件時(shí),圖像中玻璃分界面是一條直線。通過分析玻璃分界面上的垂直坐標(biāo)即可進(jìn)行檢測。將分界面的坐標(biāo),擬合成一條直線。然后計(jì)算每一個(gè)點(diǎn)到直線的距離。如果所有點(diǎn)到直線的距離,都足夠小,則沒有器件。
對于圖像中沒有器件存在的情形,需要進(jìn)行預(yù)警,防止測量結(jié)果出現(xiàn)異常。
b)多個(gè)器件預(yù)警
由于系統(tǒng)機(jī)械部分可能存在的異常,導(dǎo)致圖像中可能同時(shí)出現(xiàn)多個(gè)器件。這種情況必須預(yù)警,防止測量結(jié)果出現(xiàn)異常。分兩種情況來處理:
1b)多塊器件彼此分開
考察邊界坐標(biāo)的上升和下降的次數(shù),如果上升次數(shù)和下降次數(shù)都超過1次,那么可以理解預(yù)警。
2b)多塊器件發(fā)生交疊
在利用器件坐標(biāo)上升和下降的規(guī)律,得到器件的左右邊界之后,就需要考察左右邊界之間的器件的厚度分布。由于器件的厚度都是固定的,因此可以設(shè)置經(jīng)驗(yàn)值。在左右邊界之間,如果某一個(gè)位置的厚度值,接近或者超過兩倍厚度的高度,則說明發(fā)生了多個(gè)器件的交疊。此時(shí),需要進(jìn)行預(yù)警。
c)縫隙預(yù)警
玻璃盤上可能存在顆粒較大的灰塵,如果此時(shí)碰巧器件位于灰塵上,則器件與玻璃盤之間就會(huì)出現(xiàn)縫隙。由于工業(yè)檢測要求的精度在微米級,這種縫隙足以造成器件厚度檢測不準(zhǔn)確。因此必須對這種情況進(jìn)行預(yù)警。
采用如下方法來檢測縫隙的存在:
1c)器件區(qū)域的輪廓提取
在器件邊界的初步定位過程中,已經(jīng)得到了器件的左右邊界的大致位置。根據(jù)這個(gè)位置,將器件對應(yīng)的二值化子圖像截取出來,然后提取輪廓。后續(xù)步驟將在輪廓的基礎(chǔ)上,進(jìn)行縫隙的檢測。
2c)器件頂部和左右兩側(cè)輪廓的濾除
利用初定位過程中得到的承重界面坐標(biāo),以及器件左右邊界坐標(biāo),可以大致得到器件的左下角和右下角坐標(biāo)。然后根據(jù)這兩個(gè)坐標(biāo)值,將器件的頂部輪廓、左側(cè)輪廓、右側(cè)輪廓都過濾掉,只留下可能的縫隙區(qū)域的輪廓點(diǎn)。
3c)縫隙區(qū)域尺寸測量
經(jīng)過前面兩個(gè)步驟的處理,此時(shí)留存下來的直線段,就可以認(rèn)為是器件與玻璃平面之間的縫隙所對應(yīng)的輪廓。分析此時(shí)的輪廓點(diǎn),計(jì)算該區(qū)域的邊界。如果該區(qū)域的高度小于5個(gè)像素,而寬度大于20個(gè)像素,則認(rèn)為是縫隙。此時(shí)需要預(yù)警。
d)灰塵干擾的過濾
灰塵對亞像素邊界的定位,影響非常大,如果不能準(zhǔn)確的過濾灰塵,則整個(gè)器件厚度檢測系統(tǒng)無法得到正確的測量結(jié)果。尤其是今天的中國,大氣污染嚴(yán)重,空氣中顆粒物比重很高,灰塵對工業(yè)檢測系統(tǒng)的干擾,非常普遍。
本發(fā)明按照如下的策略來進(jìn)行灰塵過濾:
1d)對亞像素邊界坐標(biāo),進(jìn)行局部直線擬合:采用邊增長,邊搜索的方式,試探性的將邊界點(diǎn)分成多個(gè)字跡合:
首先,選擇最坐標(biāo)的輪廓點(diǎn),加入集合。然后,陸續(xù)將右側(cè)新的鄰接點(diǎn)加入集合。每加入一個(gè)點(diǎn),就擬合一次直線,然后計(jì)算集合中所有點(diǎn)到該直線的距離。如果平均距離大于閾值(1個(gè)像素),則停止增加點(diǎn),該直線子段擬合完成。后續(xù)的輪廓點(diǎn)加入到新的集合中。
2d)將距離大于閾值的坐標(biāo)點(diǎn),挑選出來;
在每一個(gè)子集中,將輪廓點(diǎn)到直線距離大于閾值的坐標(biāo)點(diǎn)挑選出來。
3d)針對被挑選出來的坐標(biāo)點(diǎn),進(jìn)行分段;
分析子集中被挑選出來的坐標(biāo)點(diǎn),根據(jù)是否連接,分成多個(gè)子段。
4d)考察每一個(gè)子段的寬度,寬度小于閾值的,都算作是灰塵;
5d)重新計(jì)算坐標(biāo)點(diǎn),濾除灰塵對應(yīng)的子段,將該子段上的坐標(biāo)點(diǎn),全部用對應(yīng)的擬合的直線上的坐標(biāo)點(diǎn)來替代。
e)拖尾現(xiàn)象的預(yù)警
器件在玻璃盤上的擺放位置,受到機(jī)械設(shè)備的影響,并不能保證每一次器件的方向都跟相機(jī)光軸方向垂直。當(dāng)器件方向與相機(jī)光軸方向存在較大夾角時(shí),由于攝像機(jī)的焦距比較小,遠(yuǎn)離相機(jī)的器件末端,將不能正確聚焦,并且在器件圖像的末尾,出現(xiàn)一個(gè)亮度偏高的灰色區(qū)域。該區(qū)域直接導(dǎo)致器件的厚度測量出現(xiàn)問題,因此必須對這種情況加以檢測,并且進(jìn)行預(yù)警。
采用如下的流程,來實(shí)現(xiàn)拖尾現(xiàn)象的預(yù)警:
1e)器件頂部邊界垂直坐標(biāo)一致性的判斷
發(fā)生拖尾現(xiàn)象時(shí),由于器件遠(yuǎn)端在圖像中的垂直方向所占的像素較少,因此其頂部邊界坐標(biāo),比器件上其他頂部邊界坐標(biāo)的垂直位置偏低。可以利用這個(gè)特性,對拖尾現(xiàn)象進(jìn)行初步預(yù)警。具體做法如下:
在器件的左右兩端,各自選擇一個(gè)長度為20的區(qū)域。然后在器件的中心位置,選擇一個(gè)長度是50的區(qū)域,分別計(jì)算這三個(gè)區(qū)域的器件的頂部輪廓點(diǎn)垂直坐標(biāo)的平均值。
如果左右兩端之中有一個(gè)區(qū)域,其平均坐標(biāo)與中心區(qū)域平均坐標(biāo)相比,差值大于5,則認(rèn)為存在拖尾現(xiàn)象,預(yù)警。
2e)器件中心區(qū)域,與首尾兩端區(qū)域的亮度一致性分析
與上面一樣,在器件的左右兩端,各自選擇一個(gè)長度為20的區(qū)域。然后在器件的中心位置,選擇一個(gè)長度是50的區(qū)域,分別計(jì)算這三個(gè)區(qū)域的平均亮度。
如果左右兩端之中有一個(gè)區(qū)域,其亮度與中心區(qū)域平均亮度,差值大于20,則認(rèn)為存在拖尾現(xiàn)象,預(yù)警。