スパースモデリング第10章の画像のボケ除去:実践例を実装した。GitHub上のJupyter notebookへのリンク
結果
画像をぼかして雑音を加えた。反復縮小法でボケ補正した。
画像サイズ:$256 \times 256$
ボケカーネル:$\frac{1}{i^{2}+j^{2}+1} (-7\leq i,j \leq 7)$)
雑音レベル:$\sigma^{2}=2$
SSFはアルゴリズム名。SSF-LSは直線探索を追加、SSF-SESOP-5は逐次部分空間最適化(5個前までの勾配を用いる)を追加したもの。数字はピーク信号対雑音比(PSNR; peak signal to noise ratio)[db]。
アルゴリズム
分割可能代理汎関数(SSF; separable surrogate functional)
$$ \mathbf{x_{\rm{k+1}}} = S_{\rho, \lambda / c} (\mathbf{x_\rm{k}} + \frac{1}{c}\mathbf{A^{\rm{T}}}\mathbf{H^{\rm{T}}}(\mathbf{\tilde{y}}-\mathbf{H}\mathbf{A}\mathbf{x_{\rm{k}}})$$
$\mathbf{H}$はボケカーネル。$\mathbf{A^{T}}$はレベル2(非縮小)ウェーブレット変換。$\mathbf{\tilde{y}}$はボケ画像。$\mathbf{x}$はウェーブレット係数。$S_{\rho, \lambda / c}$は縮小の演算子。$c$は規格化定数($c=1$)。
レベル2(非縮小)ウェーブレット変換の例
縮小
L1ノルムをなめらかにした$\rho(x)=|x|+s\log(1+|x|/s)$で$x$の大きさを測ると(s=0.01とする)、$S_{\rho, \lambda / c}$は解析的に求まる。ラグランジュ乗数$\lambda=0.075$とした。
$$ x_{opt}=\frac{(x_{0} - s - \lambda )+\sqrt{(s+\lambda-x_{0})^{2}+4 s x_{0}}}{2} $$
参考
Michael Elad 著、玉木 徹 訳、スパースモデリング、共立出版、第10章