張建勛,韓明慧,代 煜*
(1.南開大學 人工智能學院,天津 300350; 2.南開大學 機器人與信息自動化研究所,天津 300350)
內窺鏡是一種可以經由狹窄通道進入人體器官或者是工業設備內部進行觀測的儀器。其產生和發展突破了人眼的視覺限制,為人體內醫療疾病的診斷和工業設備內部缺陷的檢測提供了諸多便利。內窺鏡的應用場景中經常出現多孔結構。類管道結構的多次分支是形成多孔結構的主要原因。在醫療領域,氣管進入肺中層層分支形成支氣管,輸尿管進入腎臟產生分支形成不同的腎盂和腎盞;在工業領域,使用內窺鏡頻率較高的鍋爐供水管道和設備通風排氣管道等管道設備也常常呈現出多分支的結構。除此之外,工業檢測對象上的類孔缺陷、塊狀銹斑等也與本文研究的多孔結構的概念相似。單目內窺鏡雖然能獲取影像,但是在探頭尺寸的約束之下,其視野范圍非常有限,只能觀測到局部的二維圖像,在呈現多孔結構的關鍵位置不利于分析和判斷。鑒于此,實現基于單目內窺鏡圖像的三維重建,將有助于在復雜管道結構中獲取孔洞的位置和尺寸等信息。
從運動中恢復結構算法(Structure from motion,SFM)已經廣泛應用于相機運動跟蹤和三維重建等研究中[1-4],然而內窺鏡的使用環境具有很強獨特性,對于傳統SFM算法的應用存在以下缺陷:(1)受內窺鏡直徑的限制,其輸出圖像的分辨率普遍較低;(2)人體器官內和工業設備內管道表面的紋理特征不明顯;(3)管道內部、深孔等區域往往沒有良好的照明條件,因此內窺鏡大多自帶光源進行照明,容易出現照明不足或者過強的情況;(4)管道內部常有氣泡、浮塵等漂浮雜質[5]。國內外關于內窺鏡圖像的三維重建方面的研究已有一些成果。對于工業內窺鏡,其三維成像的研究很少,郭俊鋒等[6]和楊東林等[7]均通過設計雙目光學系統獲得圖像的深度信息,這類方法的缺點是需要改變內窺鏡的現有結構,并且增加了內窺鏡探頭的直徑。相比之下,關于醫用內窺鏡三維重建的研究較多。Ben-Hamadou等[8]利用內窺鏡實現了膀胱表面重建,但是為了降低特征提取的難度,需要額外投射激光點作為特征點。Sun等[9]利用SFM算法在從胃鏡視頻中進行表面重建,但是需要借助電磁跟蹤裝置來估計相機位姿。Visentini-Scarzanell等[10]在CT數據上訓練卷積神經網,實現了對支氣管鏡圖像的深度估計,但是這類方法只能恢復單幅圖像的深度,不適用于重建完整的三維多孔結構。Mahmoud等[11]在使用ORB-SLAM進行稀疏重建的基礎上提出了一種對豬肝臟表面進行稠密重建的方法,但重建對象表面的紋理密度會影響ORB特征點的密度,進而影響相機位姿估計的準確度。Turan等[12]改進陰影恢復形狀算法用于胃腸表面重建,此方法假設表面沒有陰影區域且較為平滑,然而孔洞的存在會使表面梯度發生強烈的變化,灰度也會明顯降低,難以滿足算法的假設條件。以上現有工作的共同缺點是無法同時滿足以下兩個條件:不借助外部設備和工具且不改變內窺鏡的硬件構造;適用于弱紋理的多孔結構。
考慮到以上問題,本文提出了一種適用于低分辨率單目內窺鏡對多孔結構進行三維重建的完整方案,創新之處在于:
(1)引入重建前期的圖像預處理過程,基于加權引導濾波設計了多尺度圖像增強方法用于提升圖像的紋理細節,在不改變內窺鏡結構且不額外增加輔助工具的情況下提高弱紋理環境下特征點的密度。利用快速行進算法(Fast Marching Method,FMM)修復漂浮雜質和高強度照射引起的高亮區;
(2)在SFM過程中,提出了一種簡易快速剔除離群點對的方法,從而提高了低分辨率圖像特征點匹配結果的準確性;
(3)由于尚未發現有研究工作涉及單目視覺下多孔結構的重建,本文提出了一種基于模板匹配和最小二乘擬合的三維多孔結構提取方法。
引導濾波[13-15]是一種需要引導圖的局部線性濾波模型。當其引導圖設置為原輸入圖像時,就成為了一種具有保持邊緣能力的濾波器。在此基礎上,Li等[16]提出了加權引導濾波算法,通過對圖像上邊緣強度的檢測,自適應地調整引導濾波中的參數設置,消除了“偽邊緣”現象,進一步提高了算法對圖像邊緣保持的能力。
本文基于加權引導濾波設計了內窺鏡圖像增強流程如圖1所示。首先將原彩色圖像按照RGB三通道分解成三幅單道圖像Ix(Ir,Ig,Ib)。

