[論文メモ] Color Harmonization

SIGGRAPH 2006

元の画像の色をできるだけ保持しつつ色の調和を高める手法の提案

図1は提案手法で調和を高めた例


配色には色々な背景があるが、色の調和は非常に重要。
色の調和とはある特定の内部関係を持った視覚的に心地のよい色の組み合わせのこと。特定の色ではなく色空間での相対的な位置関係で決定される。

アーティストは経験や直感、または本やアプリケーションなどから調和の取れた配色を選び作品の塗り替えを行うが画像が複雑な場合、この作業は非常に手間がかかる。
そこでこの作業を自動化しようというお気持ち

背景

色調和の初期はニュートンゲーテ、ヤング、マクスウェルなどに遡る。
20世紀初頭に発展した現代色彩理論では色調和についても議論さている。
ムーンとスペンサーはマンセルの表色系に基づいた色調和の定量的な表現を導入した。
グランビルとジェイコブソンはオストワルトの表色系に基づいた色調和の定量的な表現を導入した。

イッテンは色相に重点を置いた新しい色相環を提案した。
イッテンは3色(シアン・マゼンタ・イエロー)を基本とした12色の色相環の相対的な位置で調和は決まるとした。
ダイアード(円環で補色の2色)やトライアド(正三角形)、テトラード(正方形)などで決まる配色は調和しているとした。

提案手法では松田によって開発されたスキームに基づいて調和させる(松田のスキームもイッテンの調和概念から派生した)。

調和スキーム

図2にHSVカラーホイール上の色相チャンネル上に定義された8つの調和タイプを示す。
グレーに含まれる色相はテンプレートに従って調和しているとみなされる。
グレーは色相環の相対位置を定義してるもので回転ができる(あくまでテンプレートであり特定の色ではない)。

調和テンプレートには

  • 同じ色の濃淡(i型、V型、T型)
  • 補色を含む同じ色の濃淡(I型、Y型、X型)
  • 複雑な組み合わせ(L型と鏡像)
  • グレースケール(N型)

がある。
(色の調和には主に色相が影響するが彩度や明度も影響を与える。)

この研究ではN型は考えず、他の7つのテンプレートをベース考える。
1つのグレーをここではセクタと呼ぶ(V型は1つ、X型は2つのセクタがある)。

画像が与えられたとき、まず画像がどの調和テンプレートが近いかを測定する。
測定は以下の式を用いる。

F(X, (m, \alpha)) = \Sigma_{p \in X}|| H(p) - E_{T_{m}(\alpha)(p)}|| \cdot S(p)

  •  X:画像全体
  •  p:画像内のピクセル
  •  m:テンプレート( m \in \{i, I, L, T, V, X, Y \})
  •  \alpha:セクタの回転量
  •  H(p)ピクセル pの色相
  •  S(p)ピクセル pの彩度。彩度が高いほど、そのピクセルの色の調和性が目立つため、重み付けのために使われる
  •  T_{m}(\alpha):テンプレート m \alpha回転サせたもの
  •  E_{T_{m}(\alpha)}(p):対象テンプレート T_{m}(\alpha)ピクセル pに近いセクタの境界の色相

この式の値が小さいほどテンプレートに近い(調和している)ということになる。
彩度が調和に与える影響は重み付けで解決してる。

最適化を行い画像 Xに対して最適な調和テンプレート T_mと回転 \alphaを見つける。
調和テンプレートが見つかったあとは色相シフトを行い調和させる。
そのプロセスを示したのが図3。
また図4のように手動でもできる。

色の調和化

最適な調和スキーム T_m(\alpha)が見つかればあとはそれに合わせて色相をシフトすることで色の調和を最適化できる。これを調和化と呼ぶ。

色相のシフト後のピクセル pの色相 H'(p)は以下の式で得る。
 H'(p) = C(p) + \frac{w}{2}(1 - G_{\sigma}(|| H(p) - C(p)||))

ピクセル pの色相をターゲットのセクタとの距離を考慮しつつ、セクタ内に収まるようにシフトする感じ。

だが元画像の色をなるべく維持したまま色相シフトすると図5(b)のようなアーティファクトが発生することがある。
これは図5(d)のように色相シフトしたときに連続領域を分割されるためにおこる。

なおこれはセクタが1つ場合でも起こるので注意(セクタの反対の色相付近とか)。
これを解決するために2つの連続するセクタ境界の間の色相のピクセル集合を \Omegaとしたとき、それらのピクセルをどのセクタにシフトするかラベリングの必要がある。
そこでグラフカットで隣接領域の一貫性を保ったままの色相シフトを実現する。

ピクセル pのラベルを v(p)として
グラフカットで以下のエネルギー関数を最小化し最適なラベリングを求める。
 E(V) = \lambda E_1(V) + E_2(V)
 V = \{ v(p_1),...,v(p_{|\Omega|})

 E_1(V) = \Sigma^{|\Omega|}_{i=1} ||H(p_i) - H(v(p_i))|| \cdot S(p_i)

 E_1(V)は色相シフトするときのコストでピクセルがセクタ中心から遠いほど高コスト。

 E_2(V) = \Sigma_{\{p, q \} \in N} \delta (v(p), v(q)) \cdot S_{max}(p, q) \cdot ||H(p)-H(q)||^{-1}

 Nは4 or 8近傍のピクセル  \delta (v(p), v(q))は隣接ピクセルが異なるセクタにシフトされると1、それ以外は0となる関数。
 E_2(V)は一貫性を保つためのコストで隣接ピクセル同士が異なるセクタにシフトされると高コスト。

これを最適化することでなるべく連続領域は同じセクタになるように色相シフトできる。

ただ問題もあり、同じオブジェクトでも領域が分断されている場合に異なるセクタにシフトされうる。
図7(e)に注目すると女の子の右手がズボンの領域を分断しているため、同じズボンのオブジェクトでも異なる色相にシフトされいる。

これを解決するにはユーザーが手作業ではあるが同じオブジェクトでも異なる領域に割り当てられた部分を指定してグラフカットにヒントを与える方法がある(図6)。


実験・結果

実際の例は図1、3、11の通り。

また前景を固定して背景を前景に調和させることができる。
図12は右下の旗の調和スキームに合わせて画像を調和させた例。

図8はポスターにテキストを調和させた例。
ポスターは変更せず、テキストのカラーを調和させた。


自然画像は通常いずれかの調和テンプレートに収まっていて、それを手動で他のテンプレートにすると不自然な結果になりうる(図9)。

淡い色の画像では効果が薄い(図10)。これは提案手法が色相をメインにしているため。

所感

以前にお勧めされていていたので読んで自分なりにまとめた。
意外と仕組みはシンプルで、すでにある調和のテンプレートに当てはめてそれを調整するというもの。
言われれば調和しているという気もするがプロではないので判断が少々困る。
図12のように指定した色に調和させるのは結構面白い。
デザインに困ったらこのスキームに任せるのはあり。