郭兆明,周慶華,曾小為
(1.長沙理工大學物理與電子科學學院,湖南 長沙 410114;2.納威爾智能科技有限公司,湖南 長沙 410114)
目前,在醫(yī)藥檢測行業(yè),機械化和智能化不斷取締了傳統(tǒng)的人工檢測模式,常用的檢測方法有X射線檢測技術、高光譜檢測技術、機器視覺檢測技術等[1]。其中,基于機器視覺的藥片缺陷檢測技術越來越廣泛地應用于醫(yī)藥檢測行業(yè)。常見的藥片缺陷可分為2大類[2]:一類為形狀缺陷,包括藥片破損、碎裂以及尺寸大小不合格等;另一類為表面紋理缺陷,包括表面劃痕、污漬、異色等。藥片的缺陷檢測是利用藥片的形狀輪廓特征和表面紋理特征進行判別的,主要包括模板匹配法[3]、基于形體和顏色的特征分析法[4]。傳統(tǒng)的基于機器視覺的藥片缺陷檢測方法通常采用單攝像機采集藥片上表面圖像的方式[5-6],該種方式有利于獲取形狀完好、紋理清晰的藥片圖像,利于檢測藥片破碎、劃痕、污漬、異色等大部分的缺陷類型。但是,在實際生產(chǎn)中,存在著一類在厚度上有缺陷的藥片,通常是由于壓片過程中藥劑量不足或由于藥片上下表面間開裂斷開導致的,使得該類藥片的厚度小于標準藥片。由于藥片的弱紋理特性,以及藥片側(cè)表面信息的缺失,該類藥片難以通過單攝像機從藥片正上方拍攝的方式來很好地檢測是否存在缺陷。高體紅等人[7]提出了在單攝像機的基礎上在藥片的四周增加4塊反射鏡的方法,該方法能夠獲得藥片上表面和側(cè)表面的所有信息,極大地提高了表面劃痕、污漬等缺陷的檢測精度,但也無法有效地檢測藥片的厚度缺陷。
近年來雙目視覺技術發(fā)展越來越成熟,被廣泛用于無人駕駛、智能機器人、工件尺寸測量等領域[8-10]。本文提出一種基于雙目視覺的藥片缺陷檢測方法,對存在厚度缺陷的藥片進行檢測,實驗結果表明,該方法具有較高的檢測精度。
在雙目立體視覺中,為了反映場景中某一點的世界坐標和圖像像素點的坐標之間的關系,需要建立像素坐標系和世界坐標系之間的對應關系。在攝像機的成像模型中,共有4個坐標系之間的轉(zhuǎn)換,分別為:代表目標物體所在位置的世界坐標系;原點位于相機光心的攝相機坐標系;原點位于圖像中心的圖像物理坐標系;原點位于左上角的像素坐標系[11]。一旦像素坐標系和世界坐標系之間的轉(zhuǎn)換關系確立,結合雙目視覺系統(tǒng)中的三角測距原理便可求得某一像素點對應的目標點的世界坐標。在不考慮畸變的線性模型中,像素坐標系到世界坐標系之間的轉(zhuǎn)換關系[12]如下:
(1)
其中,點(u,v)代表像素點坐標,點(Xw,Yw,Zw)代表與像素點(u,v)對應的世界坐標,(u0,v0)表示圖像像素坐標系的主點坐標,fx和fy分別表示攝像機在x軸和y軸上的焦距,Zc表示世界坐標系的點轉(zhuǎn)換到攝像機坐標系的Z軸的值,矩陣A代表攝像機的內(nèi)參數(shù),是攝像機的固有屬性。R表示世界坐標系變換到攝像機坐標系的旋轉(zhuǎn)矩陣,T表示其平移矩陣,R和T共同構成外部參數(shù),尋找內(nèi)外參數(shù)的過程稱為攝像機的標定[13]。
實際應用中的相機鏡頭都會存在一定程度的畸變,存在畸變的相機成像模型稱為非線性模型,畸變類型主要有徑向畸變和切向畸變,其中,徑向畸變是影響精度的主要因素[14],本文僅考慮存在徑向畸變的情況,其數(shù)學表達式可表示為[15]:
(2)
其中,(ud,vd)代表線性模型下的理想坐標,(u,v)表示畸變模型下的實際坐標,r2=u2+v2,k1,k2,k3…表示畸變系數(shù),本文只取前2項畸變系數(shù)作為非線性模型的畸變參數(shù)。
非線性相機模型的標定是通過對攝像機存在的畸變進行數(shù)學建模,在求解攝像機的內(nèi)外參數(shù)時融入了畸變模型,使得標定結果更加趨向于真實的攝像機的內(nèi)外參數(shù)。Tsai兩步法[16]是一種將標定過程分2步進行的非線性標定方法,通過線性模型和非線性模型相結合的方法,分步求解相機的內(nèi)外參數(shù),但該方法對設備要求較高,難以應用于一般的場合。另一種比較常用的方法是張正有標定法[17-18],以一個黑白棋盤格作為標定板,因此張正有標定法又稱為平面模板法,該方法通過拍攝不同位姿的若干組模板圖像,檢測圖像中的角點,求解理想線性模型下的攝像機內(nèi)外參數(shù),并用極大似然估計提升參數(shù)精度,同時采用最小二乘法求出實際的徑向畸變參數(shù)。張正有標定法是一種標定過程簡單、標定精度高的相機標定方法。
為了使用過程的便利性,實驗采用集成的雙目相機,單邊相機分辨率為360×240,鏡頭焦距為3.6 mm,像素尺寸為3.75 μm×3.75 μm,2個相機光軸距離約為34 mm。采集11張不同位姿的平面棋盤格模板圖像,根據(jù)張正有標定理論進行標定,雙目相機的內(nèi)外參數(shù)標定結果如表1所示。
表1 相機參數(shù)表
表1的標定結果表明2個相機相距約34.3 mm,與實際距離34 mm相近,鏡頭存在微小的徑向畸變,右相機相對于左相機有微小的旋轉(zhuǎn),光軸接近平行,滿足本文的檢測要求。
由于缺陷藥片與標準藥片相比,存在著厚度差,因此,本文利用雙目視覺的三角測距原理計算出藥片到雙目視覺系統(tǒng)的深度,利用缺陷藥片和完好藥片的深度差檢測出缺陷藥片并計算出缺損的厚度。為了獲取藥片的深度信息,首先需要對雙目視覺系統(tǒng)采集的2幅圖像提取特征點,完成立體匹配,利用三角測距原理獲取藥片的深度值,計算深度差,并檢測缺陷藥片。
為了計算某一物點的視差值,需要進行立體匹配。立體匹配就是尋找一個圖像內(nèi)某個像素點對應的物點在另一個圖像內(nèi)的對應像素點,從而完成雙目相機左右圖像像素點匹配的過程。根據(jù)匹配方式的不同,立體匹配可分為3類,分別為基于區(qū)域的匹配、基于相位的匹配和基于特征的匹配。區(qū)域匹配是通過建立局部窗口,利用窗口之間的像素灰度信息的相似性來進行圖像的匹配,該類匹配方式的匹配精度和計算量受窗口大小的影響,難以在精度和計算量上達到平衡,同時對弱紋理區(qū)域的匹配精度較低[19]?;谙辔坏钠ヅ涫抢孟辔恍畔⑦M行左右圖像的匹配,傳統(tǒng)的相位匹配方法匹配速度較慢,近年來提出的基于極線校正的亞像素相位匹配方法[20]、基于多尺度分析的快速相位立體匹配[21]等相位匹配方法極大地提高了匹配速度,但存在著相位偏差、相位纏繞等問題,同時需要增加光柵投影設備,增加了雙目視覺系統(tǒng)的復雜度?;谔卣鞯钠ヅ涫峭ㄟ^提取圖像的角點、邊緣等作為匹配實體進行立體匹配,該種匹配方法計算量小、匹配速度快,是一種實時的立體匹配算法。由于藥片作為一種弱紋理物品,常見的特征匹配方法如SIFT算法和SURF算法對其的匹配效果一般,有效匹配點較少,也不存在角點,無法以角點作為有效的特征點進行匹配,因此,本文以邊緣屬性作為特征進行立體匹配。
邊緣是圖像中2個不同灰度區(qū)域的邊界,是圖像的特征屬性之一,常見的邊緣檢測算法有Sobel算子、Roberts算子、Laplace算子和Canny算子。在以邊緣作為特征的立體匹配中,邊緣位置的準確度將直接影響視差的精度,最終會對藥片的檢測精度造成影響。其中,Canny算子是一種多級邊緣檢測算子,具有低錯誤率、邊緣定位精度高、單一的邊緣響應等優(yōu)點,廣泛用于圖像的邊緣檢測,因此,本文采用Canny算子進行邊緣提取。
圖像的采集對后續(xù)的處理有至關重要的影響,攝像機置于藥片正上方的圖像采集方式是目前單相機藥片檢測的主要方式,該種圖像采集方式有利于盡可能多地采集到藥片表面信息,提高檢測精度,因此,本文將雙目相機放置于藥片正上方進行圖像的采集。
圖1是雙目相機從藥片正上方對藥片進行拍攝得到的雙目相機左右圖像,并對雙目相機采集到的圖像用Canny算子提取邊緣。實際的藥片經(jīng)過邊緣提取后,存在著大量的偽邊緣點,為了提高立體匹配的準確度并減少計算量,本文只提取邊緣輪廓上水平切線和豎直切線的切點作為特征點進行匹配。水平切線的切點和豎直切線的切點可以用圖2所示的十字模板進行提取。
圖1 Canny算子邊緣提取
圖2 模板
圖2所示的模板中心點位于十字架的中心,讓該模板的中心點在邊緣輪廓上移動,當模板的中心點通過邊緣輪廓的水平切線或豎直切線的切點時,具有如下的性質(zhì):當模板的中心點通過水平切線的切點時,模板覆蓋區(qū)域的邊緣關于模板中的十字架左右對稱,且該段邊緣不可越過十字架的水平軸同時存在于上下區(qū)域;同理,當模板的中心點通過豎直切線的切點時,模板覆蓋區(qū)域的邊緣關于模板中的十字架上下對稱,且該段邊緣不可越過十字架的豎軸同時存在于左右區(qū)域。利用該特點可以有效地提取藥片邊緣輪廓的水平和豎直切線的切點。
圖3是對邊緣進行特征點提取后的圖像,圓點為提取的特征點。實際上,除了在藥片表面邊緣輪廓上的幾個特定特征點之外,提取的其他特征點無法作為有效的匹配特征點。立體匹配中通常采用相似度測度函數(shù)來進行特征點的匹配,常用的有差值平方和SSD(Sum of Squared Differences)算法、絕對值和SAD(Sum of Absolute Differences)算法、歸一化互相關NCC(Normalized Cross Correlation)算法和Census變換[22]等。由于本文所用藥片表面特征單一,圖像中的特征點無法建立足夠的歧義性,采用上述相似度測度函數(shù)無法進行有效的特征匹配,因此,本文利用藥片邊緣輪廓上特征點的一些約束條件,進行特征點的篩選。約束條件如下:
圖3 特征提取
1)在藥片上表面邊緣輪廓上水平切線的切點或豎直切線的切點都應該在該輪廓上成對出現(xiàn),這樣便可去除大部分的孤立特征點。
2)邊緣輪廓上水平切線的切點對和豎直切線的切點對在誤差允許的范圍內(nèi)互相對稱。該約束條件可以去除不在藥片表面輪廓上的特征點。
3)平行雙目相機采集的圖像具有極線約束,即左右圖像的對應點應具有相同的縱坐標。
圖4是圖3經(jīng)過特征點篩選后剩下的有效特征點在原灰度圖像上的映射,為了更直觀地表示,圖中線段表示切線,黑點表示切點。左右圖像特征點的匹配可以按照從上到下、從左到右的配對規(guī)則。
圖4 特征點提取
在一個平行雙目視覺系統(tǒng)中,雙目相機視場內(nèi)的任意一物點分別會在左右相機中形成對應的像點,通過計算左右圖像中對應點的橫坐標之間的差值的絕對值,根據(jù)物點和2個相機之間的幾何關系便可計算出物點距離光心的距離,雙目視覺三角測距模型如圖5所示[23]。
圖5 雙目視覺三角測距原理
圖5為雙目視覺的測距模型,其中,點P為待測目標點,Cl和Cr分別為左右相機的成像平面,Ol和Or分別為左右相機的光心,Xl和Xr分別表示左右相機的像素坐標,B為2個相機光心的距離,fl和fr分別為左右相機的焦距,由于在雙目視覺系統(tǒng)中,2個相機的參數(shù)均一致,因此左右相機擁有共同的焦距f,由此可知點P的深度Z的關系為:
Z/f=B/(Xl-Xr)
(3)
由上式可得:
Z=Bf/d
(4)
其中d=Xl-Xr為左右圖像中對應點的視差值,即同一物點在左相機圖像中對應像素點的橫坐標和右相機圖像中對應像素點橫坐標的差值的絕對值,Z為場景中點P到攝像機像平面的距離。
圖6為雙目視覺系統(tǒng)參數(shù)B為34.3 mm、f為226像素時,深度關于視差的反比例函數(shù)Z=Bf/d的曲線圖。由曲線可知,隨著視差值的逐漸增大,單位視差對應的深度值減小,檢測的精度增大,在視差值大于190時,單位視差的深度變化小于0.2 mm,此時有較高的檢測精度。在實際應用中由于受制于相機視場角和相機分辨率的因素,視差值受限在一定的范圍內(nèi),本文采用的雙目相機的2個相機的分辨率都為360×240,因此視差最大值為240,由式(4)可知,藥片距離雙目相機在32 mm~40 mm時有較高的檢測精度。
圖6 深度-視差曲線
為了減小計算特征點時的誤差對檢測精度造成的影響,本文將4個立體匹配點對應的視差值取均值,以該均值代替藥片的總體視差值,并計算深度,將該值與標準的藥片深度值進行對比,并取二者之間的差值作為缺損的平均厚度。
本文實驗采用厚度為3 mm的藥片,通過采集7組藥片圖像并計算其深度差,結果如表2所示。
表2 實驗結果
實驗采用的左右相機像素均為360×240,光軸相距約為34 mm。通過表2的數(shù)據(jù)表明,在試驗平臺固定且距離藥片上表面深度為37.8 mm的時候,用本文的方法和實際測量的結果誤差在0.1 mm之內(nèi),在誤差允許的范圍內(nèi)。同時,在雙目相機距離藥片距離一定時,隨著相機分辨率的增大,測量精度成正比例增長,因此,該方法滿足檢測要求。
本文提出了一種基于雙目視覺的藥片缺陷檢測方法。采用張正有標定法進行雙目相機參數(shù)的標定,提取藥片圖像的邊緣輪廓的水平和豎直切線的切點作為特征點,并利用藥片邊緣輪廓的對稱屬性和平行雙目相機的行對齊屬性作為約束條件進行立體匹配,解決了傳統(tǒng)基于相似度測度函數(shù)對弱紋理區(qū)域匹配精度低的問題。在雙目相機分辨率較低的情況下,藥片的平均厚度測量精度達到了0.1 mm,能夠有效地解決存在厚度缺陷的藥片的檢測問題。