圖1 圖像增強流程Fig.1 Flow chart of image enhancement
多尺度分解:對各通道的圖像進行加權引導濾波,獲得反映圖片整體輪廓特征的結構圖層:
Lx=F(Ix),
(1)
其中F(·)代表加權引導濾波操作。然后使用原單通道圖Ix減去其結構圖層圖像Lx得到各通道的紋理細節圖層:
Rx=Ix-Lx.
(2)
接著對Lx進行相同的分解操作,得到不同尺度下的結構圖層和細節圖層:
(3)
其中:i代表分解的層級,Nm為其最大值。
圖像重構:使用以下線性增強模型,實現對圖像紋理細節的增強:
(4)
其中:Zx為增強后的輸出圖像,β為增強系數,用來拉伸各尺度下的細節圖層,使紋理更加突出。
最后將RGB三通道增強后的圖像疊加合并成紋理增強的彩色圖像。此方法通過對圖像的多尺度分解與重構過程,實現了在增強圖像細節的同時保持邊緣特性不變。
本文利用FMM算法[17]去除由于漂浮雜質反光和內窺鏡自帶光源直射導致圖像中產生的高亮區塊,減少對特征提取和匹配的干擾。設計的圖像修復流程如圖2所示。經2.1節紋理增強后的圖像作為待修復圖像,經過二值化和形態學膨脹操作生成的圖像作為修復模板,輸入FMM算法模型中。此修復方法可以在不影響圖像原始紋理結構的情況下實現對內窺鏡圖像中高亮區塊的去除。

圖2 圖像修復流程Fig.2 Flow chart of image inpainting
本文采用基于SIFT特征的SFM算法進行稀疏重建,其一般包括特征匹配、相機位姿估計以及三維稀疏點云生成三個步驟。在特征匹配階段,一般使用Ratio Test算法提高匹配的正確率。然而內窺鏡圖像相比于一般的相機圖像清晰度低,即使經過Ratio Test仍然極易產生錯誤的匹配點對。因此本文提出了一種進行離群點對檢測的方法,用在Ratio Test之后,進一步刪除可信度低的匹配點對,優化匹配結果。
由于相機運動的平滑性,在同一次特征匹配結果中,每對匹配點在像素坐標系的X方向上的像素距離值原則上不會出現過大的差異,Y方向上亦如此。本文方法基于此假設,檢測像素坐標關系表現比較異常的點對。圖3所示為X坐標約束下的離群點檢測算法,流程中,假設兩幅圖像通過初始匹配得到N對匹配特征點,算法統計了每個匹配點對中兩點在像素坐標系的X方向上的差值,然后設計了搜索策略來搜索和定位離群點。多次實驗表明閾值α在2~4之間取值時效果最佳。

