ガウスマルコフ確率場でテクスチャ合成

前回は2値画像モデルだったけど、今回は多値画像モデル。
与えた画像からテクスチャパラメタを推定(最大疑似尤度推定)して、
そのパラメタを使ってテクスチャ合成してみました(3次ガウスマルコフ確率場モデル)。

:布(本物)
:布っぽい模様(合成)


:木目(本物)
:木目っぽい(合成)


布はそれっぽいけど、木目は何か細かさが足りない感じだ。GMRFモデルの限界なのか。

以下、GRMFに関するメモ。

ガウスマルコフ確率場(GMRF)
画像の各画素x_{i}の生起確率がその周辺画素x_{j}の値に依存して決まるモデルを考える。
ガウスマルコフ確率場GMRFは次のように定義される。
p\displaystyle \left(x_{i}|x_{j}\in N_{i}\right)=\frac{1}{\sqrt{2\pi}\sigma}\exp\left[-\frac{1}{2\sigma^{2}}\left\{x_{i}-\mu-\sum_{j\in N_{i}}\beta_{j}\left(x_{j}-\mu\right)\right\}^{2}\right]
N_{i}x_{i}の近傍画素集合。\muは画像の平均値。\beta_{j}はテクスチャを制御するパラメタとなる。
近傍範囲を大きくとるほどパラメタ数が増える。

■テクスチャ合成
テクスチャ合成においては、適当に初期値を決めて、以下の疑似尤度$PL$が
最大になるように各画素値x_{i}を決定する。
画像全体{x}=\left\{x_{i}\right\}の疑似尤度PL:
PL({x})\equiv\Pi_{i}p\left(x_{i}|x_{j}\in N_{i}\right)

テクスチャ合成処理は以下の最大化問題を解くこととなる。
テクスチャ合成画像\displaystyle {x}^{*}=\arg\max_{{x}}PL({x})
上記の最適化方法として、マルコフ連鎖モンテカルロ法(MCMC)という乱数を使った最適化アルゴリズムが知られている。
MCMCには、各画素を尤度に従って発生させた乱数で書き換えていくギブスサンプラーや、
現在の画像{x}を少し更新させた画像{x}^{\prime}を乱数によって受理/棄却を繰り返すメトロポリス・ヘイスティング法が知られている。
ただし、単純にPL({x})を最大にしたければ各画素値を x_{i}=\muとすればいいわけなので、
上記疑似尤度の最大化に加えて別の制約条件が必要となる。
ここでは、画像の濃度ヒストグラムが初期状態から変更しないという制約をつける。
この濃度ヒストグラムを変更せずに、疑似尤度を最大化するアルゴリズムとして、
交換アルゴリズム(spin-exchange法)が知られている。これは、ランダムに2つの画素を
選択して、その画素値を交換した画像を{x}^{\prime}としたメトロポリス・ヘイスティング法。
spinというのは、イジングモデル最適化の由来?

■与えられた画像からテクスチャパラメタ\beta_{j}の推定
画像データ{x}が与えられた時、パラメタ\beta_{j}を疑似尤度PLが最大になるように決める。
推定はPLをlogをとったものを\beta_{j}に関して微分してゼロにし連立方程式を解く。

\displaystyle \frac{\partial}{\partial\beta_{j}}log\left(PL\right)=0
\displaystyle \Leftrightarrow\frac{\partial}{\partial\beta_{j}}\left\{x_{i}-\mu-\sum_{j\in N_{i}}\beta_{j}\left(x_{j}-\mu\right)\right\}^{2}=-2\left(x_{j}-\mu\right)\left\{x_{i}-\mu-\sum_{j\in N_{i}}\beta_{j}\left(x_{j}-\mu\right)\right\}=0
\Leftrightarrow\left(\left(x_{j}-\mu\right)\left(x_{1}-\mu\right),\left(x_{j}-\mu\right)\left(x_{2}-\mu\right),...,\left(x_{j}-\mu\right)\left(x_{n}-\mu\right)\right)\left(\beta_{1},\beta_{2},...,\beta_{n}\right)^{T}=\left(x_{j}-\mu\right)\left(x_{i}-\mu\right)
行列の式で書くと、

これを解いて\beta_{j}を求める(疑似最尤推定)。