Data-driven Color Manifolds

今年のSIGGRAPH勉強会でPerception & Colorのセッションを担当したので,Data-driven Color Manifoldsを読みました.

バナナのSOMマップ

概要

この論文では,画像セットの特徴を良く表すピクセル集合で低次元の1次元マップや2次元マップを構成することにより簡単な画像編集を実現するのが目的です.

Adobe Photoshopのような画像処理ソフトウェアでは,色相・彩度・明度をスライダーでコントロールして色補正できますが,目的の色を近づけるためには色相や彩度をいじるとどのように色が変化するかの基本理論を知っておく必要があります.

提案手法により計算された低次元の1次元マップや2次元マップを使えば,元画像セットの中に含まれているピクセルの周辺色がマップ上に出てきていますので,使いそうな色が目で見える位置に配置されているので直観的です.

この論文では,低次元のマップを埋め込む方法として,PCA (Principal Component Analysis),MDS (Multi-Dimensional Scaling),SOM (Self-Organizing Maps)を比べて比較しています.

  • PCA: データを良く表現するような直交軸を求めてマップを構成.
  • MDS: データの距離をなるべく保つような変換が行われる.
  • SOM: ランダムに初期化したマップをデータサンプルで少しずつ置き換えてマップを構成.

PCAやMDSはCGでも良く出てきますがSOMは見慣れないのと,結果も一番良いので以下で少し解説したいと思います.

SOM (Self-Organizing Maps)

ここでは,論文で使われているSOMの処理手順について簡単に解説します.

まず,事前準備として,画像セットからサンプルピクセル集合を取ってきます.1枚の画像の処理では,まず背景除去処理を行い,前景部分のピクセル列を16x16x16のビンに入れます.最大ヒストグラムの15%以上のビンを残し,その代表色でサンプルピクセル集合を構成します.それを画像セット分だけ繰り返します.

次に,SOMの手順について解説します.

  1. マップ上のピクセル列(ユニット)をランダムに初期化.
  2. サンプルピクセル集合から1つサンプルピクセルを選択.
  3. サンプルピクセルに最も似ている色を持つユニット(BMU: Best Matching Unitと呼ぶ)を探す.
  4. BMUの周りのユニットを重み付でサンプルピクセルに近づくよう更新する.
  5. 2の手順に戻る.

基本的には,これを繰り返すだけなので単純な結果を見るだけなら簡単にプログラムを作成することが出来ます(コードはGitHubに上げました).

背景除去処理をさぼっていますが,一枚の画像から下に示すような低次元のマップを構成できます.

リンゴのSOMマップ

チューリップのSOMマップ

空のSOMマップ

データを表現する軸を求めてマップを構成するPCAやMDSではサンプルピクセルに出てこないピクセルがマップ上に表れやすいのに対し,処理手順からも分かりますがSOMではマップ上のピクセル列はサンプルピクセル集合のどれかに近い色となっています.

画像セットに対しても,SOMを適用してみました(8/31追記).

バナナのSOMマップ

花のSOMマップ

空のSOMマップ

その他応用

論文では,さらにパレット色を抽出したり,色置き換えの提案をする応用例もありますので興味がある方は論文を見てみると良いかと思います.

参考文献

[1] SIGGRAPH2015勉強会: http://www-ui.is.s.u-tokyo.ac.jp/misc/seminar/s2015/
[2] Data-driven Color Manifolds: http://resources.mpi-inf.mpg.de/ColorManifolds/