圖3 離群點檢測流程Fig.3 Flow chart of outlier detection
將此流程圖中的X都改為Y即可同理得到Y坐標約束下的離群點檢測流程。在X坐標約束和Y坐標約束下標記出的離群點都視為錯誤匹配結果,進行剔除。通過離群點對的檢測與刪除,能夠有效地去除特征相似但是位置關系異常的匹配點對,為下一步的相機位姿估計提供準確度更高的數據源。
現有的關于孔結構提取的研究均是基于雙目視覺,如解則曉[18]等通過尋找極線與圓孔邊緣的交點進行立體匹配重建圓孔輪廓。然而關于從單目SFM重建中提取多孔結構的研究尚未發現有報道,因此本文提出了一種基于模板匹配和最小二乘擬合的多孔結構提取方法。設計具體流程如下:
2.4.1 重建孔洞邊緣三維點云
如圖4所示,使用由SFM流程恢復的相機位姿信息,建立每對相鄰關鍵幀之間的極線約束。pi為孔洞邊緣上一點,將pi與其對應的極線上的每一個點進行模板匹配,使用零均值歸一化互相關(Zero Mean Normalized Cross Correlation,ZNCC)匹配算法[19]計算相關度,相關度值最大的點視為與pi的匹配點。為了加快搜索過程,定義最小搜索深度dmin和最大搜索深度dmax:
(5)
其中dmean和σ分別代表當前幀對應稀疏點云的深度值的均值和方差。

圖4 模板匹配過程Fig.4 Process of template matching
在已知所有圓孔邊緣點pi與其匹配點的條件下,結合已恢復的相機位姿信息,使用三角測量法即可得到孔洞邊緣的三維點云Vcloud={P1,P2,P3,…}。
2.4.2 點云分割
由于點云Vcloud中包含多個圓孔,本文設計圖5所示算法流程對點云進行分割。在實際應用時,可將P1與Vcloud中其余點的最短距離的3倍作為閾值e的取值。

圖5 點云分割Fig.5 Point cloud segmentation
2.4.3 計算圓孔的位置、大小和方向
本小節試圖用三維空間圓去擬合每一個孔洞的三維邊緣點集,從而獲得孔洞的尺寸和空間位置關系。其中涉及到多次空間坐標系的變換,下面給出了各輔助坐標系的定義和變換公式的推導。
步驟1 如圖6所示,利用最小二乘法對一個孔洞的三維點云進行平面擬合,得到擬合平面方程:
ax+by-z+c=0,
(6)
法向量[a,b,-1]的方向則代表當前圓孔的方向。將所有點[x,y,z]投影到擬合平面上得到[xp,yp,zp],變換關系如下:
(7)

圖6 坐標變換Fig.6 Coordinate transformation
步驟2 對圓的擬合一般要在二維平面上進行,因此需要將三維點坐標降維轉換到二維平面上。創建一個新的坐標系Oc-XcYcZc,該坐標系的Zc軸與擬合平面的法線平行,Oc與O重合。假設坐標系O-XYZ繞X軸旋轉θx角度,繞Y軸旋轉θy角度可變換到坐標系Oc-XcYcZc。那么旋轉矩陣表示為:
(8)

θy=arctan(-a),
(9)
通過Pc=R-1P將投影到擬合平面的上的三維點轉換到Oc-XcYcZc坐標系下,轉換后所有點的Zc坐標值相同,因此可以在XcOcYc平面上進行基于最小二乘的圓擬合。擬合圓的半徑即為當前圓孔的半徑,擬合圓的圓心坐標經過P=RPc變換回初始O-XYZ坐標系下,作為當前圓孔的位置。
對重建圖像序列中包含的每個圓孔,重復上述流程,提取出所有圓孔的三維結構。
本文所提出的方案的完整流程如圖7所示,現有的基于SFM的三維重建算法一般包括特征提取和匹配、相機位姿估計、稀疏三維點云生成三部分。但其在不借助輔助工具的前提下不能適應內窺鏡圖像和應用場景的特點,本文改進了現有的基于SFM的重建流程,使其能夠在低分辨率的內窺鏡圖像上正常工作,并且最終提取出三維多孔結構。改進點如下:(1)使用基于加權引導濾波的多尺度圖像增強算法,突顯內窺鏡圖像的紋理細節,降低特征提取難度;(2)引入基于FMM圖像復原算法,減小雜質對特征匹配的干擾;(3)在初始特征匹配后提出了離群點對檢測算法,通過像素坐標位置關系的差異排除錯誤匹配結果;(4)提出了一種三維多孔結構提取算法。

