基於建立模板的消除水下扭曲成像

2021-07-11 17:34:15 字數 3015 閱讀 8617

原文:seeing through water:image restoration using model-based tracking(the robotics institute, carnegie mellon university).2009 ieee 12th international conference on computer vision(iccv).

提出的問題

對水中物體成像,如圖1所示。由於水面不是平面具有波動,光線在傳輸過程中經歷折射和反射,最終到達相機會出現影象扭曲。

圖1 水下成像示意圖

解決思路

對每一幀影象的扭曲情況進行測量,實時還原退化影象。具體來說就是根據波動方模擬水面波動所造成的扭曲,建立乙個waterbase,包含不同扭曲情況(可以認為是基向量),再將影象序列扭曲用waterbase和投影係數表示,在復原影象的同時,用較小的儲存空間(waterbase+係數)可以重建每一幀的扭曲影象。

兩個要點

1.waterbase是否可以有效的描述所有扭曲情況,包括同一幀的不同扭曲,不同幀的扭曲。2.即使第一點成立,那麼如何獲得每一幀的扭曲影象,在不知道靜止影象的前提下。

模型建立

圖2  水下

成像模型

如圖2所示,ig代表靜止波面時所得像,i代表退化影象,水面扭曲為w,因此i就是ig和w的函式,可由下式表示:

i(x,t) = ig(x+w(x,t))

並有水面波動方程:

當水面波動

w與水面高度

h相比較小時,有

上式可通過向前尤拉公式求解:

h(x,t + δt) = 2h(x, t) − h(x, t − δt) +c2∇2h(x, t)(δt)2     (2代表平方)

因此,如果已知h(x,0)和h(x,1)就可以模擬出任意時刻的扭曲。如下圖所示,上下第一幅圖是原圖,隨後是模擬的扭曲圖形。

圖3  扭曲模擬

建立waterbase

文中將原影象做分塊處理,優化起來更容易。

waterbase

是57*40*2*10

的矩陣,前兩維代表

57*40

的影象塊,

2分別代表在

x,y兩個方向座標的變化,

10代表塊數量。表示式可以寫為:

b(x) =[b1(x), b2(x), . . . ,b10(x)]

%waterbase

任意扭曲

w(x,t)

≈b(x)p

%p為投影稀疏

數量塊為

10是因為假設了水面波動是較為平緩的,因此對一系列扭曲w做

pca後,前

10個特徵向量認為是比較大的扭曲情況,除此之外的就忽略了。 如圖

4所示,根據輸入的水波波速以及一些引數建立的

圖4   waterbase示意圖

下面就是兩個問題,第一,

waterbase

由於只取了前

10個特徵值,描述的是否準確

?第二,如果準確的話,怎麼用其進行描述,即序列影象的畸變如何獲取

?第乙個問題,作者從主觀視覺考慮,輸入一**像,通過波面方程模擬其扭曲,再通過

waterbase

投影,重構扭曲,對比模擬的扭曲和重構扭曲影象視覺效果,如下圖所示

圖5   waterbase重構扭曲圖

第二個問題,向

waterbase

投影的前提是知道扭曲w。

如果有靜止影象,將每一幀影象與靜止影象相減,就可以到不同幀的扭曲影象,但是現在沒有靜止影象。

這裡簡單介紹下思路:

分別代表在s和

t時刻的扭曲影象座標,ys,yt對應與平靜影象下的座標,因此有:

ig(ys) = i(xs)   ,ig(yt) = i(xs)

可以理解為靜止影象和扭曲影象的亮度值分布是近似的,只是由於扭曲,一些點的座標發生兩維度的位移。 

這就意味著針對一組ps,pt,可以得到一組ys,yt,也即平靜影象ig(ys)和ig(yt)

而我們認為靜止影象是不變的,因此可通過最小化兩幅計算出的靜止影象的差來優化出ps,pt,從而建立原圖扭曲。 即下式:     

圖6  復原影象實驗結果

具體實現過程的一些技巧以及實驗結果參見文獻。

es建立模板

建立模板 注 1.讀取templatefilepath目錄下所有.json結尾的檔案 2.模板名為檔名稱 3.模板內容為檔案內容 param templatefilepath 模板檔案路徑 public static void createestemplate string templatefile...

LXC之三 建立模板

所謂的模板就是乙個原型,依據該原型可以建立一系列類似的lxc 虛擬機器,如果使用 lxc 1.0.0.3 自帶的模板,那麼該原型只提供最基本的配置,如果想使用 vim,對不起,沒有,如果想使用 gcc,抱歉,依然沒有,如果想使用 mysql 更是沒有。這裡所說的模板製作,只是乙個比較簡單的最基礎的製...

Django框架學習 5建立模板

如何向請求者返回乙個漂亮的頁面呢?肯定需要用到html css,如果想要更炫的效果還要加入js,這麼一堆欄位串全都寫到檢視中,作為httpresponse 的引數就太麻煩了。在django中,將前端的內容定義在模板中,然後再把模板交給檢視呼叫,各種漂亮 炫酷的效果就出現了。在templates目錄中...