超解像の処理その3:MAP推定

超解像にはMAP推定という計算アルゴリズムが用いられます。MAP推定は、ベイズ推定という計算手法を近似計算する、ベイズ推定の1つの実現方法です。

ベイズ推定は、コンピュータビジョン以外でもさまざまなコンピュータサイエンスで、超解像のような逆推定を行う際に対して用いられています。MicrosoftやGoogleなどもこれらのベイズ確率論を駆使していて、代表的な物には、スパムメールフィルタなどが上げられます(メールの文章構造をもとに、そのメールがスパムかどうかを推定)。

ベイズ推定では、ある出力のデータY(未知。例:超解像画像)がシステムの入力データとして与えられたときに、データX(既知。例:低解像度画像)がなんらかの数式モデル(例:超解像の劣化関数)により生成したとみなし、最適な入力データXの値が取りうる確率分布を計算します。そして、その確率分布のなかで最大の値を最適のXの値として推定するという、ベイズ確率論を用いた逆問題の計算手法です。

ベイズ理論ではXやYといった数式中の変数を、ガウス分布などの「確率分布」として捉えます。したがって、推定するデータも同様に「この超解像画像あたりにこれくらいの確率で分布している」といった確率分布で計算する手法です。しかし、超解像の場合は結果として計算したいのは最適な画像1つだけであり、分布全体を計算したいわけではありません。また、ベイズ推定は確率分布同士を積分でかけあわせる計算なので、まともに全部積分していくと計算コストの高い時間のかかる処理となってしまいます。そこで、超解像では確率分布全体は計算せずに、最適の1つの超解像画像だけを直接推定するMAP推定(最大事後確率推定)という近似計算を行い、ビデオなどの高速な超解像に対応すします。

まずは「なぜ超解像でMAP推定(ベイズ推定)が必要なのか」について考えていきます。

超解像でのベイズ推定の必要性:「ノイズを生じない高周波成分の復元」

超解像の場合、ベイズ推定は「画像の高周波数成分をうまく再現する」ために必要になります(画像の高周波数成分とはエッジなどの細かい部分の際立ちを決める成分)。もちろん事前確率を用いたベイズ推定無しでも前回の「超解像の処理その2:ボケ補正」で紹介した「仮候補との類似度をできるだけ小さくしていく繰り返し処理」によっても十分ボケ自体を除去することはできます。

しかし、この方法だとボケを除去することはできても、同時にアップサンプリング処理で解像度を上げることで「エイリアシング」の影響により高周波数成分のノイズが増えた超解像画像ができあがってしまいます。また、これまで説明してきたモーションやボケが理想的なものであればいいのですが、ボケやモーションが発生する際にインパルスノイズ(小さなホコリのようなノイズ)などが入力画像に混入した場合、劣化関数にはノイズが表現されていないので、ノイズが不自然な形に変形したりして画像中に残ったまま超解像されてしまいます。

こういった理由から、ノイズを上手く取り除いて最適な超解像画像を得る目的で、「ノイズ無しの超解像画像には隣の画素同士が滑らかである」といった「事前確率(分布)」を用いたMAP推定により最適な超解像画像を推定するという方法が用いられています。