周嘉悅,韓少峰,鄭昱,吳壯志,梁慶豐,楊洋
1 北京航空航天大學(xué) 機(jī)械工程及自動(dòng)化學(xué)院,北京市,100191
2 北京航空航天大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,北京市,100191
3 北京同仁醫(yī)院,北京市,100062
眼底是眼球內(nèi)后節(jié)組織,包括視網(wǎng)膜、視乳頭、黃斑和視網(wǎng)膜中央動(dòng)靜脈,眼底如圖1所示。人眼球的橫徑約為24 mm,眼球纖維膜的后5/6部分為鞏膜。視網(wǎng)膜血管以視乳頭為中心,呈網(wǎng)狀分布在視網(wǎng)膜上。通過選取樣本進(jìn)行放大測(cè)量可以得知視網(wǎng)膜血管的動(dòng)脈直徑約為193.0~203.7 μm,靜脈血管直徑約為249.5~263.4 μm[1]。普通的眼底影像技術(shù)如眼底照相機(jī)無(wú)法獲得眼底參數(shù)的三維信息,影響疾病的診斷、治療和手術(shù)定位。
圖1 眼底示意圖Fig.1 Fundus diagram
手術(shù)操作點(diǎn)定位是眼科顯微手術(shù)機(jī)器人研究中的重要研究方向[2],在視網(wǎng)膜血管搭橋[3]、視網(wǎng)膜血管光凝以及視網(wǎng)膜血管注藥等手術(shù)中,都需要定位手術(shù)器械刺入目標(biāo)位置(視網(wǎng)膜血管根部、視網(wǎng)膜血管堵塞處、視網(wǎng)膜血管出血點(diǎn)等),并以此為反饋控制機(jī)器人運(yùn)動(dòng)。目前,手術(shù)器械定位依賴醫(yī)生的肉眼觀察??紤]到人類醫(yī)生的尺度感知能力有限、微尺度的視網(wǎng)膜血管難以精準(zhǔn)定位,肉眼觀察定位的方式易造成手術(shù)誤操作,引起器官損傷。因此,需要精確地獲取視網(wǎng)膜血管上的刺入點(diǎn)和血管的脈絡(luò)走向,為醫(yī)生或機(jī)器人提供精準(zhǔn)的手術(shù)操作點(diǎn)位置信息。雙目視覺技術(shù),通過識(shí)別目標(biāo)點(diǎn)的三維坐標(biāo)等信息,可對(duì)目標(biāo)點(diǎn)進(jìn)行精確定位,具有應(yīng)用于眼科手術(shù)中的可能。因此,該文中采用雙目視覺進(jìn)行視網(wǎng)膜血管三維重建。
目前,雙目立體視覺的研究多側(cè)重于宏觀尺度物體的定位和重建,對(duì)小尺度物體重建的研究以及在醫(yī)學(xué)方面的應(yīng)用相對(duì)較少。天津大學(xué)的高禮圳等[4]使用“距離空間圖”匹配算法,在3幅圖像上建立匹配關(guān)系,誤差為1~3 mm。長(zhǎng)春理工大學(xué)的馮進(jìn)良等[5]使用雙目視覺系統(tǒng)監(jiān)控焊點(diǎn)位置,精度可達(dá)0.68 mm。日本研究人員開發(fā)出能在手術(shù)過程中透視體內(nèi)淋巴結(jié)、血管等組織的手術(shù)“導(dǎo)航”系統(tǒng),在手術(shù)中可借助彩色圖像清晰地觀察到上述組織的狀態(tài)[6]。上海理工大學(xué)的喻海中等[7]利用雙目視覺原理獲取了醫(yī)療器械的3D數(shù)據(jù),與實(shí)際測(cè)量出的數(shù)據(jù)相比精度更高,可用于模擬手術(shù)和手術(shù)導(dǎo)航。
本研究首先搭建雙目視覺系統(tǒng),并對(duì)攝像機(jī)進(jìn)行標(biāo)定,之后獲取視網(wǎng)膜血管模型的雙目圖像并校正為共面平行的兩平面圖像。對(duì)圖像進(jìn)行濾波提取分割出視網(wǎng)膜血管,去除背景,減小誤匹配產(chǎn)生的誤差,最后利用雙目視覺中的視差原理得到視網(wǎng)膜血管的點(diǎn)云圖,并進(jìn)行誤差分析。
為驗(yàn)證雙目視覺測(cè)量出點(diǎn)的坐標(biāo)的準(zhǔn)確性,采用Solidworks繪制眼球模型作為測(cè)量參考,通過對(duì)Solidworks中測(cè)量出目標(biāo)點(diǎn)的三維坐標(biāo)與雙目視覺測(cè)量出的三維坐標(biāo)進(jìn)行對(duì)比,驗(yàn)證三維模型的準(zhǔn)確性。在Solidworks中繪制的眼球模型,直徑38 mm,深度26 mm,內(nèi)部刻有寬度和深度均為1 mm的凹槽用來(lái)模擬視網(wǎng)膜血管。視網(wǎng)膜血管模型,如圖2所示。
圖2 Solidworks中繪制的視網(wǎng)膜血管模型Fig.2 Retinal vessel model in Solidworks
雙目立體成像原理如圖3所示,基線距離B表示兩攝像機(jī)的投影中心連線的距離,攝像機(jī)在同一時(shí)間觀察同一點(diǎn)P,分別獲取了左圖像和右圖像上的點(diǎn)P的坐標(biāo)Pl=(Xl,Yl);Pr=(Xr,Yr)。經(jīng)過立體校正后的圖像位于同一平面上,故Yl=Yr=Y。視差D=Xl-Xr,由幾何關(guān)系可得點(diǎn)P在攝像機(jī)坐標(biāo)系下的三維坐標(biāo)如式(1)~(3)所示:
圖3 雙目立體視覺三維重建原理Fig.3 Principle of 3D-reconstruction
實(shí)驗(yàn)中使用的相機(jī)為大恒工業(yè)USB3.0工業(yè)相機(jī)MER-500-14U-3C,分辨率為2 592×1 944。雙目視覺系統(tǒng)如圖4所示。
圖4 雙目視覺系統(tǒng)Fig.4 Binocular vision system
攝像機(jī)鏡頭選用computar鏡頭,鏡頭焦距為12~36 mm,最大成像尺寸8.8 mm×6.6 mm,芯片尺寸H×V=4.8 mm×3.6 mm。通過式(4)可以計(jì)算出鏡頭的實(shí)際焦距為13.7 mm。
式(4)中,f表示鏡頭焦距,W表示物距,F(xiàn)表示視場(chǎng)大小,H×V表示芯片尺寸。對(duì)于雙目視覺系統(tǒng),改變參數(shù)(如基線長(zhǎng)度、物距等)可以減小測(cè)量誤差,提高系統(tǒng)的精度,雙目視覺系統(tǒng)在x、y、z三個(gè)方向的理論分辨率如式(5)~(7)所示。
其中,h表示物距,f表示焦距,b表示相機(jī)光心距離又稱基線距離,△d表示像素精度。雙目視覺系統(tǒng)在x、y、z方向上的分辨率與物距和焦距有關(guān),在z方向上的分辨率還與基線的長(zhǎng)度有關(guān)。由于模型尺寸較小,所以在進(jìn)行雙目立體視覺平臺(tái)搭建時(shí),需要盡可能保證精度??紤]到工作距離和拍攝視野的要求,盡量減小物距,增大基線距離。
為了滿足攝像機(jī)公共視野的要求,選擇基線距離為68 mm,物距約為500 mm,攝像機(jī)精度為0.001 85 mm,根據(jù)式(5)~(7)可以求出該雙目視覺系統(tǒng)在x、y方向上的理論分辨率為0.06 mm,在z方向的理論分辨率為0.49 mm。
本研究采用“張正友標(biāo)定法”[8]對(duì)攝像機(jī)進(jìn)行標(biāo)定,成像模型如式(8)所示。
式(8)中,k代表比例因子,K為攝像機(jī)坐標(biāo)系的內(nèi)參矩陣,[X Y Z1]T為模板平面上點(diǎn)的齊次坐標(biāo),[u v1]T為模板平面上點(diǎn)投影到圖像平面上對(duì)應(yīng)點(diǎn)的齊次坐標(biāo),如圖5所示。R和T分別是攝像機(jī)坐標(biāo)系相對(duì)世界坐標(biāo)系的旋轉(zhuǎn)矩陣和平移矢量。
圖5 平面標(biāo)定算法原理圖Fig.5 Zhang's calibration algorithm
由于攝像機(jī)內(nèi)參矩陣中有5個(gè)未知參數(shù),所以當(dāng)所取得的圖像數(shù)目大于等于3時(shí),可線性唯一求解出K。
相機(jī)標(biāo)定時(shí)采用棋盤格靶標(biāo),精度為0.001 mm,棋盤格為邊長(zhǎng)2.6 mm的正方形。使用雙目攝像機(jī)對(duì)靶標(biāo)拍攝圖片各15張。將拍攝的圖片導(dǎo)入Matlab中進(jìn)行標(biāo)定,得到標(biāo)定結(jié)果如表1和表2所示。通過標(biāo)定得到重投影誤差為0.5個(gè)像素,約為0.03 mm。
圖6中P點(diǎn)為空間中某一點(diǎn)的位置,Ol,Or分別為左右攝像機(jī)光心,Pl,Pr分別為P點(diǎn)在左右圖像上的成像點(diǎn)。gl,gr分別為左右極線。需要通過立體校正將實(shí)際中共面行不對(duì)準(zhǔn)的兩幅圖像如圖6(a),校正為共面行對(duì)準(zhǔn)的兩幅圖像如圖6(b)。
表1 相機(jī)內(nèi)部參數(shù)Tab.1 Camera internal references
表2 左右相機(jī)相對(duì)位姿Tab.2 Relative pose of two cameras
圖6 立體校正過程Fig.6 Rectify process
理想的雙目系統(tǒng)中兩攝像機(jī)圖像平面平行,光軸和圖像平面垂直,極點(diǎn)處于無(wú)窮遠(yuǎn)處。要滿足這個(gè)條件,必須使兩幅圖像平面和兩個(gè)攝像機(jī)坐標(biāo)原點(diǎn)的連線平行。計(jì)算Rrect矩陣如式(9)所示,使極點(diǎn)處于無(wú)窮遠(yuǎn)處。
式(10)中,T是右攝像機(jī)相對(duì)于左攝像機(jī)的平移向量。e1和e2正交,求出e2如式(11)所示。
e3和e1、e2正交,如式(12)所示。
可以解出矩陣Rrect。將Rrect左乘到R分解后作用于左右相機(jī)坐標(biāo)系的矩陣,即可得到最終的立體校正矩陣。
根據(jù)Solidworks繪制的視網(wǎng)膜模型,通過3D打印將其打印為實(shí)物,拍攝實(shí)物圖片,利用上文標(biāo)定出的數(shù)據(jù)對(duì)其進(jìn)行立體校正,對(duì)該模型拍攝的兩張圖片如圖7所示,能夠清楚地看到血管的分布。
圖7 視網(wǎng)膜血管模型圖片F(xiàn)ig.7 Retinal vessel model images
校正后得到共面平行的兩張圖片如圖8所示。
圖8 視網(wǎng)膜血管模型校正后圖像Fig.8 Rectified retinal vessel model image
與傳統(tǒng)的直接進(jìn)行立體匹配的方法[9]不同,本研究采用先將血管進(jìn)行分割,再進(jìn)行匹配的方法,消除了周圍背景區(qū)域?qū)ζヅ涞挠绊懀涣粝乱暰W(wǎng)膜血管進(jìn)行后續(xù)的立體匹配和三維重建,使重建后的視差圖更加清晰完整。
采用對(duì)比度受限的自適應(yīng)直方圖均衡算法(CLAHE)[10]對(duì)圖像進(jìn)行處理,這種方法采用直方圖匹配方法來(lái)逐個(gè)處理圖像中的較小區(qū)域,然后使用雙線性內(nèi)插方法將相鄰的小片組合起來(lái),從而消除引入的邊界。在灰度均勻的區(qū)域,通過限制對(duì)比度來(lái)避免放大噪聲。
對(duì)CLAHE后的圖像進(jìn)行均值濾波,然后求取均值濾波后的圖像與原圖的差值,再進(jìn)行二值化,分割出視網(wǎng)膜血管輪廓。
分割出來(lái)的視網(wǎng)膜血管圖像是二值的,用其作為掩膜應(yīng)用于視網(wǎng)膜血管灰度圖像中,即可分割出去除背景的視網(wǎng)膜血管灰度分布圖,如圖9所示。
圖9 視網(wǎng)膜血管分割過程Fig.9 Retinal vessel segment
立體匹配的目的是找到左右圖像的對(duì)應(yīng)點(diǎn),需要在一定的范圍內(nèi)進(jìn)行搜索。由于本研究中只需要對(duì)視網(wǎng)膜血管上的點(diǎn)進(jìn)行匹配,所以采用基于局部的立體匹配算法能夠更好地對(duì)圖像上的感興趣區(qū)域進(jìn)行匹配。參考圖像的坐標(biāo)(u,v)和視差搜索范圍d就構(gòu)成了視差圖。視差圖中的每一點(diǎn)(u,v,d)的像素表示的是位于參考圖像上的點(diǎn)(u,v)和位于匹配圖像上的點(diǎn)(u+d,v)之間的“距離”。SAD算法[11]是一種基于局部的圖像匹配算法,常用于圖像塊匹配,原理如式(13)所示。
計(jì)算機(jī)實(shí)驗(yàn)教學(xué)中心建設(shè)要考慮安全化和節(jié)約化。中心建設(shè)要牢固樹立“安全第一,預(yù)防為主”和“安全無(wú)小事”的理念,堅(jiān)決克服麻痹懈怠思想,認(rèn)真做好安全防范工作,明確安全責(zé)任人,確保安全。實(shí)驗(yàn)中心建設(shè)要做好五防:防火、防水、防雷、防盜、防病。
SAD算法的基本流程如下:
(1)構(gòu)造一個(gè)類似卷積核的小窗口;
(2)用窗口覆蓋左邊圖像,選出覆蓋區(qū)域的像素點(diǎn);
(3)用窗口覆蓋右邊圖像并選出覆蓋區(qū)域像素點(diǎn);
(4)求出左右區(qū)域像素點(diǎn)差的絕對(duì)值之和;
(5)移動(dòng)右邊圖像上的窗口,重復(fù)(3)、(4),直到找出差值最小的窗口,即找到了與左圖匹配的像素塊。
直接對(duì)原圖像進(jìn)行匹配,背景區(qū)域會(huì)對(duì)視網(wǎng)膜血管上的點(diǎn)的匹配造成影響,因此本研究先將視網(wǎng)膜血管分割,再進(jìn)行匹配,兩種匹配方式得到的視差圖,如圖10所示。
圖10 視網(wǎng)膜血管視差圖Fig.10 Disparity map of retinal vessel
從圖10(b)中可以清晰地看出血管的分布和走向,說明先對(duì)血管進(jìn)行分割去除背景后再進(jìn)行匹配能夠達(dá)到更好的匹配效果。
采用第1節(jié)中的雙目視覺三維重建原理可以求出視網(wǎng)膜血管上每點(diǎn)的三維坐標(biāo),在Matlab中繪制出視網(wǎng)膜血管的三維點(diǎn)云圖像如圖11所示。
圖11 三維重建出的點(diǎn)云圖像Fig.11 Point cloud of 3D reconstruction
任取視網(wǎng)膜模型圖像上的7個(gè)血管交叉點(diǎn)來(lái)對(duì)實(shí)驗(yàn)結(jié)果準(zhǔn)確性進(jìn)行驗(yàn)證,如圖12所示。
圖12 7個(gè)目標(biāo)點(diǎn)圖像Fig.12 7 target points in image
由于測(cè)量目標(biāo)點(diǎn)實(shí)際的三維坐標(biāo)較為困難,文中將通過每個(gè)點(diǎn)的相對(duì)位置來(lái)對(duì)誤差進(jìn)行估計(jì)。
提取出每個(gè)點(diǎn)的像素坐標(biāo),并通過雙目視覺三維重建算法即式(1)~(3)計(jì)算出每個(gè)點(diǎn)的三維坐標(biāo),將其稱為點(diǎn)集A,其中每個(gè)點(diǎn)的三維坐標(biāo)如表3所示。將模型在Solidworks坐標(biāo)系中的三維坐標(biāo)稱為點(diǎn)集B,其中每個(gè)點(diǎn)的三維坐標(biāo)如表4所示。尋找點(diǎn)集B相對(duì)點(diǎn)集A的旋轉(zhuǎn)矩陣R和平移矩陣T,使得點(diǎn)集B旋轉(zhuǎn)平移后與點(diǎn)集A之間的誤差最小。求解出中心點(diǎn),將點(diǎn)集中心化后計(jì)算點(diǎn)集之間的協(xié)方差矩陣,通過奇異值分解(SVD)可求解出R、T。
式(14)、(15)中,μA、μB是兩個(gè)點(diǎn)集的中心點(diǎn),H是兩個(gè)點(diǎn)集之間的協(xié)方差矩陣。最終得到R、T如式(16)、(17)所示。
將點(diǎn)集B旋轉(zhuǎn)平移前后與點(diǎn)集A的相對(duì)位置如圖13所示。
計(jì)算出每?jī)蓚€(gè)對(duì)應(yīng)點(diǎn)之間的誤差和7個(gè)點(diǎn)的平均誤差如表5所示。
表3 所取7個(gè)目標(biāo)點(diǎn)通過雙目視覺系統(tǒng)求出的三維坐標(biāo)Tab.3 The coordinates of seven selected target points obtained by binocular vision system
表4 所取7個(gè)目標(biāo)點(diǎn)通過Solidworks測(cè)量出的三維坐標(biāo)Tab.4 The coordinates of seven selected target points measured with Solidworks
表5 兩個(gè)點(diǎn)集之間的誤差Tab.5 The error between 2 sets of points
從表5中可以看出,平均誤差為0.68 mm,產(chǎn)生誤差的原因是相機(jī)精度有限、相機(jī)標(biāo)定過程中產(chǎn)生的重投影誤差和拍照時(shí)光線和角度的影響以及3D打印的誤差??梢酝ㄟ^選擇精度更高,視野更廣的相機(jī)、增加標(biāo)定精度和改善圖片質(zhì)量來(lái)進(jìn)一步提高測(cè)量精度。
圖13 兩坐標(biāo)系下的點(diǎn)集配準(zhǔn)Fig.13 Point registration between two coordinates
本研究采用視網(wǎng)膜模型以及雙目視覺系統(tǒng)對(duì)眼底視網(wǎng)膜血管進(jìn)行圖像處理,通過先分割后匹配的方法得到完整的視差圖以進(jìn)行三維重建,得到眼底視網(wǎng)膜血管點(diǎn)云圖,對(duì)于血管上的任意一點(diǎn),能較為精確地求出其三維坐標(biāo),控制誤差在1 mm之內(nèi),基本滿足對(duì)視網(wǎng)膜血管上任意一點(diǎn)進(jìn)行定位的要求。本方法可對(duì)小尺度的視網(wǎng)膜血管模型進(jìn)行三維重建,并獲得定位點(diǎn)的坐標(biāo),后續(xù)的研究中,將使用真實(shí)眼底視網(wǎng)膜血管進(jìn)行實(shí)驗(yàn),從而實(shí)現(xiàn)對(duì)真實(shí)眼底視網(wǎng)膜血管的三維重建。