Band-Sifting Decomposition for Image Based Material Editing (その1)
Band-Sifting Decomposition for Image Based Material Editingは, 入力画像の質感編集を多重解像度の画像分解と単純なフィルタ処理で実現する論文です.
今年のCG技術の実装と数理でこの論文を選びましたので, 数回に分けて技術紹介しようと思っています.
概要
写真を撮影した際,肌のテカリを抑えたい,ニキビを隠したいといったケースはよくあると思います.Photoshopのような画像処理ソフトを使えばこういった修正は可能ですが,領域選択や特殊なツールの知識が必要だったりとなかなか面倒です.新たな写真を撮った時,一からこの作業を始めなければいけないですし,入力が動画になるともう対応できません.そこで,この論文では,画像を多重解像度で分解し,簡単な2次元画像のフィルタ処理で質感編集を可能にする手法を提案します.フィルタ処理のパラメータは画像の質感に関連していて,肌のテカリを抑える・ニキビを隠すといった編集を共通のパラメータ設定で行えるようになります.従って入力画像が変わっても同じパラメータで同様の質感編集ができますし,動画への応用も容易に可能です.
手法詳細
入力画像の多重解像度分解
この論文では,入力画像の多重解像度分解としてBilateral Pyramidを採用しています.初期段階でLaplacian Pyramidも試してみたらしいですが,エッジ付近にアーティファクトが出てしまったため,エッジ保存ができるBilateral Filterによる分解を最終的に選択しています.分解を高速にするため,Bilateral Filterを高速に近似できるGuided Filterを基本のフィルタ処理にしています.
入力画像を$I$とした時,エッジ保存フィルタの処理を以下のような形で考えることができます.
$I’ (p) = f (p, I, \sigma_s, \sigma_r) = \sum_q W_{pq} (I, \sigma_s, \sigma_r) I (q)$
ここで,$\sigma_s$と$\sigma_r$は,座標と色の類似性に関するパラメータを表し,画素$p$に対する画素$q$の重み$W$が計算されます.
多重解像度分解では,色に関する重みを制御するパラメータを$\sigma_r = 0.01$として固定し,$\sigma_s$を2倍にスケーリングしながら複数回エッジ保存フィルタをかけます.
入力画像を$I_0 = I$として,$I_k = f (I, 2^k \sigma_s, \sigma_r)$を計算し,周波数毎の差分$D_k = I_{k - 1} - I_{k}$から, $I = \sum_1^n D_k + I_n $で画像の形で画像を分解することができます.
論文中では,Lab色空間のL値にlogをかけたものを入力画像$I$として採用し,$n = 8$で多重解像度画像を構成しています.
多重解像度特徴(Subbdand)のグループ化
Subband(多重解像度特徴) $D_k$の中から,質感編集に関わっている物を選別し,グループ化します.
- Frequency (8段階): 高周波か低周波か?
- Sign (2段階): 正か負か?
- Amplitude (2段階): 特徴が強いか弱いか?
上記Subbandとの編集したい特徴との関連についても分析しています.
- テカリ (Specular): 高周波,正で強い特徴部分.
- 肌のくぼみ,皺等 (Shadow): 高周波,負で強い特徴部分
- ニキビ等 (Albedo): 低周波,負で弱い特徴部分
Specular, Shadow, Albedoの性質を考えれば,何となく合っているような気がします.
Subbdandの調整による質感編集
編集しなければいけないSubbandが段々と見えてきましたので,ターゲットの質感に合わせてSubbandの強調フィルタ処理を行います.
基本的には,Subbandを選択する関数 $g (p, D_k, k, t_f, t_s, t_a) \in [0, 1]$が定義されていて,特徴の周波数のレベル $k$, 特徴の正負 $sign (D_k (p))$, 特徴の強度$ | I_k (p) |$から調整すべき特徴かどうかを決定します.$t_f \in [high, low, all]$, $t_s \in [pos, neg, all]$, $t_a \in [high, low, all]$はそれぞれ周波数,正負,強度の選択に関するパラメータです.
選択されたSubbandに対して,強度調整パラメータ $\lambda$をかけることにより, $D’_k = \lambda g (p, D_k, k, t_f, t_s, t_a) D_k$ としてSubbandを調整していきます.
調整されたSubband $D’_k$で元の$D_k$を置き換えれば, $I = \sum_1^n D’_k + I_n $ の形で質感が編集された画像が得られるという仕組みです.
周波数毎の特徴を簡単なパラメータでいじっているだけなのですが,見た目としても割と自然な状態のまま質感編集が行われています.
終わりに
今回の記事では,論文の中の質感編集の仕組みに関してまとめてみました.比較的に単純な仕組みですが画像固有の編集をする必要が無く,結果を大量生成出来て面白いのではないかと思います.実装してみた実験結果や論文の評価実験に関する記述部分は次回以降の記事にまとめたいと思います.
参考文献
[1] Band-Sifting Decomposition for Image Based Material Editing: http://www.cs.cornell.edu/projects/band_sifting_filters/