張寶祥,玉振明,楊秋慧
(1. 廣西大學 計算機與電子信息學院,廣西 南寧 530004;2. 梧州學院 機器視覺與智能控制廣西重點實驗室,廣西 梧州 543002;3. 梧州學院 大數據與軟件工程學院,廣西 梧州 543002)
近年來,隨著人工智能和機器視覺技術的快速發展,基于圖像的三維重建方法越來越受到關注,但在面向顯微鏡應用領域,其主要應用于平面標本的觀測,鮮有針對立體標本成像以及建模的顯微設備。研發新一代智能顯微設備的同時,開發出面向立體標本的三維模型重建和立體標本幾何參數測量的技術具有重要意義。
作為機器視覺的熱門方向,已有諸多方法和理論用于基于圖像的三維重建,其中,運動恢復結構法(Structure from Motion,SfM)[1]是應用最廣泛的經典方法之一?;赟fM 設計出了多種三維建模系統,如Wu 開發的開源軟件Visual SfM[2],Moulon 等 人 開 發 的 開 源 軟 件Open-MVG[3],Sch?nberger 等 人 開 發 的 開 源 三 維 建 模系 統COLMAP[4,5]。蔣 華 強 等[6]針 對 現 有SfM算法重建模型存在的點云稀疏等問題,提出一種利用不同匹配數據進行模型重建的算法。但由于SfM 僅計算圖像之間成功匹配的特征點的三維信息并將其恢復為三維坐標形成三維點云,而圖像中含有的特征點信息相對較少[7],因此SfM 計算得到的點云模型比較稀疏,重建后的模型精度較低。多視圖立體方法(Multi-View Stereo,MVS)[8]可以從物體多個視角圖像計算得到場景的密集三維點云。PMVS(Patchbased MVS)[5]以SfM 重建的稀疏點云為輸入,利用圖像面鄰域信息迭代,使用點云擴張策略進行點云擴張和過濾,最后重建出稠密點云。Sch?nberger 等人[9]以SfM 得到的稀疏重建模型和相機姿態為輸入,采用深度圖融合的方法來恢復出稠密點云。基于學習的MVS 方法如Point-MVSNet[10],R-MVSNet[11],Cascade-MVSNet[12]等采用深度圖融合的方法恢復較高精度的場景稠密點云也取得不錯的結果。
以上三維重建算法對拍攝設備要求較高,適用于對大場景成像的紋理等細節豐富的場景,而在實體顯微鏡應用場景中,由于顯微鏡工作環境、珠寶等立體標本在顯微鏡局部放大觀測時存在弱紋理、細節不豐富和反光等問題,運用上述算法得到的三維重建效果并不理想。本文提出了一種適用于顯微鏡應用場景下基于特征提取的多視圖立體三維重建算法。以基恩士VHX-6000 高級體視顯微鏡作為實驗平臺,以集成電路板元器件或珠寶首飾作為實驗對象,通過顯微鏡采集物體不同角度的圖像序列(大于10 張),對立體標本顯微鏡圖像進行三維重建,取得較好效果。
顯微鏡具有高放大率和窄場的特點,對立體標本的圖像采集往往只能獲得物體較小的局部放大圖像,所采集的顯微圖像包含的紋理信息較少屬于弱紋理圖像。因此,為了增強圖像的細節信息和紋理信息以便后續過程可以提取到圖像更多的特征信息,使用直方圖均衡化方法增強圖像的細節信息以使圖像灰度分布更均勻[13],使用一種融合光照和彩色信息的灰度圖像補償算法增強圖像的紋理信息對圖像進行灰度化[14]。本文的實驗設備為基恩士VHX-6000 高端數碼顯微系統,如圖1 所示。

