原文: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目錄中...