水下光學攝影跟聲納比起來,具備提供更高解析度影像的潛力。而影像的清晰度很大程度取決於水質。在混濁的水中,開啟使用在低光線情況下的照明會造成反向散射(backscatter),或者照射在水中微粒的光線反射回攝影機(如同在霧中開車更為困難一般)。
為了處理這樣的挑戰,SINTEF與歐洲各地的合作夥伴一同開發了為混濁環境設計的攝影系統-UTOFIA(圖1)。
影機以每秒10~20個畫面的速度傳遞3D影像,攝影範圍最高可達15公尺,在深達300公尺時的解析度有1公分。它使用了距離選通攝影(range-gated imagin,請見補充說明)來將反向散射的影響降至最低,並取得視野中的物體距離資料(圖2)。
![圖2 : (左)以UTOFIA攝影機拍下的影像,並透過上色來顯示距離資料。(右)以一般攝影機拍下的相同場景影像,可看到有反向散射的情形。](/art/2019/04/171404082300/p2S.JPG)
圖2 : (左)以UTOFIA攝影機拍下的影像,並透過上色來顯示距離資料。(右)以一般攝影機拍下的相同場景影像,可看到有反向散射的情形。 |
|
我們開發演算法來處理從攝影機取得的原始資料,並製作3D、無反向散射的影像。這對我們來說是全新的領域,且需要快速的測試新的想法。透過MATLAB的整合式環境,以及其強大的視覺化支援,我們可以嘗試超過40種不同的方法與技巧。在Python或C++,每一次的實現和測試都會需要比較多的時間,也不可能讓我們有足夠時間進行這麼多次的測試。
距離選通攝影(Range-gated Imaging)
與其利用持續的光線照亮目標,距離選通攝影使用的是由閃光雷射(strobed laser)產生的毫微秒長(nanosecond-long)的光脈衝。從目標物之前的微粒所反射的光回到攝影機的時間會稍稍早於從目標物反射回攝影的光。我們可以透過控制攝影機快門,僅捕捉光從目標反射回到攝影機的瞬間以及非常些微從水中微粒反射的光的畫面,來抑制反向散射效果(圖3)。除此之外,我們可以測量光脈衝個別返回攝影機的時間,再乘上光速,便能準確地判斷與目標之間的距離。
![圖3 : 上:距離選通攝影機的原理示意。下:攝影機拍攝不同距離取得的畫面。](/art/2019/04/171404082300/p3S.JPG)
圖3 : 上:距離選通攝影機的原理示意。下:攝影機拍攝不同距離取得的畫面。 |
|
初始資料分析與峰值偵測
不同於傳統的數位攝影機產生2D陣列像素,我們攝影機產生的是3D陣列方塊,每個方塊所記錄的值代表光在視野的特定區域,以及與攝影機的特定距離下反射的強度。為了要從攝影機所產生的幾十億位元組資料中萃取出有用的影像,我們的演算法必須要能夠從這些強度值資料辨別出峰值(圖4)。外部因素會影響峰值的位置,在水中的散射可能也造成錯誤的峰值。這些原因都有可能降低產生影像的清晰度以及3D重建的品質。
![圖4 : 照片幾個點之中(上圖)當強度為距離的函數時的峰值(中與下)](/art/2019/04/171404082300/p4S.JPG)
圖4 : 照片幾個點之中(上圖)當強度為距離的函數時的峰值(中與下) |
|
為了實際了解機械機制,我們針對水的各種混濁度以及攝影機的設定執行了大量的統計分析。這些分析包含建立以經驗為依據的反向散射模型、研究向前散射的特性、以及建立特性響應的探測器模型。
我們也開發了一個MATLAB app來控制資料捕捉的流程,並且把這個流程自動化(圖5)。這個app包含了介面元件來控制脈衝的掃射,以及一個我們用來配置拍攝設定及其他攝影機零件的.NET介面。
![圖5 : 用來自動捕捉資料的MATLAB app。](/art/2019/04/171404082300/p5S.JPG)
圖5 : 用來自動捕捉資料的MATLAB app。 |
|
開發3D重建演算法
攝影機硬體已大幅削減反向散射,但可以透過軟體再更進一步地降低反向散射帶來的影響。我們開發了一個在不同混濁程度下的反向散射響應模型,並實現幾個演算法來降低反向散射效果。在此探討了幾個替代方案,包含同態過濾(homomorphic filtering)以及直方圖均衡化(histogram equalization)之下的變異,最後我們選擇了非銳化過濾(unsharp filtering),這也改善了3D性能。除此之外,也為攝影機的校準、3D估計、峰值偵測、峰值擬合開發了演算法。
影像資料的視覺化
當我們分析了資料並開發3D重建演算法之後,需要把結果與其他UTOFIA夥伴分享。因此,建議另外一個MATLAB app來視覺化UTOFIA影像資料(圖6)。這個app包含調整選項以及演算法參數的控制,像是對比、對焦、雜訊移除、直方圖均衡化等等。使用者可以設定這些參數並立即在螢幕上看到調整後對結果的影響。
我們透過MATLAB編譯器(MATLAB Compiler)把app包裝一個獨立版本,並且發布給合作夥伴,讓他們提供一些回饋以及改善的需求。利用MATLAB與MATLAB編譯器,可以在短短幾天之內就把夥伴們要求的變更實現出來。如果是用C/C++或其他類似語言來實現這些變更則可能要花上好幾週,或甚至好幾個月。
持續的開發
我們已經完成UTOFIA計畫的第一階段,攝影機與核心軟體的開發。現在在影像和3D資料上執行額外的處理以因應特定產業應用,並開始研究計畫的第二階段:應用影像的機器學習與深度學習來辨別物體與其他現象。
即時3D資料的取得開啟了改善漁業及水產養殖業流程的全新可能性,特別是自動化的計量分析。舉例來說,我們在一家西班牙的水產養殖機構利用攝影機來辨識及測量鮪魚的長度(圖7)。
![圖7 : 經由UTOFIA攝影機產生的鮪魚測量結果。](/art/2019/04/171404082300/p7S.JPG)
圖7 : 經由UTOFIA攝影機產生的鮪魚測量結果。 |
|
另外是在挪威的一研究單位,利用UTOFIA來進行行為分析,在一段時間之內追蹤個別魚隻,估計其游泳的速度和型態(圖8)。
同時,在水產養殖業嘗試使用攝影機時,可以在低亮度且高混濁度的條件下觀察魚類和其他水產生物以進行生物質量估計(圖9)。
![圖9 : (上)影像加上長度的估計值。(下)用來追蹤單一魚隻的影像](/art/2019/04/171404082300/p9S.JPG)
圖9 : (上)影像加上長度的估計值。(下)用來追蹤單一魚隻的影像 |
|
若是使用傳統水下攝影機,是非常難以在這樣的條件下進行探測的。
(本文由鈦思科技提供;作者Jens Thielemann、Petter Risholm、Karl H. Haugholt任職於SINTEF公司)