圖1 基恩士VHX-6000Fig.1 KEYENCE VHX-6000
特征點提取與匹配是基于圖像三維重建算法的關鍵一步,特征提取與匹配的精度直接影響重建效果。Harris[15]角點檢測算法提取的特征角點比較全面,具有平移和旋轉不變性,對參數變化、噪聲、圖像對比度和光照變化等有很好的魯棒性,但對圖像尺度變化敏感,不具有尺度不變特性。尺度不變特征變換(Scale-invariant Feature Transform,SIFT)[16]算法對旋轉、尺度、亮度等變化具有不變性,對視角轉換、噪聲、仿射變換有很高的容忍度,但由于算法實現過程中需要通過高斯模糊、降采樣等方式構建高斯金字塔,得到的特征點精度不是很高,對邊緣光滑的目標無法準確提取特征點,且計算量大,效率低。本文采用一種將Harris 與SIFT 算法相結合的方法[17],首先,用Harris 進行圖像中的特征角點提取,使用特征角點包含的信息熵值對特征角點進一步篩選;其次,使用馬氏距離度量特征點之間的相似性;再次,用隨機抽樣一致性(RANSAC)方法對匹配模型進行優化,篩選匹配點對,提高匹配的正確率;最后使用顯微鏡采集的顯微圖像進行對比實驗,驗證本算法的匹配準確率。
2.2.1 Harris 角點檢測
Harrs 角點檢測算法是利用移動的局部窗口在圖像中計算灰度變化值,若在任意方向上移動都存在較大的灰度變化就認為該窗口中存在角點。通過設置合理的閾值來決定檢測到的角點數。Harris 角點檢測變化如圖2 所示。

圖2 Harris 角點檢測變化Fig.2 Change of Harris corner detection
窗口由像素點(x,y)移動(u,v)產生的灰度變化E可以表示為:

其中:I是圖像灰度函數,W是窗口函數,將式(1)用泰勒級數化簡可得:

為了在顯微圖像中可能存在的弱紋理區域檢測到盡可能多的特征點,對圖像逐像素點計算灰度變化。 使自相關矩陣M的權重, 則 有H(x,y),表示圖像每個像素點在x,y方向的二階偏導數和x、y方向的導數的Hessian 矩陣。從圖像中提取到的角點可表示為:

其中:R(x,y)為角點響應函數;det(H)為矩陣H的行列式;tr(H)為矩陣H的跡;λ為常數(取值范圍0.04~0.06),在本文實驗中函數R的局部極大值點即為特征角點,此時取λ=0.04。
通過式(3)初步檢測出圖像特征點。但由于采用逐一計算每一個像素點的局部窗口內灰度變化,因此檢測結果僅反映圖像局部變化情況,并會將背景中噪聲點或紋理不清晰的像素點判斷為特征點。熵值[18]的大小與局部區域包含的信息量成正比,背景中噪聲點或紋理不清晰的像素點包含信息量較少導致計算出的熵值低,熵值大的特征點比熵值小的特征點匹配的準確率高。用以下兩式進行熵計算:

其中:pij為圖像某像素處的灰度值與周圍像素的灰度分布的綜合特征,N為圖像尺度,Hf為圖像二維熵,n,i,j為像素灰度值。分別對圖像中初步檢測出的特征角點利用式(5)在以特征角點為中心的n×n鄰域內計算圖像塊的局部熵,統計每幅圖像中特征點熵的均值,取熵均值的80%作為閾值,刪除低于閾值的特征點,對特征點進行提純。對于圖像弱紋理區域統計的熵均值較低,可以刪除較少的點進而在弱紋理區域保留較多的特征點,從而提高算法在弱紋理區域匹配的正確率,同時提高算法的效率。
2.2.2 生成SIFT 特征描述子
Harris 算法提取到特征角點,還需要采用SIFT 算法來描述并建立特征向量。SIFT 通過利用特征角點鄰域像素的梯度方向分布特性為每個關鍵點指定方向參數,使算子具備旋轉不變性。

其中:m(x,y)為(x,y)處梯度的幅度,θ(x,y)為(x,y)處的梯度方向,L(x,y)為所有關鍵點的尺度。在特征點周圍n×n鄰域內以尺度大小建立一個大采樣區域,用式(6)、(7)計算窗口內像素點的梯度方向和大小,然后在該鄰域內構建一個小采樣區域,并用梯度直方圖統計該小采樣區域中每個“格子”內像素的梯度方向和大小,形成種子點,從而構建出特征描述子。
在本文實驗中,SIFT 首先將采樣區域旋轉至特征點方向上,然后在其周圍16×16 的鄰域內計算梯度方向和大小。然后在每個4×4 的采樣窗口中計算8 個方向的梯度直方圖,繪制每個方向的累加值,即可形成一個種子點。如圖3 所示,每個特征角點有4×4 個種子點,每個種子點有8 個方向,即每個特征角點由4×4×8=128維的描述子組成。

