光學空間定位系統在諸多領域都有著廣泛應用。本文提出了一種結合使用線陣相機和面陣相機的方法來進行空間定位。線陣相機的一維數據可以快速處理, 提取出目標點的坐標。利用這個坐標來輔助面陣相機上的數據處理, 減少面陣相機上目標的搜索量和計算量, 同時還可以對多目標點定位的匹配過程提供幫助, 進而達到加快計算速度的目的。通過本方法可以達到1.608 mm的定位精度, 約為測量范圍的千分之一; 而且可以同時對多目標點進行定位, 即使在目標點之間并沒有幾何約束的條件下, 該方法對4目標點的定位時間也可達23.87 ms, 即為41.9 fps。
引用本文: 吳劍, 李昂. 一種基于一維和二維相機的混合光學定位方法. 生物醫學工程學雜志, 2015, 32(6): 1310-1316. doi: 10.7507/1001-5515.20150232 復制
0 引言
三維空間定位技術是指通過光、聲、電等手段,對目標的三維坐標進行遙測的技術。現普遍采用的是電磁定位和光學定位兩種。由于光學定位技術不易受到電磁干擾,所以在工業、醫療以及運動測量等諸多領域都有著廣泛應用[1],尤其在微創手術導航中,定位技術在引導臨床醫生進行精確手術上發揮著重要作用[2-4]。
現有的光學定位系統一般采用雙目機器視覺原理[5],通過兩個存在一定視差的相機對同一范圍內的目標進行拍攝,再根據之前對相機進行標定的結果[6],對所拍攝的目標進行重建[7]。但這種方法需要對兩幅圖像進行處理,二維圖像不論在濾波還是搜索上都會花費較長的時間[8]。也有人使用線陣相機代替一般的二維相機進行定位[9]。這種方法的應用開始于COSTEL系統[10]。這種方法僅需要對一維信號進行處理,能夠簡化計算,但相對地就要增加相機數量來補足缺少的信息。一般來說一個線陣CCD構成的定位系統,至少需要3個線陣相機[11-12],但每次只能識別單個標志點。通過增加1個線陣相機可實現一次多個標志點識別[13]。
本文提出了一種聯合使用線陣相機和面陣相機進行光學空間定位的方法。通過優先處理線陣相機信號,再根據線陣相機和面陣相機之間的幾何關系,將得到的線陣相機結果通過一定的轉換,對面陣相機的信號處理提供約束條件,從而提高面陣相機對標志點的識別速度。
1 原理
本文提出的一種結合使用面陣相機和線陣相機,對多目標點進行三維空間定位的方法,它使用如圖 1所示的鏡頭擺放方式,利用兩個線陣相機和一個面陣相機,對目標標志點進行三維定位,下面詳述其定位原理。

