賈衛平,王邦國
(大連大學 機械工程學院 特種加工與功能材料制備遼寧省教育廳重點實驗室,遼寧 大連 116622)
主動視覺的結構光測量系統的測量基于三角法測量原理。測量過程中將結構光條紋投射在待測物體表面,結構光條紋與待測物體相交時,由于物體深度信息的變化結構光受到調制,調制后的光條信息被CCD 攝像機采集為圖像后可用恢復待測物體的空間位置和尺寸信息。為獲取這些信息,需要對結構光條紋的中心位置進行精確提取。
國內外學者對結構光中心提取方法進行了許多研究,主要應用的結構光條紋中心提取方法有極值法[1]、灰度重心法[2-4]、方向模板法[5]、曲線擬合法[6]等。
極值法算法簡單、運算速度快,對于圖像中符合高斯分布的光條提取效果較好,但當投射在物體上光線過強時,圖像中光條會存在多個極大值,造成中心提取精度差。灰度重心法對于曲率變化較大的條紋提取效果差。方向模板法應用了可變方向模板檢測結構光條紋的亞像素中心,該方法具有一定的抗噪聲能力,可對較短的斷線進行修復,但計算較復雜。高斯擬合法通過對光條截面進行高斯擬合,根據擬合曲線的極值點確定結構光條紋的亞像素中心位置,該方法適用于圖像中法線方向變化較小的光條。Steger 提出利用Hessian 矩陣計算結構光條紋亞像素中心的方法[7],該方法具有檢測精度高、魯棒性好的特點。但是,該方法運算量大,無法滿足結構光條紋亞像素中心快速提取的需要,不能直接用于實時性要求高的場合。
本文提出了一種基于Hessian 矩陣的多結構光條紋亞像素中心提取方法,可識別結構光條紋并實現結構光條紋亞像素中心的快速提取。
投影結構光平面與被測物體相交后在物體表面形成一定寬度的光線條紋。如果在投影設備同時投射多個結構光平面時,則待測物體表面形成多個結構光條紋,圖1(a)為圖像采集設備采集的多結構光圖像中一個光線條紋的光強分布圖。圖1 中各圖的橫坐標為像素位置,縱坐標為像素點的灰度值,灰度值越大則光強越強。由圖1(a)可知,投射在待測物體表面的光線條紋橫截面的光強非均勻分布,呈現出中心灰度值大,邊緣灰度值小的特點。
當光線條紋豎直投射在待測物體表面,以光條的水平方向為x 軸,灰度值為y 軸,該光條可用下式表示:

通過求該式的一階導數的零值或二階導數最大值可求該線的亞像素中心。圖1(b)為拋物線擬合后的圖像,圖中的圓圈為擬合前像素坐標位置,各像素點用虛線連接;實線為拋物線擬合曲線;豎線與拋物線擬合曲線的交點為曲線的頂點,該頂點對應的像素位置為光線條紋的中心。由圖1(b)可知,拋物擬合曲線頂點的像素坐標與擬合像素點的坐標不重合。拋物線頂點坐標可通過一階導數的零點或二階導數的最大值求得。

圖1 像素位置及灰度值特征圖
為消除噪聲對中心提取的影響,可使用高斯濾波函降數噪降后噪的,函即數函為數 T (f x ( ) x, )與則高 T斯 ( x函 )的數 二 gσ 階( x導)數卷等積于。若高斯函數 gσ( x)的二階導數與函數 f ( x )的卷積,其最大值為光條的亞像素中心。 當拍攝圖像中投影結構光條非水平或豎直時,光條的亞像素位置需要在x 和y 兩個方向上進行調整,通過以下三個步驟實現亞像素中心計算:
(1)計算圖像 f ( x , y )中各點的Hessian 矩陣; Hessian 矩陣為:

各階高斯核如下式所示:


(2)根據Hessian 矩陣的特征值和特征向量確定像素點 ( x0, y0)的二階方向導數的極大值法線方向為