圖3 SIFT 描述特征點Fig.3 SIFT description of feature points
2.2.3 特征匹配
為了提高對顯微弱紋理圖像的匹配精度,用馬氏距離[19]替代原始SIFT 算法中的歐氏距離作為兩幅圖像中特征角點之間的的相似性判定度量。歐式距離將特征點的不同屬性之間的差別等同看待,有時不能滿足實際要求。馬氏距離與歐式距離的不同之處在于:它考慮到特征點各種特性之間的聯系;并且能對兩個樣本集的相似性進行有效度量,不受尺度變化及變量之間相關性的影響;它還可以排除變量之間的相關性的干擾。馬氏距離可以表示為:

其中:X,Y為兩個特征向量,S為兩組特征向量的協方差矩陣,E為均值。從式(9)中可以發現,馬氏距離計算是建立在總體樣本的基礎上,即計算的是兩個向量間的整體距離。相比歐式距離,馬氏距離多了一個協方差矩陣的逆矩陣,能更準確的度量特征點之間的相似性。雖然增加了計算量,但馬氏距離把方差歸一化,使得特征之間的相似關系更加合理,匹配精度更高。為進一步提高算法在弱紋理顯微圖像上的匹配準確率,需要剔除掉誤匹配點,因此采用隨機抽樣一致性(RANSAC)[20]算 法 替 代 原SIFT 算 法 中 的 比 例閾值法,選擇一組局域熵值高的特征點作為初始模型,用初始模型去測試所有的其它數據,如果某個點適用于估計的模型則認為它也是局內點,否則是局外點;然后,用所有假設的局內點去重新估計模型。算法通過K次迭代,可精確估計匹配模型參數。
2.3.1 稀疏點云重建
利用基恩士VHX-6000 可變倍鏡頭可將智能顯微鏡鏡頭調整到一個固定的角度,然后上下、前后、左右等多方向移動載物臺,從不同視角拍攝立體樣本獲得圖像序列。本文采用如文獻[4]中的增量SfM 方法重建物體的三維結構。增量SfM 是具有迭代重建組件的順序處理方法。首先,用本文算法對圖像進行特征點提取與匹配,采用包含正確匹配特征點對最多的兩視圖作為重建種子,通過它們之間的匹配點對估計出本征矩陣,由本征矩陣采用SVD 分解法計算出相機位姿。然后,依次將下一最佳匹配圖像Inext(匹配點對數量最多)添加進模型迭代,重復估計相機位姿并對相機進行標定;同時將場景中匹配的點通過三角化來生成三維點,并計算出相機的運動軌跡和場景中物體的三維信息。最后,對所有已生成的三維點和已估計出的相機位姿使用光束平差法(Bundle Adjustment,BA)進行優化。BA 結束,得到相機估計參數和場景幾何信息,即稀疏的3D 點云。
2.3.1.1 有序圖像輸入
由于增量SfM 需要對所有圖像依次進行匹配,用無序圖像進行模型重建時由于圖像的無序導致圖像位姿的先驗條件未知,在匹配環節存在多張圖片之間的交叉匹配和多次交叉驗證匹配點,所以計算量大,實時性差。為提高圖像的匹配效率,采用有序圖像序列作為輸入。通常相鄰拍攝的兩張圖像所包含的共同特征信息最多,也更加容易正確匹配。在采集圖像時根據顯微鏡載物臺移動的軌跡以及圖像拍攝時間對所采集的物體不同視角圖像添加標簽,將圖像根據載物臺運行軌跡和時間的先后排列成一組順序固定的圖像序列(類似視頻中的幀)。顯微鏡載物臺工作距離較小,拍攝的相鄰圖片中兩兩之間物體信息的重合很多,包含的特征點信息最多;在特征匹配時使相鄰的圖片先進行特征匹配。在SfM 算法選好初始的兩張匹配圖象時默認把與這兩張圖像相鄰的圖像作為下一最佳匹配圖像Inext進行重建,依次將與上一張圖像鄰近的圖像作為下一最佳輸入進行迭代,這樣所有圖像只需添加匹配一次即可完成所有圖像的重建。
2.3.1.2 三角化
SfM 在圖像正確匹配和估計得到相機參數之后,就可以將圖像場景之間正確匹配的特征點通過三角化方法恢復為空間三維點,進而得到三維點云。三角化的方法如圖4 所示。

