奚 陶 王成琳 羅天洪 周 毅 張 超
(重慶文理學院 智能制造工程學院,永川 402160)
線結構光測量技術具有效率高、硬件成本低及操作簡單等優(yōu)點,已在表面質量檢測[1]、三維重建[2]及幾何參數(shù)測量[3]等領域廣泛應用。測量過程中,激光發(fā)生器將光條投射到被測物體表面,經視覺傳感器捕獲光條圖像后,通過圖像分析技術得到被測物體表面的幾何參數(shù)。線結構光光條的寬度一般超過一個像素,而光條中心線上各點的位置坐標代表最準確的測量信息,可用于反映被測幾何特征參數(shù)[4-5]。因此,線結構光光條中心的精準提取是實現(xiàn)基于線結構光精準測量的一個重要環(huán)節(jié)。
傳統(tǒng)光條中心提取方法可分為基于光條幾何中心的提取方法和基于光條灰度特征的提取方法。由于噪聲和不均勻光照等復雜環(huán)境因素的影響,光條表面常產生斷線或噪聲污染現(xiàn)象,導致傳統(tǒng)方法無法準確獲取光條中心。為保留傳統(tǒng)光條中心提取方法的優(yōu)點并抑制其缺點,學者們提出了大量改進方法。部分文獻采用深度學習模型,先從復雜環(huán)境中識別光條目標,再用傳統(tǒng)方法提取光條中心[6-8]。在改進傳統(tǒng)方法的過程中,LI等人采用灰度重心法計算光條每列的中心點,再用最小二乘法擬合這些點,得到切向向量、法向量和曲率半徑,進而在每個中心點周圍定義一個矩形區(qū)域,沿著法向量方向重新計算矩形區(qū)域內的中心點坐標[9]。HE等人將灰度中心法和Hessian矩陣法相結合,提出一種不同于傳統(tǒng)沿行或沿列提取光條中心點的方法[10]。LI等人基于Gauss-Lorenz峰值擬合模型預處理光條圖像,并用灰度質心法提取光條紋中心,提高了光條中心的提取精度[11]。
文章提出一種適用于復雜環(huán)境的光條中心提取的混合算法,首先利用合成的光條圖像訓練YOLOv5s模型,識別復雜環(huán)境下的光條目標,其次采用自適應灰度閾值法、灰度均值法及基于亞像素的邊緣檢測方法提取光條像素,最后結合灰度重心法利用構造的滑動窗口搜索光條中心像素,實現(xiàn)光條中心的精準 提取。
光條中心的提取流程如圖1所示,主要包含光條分割和光條中心計算兩個環(huán)節(jié)。具體步驟為:(1)用局部二值模式(Local Binary Patterns,LBP)紋理算子提取光條紋理特征,統(tǒng)計光條表面灰度值,用紋理特征和灰度值人為合成光條圖像;(2)用合成的光條圖像訓練YOLOv5s模型;(3)用訓練好的YOLOv5s模型識別圖像中的光條,并用置信框分割圖像,僅保留置信框內的區(qū)域;(4)利用自適應灰度閾值方法提取置信框內的像素;(5)利用灰度均值法均衡化置信框內的像素灰度值;(6)采用亞像素邊緣算子檢測被提取像素的邊緣;(7)用滑動窗口遍歷圖像,尋找滿足閾值的光條像素點;(8)根據(jù)搜索的光條像素值,利用灰度重心法計算光條中心。
圖1 光條中心提取流程圖
LBP通過局部二值化提取圖像的局部紋理特征。它的操作原理是定義一個3×3窗口,通過比較相鄰像素和中心像素的灰度值,從左上角的第一個位置順時針讀取8位二進制數(shù)。該位置的LBP值可以通過十進制編碼獲得,具體內容如圖2所示。
圖2 LBP算子原理圖
LBP值反映了由其自身定義的窗口中的紋理信息,表達式為
式中:P為除3×3窗口中心像素外的像素;I(c)為中心像素的灰度值,即像素P的灰度值。從復雜環(huán)境的光條圖像中截取光條片段,包括投射在背景上的片段和投射在其他物體上的片段。利用LBP算子表達片段的紋理特征,結合灰度加權平均,人工合成光條圖像。合成的光條片段如圖3所示,其中圖3(a)、圖3(b)和圖3(c)分別為投射在背景上的合成光條片段、投射在量塊上的合成光條片段和投射在工具上的合成光條片段。
圖3 合成的光條片段
YOLOv5s是YOLO系列最新的檢測算法,可分為輸入終端、骨干網(wǎng)絡、頸部結構和預測層4個部分。研究使用的YOLOv5s模型大小僅為7.3 MB,F(xiàn)ocus層和對流邊界層(Convective Boundary Layer,CBL)的卷積核數(shù)分別為32、64、128、256和512。 將合成的光條片段隨機覆蓋在原始光條圖像的對應位置,再利用Labelimg圖像標記工具標記合成的光條目標和原始光條目標作為輸入圖像,并訓練YOLOv5s模型。使用YOLOv5s模型識別光條后,根據(jù)光條圖像中置信框的坐標,將其外部設置為黑色,實現(xiàn)光條圖像的分割。
針對光條圖像分割結果,首先采用自適應灰度閾值法提取置信框內的像素點,通過統(tǒng)計大量像素灰度值,確定閾值為165,其次利用形態(tài)學膨脹腐蝕算法去除剩余的噪聲點和小孔洞,再次采用自適應灰度均值法均衡提取的像素灰度值,最后利用Canny邊緣檢測算子提取置信框內的光條邊緣,并利用亞像素邊緣檢測算法細化其邊緣,具體實施如下。
假設點(x,y)為置信框內光條邊緣點,R(x,y)為該點的灰度值,點(x-1,y)、(x+1,y)、(x,y-1)和(x,y+1)分別是點(x,y)的4個領域點,對應的灰度值分別為P(x-1,y)、P(x+1,y)、P(x,y-1)和P(x,y+1),討論下列4種情況。
(1)如果R(x,y)>P(x-1,y)且R(x,y)>P(x+1,y),點(x,y)的亞像素點(x0,y0)可以表示為
(2)如果R(x,y)>P(x,y-1)且R(x,y)>P(x,y+1),點(x,y)的亞像素點(x0,y0)可以表示為
(3)如果R(x,y)<P(x,y-1)且R(x,y)>P(x+1,y),點(x,y)的亞像素點(x0,y0)可以表示為
(4)如果R(x,y)<P(x,y-1)且R(x,y)>P(x,y+1),點(x,y)的亞像素點(x0,y0)可以表示為
通過遍歷置信框內光條圖像,根據(jù)亞像素計算方法獲得光條邊緣的亞像素邊緣點。由于光條寬度超過一個像素,獲得光條亞像素邊緣點后,使用大小為4個像素的滑動窗口確定光條寬度并去除噪聲點,原理如圖4所示,其中虛線框表示大小為4像素的滑動窗口,灰色為置信度框的邊緣像素,黑色為噪聲點像素,白色為光條像素。
圖4 基于滑動窗口的光條像素搜索
根據(jù)滑動窗口確定光條寬度的步驟如下。
步驟1:將包含光條的置信框圖像轉換為二值圖像,使得2×2的窗口從置信框左上角滑動,遍歷整個置信框圖像搜索光條像素。
步驟2:如果滑動窗口的4個像素值在窗口滑過第1行時的某個時間內全部為1,則記錄窗口的第2行的1的坐標。當遍歷第2行時,檢查與前一行1對應的下一行像素是否全部為1。若所有像素的值不是1,則前一行1的像素是噪聲點。如果它們都是1,則檢查此行的像素是否都是1。如果此行都是1,則前一行1的像素是光條的最小縱坐標?;瑒哟翱诶^續(xù)遍歷下一行,直到找到窗口的4個像素不是1的點,此時是光條縱坐標的最大值。如果檢查行的所有像素不是1,則窗口將遍歷下一行直到整行的像素為1。重復上述操作,直至找到光條的最小縱坐標和最大縱坐標。
步驟3:利用式(7),結合步驟2中搜索的光條最小縱坐標和最大縱坐標,通過灰度重心法計算光條中心。
為了驗證所提方法的準確性,筆者進行定量實驗。實驗所用激光發(fā)生器為深圳市紅外線激光科技有限公司生產的HW650L100-22BD型波長650 nm激光發(fā)生器。光條圖像背景包含隨機噪聲和不均勻光照,由深圳市美迪視訊科技有限公司生產的分辨率為1 280×1 024的工業(yè)攝像機獲取,鏡頭為MVJT0612型號的工業(yè)鏡頭,焦距為6~12 mm。計算機的配置為8 GB RAM、Intel Core i5-8300H CPU、NVIDIA GTX1660Ti GPU和Windows 10操 作系 統(tǒng),其中運行的圖像處理軟件系統(tǒng)包括Python 3.8、MATLAB 2020b、Ashampoo Photo Commander、CUDA10.2、cuDNN7.6.5和Photoshop。程序編譯軟件是Anaconda和Pycharm。
采集200幅光條圖像,在每幅圖像中隨機添加光斑和噪聲。光條圖像分為訓練集和測試集,分別包括175幅圖像和25幅圖像。數(shù)據(jù)集1包含160張合成光條圖像、10張原始圖像組成的訓練集和25張原始圖像測試集。數(shù)據(jù)集2的訓練集和測試集分別為175張原始圖像和25張原始圖像。YOLOv4模型、YOLOv4 tiny模型和YOLOv5s模型使用數(shù)據(jù)集1訓練,同時YOLOv5s模型使用數(shù)據(jù)集2訓練。檢測結果如圖5所示,圖5(a)中識別光條的置信率分別為1.00、0.99、0.98、0.97和1.00,圖5(b)中識別光條的置信率分別為0.85、0.77、0.81、0.82和0.84,圖5(c)中識別光條的置信率分別為0.92、0.91、0.91、0.90和0.93,圖5(d)中識別光條的置信率分別為0.89、0.91、0.93、0.87和0.95。
圖5 基于不同模型的光條識別結果
用精準率P、召回率R、F1值和均值平均精度mAP等模型評價指標評價模型識別光條的性能,表達式為
利用合成光條圖像訓練的YOLOv5s模型方法具有最高的精準率、召回率、F1值和均值平均精度,分別為96.70%、99.20%、97.93%和99.50%。利用原始光條圖像訓練的YOLOv5s模型,識別光條的精準率為82.20%,召回率為87.60%,F(xiàn)1值為84.81%,均值平均精度為83.26%。利用合成光條圖像訓練的YOLOv4 tiny模型,識別光條的精準率為91.60%,召回率為90.60%,F(xiàn)1值為91.09%,均值平均精度為89.64%。利用合成光條圖像訓練的YOLOv4模型,識別光條的精準率為93.50%,召回率為92.10%,F(xiàn)1值為92.79%,均值平均精度為94.67%。
光條中心的提取過程如圖6所示。其中:圖6(a)是使用合成光條圖像訓練的YOLOv5s模型的光條識別結果;圖6(b)是基于置信盒邊緣的圖像分割結果;圖6(c)是置信框中像素的提取結果;圖6(d)是置信框中像素的邊緣檢測結果;圖6(e)是置信框中像素的邊緣細化結果;圖6(f)是光條中心的提取結果。
圖6 光條中心的提取過程
采用骨架法、灰度重心法和Hessian矩陣法等傳統(tǒng)方法,提取復雜環(huán)境下的光條中心,并與所提方法的提取結果進行對比。所提方法提取的光條中心結果如圖7(a)所示,在不均勻照明和噪聲干擾條件下,完整呈現(xiàn)了筆直的光條中心。圖7(b)是使用骨架法提取光條中心的結果,顯示了斷裂的光條中心和錯誤的光條中心。圖7(c)是基于灰度重心法的光條中心提取結果,顯示了許多非直線和虛線。圖7(d)是采用Hessian矩陣方法提取光條中心的結果,顯示噪聲區(qū)域中出現(xiàn)了錯誤的光條中心提取結果。
圖7 基于不同方法的光條中心提取
為了進一步驗證所提方法的性能,在MATLAB編程環(huán)境中,將具有一定寬度的光條隨機添加至黑色背景圖像,并將高斯噪聲和光強區(qū)域添加到光條表面。在給定寬度的基礎上,將人為計算的提取光條中心作為標準光條中心。利用所提方法、骨架法、灰度重心法和Hessian矩陣法提取的光條,與標準光條中心進行對比。使用如式(9)所示的偏差指數(shù)DEV評估不同方法的提取精度,其中N為重復比較試驗次數(shù),這里取值為15。(Xn,Yn)為標準光條中心15個不同點的像素坐標,(xn,yn)為標準光條上采樣點的橫坐標線或縱坐標線與通過比較算法提取的光條中心線之間的交點像素坐標。
表1記錄了標準光條中心和其他方法提取的光條中心之間的像素坐標差異。表1中,光強1、光強2和光強3分別為3個不同光強的亮度區(qū)域,其中光強1的亮度最低,光強3的亮度最高。高斯噪聲標準差s分別設置為0.02、0.04和0.06。從表1可以看出:當不同光強和不同參數(shù)噪聲的照明區(qū)域疊加在光條時,標準光條中心與所提方法提取的光條中心之間的最大偏差和最小偏差分別為0.052像素和0.017像素;使用骨架法的最大偏差和最小偏差分別為0.414像素和0.144像素;采用Hessian矩陣法的最大偏差和最小偏差分別為0.265像素和0.106像素;使用灰質心法的最大偏差和最小偏差分別為0.562像素和0.290像素??梢姡谒蟹椒ㄖ?,灰度重心法的比較偏差最大。
表1 不同方法提取光條中心的光強比較 單位:像素
文章提出了一種新的混合算法用來精確提取復雜環(huán)境下的光條中心。首先,利用YOLOv5s深度學習模型識別復雜環(huán)境下的光條目標,得到利用特征合成的光條圖像訓練的YOLOv5s模型,大大提高了復雜環(huán)境下光條的識別精度,其精準率、召回率、F1值和均值平均精度分別為96.70%、99.20%、97.93%和99.50%。其次,所提方法將置信框外部設置為黑色,并將置信度框中的像素處理為亮度均勻、邊緣細化的像素。利用構造的滑動窗口去除噪聲、搜索光條像素,可準確確定光條寬度。最后,結合得到的光條寬度,采用灰度重心法計算光條中心。在性能測試實驗中,使用所提方法提取的光條紋中心相對于標準光條中心的最大偏差和最小偏差分別為0.052像素和0.017像素,表明所提方法在復雜環(huán)境中具有魯棒性。未來,開發(fā)自適應的光條中心提取算法將是研究重點。