圖7 本文重建流程總結Fig.7 Summary of reconstruction process
本文通過兩組實驗對提出的重建方法進行驗證。第一組實驗使用工業內窺鏡對3D打印的多孔半球面進行重建,因模型參數已知,方便驗證重建結果的準確性。第二組實驗使用醫用內窺鏡對真實腎內多孔結構進行重建,驗證本文方法的可行性。兩種內窺鏡均為單目內窺鏡。實驗的軟件環境為Visual Studio 2015,64位Windows操作系統,C++語言編程,硬件采用Intel(R) Core(TM) i5-4590 CPU @ 3.30 GHz,8.00 GB內存。
本文設計了直徑為150 mm的多孔半球面,球面上的圓孔位置隨機分布,直徑取值為5~13 mm不等,如圖8(a)所示。在半球面上粘貼了密度較為稀疏的紋理圖。然后使用Anyty型號為3R-MFXS55的內窺鏡對圖8(a)中標號的8個圓孔進行拍攝,得到分辨率為720×480 pixel的圖像序列。重建流程和結果見圖8(b)~圖8(h)。

圖8 多孔半球面重建過程和結果Fig.8 Process and result of reconstruction on porous hemisphere
3.1.1 圖像增強與復原結果分析
實驗時參數設置為:Nm=3,β=2,α=3。對比圖8(b)和8(c)可以看出,使用本文方法進行增強后的圖像紋理特征表現得更加明顯,很多細小的紋理細節被突顯出來,并且孔洞邊緣的灰度梯度得到了良好的保持,這有利于最后多孔結構提取時對孔洞邊界的準確定位。對比圖8(c)和8(d)中的黃色框標記區域可見,使用本文的圖像復原算法使得高亮區塊得到了有效去除(彩圖見期刊電子版)。
圖9展示了未經處理的原始圖像上的特征匹配結果,與圖8(e)中的圖像對比,能明顯看出經過本文圖像增強和復原算法處理后的圖像上提取到的特征點數量相比于原始圖像有極大提高。

圖9 原始半球面圖像上的特征匹配結果Fig.9 Feature matching on original images of the hemisphere
3.1.2 離群點剔除算法結果分析
在圖8(e)中,對選取的相鄰關鍵幀圖像進行SIFT特征點提取和匹配。初始的特征匹配連線圖中,正確匹配連線呈現出近似平行的狀態,且長度接近。圖8(e)右下角為紅色邊框部分的放大圖,其中黑色線標記了部分異常連線,它們對應的是明顯的錯誤匹配。由圖8(f)可見使用本文所提出的離群點對檢測方法,能有效地排除這些錯誤匹配點對。為說明本文離群點對剔除方法的優勢,將本文算法與LOF算法[20]以及ORB-SLAM[21]中使用的旋轉角度直方圖統計算法進行對比,如圖10所示,其中黃色圓圈標記出了結果中仍然存在的明顯的錯誤匹配點(彩圖見期刊電子版)。對比圖10和圖8(f)中的誤匹配剔除效果,并綜合考慮表1中各算法運行的耗時,證明本文算法的性能最佳。

(b)旋轉角度直方圖算法結果