圖4 三角化Fig.4 Triangulation
在圖4 中,I1,I2為兩幅圖像,P1,P2分別為兩幅圖像上匹配的特征點;O1,O2分別為兩幅圖像拍攝視角時的相機中心,將每幅圖像的相機中心與其特征點的連線延長在空間中交于點P,則P點為圖像上的點所恢復的世界坐標系下的三維點。得到三維點之后通過BA 調整,過濾離群值,估計得到物體的三維點云。
2.3.2 稠密點云重建
SfM 重建得到的點云模型為稀疏點云,只有大致的模型結構,缺少了很多細節部分,所以還需要將稀疏點云進行稠密化。多視圖立體(MVS)是一種將SfM 輸出的稀疏點云稠密化的方法,MVS 重建利用SfM 算法輸出的稀疏點云、相機參數及相機位姿,然后融合圖像的深度圖獲得物體的稠密三維點云。但對于顯微鏡工作場景下拍攝的物體局部存在弱紋理的圖像,由于表面灰度信息有限,傳統MVS 方法圖像深度信息估計誤差較大。因此,針對上述在顯微鏡應用場景中的物體稠密重建問題,利用CNN 網絡與MVS 結合的方法來估計和預測采集的顯微圖像的深度圖,進而使用深度圖進行稠密重建。
為保證模型收斂,本文采用文獻[21]提出的基于深度殘差網絡(ResNet-50)[22-23]的全卷積神經網絡對采集的顯微圖像序列進行深度估計和預測。在ResNet-50 的基礎上設置了反卷積層和上采樣層逐步增加每層的輸出大小,并在反卷積層輸出后增加了激活函數(ReLu)[24],對輸入圖像進行同樣比例大小的深度預測。通過比較全卷積神經網絡預測的深度與MVS 所得深度的絕對差值并設置閾值,將大于閾值的預測深度融合到MVS 估計的深度圖中得到改善的深度圖,然后利用SfM 得到的稀疏點云和相機的位姿信息與改善后的深度圖恢復出物體的稠密點云。
用于預測圖像深度的全卷積網絡結構如圖5所示。為了增加系統的實時性并減少計算時內存的占用量,去掉了原ResNet-50 中的平均池化層和全連接層部分,僅保留ResNet-50 的卷積層結構來提取圖像中的特征信息,從而可以輸出尺寸為7×7,2 048 通道的特征圖,減少了計算參數,加速模型的訓練,提高預測效率。

圖5 深度預測網絡結構Fig.5 Depth prediction network structure
本文的研究旨在恢復顯微鏡應用場景中所拍攝物體的近似真實的三維結構。重建物體近似真實的三維結構是以正確估計圖像深度為前提的。所以,為了盡可能正確地預測圖像的深度信息,約束預測的圖像深度值和真實值之間的誤差。結合文獻[21]采用平均平方誤差作為損失函數,損失函數L定義為:

其中:在圖像(i,j)處預測的深度值為yij,在圖像(i,j)處真實深度值為tij,圖像包含的像素點數為m×n,ε為常數。L將預測深度圖像素點的預測值和真實值之間的平均誤差定義為損失,該損失函數對預測的深度值y懲罰較嚴格,可以很好地減少顯微鏡載物臺背景區域帶來的深度誤差影響,進一步約束了前景物體的深度誤差。
本文的實驗平臺為基恩士VHX-6000 高性能實體顯微鏡系統,以電子電路板上元件為實體標本采集的立體標本圖像序列來驗證本算法的可行性。實驗PC 平臺配置為:系統為Ubuntu20.04.3LTS,CPU 為 英 特 爾Xeon E5-1630 V3,主頻為3.70 GHz,內存為16 G,顯卡為英偉達Quadro K2200,顯存為4 G,硬盤為2 T 固態硬盤。如圖1 所示的基恩士VHX-6000 智能顯微鏡可以通過人為轉動手柄靈活調整顯微鏡物鏡的觀測角度,以物鏡垂直載物臺為原點可以任意左右傾斜0°~90°,并通過上下、旋轉以及水平任意角度移動載物臺實現對立體標本的多視角觀測。在本文實驗中將顯微鏡物鏡向左調整傾斜60°,放大倍數設置為20 倍,然后移動載物臺采集了36 張電路板上的電容的多視角圖像序列。對圖像根據載物臺移動軌跡和采集時間進行排序,使其成為有序圖像序列。采集的圖像如圖6 所示。

