基于加权最小二乘法的保边缘平滑滤波器(WLS)
引言
陸陸續(xù)續(xù)在計(jì)算攝影學(xué)接觸了不少保邊濾波器,其重要性自不必說,可以用在圖像的增強(qiáng),圖像抽象畫,高動(dòng)態(tài)范圍圖像壓縮,圖像色調(diào)映射等。?
?
今天介紹的WLS(最小二乘濾波器)即使其中一種,論文全稱《Edge-Preserving Decompositions for Multi-Scale Tone and Detail Manipulation》,作者Z. Farbman等,發(fā)表在ACM SIGGRAPH 2007。?
這篇文章是基于最優(yōu)化理論,代碼是公開,點(diǎn)此下載。當(dāng)然有更好的濾波器不斷出現(xiàn)。但是這篇文章核心代碼只有十幾行左右,數(shù)學(xué)功底深厚,方法比較去值得研究和學(xué)習(xí)之用。這篇文章只是我看此論文一個(gè)筆錄,不正確之處歡迎指正。
算法
設(shè)計(jì)一個(gè)保邊濾波器可以看做是兩個(gè)矛盾的目標(biāo)的結(jié)合體。對于一副輸入圖像g,我們目標(biāo)圖像u一方面我們希望其盡可能近似g,與此同時(shí)u除了在g一些邊緣梯度變化比較大的地方外應(yīng)該越平滑越好。形式上,我們尋求最小化下列目標(biāo)函數(shù)的解。?
這里,下標(biāo) p 代表像素點(diǎn)空間位置。目標(biāo)函數(shù)第一項(xiàng) (up?gp)2 代表輸入圖像 u 和輸出圖像 g 越相似越好,第二項(xiàng)是正則項(xiàng),通過最小化 u 的偏導(dǎo),使得輸出圖像 g 越平滑越好。平滑項(xiàng)的權(quán)重分別是 ax 和 ay ,依賴于輸入圖像 g ,想想也是這樣的嘛,當(dāng)輸入圖像的邊緣梯度變化比較大的時(shí)候,我們希望其約束小一些,以保留圖像的結(jié)構(gòu)信息,當(dāng)圖像的邊緣梯度變化很小的時(shí)候,這些細(xì)節(jié)信息我們認(rèn)為其不重要,約束自然可以大一些, λ 是正則項(xiàng)參數(shù),平衡兩者比重, λ 越大圖像也就越平滑。?
將上式寫成矩陣形式(因?yàn)榫仃嚤容^清晰簡潔,很好用的工具,^_^):?
(u?g)T(u?g)+λ(uTDTxAxDxu+uTDTyAyDyu)(2)
這里, Ax 和 Ay 是包含平滑權(quán)重 ax(g),ay(g) 的對角矩陣,一會(huì)兒我們將看到其是輸入圖像 g 梯度的函數(shù)。 Dx和Dy 是離散差分算子。?
這里 u 和 g 都會(huì)轉(zhuǎn)換成向量形式,對上式求導(dǎo)(比較簡單的一步)可得到下列線性方程組,?
(I+λLg)u=g(3)
這里 Lg=DTxAxDx+DTyAyDy 。?
還有平滑項(xiàng)權(quán)重的設(shè)置,作者如下定義?
ax,p(g)=(|?l?x(p)|α+ε)?1(4)
ay,p(g)=(|?l?y(p)|α+ε)?1(5)
l ?是輸入圖像亮度通道的log值(其實(shí)直接用原始圖像也是可行的),可以看出當(dāng) l 的梯度比較大時(shí), ax,p(g),ay,p(g) 會(huì)隨著變小,否則反之。權(quán)重的這樣設(shè)計(jì)是很合理的,可以保留較大的邊緣,平滑不必要的細(xì)節(jié)。?
注意到 Dx 和 Dy 是前向算子( forward difference operators ), DTx 和 DTy 是后向差分算子( backward difference opeattors )。那就是我們的 Lg 是一個(gè)五點(diǎn)空間異性拉普拉斯矩陣( five-point spatially inhomogeneous Laplacian?
matrix )。簡單解釋一下異性,異性因?yàn)?/span> Lg 中 Ax 是個(gè)變量,隨空間位置改變。若它是一個(gè)常數(shù),即隨空間位置不變,那么這樣的矩陣就稱為五點(diǎn)空間同性拉普拉斯矩陣。更多內(nèi)容可以參考 《Efficient Preconditioning of Laplacian Matrices for Computer Graphics》 一文,里面介紹了比較多的拉普拉斯矩陣的數(shù)學(xué)基礎(chǔ)和應(yīng)用。?
這個(gè)算法的核心還是生成拉普拉斯這個(gè)矩陣。?
先準(zhǔn)備一下數(shù)據(jù),一會(huì)兒再來填充一下這個(gè)矩陣。?
第一步根據(jù)圖像 l 的梯度值計(jì)算相鄰像素之間的平滑權(quán)重:
<pre name="code" class="plain">% Compute affinities between adjacent pixels based on gradients of L dy = diff(L, 1, 1); dy = -lambda./(abs(dy).^alpha + smallNum); dy = padarray(dy, [1 0], 'post'); dy = dy(:);dx = diff(L, 1, 2); dx = -lambda./(abs(dx).^alpha + smallNum); dx = padarray(dx, [0 1], 'post'); dx = dx(:);
這一步基本上就是按照公式(4)(5)編寫的,只是lambda前面多了一個(gè)負(fù)號(hào),dx和dy一會(huì)兒將被填充到非主對角線位置,這些元素都是為負(fù)的。?
接下來就是構(gòu)造拉普拉斯矩陣了,這里的拉普拉斯是一個(gè)對稱,只有少數(shù)幾個(gè)對角線有元素,其余為零的稀疏矩陣。
這里A+A′構(gòu)造的是拉普拉斯的非主對角線元素,D是主對角線元素。n,s,w,e是上(北)下(南)左(西)右(東)四個(gè)方位。?
看最終生成的一副拉普拉斯矩陣圖吧。?
?
這張圖中可以看出每一行元素之和都為0。其中緊靠主對角線元素的兩個(gè)對角線填充的是dy元素,比較遠(yuǎn)的對角線填充的是dx元素,這樣拉普拉斯矩陣處理的就是二維圖像了。?
完整的代碼如下:
算法介紹完畢,關(guān)于其應(yīng)用可以參考論文的主頁,見末尾。
關(guān)于拉普拉斯矩陣
拉普拉斯矩陣在計(jì)算機(jī)圖形和計(jì)算攝影學(xué)經(jīng)常會(huì)遇到的,比如說灰度圖像著色問題,泊松圖像編輯,HDR,還有保邊濾波器的設(shè)計(jì),當(dāng)然在計(jì)算機(jī)圖形學(xué)中的也有諸多應(yīng)用,所以掌握其解法還是非常有必要的。?
它經(jīng)常會(huì)出現(xiàn)在如下的最優(yōu)化問題當(dāng)中?
第一項(xiàng)是數(shù)據(jù)項(xiàng),度量 x 與輸入向量 y 的差異,第二項(xiàng)是平滑項(xiàng),度量每一個(gè)變量 xi 與其所在局部窗口中的鄰近像素 xj,j∈Ni 的差異,相對于 Zij 。一般情況下這個(gè)局部窗口我們?nèi)‘?dāng)前像素點(diǎn)的四鄰域或者八鄰域。 ui 和 wij 都是一些權(quán)重信息,與所研究的問題相關(guān),都是非負(fù)的。當(dāng) ui 和 wij 是常數(shù)時(shí)候,這個(gè)問題就是空間同性拉普拉斯,否則就是空間異性拉普拉斯問題了。
參考資料
FARBMAN, Z., FATTAL, R., LISCHINSKI, D., AND SZELISKI, R. 2008. Edge-preserving decompositions for multi-scale tone and detail manipulation. ACM Transactions on Graphics (Proc. SIGGRAPH) 27, 3 (August).?
Krishnan D, Fattal R, Szeliski R. 2013. Efficient preconditioning of laplacian matrices for computer graphics[J]. ACM Transactions on Graphics (Proc. SIGGRAPH), 32,4
轉(zhuǎn)載請保留以下信息
| 風(fēng)吹夏天 | 2015年9月21日 | wincoder@qq.com |
總結(jié)
以上是生活随笔為你收集整理的基于加权最小二乘法的保边缘平滑滤波器(WLS)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TextPad安装环境配置
- 下一篇: cannot find zipfile