1.1 坐標變換
在光學三維定位系統中有世界坐標系Ow(Xw, Yw, Zw)、相機坐標系Oc(Xc, Yc, Zc)(線陣相機和面陣相機)和圖像坐標系O1(x, y)等三個坐標系,需要在三個坐標系之間進行轉換。它們之間的相互關系可以用式(1)來表示:
$\left[\begin{gathered} x \hfill \\ y \hfill \\ z \hfill \\ \end{gathered} \right]=\left[\begin{gathered} 1\;\; \;\; 0\;\; \;\; \frac{{{x_0}}}{f} \hfill \\ 0\;\; \;\; 1\;\; \;\; \frac{{{y_0}}}{f} \hfill \\ 0\;\; \;\; 0\;\; \;\; \frac{1}{f} \hfill \\ \end{gathered} \right]R\left\{ {\left[\begin{gathered} {X_w} \hfill \\ {Y_w} \hfill \\ {Z_w} \hfill \\ \end{gathered} \right]-T} \right\}$ |
其中R和T分別為一個剛體變換中的旋轉分量和平移分量,也是相機的外方位因素。x0, y0為相機鏡頭主光軸穿過圖像坐標系的位置的坐標值,f為鏡頭焦距,它們是相機的內方位因素[14]。
1.2 相機標定
對目標點進行三維坐標測量,需要對相機進行內外方位因素標定。本文提出的測量系統包含了線陣相機和面陣相機,因此要分別進行標定[15-16]。
在實際應用中,我們使用三軸高精度位移平臺來提供目標點的真實坐標,并且采用直接線性變換(direct linear transformation,DLT)的方法對相機進行標定[17]。
對于面陣相機來說,由式(1)可得以下關系:
$\left\{ \begin{gathered} x=\frac{{{L_1}{X_w} + {L_2}{Y_w} + {L_3}{Z_w} + {L_4}}}{{{L_5}{X_w} + {L_6}{Y_w} + {L_7}{Z_w} + 1}} \hfill \\ y=\frac{{{L_8}{X_w} + {L_9}{Y_w} + {L_{10}}{Z_w} + {L_{11}}}}{{{L_5}{X_w} + {L_6}{Y_w} + {L_7}{Z_w} + 1}} \hfill \\ \end{gathered} \right.$ |
其中L1~L11為一組11個L系數,它們表示了面陣相機的9個內外方位因素(包括旋轉分量R,平移分量T,相機焦距f和主光軸坐標(x0, y0)。目標點在面陣相機上的坐標(x, y)和該目標在三維空間中的坐標(Xw, Yw, Zw)的關系可用式(2)表示。
由此面陣相機標定就是求解一組L系數。根據已有的DLT方法,我們通過測量一組n(n≥6)個已知空間三維坐標和圖像坐標的標志點來對該相機的L系數進行求解。
利用最小二乘法求解面陣相機的L系數向量,完成對面陣相機的標定,得到一組L系數記為Lxy。
對于線陣相機來說,其方法是相似的,由于只有一維數據,式(2)只有關于x的第一個關系式,即:
$x=\frac{{{L_1}{X_w} + {L_2}{Y_w} + {L_3}{Z_w} + {L_4}}}{{{L_5}{X_w} + {L_6}{Y_w} + {L_7}{Z_w} + 1}}$ |
求解相機的L系數,兩個線陣相機分別有自己不同的L系數,分別記為Lx1,Lx2。不過不同的是一個線陣相機的L系數只有7個,而面陣相機的L系數有11個。
1.3 像坐標提取
在對相機進行標定完成之后,對一組標志點進行三維坐標計算的關鍵,就是要在不同相機中識別并計算出配對的標志點像坐標。像坐標的計算和匹配速度決定了定位系統的精度和運行速度。本文提出如圖 2所示的方法,即:首先快速處理線陣相機的信號,得到目標點的一維坐標根據線陣相機和面陣相機之間的成像幾何關系,實現對面陣相機中標志點的快速識別和二維坐標的計算。

1.3.1 線陣相機中的像坐標提取
首先我們對兩個線陣相機采集到的信號進行處理,可得到與圖 2中類似的尖峰脈沖信號[18],為了增強目標信號的識別效果,一般在相機鏡頭前加裝紅外濾光片,因此在圖像中幾乎只保留下目標點的脈沖信號。一般通過閾值法來提取像坐標值,即通過設定一個自適應閾值,將所有的目標點的中心坐標用重心法計算出來,這樣我們就得到了所有目標點的兩個一維坐標,分別記為:CCDx1,CCDx2。
1.3.2 依靠像交線方法的面陣坐標提取
對于一個面陣相機的圖像,由于在實際應用當中,不能確定一幅圖像中目標點的個數,傳統方法不可避免地要對整幅圖像進行檢索。但由于本文提出的方法在處理線陣相機的數據時,已獲得了目標點的部分信息,包括目標點的數量和分布情況,我們可以利用這些信息來減少對圖像的檢索,進而縮短處理的時間。
我們使用的線陣相機,其擺放方式與位置是和面陣相機有一定聯系的。一個目標點在一個面陣相機會產生一個像點,而這個像點則表示目標點位于空間中的一條直線上;但一個目標點在線陣相機上會產生一條像線,這個像線表示了目標點位于空間中的一個平面上。如圖 3(a)所示,兩個線陣CCD產生的兩個平面在空間上會產生一條交線,而目標點就位于這條交線上。這條交線會在面陣CCD上產生一個像,為方便描述,我們稱之為像交線,而且我們所求的像點也在這條像交線上。

(a)像交線產生原理圖;(b)像交線投影圖
Figure3. Geometrical relationship of target and its images(a) producing of image intersecting line; (b) projection of image intersecting line
由式(3)可知兩個線陣CCD所得到的相交平面分別可以表示為:
$\begin{gathered} CCDx1=\frac{{L_1^{\left(1 \right)}{X_w} + L_2^{\left(1 \right)}{Y_w} + L_3^{\left(1 \right)}{Z_w} + L_4^{\left(1 \right)}}}{{L_5^{\left(1 \right)}{X_w} + L_6^{\left(1 \right)}{Y_w} + L_7^{\left(1 \right)}{Z_w} + 1}} \hfill \\ CCDx2=\frac{{L_1^{\left(2 \right)}{X_w} + L_2^{\left(2 \right)}{Y_w} + L_3^{\left(2 \right)}{Z_w} + L_4^{\left(2 \right)}}}{{L_5^{\left(2 \right)}{X_w} + L_6^{\left(2 \right)}{Y_w} + L_7^{\left(2 \right)}{Z_w} + 1}} \hfill \\ \end{gathered} $ |
聯立即為交線的空間表達式。而所求的像線表達式應如式(4)所示,是一組面陣相機坐標(x, y)之間的關系:
$\left\{ \begin{gathered} x=\frac{{{L_1}{X_w} + {L_2}{Y_w} + {L_3}{Z_w} + {L_4}}}{{{L_5}{X_w} + {L_6}{Y_w} + {L_7}{Z_w} + 1}} \hfill \\ y=\frac{{{L_8}{X_w} + {L_9}{Y_w} + {L_{10}}{Z_w} + {L_{11}}}}{{{L_5}{X_w} + {L_6}{Y_w} + {L_7}{Z_w} + 1}} \hfill \\ \end{gathered} \right.$ |
以上兩式中的所有L系數均已經在相機標定時計算得到,所以只需要將式(4)代入到(5)當中,即可得到形如y=kx+b的像交線表達式。而我們所要估計的像點則一定位于這條像交線上,所以在后面的處理過程中我們可以充分利用這一點,優先在這條像交線上搜索目標點,以減少計算量。
此外,如圖 3(b)所示,由于定位系統的測量范圍是固定的,所以測量目標一定位于這個測量范圍之內。因此,對于像交線來說,我們并不需要檢查整條像交線,只需要搜索交線在測量范圍之內的部分在像平面上的投影即可,如圖 3所示。由于兩個線陣相機通常都是和面陣相機放置在同一側,且相距不遠,所以兩個像平面的交線與面陣相機主光軸的夾角都較小(小于45°),而交線的端點則在測量范圍的最遠點和最近點處取得,即Zw=Zmin和Zw=Zmax處。將端點處Z坐標代入式(4),得到2個端點在世界坐標系下的坐標(Xw, Yw, Zw),將其代入式(5),就可以計算出這條交線段在面陣相機上的投影線段的端點,二者相距一般不超過100個像素。
由于我們僅僅知道兩個線陣相機上目標點的峰值位置,但并不知道兩個相機上坐標的對應關系。在目前沒有多目標點之間幾何約束的條件下,以一般工具的4個目標點為例,我們需要對任意位置的4目標進行分析。2個線陣相機會向我們給出16種可能的組合方式。所以有的像交線段上會沒有目標點,而有的范圍中會有多個目標點,為了解決這個問題,我們使用如圖 4所示的處理流程。

在上述處理流程中,由于我們使用的目標點會在二維圖像上形成一個直徑15~18個像素的亮斑,所以為了減少計算量,我們只需要在交線段的投影線段上搜索目標點的像,即可以完成面陣相機上目標點的提取工作[19]。圖 5給出了可能發生的幾種情況。

(a)理想情況;(b)錯誤匹配1;(c)錯誤匹配2;(d)多點匹配
Figure5. Image intersecting line and point image(a) ideal situation; (b) error matching 1; (c) error matching 2; (d) multi point matching
如圖 5(a)中理想情況,找到目標點后再進行以該點為種子點進行區域增長,得到一個完整的目標點的像,再通過重心法就可以得到這個目標的中心坐標。將這個坐標記為CCDxy,并和此時的CCDx1、CCDx2對應地記錄下來備用。如圖 5(b)所示,像交線上并沒有目標的像點,則認為這種匹配方式不正確,直接排除,進行下一輪檢測。如圖 5(c)所示,雖然像交線目標的像點在像交線上,但是卻不在與測量區域相交的范圍之內,同樣認為不正確,將其排除掉。如圖 5(d)所示,可能會出現同時有兩個點滿足條件的情況,我們在對第一個點進行提取之后,將這個目標點周圍一定范圍的圖像置為零,再次對這個區域進行搜索,直到找不到其他目標點為止。如此在遍歷所有CCDx1、CCDx2的組合的情況下,可找到所有線陣坐標和面陣坐標可能的對應關系。
1.4 三維坐標重建
三維重建過程實際為相機成像過程的逆過程。我們需要通過相機拍攝到的圖像來還原原本目標點在世界坐標系下的坐標。作為已知條件,我們通過圖像處理得到了每個目標點在3個相機上的坐標CCDx1、CCDx2和CCDxy以及對應于每個相機的3組L系數Lx1、Lx2和Lxy。將上述已知條件整理成矩陣形式,矩陣的前兩行是面陣相機的參數及坐標,后兩行是線陣相機的參數及坐標:
$NW=C$ |
其中:
$ \begin{gathered} N=\left[\begin{gathered} x{L_5}-{L_1}\; \;\; \;\; \;\; x{L_6}-{L_2}\; \;\; \;\; \;\; x{L_7}-{L_3} \hfill \\ y{L_5}-{L_8}\; \;\; \;\; \;\; x{L_6}-{L_9}\; \;\; \;\; \;\; x{L_7}-{L_{10}} \hfill \\ {x^{\left(1 \right)}}L_5^{\left(1 \right)}-L_1^{\left(1 \right)}\; \;{x^{\left(1 \right)}}L_6^{\left(1 \right)}-L_2^{\left(1 \right)}\; \;{x^{\left(1 \right)}}L_7^{\left(1 \right)}-L_3^{\left(1 \right)} \hfill \\ {x^{\left(2 \right)}}L_5^{\left(2 \right)}-L_1^{\left(2 \right)}\; \;{x^{\left(2 \right)}}L_6^{\left(2 \right)}-L_2^{\left(2 \right)}\; {x^{\left(2 \right)}}L_7^{\left(2 \right)}-L_3^{\left(2 \right)} \hfill \\ \end{gathered} \right] \hfill \\ W=\left[\begin{gathered} {X_w} \hfill \\ {y_w} \hfill \\ {Z_w} \hfill \\ \end{gathered} \right] \hfill \\ C=\left[\begin{gathered} {L_4} \hfill \\ {L_{11}} \hfill \\ L_4^{\left(1 \right)} \hfill \\ L_4^{\left(2 \right)} \hfill \\ \end{gathered} \right.\left. \begin{gathered}-x \hfill \\-y \hfill \\-{x^{\left(1 \right)}} \hfill \\-{x^{\left(2 \right)}} \hfill \\ \end{gathered} \right\} \hfill \\ \end{gathered} $ |
利用最小二乘法就可以求出三維坐標向量(Xw,Yw, Zw)以及一個誤差參數。選擇誤差參數最小的n個向量(n為在線陣相機上提取到的目標點的峰值數量)即為這一組圖像中的多個目標點的坐標值[20]。
2 實驗
2.1 實驗設備
將按照一定規則擺放好的相機連接其相應的采集卡采集數據,再傳輸給計算機進行計算處理,并顯示輸出實際坐標重建的結果。所用線陣CCD型號為TCD1208AP,共有2 160個像元,像元間距是14μm。所用面陣CCD的分辨率是720×576。
圖 6給出了相機系統部分的實物圖,中間位置的是普通的面陣相機,而左右兩邊的是配有柱面透鏡的線陣相機,且其方向是相互垂直的。

2.2 實驗結果
首先,本文提出的結合使用線陣CCD和面陣CCD的方法,其主要優點在于對目標點的匹配上。利用前文的方法,對線陣相機坐標的利用除了減小了對面陣圖像的檢索范圍之外,還能夠對多目標的識別與匹配有很大幫助。直接進行檢索的話,由于沒有輔助信息,我們無法得知那些坐標是由同一個目標點產生的,這樣就需要在三維坐標重建時,對所有可能的情況進行重建,通過比較誤差的大小來確定。但重建算法需要計算最小二乘,多次的最小二乘運算耗時較長,所以應該盡量減少計算次數。假設我們需要測量的目標點有4個,一般4個目標點可以用來定位一個工具,不使用輔助信息,則需要計算4×4×4=64次,而使用線陣相機信息作為輔助的情況下,經過大量實驗得到,多數需要計算8~12次,一般不會超過15次即可。

對于多組工具的目標點匹配,由于每組工具所對應的4個目標點,其在空間距離上差距較小,可以通過工具本身的結構信息來加以區分,以5組工具,即20個目標點為例,如果每組工具都可以通過結構信息進行區分,則理論上需要進行不少于5×4×4×4=320次重建。而通過本文提出的匹配流程進行計算,則一般只需要進行80~100次重建即可。該計算次數按比例來說會比單組工具(4目標點)有所增加,主要由于多組工具之間互相干擾造成。
本系統的可測量區域為距離相機1~3 m、上底面1.0 m×1.0 m、下底面1.5 m×1.5 m的方形棱臺。所用目標點是由固定在3軸高精度平臺上的LED構成的。
定位精度方面,由計算機在系統可測量區域內隨機生成了43個坐標,將目標點通過三軸高精度平臺移動到準確的位置,然后用定位系統進行測量。隨機地從中選取15個點作為已知點,對相機進行標定,然后對剩下的數據點進行重建,比較重建結果與真實坐標,計算平均誤差。實驗重復1 000次,平均誤差為1.608 mm,約為測量尺度的千分之一。
定位速度方面,我們分別對3個目標點和4個目標點進行實驗(一般手術器具常用3~4個標記點進行定位),計算重建時間,重復1 000次,當目標數為3時,平均時間16.06 ms,即62.3 fps;當目標數為4時,平均時間23.87 ms,即41.9 fps。
根據相機分辨率對重建精度進行分析,本文所使用的面陣相機的分辨率是720×576,按此分辨率計算,在相機上1個像素的變化,在空間中大約對應1.4 mm的變化。線陣CCD雖然分辨率較高,但其更主要的是提供定位的深度信息。由此可見本文中得到的1.608 mm的定位精度足以驗證本算法的準確性。
3 總結與討論
本定位方法將面陣相機和線陣相機結合在一起使用,兩種相機各有各自的優點,線陣相機提供可以快速處理一維信號,使我們可以對這幅圖像的基本信息,例如目標點數目及其大致分布情況有一個初步了解,這些信息可以有效地對處理面陣相機的圖像進行輔助,加快對二維圖像的處理速度。
本文的定位精度很大程度上受限于相機的分辨率,根據分析,我們有理由相信如果使用分辨率更高的相機,是可以很大程度上提高定位精度,或者增大可測量的空間范圍。
本文方法的定位速度,尤其是對多組工具進行重建的絕對時間上,與現有雙目視覺定位系統相比并無明顯優勢,主要原因在于雙目視覺系統發展歷史較長,技術較為成熟,現有商用系統中有很多優化算法,這些優化算法的加速效果是在實驗中難以實現進行對比的。所以本文的結果中對于算法的優點分析,主要放在了對目標點匹配所需的計算次數上,以此來對本方法的優勢進行說明。
在相機擺放方式的選擇上,相互垂直擺放的線陣相機能夠最大程度地避免目標點在某一方向上重疊的發生。由于只需要提供3個不同的觀測信息,就可以對單個目標點進行重建,4個不同的觀測信息就可以對多個目標點進行重建,所以只要保證各個相機提供的信息不會重合,即面陣相機所確定的像線不位于線陣相機所確定的像平面內,矩陣就會是滿秩的,就可以對多個目標點進行重建。事實上,像線是幾乎不可能位于像平面內的,因為相機鏡頭的參數是不同的,即便擺放位置剛好重合,也僅可能對某些特殊位置的點缺失信息,導致重建困難。但是對整個視場來說,絕大部分的空間都是可以正常重建的。所以本方法對各種不同的擺放方式在理論上并沒有嚴苛的要求,將來也將研究不同的擺放位置對重建精度的影響。
0 引言
三維空間定位技術是指通過光、聲、電等手段,對目標的三維坐標進行遙測的技術。現普遍采用的是電磁定位和光學定位兩種。由于光學定位技術不易受到電磁干擾,所以在工業、醫療以及運動測量等諸多領域都有著廣泛應用[1],尤其在微創手術導航中,定位技術在引導臨床醫生進行精確手術上發揮著重要作用[2-4]。
現有的光學定位系統一般采用雙目機器視覺原理[5],通過兩個存在一定視差的相機對同一范圍內的目標進行拍攝,再根據之前對相機進行標定的結果[6],對所拍攝的目標進行重建[7]。但這種方法需要對兩幅圖像進行處理,二維圖像不論在濾波還是搜索上都會花費較長的時間[8]。也有人使用線陣相機代替一般的二維相機進行定位[9]。這種方法的應用開始于COSTEL系統[10]。這種方法僅需要對一維信號進行處理,能夠簡化計算,但相對地就要增加相機數量來補足缺少的信息。一般來說一個線陣CCD構成的定位系統,至少需要3個線陣相機[11-12],但每次只能識別單個標志點。通過增加1個線陣相機可實現一次多個標志點識別[13]。
本文提出了一種聯合使用線陣相機和面陣相機進行光學空間定位的方法。通過優先處理線陣相機信號,再根據線陣相機和面陣相機之間的幾何關系,將得到的線陣相機結果通過一定的轉換,對面陣相機的信號處理提供約束條件,從而提高面陣相機對標志點的識別速度。
1 原理
本文提出的一種結合使用面陣相機和線陣相機,對多目標點進行三維空間定位的方法,它使用如圖 1所示的鏡頭擺放方式,利用兩個線陣相機和一個面陣相機,對目標標志點進行三維定位,下面詳述其定位原理。

1.1 坐標變換
在光學三維定位系統中有世界坐標系Ow(Xw, Yw, Zw)、相機坐標系Oc(Xc, Yc, Zc)(線陣相機和面陣相機)和圖像坐標系O1(x, y)等三個坐標系,需要在三個坐標系之間進行轉換。它們之間的相互關系可以用式(1)來表示:
$\left[\begin{gathered} x \hfill \\ y \hfill \\ z \hfill \\ \end{gathered} \right]=\left[\begin{gathered} 1\;\; \;\; 0\;\; \;\; \frac{{{x_0}}}{f} \hfill \\ 0\;\; \;\; 1\;\; \;\; \frac{{{y_0}}}{f} \hfill \\ 0\;\; \;\; 0\;\; \;\; \frac{1}{f} \hfill \\ \end{gathered} \right]R\left\{ {\left[\begin{gathered} {X_w} \hfill \\ {Y_w} \hfill \\ {Z_w} \hfill \\ \end{gathered} \right]-T} \right\}$ |
其中R和T分別為一個剛體變換中的旋轉分量和平移分量,也是相機的外方位因素。x0, y0為相機鏡頭主光軸穿過圖像坐標系的位置的坐標值,f為鏡頭焦距,它們是相機的內方位因素[14]。
1.2 相機標定
對目標點進行三維坐標測量,需要對相機進行內外方位因素標定。本文提出的測量系統包含了線陣相機和面陣相機,因此要分別進行標定[15-16]。
在實際應用中,我們使用三軸高精度位移平臺來提供目標點的真實坐標,并且采用直接線性變換(direct linear transformation,DLT)的方法對相機進行標定[17]。
對于面陣相機來說,由式(1)可得以下關系:
$\left\{ \begin{gathered} x=\frac{{{L_1}{X_w} + {L_2}{Y_w} + {L_3}{Z_w} + {L_4}}}{{{L_5}{X_w} + {L_6}{Y_w} + {L_7}{Z_w} + 1}} \hfill \\ y=\frac{{{L_8}{X_w} + {L_9}{Y_w} + {L_{10}}{Z_w} + {L_{11}}}}{{{L_5}{X_w} + {L_6}{Y_w} + {L_7}{Z_w} + 1}} \hfill \\ \end{gathered} \right.$ |
其中L1~L11為一組11個L系數,它們表示了面陣相機的9個內外方位因素(包括旋轉分量R,平移分量T,相機焦距f和主光軸坐標(x0, y0)。目標點在面陣相機上的坐標(x, y)和該目標在三維空間中的坐標(Xw, Yw, Zw)的關系可用式(2)表示。
由此面陣相機標定就是求解一組L系數。根據已有的DLT方法,我們通過測量一組n(n≥6)個已知空間三維坐標和圖像坐標的標志點來對該相機的L系數進行求解。
利用最小二乘法求解面陣相機的L系數向量,完成對面陣相機的標定,得到一組L系數記為Lxy。
對于線陣相機來說,其方法是相似的,由于只有一維數據,式(2)只有關于x的第一個關系式,即:
$x=\frac{{{L_1}{X_w} + {L_2}{Y_w} + {L_3}{Z_w} + {L_4}}}{{{L_5}{X_w} + {L_6}{Y_w} + {L_7}{Z_w} + 1}}$ |
求解相機的L系數,兩個線陣相機分別有自己不同的L系數,分別記為Lx1,Lx2。不過不同的是一個線陣相機的L系數只有7個,而面陣相機的L系數有11個。
1.3 像坐標提取
在對相機進行標定完成之后,對一組標志點進行三維坐標計算的關鍵,就是要在不同相機中識別并計算出配對的標志點像坐標。像坐標的計算和匹配速度決定了定位系統的精度和運行速度。本文提出如圖 2所示的方法,即:首先快速處理線陣相機的信號,得到目標點的一維坐標根據線陣相機和面陣相機之間的成像幾何關系,實現對面陣相機中標志點的快速識別和二維坐標的計算。

1.3.1 線陣相機中的像坐標提取
首先我們對兩個線陣相機采集到的信號進行處理,可得到與圖 2中類似的尖峰脈沖信號[18],為了增強目標信號的識別效果,一般在相機鏡頭前加裝紅外濾光片,因此在圖像中幾乎只保留下目標點的脈沖信號。一般通過閾值法來提取像坐標值,即通過設定一個自適應閾值,將所有的目標點的中心坐標用重心法計算出來,這樣我們就得到了所有目標點的兩個一維坐標,分別記為:CCDx1,CCDx2。
1.3.2 依靠像交線方法的面陣坐標提取
對于一個面陣相機的圖像,由于在實際應用當中,不能確定一幅圖像中目標點的個數,傳統方法不可避免地要對整幅圖像進行檢索。但由于本文提出的方法在處理線陣相機的數據時,已獲得了目標點的部分信息,包括目標點的數量和分布情況,我們可以利用這些信息來減少對圖像的檢索,進而縮短處理的時間。
我們使用的線陣相機,其擺放方式與位置是和面陣相機有一定聯系的。一個目標點在一個面陣相機會產生一個像點,而這個像點則表示目標點位于空間中的一條直線上;但一個目標點在線陣相機上會產生一條像線,這個像線表示了目標點位于空間中的一個平面上。如圖 3(a)所示,兩個線陣CCD產生的兩個平面在空間上會產生一條交線,而目標點就位于這條交線上。這條交線會在面陣CCD上產生一個像,為方便描述,我們稱之為像交線,而且我們所求的像點也在這條像交線上。

(a)像交線產生原理圖;(b)像交線投影圖
Figure3. Geometrical relationship of target and its images(a) producing of image intersecting line; (b) projection of image intersecting line
由式(3)可知兩個線陣CCD所得到的相交平面分別可以表示為:
$\begin{gathered} CCDx1=\frac{{L_1^{\left(1 \right)}{X_w} + L_2^{\left(1 \right)}{Y_w} + L_3^{\left(1 \right)}{Z_w} + L_4^{\left(1 \right)}}}{{L_5^{\left(1 \right)}{X_w} + L_6^{\left(1 \right)}{Y_w} + L_7^{\left(1 \right)}{Z_w} + 1}} \hfill \\ CCDx2=\frac{{L_1^{\left(2 \right)}{X_w} + L_2^{\left(2 \right)}{Y_w} + L_3^{\left(2 \right)}{Z_w} + L_4^{\left(2 \right)}}}{{L_5^{\left(2 \right)}{X_w} + L_6^{\left(2 \right)}{Y_w} + L_7^{\left(2 \right)}{Z_w} + 1}} \hfill \\ \end{gathered} $ |
聯立即為交線的空間表達式。而所求的像線表達式應如式(4)所示,是一組面陣相機坐標(x, y)之間的關系:
$\left\{ \begin{gathered} x=\frac{{{L_1}{X_w} + {L_2}{Y_w} + {L_3}{Z_w} + {L_4}}}{{{L_5}{X_w} + {L_6}{Y_w} + {L_7}{Z_w} + 1}} \hfill \\ y=\frac{{{L_8}{X_w} + {L_9}{Y_w} + {L_{10}}{Z_w} + {L_{11}}}}{{{L_5}{X_w} + {L_6}{Y_w} + {L_7}{Z_w} + 1}} \hfill \\ \end{gathered} \right.$ |
以上兩式中的所有L系數均已經在相機標定時計算得到,所以只需要將式(4)代入到(5)當中,即可得到形如y=kx+b的像交線表達式。而我們所要估計的像點則一定位于這條像交線上,所以在后面的處理過程中我們可以充分利用這一點,優先在這條像交線上搜索目標點,以減少計算量。
此外,如圖 3(b)所示,由于定位系統的測量范圍是固定的,所以測量目標一定位于這個測量范圍之內。因此,對于像交線來說,我們并不需要檢查整條像交線,只需要搜索交線在測量范圍之內的部分在像平面上的投影即可,如圖 3所示。由于兩個線陣相機通常都是和面陣相機放置在同一側,且相距不遠,所以兩個像平面的交線與面陣相機主光軸的夾角都較小(小于45°),而交線的端點則在測量范圍的最遠點和最近點處取得,即Zw=Zmin和Zw=Zmax處。將端點處Z坐標代入式(4),得到2個端點在世界坐標系下的坐標(Xw, Yw, Zw),將其代入式(5),就可以計算出這條交線段在面陣相機上的投影線段的端點,二者相距一般不超過100個像素。
由于我們僅僅知道兩個線陣相機上目標點的峰值位置,但并不知道兩個相機上坐標的對應關系。在目前沒有多目標點之間幾何約束的條件下,以一般工具的4個目標點為例,我們需要對任意位置的4目標進行分析。2個線陣相機會向我們給出16種可能的組合方式。所以有的像交線段上會沒有目標點,而有的范圍中會有多個目標點,為了解決這個問題,我們使用如圖 4所示的處理流程。

在上述處理流程中,由于我們使用的目標點會在二維圖像上形成一個直徑15~18個像素的亮斑,所以為了減少計算量,我們只需要在交線段的投影線段上搜索目標點的像,即可以完成面陣相機上目標點的提取工作[19]。圖 5給出了可能發生的幾種情況。

(a)理想情況;(b)錯誤匹配1;(c)錯誤匹配2;(d)多點匹配
Figure5. Image intersecting line and point image(a) ideal situation; (b) error matching 1; (c) error matching 2; (d) multi point matching
如圖 5(a)中理想情況,找到目標點后再進行以該點為種子點進行區域增長,得到一個完整的目標點的像,再通過重心法就可以得到這個目標的中心坐標。將這個坐標記為CCDxy,并和此時的CCDx1、CCDx2對應地記錄下來備用。如圖 5(b)所示,像交線上并沒有目標的像點,則認為這種匹配方式不正確,直接排除,進行下一輪檢測。如圖 5(c)所示,雖然像交線目標的像點在像交線上,但是卻不在與測量區域相交的范圍之內,同樣認為不正確,將其排除掉。如圖 5(d)所示,可能會出現同時有兩個點滿足條件的情況,我們在對第一個點進行提取之后,將這個目標點周圍一定范圍的圖像置為零,再次對這個區域進行搜索,直到找不到其他目標點為止。如此在遍歷所有CCDx1、CCDx2的組合的情況下,可找到所有線陣坐標和面陣坐標可能的對應關系。
1.4 三維坐標重建
三維重建過程實際為相機成像過程的逆過程。我們需要通過相機拍攝到的圖像來還原原本目標點在世界坐標系下的坐標。作為已知條件,我們通過圖像處理得到了每個目標點在3個相機上的坐標CCDx1、CCDx2和CCDxy以及對應于每個相機的3組L系數Lx1、Lx2和Lxy。將上述已知條件整理成矩陣形式,矩陣的前兩行是面陣相機的參數及坐標,后兩行是線陣相機的參數及坐標:
$NW=C$ |
其中:
$ \begin{gathered} N=\left[\begin{gathered} x{L_5}-{L_1}\; \;\; \;\; \;\; x{L_6}-{L_2}\; \;\; \;\; \;\; x{L_7}-{L_3} \hfill \\ y{L_5}-{L_8}\; \;\; \;\; \;\; x{L_6}-{L_9}\; \;\; \;\; \;\; x{L_7}-{L_{10}} \hfill \\ {x^{\left(1 \right)}}L_5^{\left(1 \right)}-L_1^{\left(1 \right)}\; \;{x^{\left(1 \right)}}L_6^{\left(1 \right)}-L_2^{\left(1 \right)}\; \;{x^{\left(1 \right)}}L_7^{\left(1 \right)}-L_3^{\left(1 \right)} \hfill \\ {x^{\left(2 \right)}}L_5^{\left(2 \right)}-L_1^{\left(2 \right)}\; \;{x^{\left(2 \right)}}L_6^{\left(2 \right)}-L_2^{\left(2 \right)}\; {x^{\left(2 \right)}}L_7^{\left(2 \right)}-L_3^{\left(2 \right)} \hfill \\ \end{gathered} \right] \hfill \\ W=\left[\begin{gathered} {X_w} \hfill \\ {y_w} \hfill \\ {Z_w} \hfill \\ \end{gathered} \right] \hfill \\ C=\left[\begin{gathered} {L_4} \hfill \\ {L_{11}} \hfill \\ L_4^{\left(1 \right)} \hfill \\ L_4^{\left(2 \right)} \hfill \\ \end{gathered} \right.\left. \begin{gathered}-x \hfill \\-y \hfill \\-{x^{\left(1 \right)}} \hfill \\-{x^{\left(2 \right)}} \hfill \\ \end{gathered} \right\} \hfill \\ \end{gathered} $ |
利用最小二乘法就可以求出三維坐標向量(Xw,Yw, Zw)以及一個誤差參數。選擇誤差參數最小的n個向量(n為在線陣相機上提取到的目標點的峰值數量)即為這一組圖像中的多個目標點的坐標值[20]。
2 實驗
2.1 實驗設備
將按照一定規則擺放好的相機連接其相應的采集卡采集數據,再傳輸給計算機進行計算處理,并顯示輸出實際坐標重建的結果。所用線陣CCD型號為TCD1208AP,共有2 160個像元,像元間距是14μm。所用面陣CCD的分辨率是720×576。
圖 6給出了相機系統部分的實物圖,中間位置的是普通的面陣相機,而左右兩邊的是配有柱面透鏡的線陣相機,且其方向是相互垂直的。

2.2 實驗結果
首先,本文提出的結合使用線陣CCD和面陣CCD的方法,其主要優點在于對目標點的匹配上。利用前文的方法,對線陣相機坐標的利用除了減小了對面陣圖像的檢索范圍之外,還能夠對多目標的識別與匹配有很大幫助。直接進行檢索的話,由于沒有輔助信息,我們無法得知那些坐標是由同一個目標點產生的,這樣就需要在三維坐標重建時,對所有可能的情況進行重建,通過比較誤差的大小來確定。但重建算法需要計算最小二乘,多次的最小二乘運算耗時較長,所以應該盡量減少計算次數。假設我們需要測量的目標點有4個,一般4個目標點可以用來定位一個工具,不使用輔助信息,則需要計算4×4×4=64次,而使用線陣相機信息作為輔助的情況下,經過大量實驗得到,多數需要計算8~12次,一般不會超過15次即可。

對于多組工具的目標點匹配,由于每組工具所對應的4個目標點,其在空間距離上差距較小,可以通過工具本身的結構信息來加以區分,以5組工具,即20個目標點為例,如果每組工具都可以通過結構信息進行區分,則理論上需要進行不少于5×4×4×4=320次重建。而通過本文提出的匹配流程進行計算,則一般只需要進行80~100次重建即可。該計算次數按比例來說會比單組工具(4目標點)有所增加,主要由于多組工具之間互相干擾造成。
本系統的可測量區域為距離相機1~3 m、上底面1.0 m×1.0 m、下底面1.5 m×1.5 m的方形棱臺。所用目標點是由固定在3軸高精度平臺上的LED構成的。
定位精度方面,由計算機在系統可測量區域內隨機生成了43個坐標,將目標點通過三軸高精度平臺移動到準確的位置,然后用定位系統進行測量。隨機地從中選取15個點作為已知點,對相機進行標定,然后對剩下的數據點進行重建,比較重建結果與真實坐標,計算平均誤差。實驗重復1 000次,平均誤差為1.608 mm,約為測量尺度的千分之一。
定位速度方面,我們分別對3個目標點和4個目標點進行實驗(一般手術器具常用3~4個標記點進行定位),計算重建時間,重復1 000次,當目標數為3時,平均時間16.06 ms,即62.3 fps;當目標數為4時,平均時間23.87 ms,即41.9 fps。
根據相機分辨率對重建精度進行分析,本文所使用的面陣相機的分辨率是720×576,按此分辨率計算,在相機上1個像素的變化,在空間中大約對應1.4 mm的變化。線陣CCD雖然分辨率較高,但其更主要的是提供定位的深度信息。由此可見本文中得到的1.608 mm的定位精度足以驗證本算法的準確性。
3 總結與討論
本定位方法將面陣相機和線陣相機結合在一起使用,兩種相機各有各自的優點,線陣相機提供可以快速處理一維信號,使我們可以對這幅圖像的基本信息,例如目標點數目及其大致分布情況有一個初步了解,這些信息可以有效地對處理面陣相機的圖像進行輔助,加快對二維圖像的處理速度。
本文的定位精度很大程度上受限于相機的分辨率,根據分析,我們有理由相信如果使用分辨率更高的相機,是可以很大程度上提高定位精度,或者增大可測量的空間范圍。
本文方法的定位速度,尤其是對多組工具進行重建的絕對時間上,與現有雙目視覺定位系統相比并無明顯優勢,主要原因在于雙目視覺系統發展歷史較長,技術較為成熟,現有商用系統中有很多優化算法,這些優化算法的加速效果是在實驗中難以實現進行對比的。所以本文的結果中對于算法的優點分析,主要放在了對目標點匹配所需的計算次數上,以此來對本方法的優勢進行說明。
在相機擺放方式的選擇上,相互垂直擺放的線陣相機能夠最大程度地避免目標點在某一方向上重疊的發生。由于只需要提供3個不同的觀測信息,就可以對單個目標點進行重建,4個不同的觀測信息就可以對多個目標點進行重建,所以只要保證各個相機提供的信息不會重合,即面陣相機所確定的像線不位于線陣相機所確定的像平面內,矩陣就會是滿秩的,就可以對多個目標點進行重建。事實上,像線是幾乎不可能位于像平面內的,因為相機鏡頭的參數是不同的,即便擺放位置剛好重合,也僅可能對某些特殊位置的點缺失信息,導致重建困難。但是對整個視場來說,絕大部分的空間都是可以正常重建的。所以本方法對各種不同的擺放方式在理論上并沒有嚴苛的要求,將來也將研究不同的擺放位置對重建精度的影響。