圖6 電容的多視角圖像Fig.6 Multi-view image of capacitance
隨機從拍攝的36 張圖像中選取2 張圖像進行圖像匹配實驗,選取的圖片如圖7 所示。將選取的2 張圖像經過本文的圖像灰度化補償算法進行預處理,然后與Harris 和SIFT 匹配算法經行實驗比較,實驗數據如表1 所示,三種匹配算法的實驗結果圖如圖8 所示。

圖7 選取的待匹配圖像Fig.7 Selected image to be matched

表1 不同匹配算法實驗數據Tab.1 Experimental data of different matching algorithms
可以發現,盡管其他算法能提取出較多的特征點,但本文算法在針對顯微圖像中弱紋理區域的匹配上具有明顯優勢。如圖8 所示,本文算法 在對電容壁和電容頂部弱紋理區域的特征點匹配中的誤匹配較少,而其他算法存在明顯的誤匹配現象。如表1,本算法也具有更好的性能指標,原因是本文算法在用Harris 提取出特征角點之后又利用熵值法對特征點進一步篩選,減少了后續特征點匹配過程的計算量,減少了運算時間;篩選出的包含豐富圖像特征信息的點,以及在匹配環節采用馬氏距離代替歐氏距離,可更好地計算弱紋理區域特征點之間的相似性,提高了匹配的準確率。匹配準確率相比SIFT 算法提高了3.29%,時間比Harris 算法減少了23.42%。

圖8 三種匹配算法實驗結果Fig.8 Experimental results of three matching algorithms
本文在稀疏重建環節改進了特征提取與匹配,將使用無序圖像進行增量SfM 重建改為使用有序圖像重建。對圖6 所示的36 張圖像進行稀疏重建并與SfM 算法和OpenMVG 算法進行實驗比較,實驗結果如圖9 所示,實驗數據如表2所示。

表2 SfM 稀疏重建實驗數據Tab.2 Experimental data of SfM sparse reconstruction

圖9 稀疏點云重建Fig.9 Sparse point cloud reconstruction
可以看到改進后的SfM 重建結果具有更好的結構完整性,本文算法在電容壁處的弱紋理區域重建后的點云比較密集,本文算法相比SfM 算法整體點云數量增加16.69%,相比OpenMVG算法重建時間節省了10.29%。
在使用本文深度預測網絡模型進行深度預測前先對模型進行訓練。本文使用基恩士-VHX6000 超景深顯微鏡拍攝的寶石、電子元器件等不同顏色、形狀、材質的立體標本的多視角顯微圖像構建的本地圖像數據集,隨機從中取出部分圖像構成訓練集和驗證集,對深度預測網絡進行監督訓練。基恩士-VHX6000 超景深顯微鏡具有3D 測量功能可以同步掃描立體標本的深度信息生成深度圖,即在拍攝立體標本多視角圖像時可以同步掃描同一視角的深度圖作為模型訓練的輸入圖像,圖像對應的深度圖作為訓練標簽。 模型的前$ 部分即卷積層部分使用ResNet50 在 公 開 數 據 集ImageNet[25]上 預 訓 練 好的權重參數作為初始化參數,模型訓練時用AdaDelta 優化訓練效率[26],通過批處理的隨機梯度下降法優化網絡參數,本文訓練中batch size 設置為4,迭代過程中采用了“早?!睓C制,即在迭代過程中觀察每次迭代輸出預測值與真實值的誤差,當在驗證集上預測值與真實值的誤差不再明顯變化時停止訓練,此時損失函數L在0.217 附近小幅波動、沒有明顯變化,說明模型收斂,完成本文模型的訓練。
圖10 展示了部分預測結果,從預測的深度圖可以看出立體標本“電容器”的具體形狀,深度變化均勻,很好地預測了立體標本的深度。但不足之處在于,在場景背景處與“電容器”壁身弱紋理處存在噪聲以及部分缺失,這在之后用MVS 深度圖進行修正并利用修正后的深度圖恢復三維結構時進行了彌補。

