イメージのブレ除去
イメージのブレ、つまり劣化は多くの要因から生じます。
カメラを使用して、イメージを取り込む過程での移動、または長い露光時間を使う場合の被写体の移動。
ピンぼけの光学系、広角レンズの使用、大気の乱れ、または、露光時間が短いため、取り込んだフォトン数が少ない。
共焦点顕微鏡での散乱光の歪み。
ブレを含むイメージ、または、劣化したイメージは、"g = Hf + n" という方程式で近似的に記述されます。
g | ブレを含むイメージ |
H | 歪み演算子。"点像分布関数" (PSF) とも呼ばれます。空間領域で、PSF は、光学システムが光源のブレの度合いを表します。PSF は、光学伝達関数 (OTF) の逆フーリエ変換です。周波数領域で、OTF は、線形、位置不変システムへのインパルスの応答です。OTF は、点像分布関数 (PSF) のフーリエ変換です。歪み演算子は、イメージで畳み込みを行ったときに、歪みを生じます。点像分布関数による歪みは、典型的な歪みの 1 つです。 |
f | 元の真のイメージ メモ イメージ f は、実際には存在しません。このイメージは、理想的なイメージ取得条件の場合に得られるものを意味しています。 |
n | イメージの取得時に発生し、イメージを乱す加法性ノイズ |
このモデルをベースに、ブレ除去の基本的な作業は、歪みを正確に表現している PSF とブレているイメージとを分離することです。逆畳み込みとは、畳み込みの効果を元に戻す処理です。
メモ
ブレ除去されたイメージの画質は、PSF の情報によって決まります。
説明のために、この例では鮮明なイメージを使用し、PSF でそのイメージを畳み込むことで故意にブレを追加します。この例では、関数 fspecial
を使用し、ブレの長さをピクセル単位で指定 (LEN=31
) すると共に、ブレの角度を度数で指定 (THETA=11
) して、動きのブレのシミュレーションを行う PSF を作成します。PSF が作成されたら、関数 imfilter
を使用して元のイメージ I
に対して PSF を畳み込み、ブレを含むイメージ Blurred
を作成します。同じイメージを使用して、このプロセスの逆がブレ除去であることを示す方法については、ウィーナー フィルターを使ったイメージのブレ除去を参照してください。
I = imread("peppers.png"); I = I(60+[1:256],222+[1:256],:); % crop the image figure; imshow(I); title("Original Image");
LEN = 31; THETA = 11; PSF = fspecial("motion",LEN,THETA); % create PSF Blurred = imfilter(I,PSF,"circular","conv"); figure; imshow(Blurred); title("Blurred Image");
ブレ除去の関数
ツールボックスには、下記のように複雑さの順に 4 つのブレ除去関数があります。すべての関数は、基本的な引数として、PSF とブレを含んでいるイメージを使います。
最小二乗解を求めます。ブレ除去中に、発生しうるノイズ増幅を小さくするために、ノイズに関するいくつかの情報を与えることができます。詳細については、ウィーナー フィルターを使ったイメージのブレ除去を参照してください。 | |
制約付きの最小二乗解を求めます。ここで、出力イメージに制約を設定しています(平滑化の必要条件は、既定です)。ブレ除去中に、発生しうるノイズ増幅を小さくするために、ノイズに関するいくつかの情報を与えることができます。詳細については、正則化フィルターを使用したイメージのブレ除去を参照してください。 | |
高速の、減衰付きルーシー・リチャードソン アルゴリズムを実行します。この関数は、最適化手法とポアソン統計量を使用して、反復的に計算を行うものです。破損したイメージの中の加法性ノイズに関する情報を与える必要はありません。詳細については、さまざまなイメージの歪みに対するルーシー・リチャードソン逆畳み込みの適応を参照してください。 | |
ブラインド デコンボリューション アルゴリズムを実行します。このアルゴリズムは、PSF の知識なしにブレ除去を行うものです。PSF の初期推定値を引数として渡します。関数 |
ブレ除去の関数を使用するときには、以下を知っておいてください。
ブレ除去は反復的処理です。限られたユーザーの情報を基に、元の絵の最適近似を得るまでブレ除去作業を複数回、各反復でブレ除去関数に指定するパラメーターを変化させながら繰り返すことが必要な場合があります。この作業の中で、新しく見えてくる形状が元の場面の特徴なのか、ブレ除去の過程における単なる偽像 (アーティファクト) なのか、非常に多くの判断を行わなければなりません。
ブレ除去イメージの中で "リンギング" を避けるために、ブレ除去関数に渡す前に、関数
edgetaper
を使用してイメージの前処理を行うことができます。詳細については、ブレ除去されたイメージ内のリンギングの回避を参照してください。独自のブレ除去関数の作成方法の詳細については、ブレ除去に関するユーザー独自の関数の作成を参照してください。