Poisson Blending(Seamless clone)研究和實現


Poisson Blending 實現了非常棒的效果,可以看 《自己動手,實現“你的名字”濾鏡》 http://www.cnblogs.com/jsxyhelu/p/7216795.html
它的原理在論文《Poisson Image Editing》中進行了比較詳細的闡述,但是英文的大論文看起來的卻比較麻煩,在 https://wenku.baidu.com/view/55ac10a7be1e650e53ea9990.html 找到一篇《方軼智_基於泊松方程的圖像處理 》,這篇成果中,基本把原論文中關於Poisson Blending(泊松融合)的部分翻譯了出來,並且它的綜述部分寫的相當不錯;在http://blog.csdn.net/ZJU_fish1996/article/details/72760571?locationNum=7&fps=1中,作者實現了全文的初略翻譯,有一定參考價值。此外,http://eric-yuan.me/poisson-blending/http://eric-yuan.me/poisson-blending-2/中給出了作者自己的分析和獨立的實現。
我在自己將這些資料進行歸攏,梳理,並提出自己的思考。首先對幾位作者的辛勤工作表示感謝,資料的版權屬於它們。
一、Poisson Blending(泊松融合)為什么能夠產生如此好的效果
           它的基本原理基於人的生物學特性。我們人眼天生就對“突變”更為敏感:比如白紙上的黑線;但是如果這個變化是連續平滑的,那么對人的刺激就要低得多。經過心理學家和計算機科學家的研究,認為二階偏導數對於解決這個方面的融合問題有幫助,所以才有了我們這里的具體實現。
           圖像編輯包括全局變化和局部變化,我們關心的是我們所選中的局部區域中如何幾乎無縫且無影響地嵌入到目標圖像中。傳統的工具來完成局部的剪切,是通過克隆工具直接取代那部分區域的內容,因此選擇的片區域的改變會導致明顯的邊縫。所以為了達到我們想要的理想效果,就迫切地需要一種可以消除邊縫的且不改變圖像其他特征的方法
            這種無縫編輯和克隆方法的核心是數學工具―泊松方程,需滿足在所選區域未知函數的拉普拉斯條件,和它的Dirichlct邊界條件:未知函數的邊界值與目標圖像中所選區域的邊界值相同。在這兩個條件下方程的解是唯一的。首先,心理學家Land和Mccan。在1971年提出通過拉普拉斯算子的限制可以減緩漸變的梯度,當把一幅圖像混淆到另一幅圖像上幾乎注意不到有什么影響。並且,泊松方程可以完成無縫地填滿目標圖像中的選中區域。
          注意,這里的脈絡是
          1、“提出需要解決的問題” --> 解決無縫融合;
          2、“解決問題的方法”-->使用Poisson Blending
          3、為什么-->理解並證明Poisson Blending的特性
二、什么是泊松方程,以及它在圖像處理這里的運用
         粘點百科:
        泊松方程為[2] 
在這里
代表的是拉普拉斯算子,而f和
可以是在流形上的實數或復數值的方程。當流形屬於歐幾里得空間,而拉普拉斯算子通常表示為
,因此泊松方程通常寫成
三維直角坐標系,可以寫成
如果有
恆等於0,這個方程就會變成一個齊次方程,這個方程稱作“拉普拉斯方程”。
 
注意,我們圖像處理,一般來說,都是屬於歐幾里得空間(而不是黎曼幾何空間),也是在三維之間坐標系(而不是極坐標系)中的。

在這不多的幾行字里面,一再提到了“拉普拉斯方程”。實際上,拉普拉斯方程是泊松方程的齊次表達方式。幸好的是,對於拉普拉斯方程我們要熟悉的多,甚至基本知道它的實現方式。
三、主要算法流程
這里的三幅圖片分別對應於”前景“”背景“和結果。在原論文中,直接將前景叫做“引導向量域”(我這樣理解,使用前景來引導背景的向量)
符號的含義:設圖像定義域S為R^2上封閉子集合,是S的一個封閉子集,它的邊界為。令f*為定義在S上一個已知的標量函數,代表S減去的范圍,令f為定義在上一個未知的標量函數。最終,令v為定義在上的向量域。

定義在上f*的最簡單的插值函數f:最小化問題的插值(在邊界是未知等於已知,在內部是梯度變化最小。梯度在二階偏導為0的時候取極值)

        (1)

        其中

        是梯度運算。最小值必須滿足相關的拉格朗日方程。

        (2)

         其中是拉普拉斯算子。

         一個引導域是最小化問題(1)的擴展版本中使用的向量域v:(注意 v 是引導向量,也就是前景)

        (3)

        它的解是Dirichlet邊界條件下泊松方程的唯一解:

        (4)

         其中v= (u,v)的散度。

 

         一個有用的替代方案是理解泊松插值所做的是定義上修正的函數,以保證

       泊松方程(4)隨之成為了以下有邊界條件的拉普拉斯方程:

       (5)

       因此,在內,我們添加的修正是就是邊界上源和目標錯誤匹配(f*-g)的一個插值(membrance interpolant)。這一引導插值的特例被用於無縫克隆。

 
四、簡單的例子證明

1-D EXAMPLE 一維的例子,這個可以自己上手計算跟着看,效果非常好

7

左邊是原圖,相當於前景,紅色直方圖就是引導向量。右邊是背景圖。想把左邊紅色部分移過去,但是又要變化最小,怎么辦?那么就是計算

8    With   f1 = 6, f6 = 1.

因為這些都是正數,也就相當於計算:

9  

分開求偏導數

10

變化為矩陣

11

結論是:

f2 = 6, f3 = 4, f4 = 5, f5 = 3

12

2-D EXAMPLE

1bignum

 

可以直接使用簡化的方式,也就是拉普拉斯算子,進行卷積運算。

13

六、小結
現在看起來,Poisson Blending的卻是很神奇的。固然它的理論還是比較復雜的,但是也只是在偏導數相關,並且最終可以簡化為拉普拉斯。而我們更幸運,OpenCV中已經對其進行了不錯的封裝,我們可以直接調用!然而,對於原理的理解和思考,對於我們儲備基礎知識,解決更為復雜問題一定有幫助。
鎮樓:
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM