Local Laplacian Filtering : Image Detail Enhancement and Tone Mapping

http://www.phototalks.idv.tw/academic/?p=1179

memorial_llc_gradientleft: enhanced by fast local Laplacian filtering [2]. N=100,α=0.25,β=0,σr=log(2.5)

, right: enhanced by gradient domain compression[3]

Introduction

本篇利用了標準的Laplacian pyramid,藉由操作修改residual layer來達到detail enhancement與tone mapping的效果。想當然是halo free;此外的特色是no optimizationno gradient domain manipulation,所以適用實作和加速。上圖則是激動人心的差異!

92203ad0721401323a780e6b1a4283f8

 

 

這邊我實作了一個簡易版的 javascript demo ,速度很慢,不要太期待。

 

 

1. Laplacian Pyramid

1.1 Build Laplacian pyramid

參考[4]中敘述,特別提醒residual是當前image減去downsample再upsample的影像,而非減去Gaussian blur後的影像。

laplicianpyramid
An example of detail-manipulated 3-layer Laplacian pyramid. Note the smallest layer contains the low-pass information, and the rest of the pyramid are residual layers which contain the high-pass detail.

 

pyramid 由大到小分別是0到n1

層,第n1

層是一個 low pass 影像,其餘則是不同scale 的 high pass 部分。特別注意 downsampe 是先行 low pass filter 後跳點縮小,若沒有先 low pass 直接縮小,可能會產生較嚴重的aliasing。

下面是建立 Laplacian pyramid的過程,其中Li

Gi分別表第i

層的Laplacian pyramid 與 Gaussian pyramid

  1. Gi+1=downsample(Gi)

 

  • Gi=upsample(Gi+1)
  • Li=GiGi

 

1.2 Reconstruction from Laplacian pyramid

重建影像的方法很直覺,由第n1

層做upsampling後加上第n

層的residual,直到原影像大小為止。

Gi=upsample(Gi+1)+Li

1.3 Accurate Image Up-sampling and Down-sampling in Pyramid-based Algorithm

2. Local Detail Enhancement and Tonemapping

remapping function r(i)

的想法很簡單,在local區域求mean g0,得到中間灰g0±σr、亮部大於g0+σr、暗部小於g0σr

,三種強度分布。對中間灰的部分套用 S-curve強化,亮暗部則是線性壓制強度。

remapfun

r(i)=rd(i)re(i),|d(i)|σr,|d(i)|>σr
  • d(i)=ig0

 

  • rd(i)=g0+sign(d(i))σr(|d(i)|σr)α
  • re(i)=g0+sign(d(i))β(|d(i)|σr)+σr

 

其中rd(i)

re(i)分別表中間灰與亮暗部的轉換。rd(i)利用gamma correction的方式由[0 1]到[0 1]的一個S型的強化曲線;re(i)則是利用β

線性調整強度。

實作上這部分可以將減去g0

的絕對值建表加速,而後再補上sign,可以省去很多計算。

2.1 Eliminate Noise

對於 local enhancement 而言,在 uniform 的區域如藍天,往往會enhance noise,因為在平坦區域的 local mean g0

使 noise 落在中間灰的區域,進而被強化。對於這種地方我們可以考慮使用一些判斷,使r(i)

退化成接近線性輸出,甚至是逆s-curve,進而在保留影像結構的情況下壓抑noise。在[2]中有提及其數學等價於bilaterial filtering。

  • 每一層 residual Li

manipulation 可以帶入 不同的 αi

  • 每個點可以使用不同的 αi,(x,y)

,並且αi,(x,y)

 

  • 在空間的變化是平滑的
inverse-scurve
An inverse s-curve with α>1
memorial_alpha26
An example of inverse s-curve applied image. α=2.6,β=0

 

3. Coordinate Transfer between Pyramid Layers

這部分可為本論文最困難的地方,無論是downsample、upsample或residual sampling,我們都必須要保證座標是精準轉換的。否則將發生如殘影、模糊等意外情形,嚴重挫折玩家信心。幾個重點提醒:

  • downsample影像大小能夠大就盡量大,保留較多資訊,round(3)=2

4. Algorithm

  • For every scale image Gi

and every pixel Gi(x,y) where in2

  • Enhance locally good contrast image using remapping function r(Gi(x,y))
    • .
    • Build local Laplacian pyramid of local image.
    • Replace the corresponded residual by enhanced residual in global Laplacian pyramid.
  • End for
  • Reconstruct final image from enhanced Laplacian pyramid.

5. Speedup Algorithm

5.1 Speedup by multi-pyramids with different mean values

基於"space-time trade-off"的原理,這個方法就是拿記憶體換時間,非常瘋狂,但是已經應用在新版的 Adobe Lightroom.

在原本的 algorithm 中,local enhancement 是針對不同 local mean g0

做的,共需要影像pixel個數這麼多次的 full image pyramid 計算。若我們可以合併不同 local enhancement 的 pyramid 計算,速度就可以大幅增加 (論文中表示約為50倍加速)。

Aubry_fastLLF_siggraph14
Fast Local Laplacian Filters: Theory and Applications Mathieu Aubry (INRIA, ENPC), Sylvain Paris (Adobe), Sam Hasinoff (Google), Jan Kautz (UCL), and Frédo Durand (MIT)

 

離散取樣N

個local means,計算N個由全圖取樣的 Laplacian pyramid。在 residual manipulation時就取相近 local mean 得到的  residual 即可 (Nearest Neighbor method)。而N

的大小控制了記憶體使用量和畫質,如下圖:

dani_synagogue_n20_n100
left N=20

, right N=100

. Note that there are some noisy artifact in both images using nearest neighbor method.

實作上,可能需要一個 histogram 來分析 intensity 的分布,藉此來分配 local means 的分布,不一定是 uniform-spaced 的取樣,才可以在極值附近有較佳的結果,並且N

也不會太大。

5.1.1 linear residual interpolation

使用 nearest neighbor 在 uniform 區域的顆粒感嚴重,所以我們將取離 local mean 最近的兩組 pyramid 取樣做 linear interpolation,藉此消彌明顯的顆粒感。

5.1.2 Gaussian weighted residual

但[2]中提到的 linear interpolation 的結果仍不盡完美,在 uniform 的區域仍有不自然的漸層產生。這邊我將其延伸,擴大 blending 取樣的 pyramid 組數。以 nearest neighbor 找到的 pyramid 為中心,前後各span k=2

組 pyramid,以 Gaussian-like 的 weighting 加權。

這邊使用weighting=19{1,2,3,2,1}

synagogue_bilinear_gaussian
left: linear residual interpolation, right: Gaussian weighted. Both result are compute with N=100
. Note there are some artifacts in uniform region in left image.

下圖展示 Gaussian weighted 的方式,即使在N

不大時也能有不錯的品質。

dani_synagogue_n20_gaussian
Gaussian weighted result. N=20

5.2 Speedup by Local Laplacian Pyramid

 

Reference

  1. Local Laplacian Filters: Edge-aware Image Processing with a Laplacian Pyramid, SIGGRAPH 2011
  2. Fast Local Laplacian Filters: Theory and Applications, SIGGRAPH 2014
  3. Gradient domain high dynamic range compression, SIGGRAPH 2002
  4. The Laplacian Pyramid as a Compact Image Code, IEEE TRANSACTIONS ON COMMUNICATIONS, 1983
廣告

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s