あのねノート

せんせいあのね、パソコンで字が書けるようになったよ

画像復元の勉強をしようとしました

画像処理の講義の小テストの勉強をしていて、ざっくりまとめようと思いました。フーリエ展開を使うということで、数式がたくさん出てきてこんがらがりそうなのでできるだけ使わずに書きたいと思います。そもそも数式の書き方わかってないし…

 

前フリ

画像復元というのは劣化した画像をもとに戻す処理のことです。二次元画像は二次元関数として表すことができるので、画像の劣化も何らかの関数(劣化関数)で表せると考えられます。ということは、元に戻す変換関数があれば画像復元ができそうです。

画像劣化は、劣化した後の画像の2変数と真の画像の2変数を合わせた4変数関数である劣化関数を真の画像の2変数で積分したものと、劣化した後の画像に載るノイズを表すノイズ関数(劣化画像の2次元だから2変数関数)を足したもので表されます。積分が2重だ…やめて~という気持ちです。

 

画像復元をする考え方には次の2種類あります。

  • 周波数領域での復元
  • 実空間での復元

周波数領域での復元は、画像をフーリエ変換して復元するという考え方で、実空間での復元は、実際に表示した画像を直接復元するという考え方です。

 

周波数領域での復元では「劣化関数の位置不変性」の仮定が必要です。

劣化関数による劣化が画像上の位置に依存しないと仮定できれば、劣化関数の積分フーリエ変換を施して計算量を減らすことができるからです。

 

実空間での復元にあたっては、3つの仮定が必要です。

  • 劣化した画像の1点に対して芯の画像の1点が1対1対応でゆがみを与える
  • 真の画像の一部が直接観測可能
  • 座標値と画素値の2種類の歪みがあり、これらは独立

周波数領域での復元

4変数関数(劣化画像2変数+真の画像2変数)である劣化関数が位置に依存しないとすると、劣化関数は真の画像に対する劣化画像の相対座標を使って2変数関数で表せます。こうすると劣化関数がたたみこみの形になって、なんだかんだ考えると結局周波数領域での復元処理は元に戻すための2変数関数フーリエ変換を作ればいいことになります。ここでフーリエ変換習いかけの数学弱者であるわたしは頭を抱えるわけですが、それはさておきこういう元に戻すための関数を2次元フィルタと呼ぶそうです。

これから扱うのは逆フィルタとウィーナフィルタの2種類です。

  • 逆フィルタ

 ノイズが0で劣化関数が0でないと仮定すると、復元するためのフーリエ変換は劣化関数のフーリエ変換の逆数で表されるそうです。そんなに単純でいいのかという気持ちになりますが、これを(単純な)逆フィルタと呼びます。

 ノイズが存在するときは、観測画像(復元する対象)は帯域制限されていること、ノイズの値は画像信号の値に比べて小さいことを仮定します。すると劣化関数が0でないとき、画像に含まれる最高周波数を超えた領域では画像の成分は0になってノイズの成分だけが残り、そうでない領域では画像成分がノイズより大きくなります。したがって復元関数は、最高周波数より低い領域では単純逆フィルタと同じく劣化関数のフーリエ変換の逆数、最高周波数より高い領域では1となります。

  • ウィーナフィルタ

 ウィーナフィルタでは復元した画像と真の画像の誤差が最小になるようなフーリエ変換を推定するという考え方が用いられていて、同じ被写体を同じ条件で撮影した画像たちの集合があるとしたときの統計的性質を利用しています。ノイズにも統計的性質を仮定します。

 具体的に言うと、復元した画像と真の画像の誤差のノルムを2乗したものの集合平均を最小にするようなフーリエ変換を推定する問題となります。ノイズは画像や劣化関数と無相関であるとして、なんだかんだ計算すると劣化関数の複素共役やら劣化関数の絶対値の2乗やらが出てくるのですが、結局のところノイズが0だと逆フィルタ(劣化関数のフーリエ変換の逆数)に一致します。

 

周波数領域での復元では、画像全体を一様に考えるので全体にノイズが残るという特徴があります。

 

実空間での復元

実空間での復元は、座標値と濃度の歪みが独立であるとしてそれぞれ復元します。

 劣化した後の画像のx,y座標はそれぞれ真の画像の座標を用いた2変数関数になるということにして復元します。具体的な手順は次のようになります。

①劣化モデルを選ぶ

 座標変換モデルでよく使われるのはアフィン変換と歪(ひずみ)の2種類です。

 アフィン変換は劣化画像のx,y座標を真の画像の座標を用いて2変数1次関数で表すものです。

 歪はレンズに起因する歪みで、樽型と糸巻き型が知られています。樽型は中央に向かってへこむようにゆがむ感じ、糸巻き型は中央から膨らむようにゆがむ感じです。

②基準点を選ぶ

 観測画像上の位置が明確で、理想画像での座標がわかっていることを条件に基準点を選びましょう。

③補正式を決定する

 観測画像と理想画像で基準点の座標値が正確に計測できたら、補正指揮のパラメータを決めるのに必要な基準点の数が分かるそうです。難しいこと言うなあ。でも実際は誤差が出るので多めに基準点を取って最小2乗法でパラメータを決めます。④再配列

 補正式は連続関数なので、ディジタル画像の格子構造が保てません。なので補正式から理想画像の座標に対する観測画像の連続的座標値を求めたら、理想画像の画素を観測画像中に並べることになります。これが再配列です。⑤補間

 再配列によって埋め込んだ座標値での画素値を、観測画像での座標値をもとに決めます。3種類の方法が挙げられています。

・最近隣補間法

 理想画像の画素値を、観測画像内で最も近い座標点での画素値にします。観測画像のデータをそのまま使うのでデータが壊れないという利点がありますが、ディジタル画像だともともと画素がなかったところの座標値も必要になるので画質が落ちます。

・共1次補間法

 理想画像の座標値の近傍4点に相当する格子点の画素値から線形近似を行います。格子の中の画素値は格子の4隅の値から推定するという感じです。

・3次たたみ込み補間法

 求めたい座標が含まれる格子の周囲の格子点の画素値を使ってsinc関数の重ね合わせで求めたい座標値の画素値を求めます。sinc関数はsin(x)/xと定義されます(数式使っちゃった)。

これで座標値の補正は完了です。

  • 濃淡補正(濃度の歪み)

 カメラのレンズは中心部から離れるほど光が入らなくなるので、厳密には得られる画像は周辺が暗くなっています。この劣化を画像の位置の関数として表して、元に戻す関数を作って濃度を補正します。

 光学系の劣化はカメラの設定などを変えない限り一定だと考えられるので、同じ条件で色が一様な被写体(真っ白な板を使うそうです)を撮影して補正画像を作ると濃淡を補正できます。

 

撮影した画像は真の画像の写像で、それを逆関数で元に戻すというような試みが画像復元と言えるのかなと思いました。

長くなってしまってすみません。自分用に使えるかなと思ったのですがなんだか読みにくいな?LaTeXみたいに箇条書きの中身がきれいにそろうようになればいいのになと思いました。