最近看到好幾篇論文如Colorization,poisson image editing等都使用線性系統求解泊松方程。今天找一篇文章簡單推導一下:
參考論文:AppWand: Editing Measured Materials using Appearance-Driven Optimization, SIGGRAPH 07
論文是編輯傳播領域的經典論文,用於將局部的編輯,傳播到圖像的所有區域,實現全局合理的顏色編輯。論文的核心能量函數爲:
E=i∑(ei−gi)2wi+i∑j∈Ni∑(ei−ej)2zij(1)
其中,ei爲待求的編輯參數, gi爲已知的編輯部分,如果第 i 個像素被着色了, 那麼 wi=1, 否則 wi=0。zij 爲已知量的表示像素 i 和像素 j 的相似度。
我們對(1)中 ei 求導有:
∂E/∂ei=∑i2(ei−gi)wi+∑i∑j∈Ni2(ei−ej)zij+∑i∑j∈Ni2(ej−ei)zji
注意最後一項,因爲 ei 和 ej 相鄰,所以, ei 同樣會出現在所有鄰居的鄰居中。
令上式爲0:
∂E/∂ei=∑i2(ei−gi)wi+∑i∑j∈Ni2(ei−ej)zij+∑i∑j∈Ni2(ej−ei)zji=0
∑i(ei−gi)wi+∑i∑j∈Ni2(ei−ej)zij=0
∑ieiwi+∑i∑j∈Ni2(ei−ej)zij=∑igiwi
實際上已經構建了一個Ae=b的線性系統:
Aij=⎩⎪⎨⎪⎧wi+2∑j∈Nizij,−2zij,0,i=jj∈Niotherwise.
上述案例其實完全可以手動推導,只需要給定如下的水平放置的3個像素即可推導。
總的能量公式爲:
E=(e1−g1)2w1+(e3−g3)2w3+(e1−e2)2z12+(e1−e3)2z13+(e2−e1)2z21+(e2−e3)2z23+(e3−e1)2z31+(e3−e2)2z32
∂E/∂e1=2(e1−g1)w1+4(e1−e2)z12+4(e1−e3)z13
∂E/∂e2=4(e2−e1)z21+4(e2−e3)z23
∂E/∂e3=2(e3−g3)w3+4(e3−e1)z31+4(e3−e2)z32
令幾個偏導數 = 0:
e1(w1+2z12+2z13)−2e2z12−2e3z13=g1w1
e2(z12+z23)−e1z12−e3z23=0
e3(w3+2z31+2z32)−2e1z31−2e2z32=g3w3
因此,跟上面的公式保持一致。
如果直接從矩陣形式推導應該也可以,可能會用到如下幾個簡單矩陣求導公式:
參考一本矩陣書:https://www.math.uwaterloo.ca/~hwolkowi/matrixcookbook.pdf