表1 半球面重建中離群點對剔除算法的時間效率對比
3.1.3 多孔結構重建結果分析
為了驗證本文方法的可靠性,重復進行了10組完全獨立的重建實驗,以下表格中展示的實驗結果均為10次實驗的統計數據。
對于位置分布關系的準確性,分別統計了真實模型(圖8(a))和重建結果(圖8(h))中1號圓孔圓心與其他圓孔圓心的距離值,以此距離值的誤差大小作為衡量重建結果位置關系準確性的一個指標。由于單目重建出的三維結構與真實三維結構在尺寸上相差一個尺度因子,因此本文首先使用最小二乘法恢復尺度因子,基于此尺度因子,計算出重建結果在圓孔間距值上的相對誤差。由表2可見,8個圓孔重建的相對誤差都保持在10%之內。
對于圓孔大小的準確性,分別統計了多孔半球面和重建結果中各個圓孔的直徑,進行對比。由表3可見,8個圓孔直徑的重建相對誤差也均在10%之內,滿足實際應用的需求。

表2 圓孔間距誤差

表3 圓孔直徑誤差
將文獻[18]所述圓孔邊緣點重建方法替換本文在2.4節提出的方案,得到對比實驗結果,見表2和表3的最后一列。結合表4可見,相比于文獻[18],本文所提出的基于模板匹配與最小二乘擬合的多孔結構提取算法在輕微增加時間消耗的情況下,取得了較為明顯的準確性的提升,總體性能更佳。對比實驗的結果證明了本文方案更加適用于單目內窺鏡。

表4 圓孔結構提取算法的時間效率對比
本實驗所用圖像來自于北京民航總醫院完成的經尿道輸尿管軟鏡鈥激光碎石取石手術,術中軟鏡經患者尿道和輸尿管置入,到達腎臟并觀察如圖11(a)所示的腎內管道結構,所用軟鏡為奧林巴斯URF-V2型輸尿管電子鏡,圖像分辨率為640×480 pixel。本文從內窺鏡視頻中截取了包含3個孔洞的片段,運用提出的算法流程重建此多孔結構,驗證方法的可行性。

圖11 腎內三維多孔結構重建過程和結果Fig.11 Process and result of porous structure reconstruction in the kidney
圖11(b)~11(h)展示了根據本文提出的方案對真實軟鏡圖像序列進行三維多孔結構重建的過程和結果。腎盂和腎盞中的血管,以及結石在移動過程中引起的出血,是重建中紋理的主要來源。
實驗時參數設置與半球試驗相同:Nm=3,β=2,α=3。圖12展示了未經處理的原始圖像上進行特征提取和匹配的結果,與圖11(e)中圖像對比,證明了本文所用圖像增強和復原算法能夠有效地提高特征點的數量。

表5 腎內重建中離群點對剔除算法的時間效率對比

圖12 原始腎內圖像上的特征匹配結果Fig.12 Feature matching on original intrarenal images
通過圖13與圖11(f)中結果對比,結合表5中展示的各算法的耗時,證明了本文提出的離群點檢測算法在真實腎內圖像數據上依然表現出優勢。由圖11所示重建結果可以看到,使用本文重建方案最終得到的三個孔的大小和位置關系都與內窺鏡視頻所展示的內容非常接近,驗證了本文整體重建方法的可行性。

(a)LOF算法結果

(b)旋轉角度直方圖算法結果
由于現有基于單目視覺的三維重建方法在不借助外部輔助工具的前提下難以在內窺鏡的應用場景中運行,本文提出了一種面向低分辨率單目內窺鏡圖像的三維多孔結構重建方法。此方法具有以下特點:利用基于加權引導濾波的多尺度圖像增強方法,增強了圖像細節,克服了內窺鏡本身成像清晰度低,且其應用場景紋理特征弱的缺陷,有利于特征提取;引入基于FMM的圖像修復算法用于修補圖像中的高亮區塊,減少了氣泡、漂浮雜質、表面反光等因素對特征點提取的干擾;提出了一種離群點對檢測算法用于剔除錯誤匹配,優化特征點匹配結果,進一步削弱了內窺鏡圖像模糊對重建精度帶來的影響;最后,提出了基于模板匹配和最小二乘擬合的多孔結構提取算法。多孔球面上的實驗驗證了整體算法流程的合理性和重建結構的準確性,重建結果中孔間距和孔直徑的相對誤差均小于10%。真實腎結石手術場景上的實驗驗證了本文方法的可行性。