超解像の処理その2:ボケ補正

次に、超解像で高画質化処理を担当する「ボケ補正(Image Deblurring)」という技術について解説します。これは劣化関数でのB(ブラー:ぼけ)に対応する処理です。

ボケ補正とは、「ボケフィルタ(通称:ブラー・カーネル)」という画像にボケを作るフィルタにより処理された結果として今の画像になったと考え、そのブラー・カーネルの逆処理を行う事によりボケを取り除いて高画質な画像を生成する処理です。

ブラー・カーネルにより画像にボケを作る処理の手順は、「四角形のグリッドに割り当てられた各値をそれぞれ対象の画素値に順番に掛け合わせて(つまりブラー・カーネルの各値で重み付けし)、それらの和として中心の画素値を出力する」というものです。こういった手順によるフィルタ処理を、グリッドの各値を順番に畳み込むという意味で、一般に「コンボリューション(畳み込み)」と呼びます。例えばガウシアンフィルタの場合ブラー・カーネルがガウス関数であるコンボリューション処理であり、この処理により元画像の各画素ごとに、その周辺をガウス関数の形をしたブラー・カーネルを用いてコンボリューションを行うことで新しい画像のピクセル値を計算し、元画像がボケた画像を生成することができます。

ブラー・カーネルによるコンボリューションの例

そしてそのブラー・カーネル反対の処理を行うのがデコンボリューションというコンボリューションの逆処理です。コンボリューションではフィルタ枠内のの画素値をガウス関数の値によりそれぞれ重み付けして1つにまとめるわけですが、その逆処理であるデコンボリューションでは、ブラー・カーネルの範囲内(例えば9×9画素)の各画素が、それぞれブラー・カーネルによるコンボリューションが行われる前は、どういった値が割り振られていたかを推定することになります。

ブラー・カーネルは実際の画像では当然ながら「光学ボケ」と「モーションブラー」が同居していて複雑な形になるはずですが、ブラー・カーネルがガウスフィルタであると仮定した場合は推定するのが超解像画像だけになるので計算が楽になります。このような理由で、超解像ではブラー・カーネルの形をガウスフィルタなどに仮定してボケ補正を行うことが多いです。

デコンボリューションの処理の手順を説明します。まず始めに、出力の超解像画像の候補を何個か仮に作り、それらの各超解像結果をあるブラー・カーネルでぼかした時に、今の入力画像とどれくらい近いかの類似度の指標を計算します。次に、その類似度の指標がより近くなる方向へ超解像画像の新しい候補を生成した類似度の指標を計算するということを繰り返します。そして、最終的にもっとも類似度が良い値になった時を推定した超解像画像とブラー・カーネルの結果とします。以上が繰り返し処理で理想の超解像画像に近づけていくことによるデコンボリューションの手順です。

通常のコンボリューションのようにブラー・カーネルの形がガウスフィルタのように決まっていると仮定すれば、今説明した繰り返し計算によるデコンボリューションで復元画像を生成することが可能です。しかし、超解像で取り除きたいボケには光学的なボケもあれば、モーションブラー(カメラぶれ)、焦点ボケなどあり、これらが複合的に混ざったブラー・カーネルはガウスフィルタで近似できないので、ブラー・カーネルの形も推定する必要があります。

そこで、復元画像自体と同時に、形が未知であるボケフィルタも推定する処理が行う技術も存在します。これを俗に「ブラインド・デコンボリューション」と呼びます(※ブラインドとは、復元先の高画質の画像が「未知(ブラインド)」であるという意味)。

ブラインド・デコンボリューションの概要

ブラインド・デコンボリューションの仕組みは、この連載の対象読者層向けの難易度を超えてしまうので割愛しますが、このブライド・デコンボリューションも行うと、ブラー・カーネルの形を決めておかなくとも超解像処理が行うことができます。これにより、どのようなブラー・カーネルでもその形を推定することができるので、カメラや対象物が早く動いた事による手ブレによるブラー・カーネルも計算可能です。すなわち、ブラインド・デコンボリューションを用いることで「手ぶれ補正」が可能になるわけです。ただしデコンボリューションの説明で既に述べたように、超解像でのボケ補正は、ブラー・カーネルの形はガウスフィルタなどに事前に固定してしまい、通常のデコンボリューション処理で行うことが多いです。