圖10 深度預測結果Fig.10 Depth prediction result
通過以SfM 稀疏重建階段獲得的物體稀疏點云和估計的場景幾何參數為基礎,用本文全卷積神經網絡方法預測的圖像深度和MVS 估計的深度圖相融合,以增強顯微鏡場景下對弱紋理區域的表征效果,重建出物體的稠密點云。將本文的稠密重建方法的重建效果與開源的三維建模系統COLMAP 中的MVS 方法相比較,估計的深度圖如圖11 所示,重建后的密集點云如圖12所示。

圖11 深度圖Fig.11 Depth map

圖12 稠密重建后的點云Fig.12 Densely reconstructed point cloud
在深度圖估計方面,COLMAP 中MVS 方法估計出的深度圖會受顯微鏡聚焦位置的影響,與場景中物體真實結構深度信息不一致。本文方法用全卷積神經網絡預測的圖像深度對MVS 方法估計的深度圖進行矯正,得到的深度圖更加精確。在稠密點云方面,可以明顯看到本文方法比COLMAP 得到的稠密點云具有更好的結構完整性,在圖12 中電容周身弱紋理區域的重建結構更加完整,重建得到的點云數量明顯多于COLMAP。稠密重建實驗數據如表3 所示。

表3 稠密重建實驗數據Tab.3 Dense reconstruction experimental data
用均方根誤差(VRMSE)、平均相對誤差(VREL)和平均log10 誤差(VLOG10)這3 種常見的預測評價指標驗證本文使用的全卷積神經網絡模型預測深度的精確性,表示為:

其 中:yi為 第i個 像 素 點 的 真 實 深 度,di為i個 像素點的深度預測值,N為圖像像素點總數。可以發現與COLMAP 的MVS 算法相比,本算法在對包含了弱紋理區域的顯微圖像深度預測誤差評價指標均更小。點云數目增加31.25%,整體重建時間節省了21.16%。
對重建得到的稠密點云進行模型化,使用泊松表面重建方法將點云網格化,用MeshLab 軟件對重建后的模型進行顯示,實驗結果如圖13 所示。由于本文算法重建得到點云數量更多、點云更加稠密,最終得到的物體模型結構更加完整,細節效果更優。使用結構相似度(VSSIM)[27]評價指標驗證重建模型的結構完整性,表示為:


圖13 泊松表面重建結果Fig.13 Poisson surface reconstruction results

由表3 所示,本文算法重建后模型的SSIM提升了39.06%。
為了對本文算法的魯棒性[28]經行驗證,將顯微鏡物鏡以垂直載物臺為原點分別傾斜0°、30°、60°,并選取不同材質和形狀的物體進行稠密點云重建實驗,實驗結果如圖14 所示。
從圖14 中可以看出,在調整顯微鏡物鏡不同的觀測角度,以及采用不同材質的物體進行三維重建實驗,本文算法都能夠重建出結構完整性較好的稠密點云,具有很好的魯棒性。

圖14 魯棒性測試Fig.14 Robustness test
本文針對實體顯微鏡應用場景提出了一種對立體標本顯微圖像進行三維重建的算法。首先,將顯微鏡鏡頭固定角度,移動載物臺拍攝立體標本的多視角圖像,根據拍攝時間以及載物臺移動坐標使得采集的圖像為有序圖像序列。然后,通過使用改進的Harris 與SIFT 相結合的特征提取與匹配算法,提升了算法對于立體標本顯微圖像在弱紋理區域特征信息的提取,提升了增量SfM 算法性能,得到結構完整性更好的稀疏點云。最后,通過使用與深度殘差網絡相結合的全卷積神經網絡對輸入的圖像進行深度估計和預測,將預測得到的深度信息通過閾值法與MVS深度圖相融合,對MVS 深度圖進行修正,重建出物體的稠密點云,提升了重建結構完整性和點云數量。實驗結果表明,本算法在顯微鏡應用場景下無需事先對顯微鏡鏡頭進行標定,只需固定顯微鏡鏡頭移動載物臺采集立體標本的多視角圖像進行重建。有效地解決了在顯微鏡觀測場景下對立體標本局部放大觀測時,存在的弱紋理區域三維重建效果不佳的問題。相比一些文獻的方法,本文方法可以在實體顯微鏡應用場景下重建出物體結構完整性更好、更加稠密的三維點云,且具有很好的魯棒性。