在光條亞像素中心提取過程中要進行多次高斯卷積,由于運算量大,造成運算速度慢,因此難以實現光條亞像素中心的快速提取。
為實現多結構光條紋亞像素中心的快速識別和提取,根據結構光條紋亞像素中心在光條灰度最大值附近的特點,可在識別各結構光條紋及各光條灰度最大值的基礎上,對灰度最大值附近的像素進行高斯卷積運算。
物體被投射結構光后所拍攝的圖像如圖2 所示。圖像中結構光水平投射,由于拍攝角度和位置的影響圖像中結構光條紋呈一定角度向右上方傾斜,為識別結構光條紋的位置可從上向下搜索。在搜索過程中會受到干擾光線的影響,如圖3 為圖像中沿豎直方向上各像素的灰度值。圖3 中橫坐標為像素位置,其中,圖中的零位于圖像的最上端,縱坐標為各像素對應的灰度值。從圖3 中可看出,干擾光條的灰度值較小,均在25 以下。為消除干擾光線的影響,將圖2 中灰度值小于25 的像素點灰度置0,其余像素位置的灰度值保持不變。

圖2 投射結構光后的物體圖像

圖3 各像素位置的灰度曲線
根據投射結構光條的特點,從圖像的最左端開始每相隔一定像素值對圖像中光條數目進行計數。設圖像中像素坐標為( , )u v ,圖像左上角的u、v 值分別為u=1,v=1。在位置分別從上到下對圖像進行搜索,直到圖像的右側為止。對圖像的 um列從上到下搜索時,設在 vt前已搜索到l 個光條,若像素從變為時,其灰度值從零變為非零值,且在到范圍內各像素灰度值均大于零,則光條數為 l+ 1個,否則仍為l 個,并接著向下搜索,直到圖像邊緣為止。其中,r 為預先設定值。搜索完成后,在一定范圍內光條的數目相同且同為最大值,則該數目即為光條數目。
確定結構光條紋的數目后,選擇光條數目最大的橫坐標位置 u 從上到下搜索,得到各光條的灰度最大值的像素坐標L 為結構光條的數目。確定 ui列各列光條最大灰度的像素位置后,即實現對光條的識別。
以存儲的第l 個光條上灰度最大的像素級中心( ul,i, vl,j)為起點,先向左邊搜索,即確定當前像素左邊到范圍內灰度最大值的像素坐標J 為整數,且接著以為起點,接著向左搜索可得到第l 個光條 ul,i- 2列的灰度最大像素坐標,左邊光條搜索完成后,以 ( ul,i, vl,j)為起點向右搜索,可得到第l 個光條右邊各列灰度最大值的像素坐標。其它各結構光條紋依次搜索可得到各結構光條紋的像素級中心。圖4(a)為結構光條像素級中心,圖4(b)為結構光條像素級中心線局部放大圖。

圖4 提取的結構光條紋像素級中心
對按豎直方向上提取的結構光條紋上灰度最大的像素點,以及該像素坐標上下一定范圍內的像素點進行高斯卷積運算,減小了運算量,可實現結構光條紋的亞像素精度提取。提取的結構光條紋亞像素中心如圖5(a)所示,圖5(b)為局部放大圖。

圖5 光條亞像素中心
為提高結構光條紋亞像素中心提取速度,提出了一種基于Hessian 矩陣的結構光中心快速提取方法,該方法可用于多結構光條紋識別及亞像素中心的快速提取。試驗表明,該算法能準確、快速的提取多結構光圖像的光條亞像素中心,處理速度可達5 幅/s,可滿足實時處理的需要。
[1] 楊雪嬌, 池海紅. 一種改進的光條中心提取方法[J]. 應用科技, 2009, 36(12): 41-44.
[2] 李丹, 耿楠, 亢娟娜. 復雜背景下光條中心提取算法研究[J]. 計算機應用與軟件, 2013, 30(3): 271-273, 314.
[3] 趙博華, 王伯雄, 張金, 等. 粗糙金屬表面光條中心提取方法[J]. 光學精密工程, 2011, 19(9): 2138-2145.
[4] 冷惠文, 徐春廣, 肖定國, 等. 基于線結構光的復雜深孔內輪廓三維測量方法[J]. 北京理工大學學報, 2013, 33(2): 139-143.
[5] 胡斌, 李德華, 金剛, 等. 基于方向模板的結構光條紋中心檢測方法[J]. 計算機工程與應用, 2002(11): 59-60, 109.
[6] 高世一, 楊凱珍. 變邊限高斯擬合提取激光條紋中心線方法的研究[J]. 儀器儀表學報, 2011, 32(5): 1132-1137.
[7] STEGER C. An unbiased detector of curvilinear structures[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 1998, 20(2): 113-125.