(57)【要約】【課題】アーチファクトが抑えられた超解像を可能にする。【解決手段】本発明の一態様としての画像処理装置は、位置生成部と、重み算出部と、画像生成部とを備える。前記位置生成部は、入力フレームの画素毎に、前記画素の位置情報と、基準フレームに対する前記画素の動きベクトルとに基づき第1フレームにおける第1位置情報を生成する。前記重み算出部は、前記第1フレームの画素に対して前記第1位置情報が示す位置からの距離に応じた重みを算出する。前記画像生成部は、前記第1フレームの画素毎に、前記重み算出部により算出された重みと前記入力フレームの画素値とに基づき、出力画素値を算出して出力フレームを生成する。【選択図】図１
2015053614.tif 000002
【特許請求の範囲】
【請求項１】
入力フレームの画素毎に、基準フレームに対する動きベクトルを取得する動きベクトル取得部と、
前記入力フレームの画素毎に、前記画素の位置情報と、前記画素の動きベクトルとに基づき第1フレームにおける第1位置情報を生成する位置生成部と、
前記第1フレームの画素に対して前記第1位置情報が示す位置からの距離に応じた重みを算出する重み算出部と、  
前記第1フレームの画素毎に、前記重み算出部で算出された重みと前記入力フレームの画素値とに基づき、出力画素値を算出して出力フレームを生成する画像生成部と
を備えた画像処理装置。
【請求項２】
前記位置生成部は、複数の入力フレームのそれぞれについて前記画素毎に前記第1位置情報を生成し、
前記画像生成部は、前記第1フレームの画素毎に、前記重み算出部で算出された重みと、前記複数の入力フレームの画素値に基づき、前記出力画素値を算出する
請求項1に記載の画像処理装置。
【請求項３】
前記画像生成部は、前記第1フレームの画素毎に、前記重み算出部で算出された重みを前記入力フレームの画素値に乗算した値の総和を、前記重みの総和に基づき正規化することにより、前記出力画素値を計算する
請求項1ないし2のいずれか一項に記載の画像処理装置。
【請求項４】
前記位置生成部は、前記第1フレームと前記入力フレームの解像度比に基づき、前記第1位置情報を生成する、
請求項1ないし4のいずれか一項に記載の画像処理装置。
【請求項５】
前記位置生成部は、前記画素の位置情報に前記解像度比を乗じた値と、前記動きベクトルに前記解像度比を乗じた値との加算を計算することで、前記第1位置情報を生成する
請求項5に記載の画像処理装置。
【請求項６】
前記第1フレームの解像度は、前記入力フレームの解像度より大きい
請求項1ないし5のいずれか一項に記載の画像処理装置。
【請求項７】
前記重み算出部は、前記入力フレームにおける前記動きベクトルの推定誤差を表す画素数と、前記第1フレームおよび前記入力フレームの解像度比とに応じて決定される標準偏差を有するガウス分布に基づいて、前記第１フレームの画素の重みを算出する
請求項6に記載の画像処理装置。
【請求項８】
前記重み算出部は、前記第1フレームにおいて前記第1位置情報が示す位置の最近傍画素を前記ガウス分布の中心に対応させることにより、前記第１フレームの画素の重みを算出する
請求項7に記載の画像処理装置。
【請求項９】
前記動きベクトル取得部は、前記入力フレームから前記基準フレームへの動き推定を行うことにより、前記動きベクトルを算出する
をさらに備えた請求項1ないし8のいずれか一項に記載の画像処理装置。
【請求項１０】
前記入力フレームは、複数の色成分を画素列に規則的に配置したＲＡＷデータの形式を有し、
前記重み付け部は、前記色成分毎に前記出力画素値を算出し、前記色成分毎に出力フレームを生成する、
請求項1ないし9のいずれか一項に記載の画像処理装置。
【請求項１１】
前記出力フレームに含まれる画像劣化を低減するための劣化復元処理を行うことにより、第1の出力フレームを得る復元処理部
をさらに備えた請求項1ないし10のいずれか一項に記載の画像処理装置。
【請求項１２】
前記復元処理部は、対象フレームを所定の劣化方法で劣化させたフレームと、前記出力フレームとの差分が最小化されるような前記対象フレームを前記第1の出力フレームとして求める
請求項11に記載の画像処理装置。
【請求項１３】
前記画像生成部は、前記出力フレームの画素の位置に対応する前記入力フレームの位置である第１位置の動きベクトルに基づき、前記出力フレームおよび入力フレームの解像度比に応じて前記出力フレームの画素の位置を起点として前記動きベクトルが指し示す第2位置の出力画素値を求め、前記第２位置の出力画素値を前記出力フレームの画素の位置と同じ位置の画素に設定することにより、前記出力フレームと同じ解像度を有する第2出力フレームを生成する
請求項1ないし12のいずれか一項に記載の画像処理装置。
【請求項１４】
前記動きベクトル取得部は、前記動きベクトルを小数画素精度で求め、
前記位置生成部は、前記第1位置情報を小数画素精度で求める
請求項1ないし13に記載の画像処理装置。
【請求項１５】
入力フレームの画素毎に、基準フレームに対する動きベクトルを取得する動きベクトル取得ステップと、
前記入力フレームの画素毎に、前記画素の位置情報と、前記画素の動きベクトルとに基づき第1フレームにおける第1位置情報を生成する位置生成ステップと、
前記第1フレームの画素に対して前記第1位置情報が示す位置からの距離に応じた重みを算出する重み算出ステップと、  
前記第1フレームの画素毎に、前記重み算出ステップで算出された重みと前記入力フレームの画素値とに基づき、出力画素値を算出して出力フレームを生成する画像生成ステップと
を備えた画像処理方法。
【請求項１６】
入力フレームの画素毎に、基準フレームに対する動きベクトルを取得する動きベクトル取得ステップと、
前記入力フレームの画素毎に、前記画素の位置情報と、前記画素の動きベクトルとに基づき第1フレームにおける第1位置情報を生成する位置生成ステップと、
前記第1フレームの画素に対して前記第1位置情報が示す位置からの距離に応じた重みを算出する重み算出ステップと、  
前記第1フレームの画素毎に、前記重み算出ステップで算出された重みと前記入力フレームの画素値とに基づき、出力画素値を算出して出力フレームを生成する画像生成ステップと
をコンピュータに実行させるための画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、画像処理方法、及び画像処理プログラムに関する。
【背景技術】
【０００２】
低解像度画像の複数のフレームを位置合わせして重ね合わせることにより、画像の超解像化を行なう画像処理装置がある。しかしながら、この画像処理装置では、単に整数画素単位での重ね合わせを行うものであり、格子状のアーチファクト（ノイズ）が発生することがあった。格子状アーチファクトを除去するには、TV（Total Variation）正則化をする必要があった。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許第7477802号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の実施形態は、ノイズが抑えられた画像を生成する画像処理装置、画像処理方法および画像処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
本発明の一態様としての画像処理装置は、動きベクトル取得部と、位置生成部と、重み算出部と、画像生成部とを備える。
【０００６】
前記ベクトル取得部は、入力フレームの画素毎に、基準フレームに対する動きベクトルを取得する。
【０００７】
前記位置生成部は、前記入力フレームの画素毎に、前記画素の位置情報と、前記画素の動きベクトルとに基づき第1フレームにおける第1位置情報を生成する。
【０００８】
前記重み算出部は、前記第1フレームの画素に対して前記第1位置情報が示す位置からの距離に応じた重みを算出する。
【０００９】
前記画像生成部は、前記第1フレームの画素毎に、前記重み算出部により算出された重みと前記入力フレームの画素値に基づき出力画素値を算出して出力フレームを生成する。
【図面の簡単な説明】
【００１０】
【図１】第1の実施形態に係る画像処理装置のブロック図。
【図２】第1の実施形態に係る動作のフローチャート。
【図３】複数の入力フレームのそれぞれについて同じ基準フレームに対して動きベクトルを取得する様子を示す図。
【図４】入力フレームの画素に対応する蓄積フレーム上の位置を求める様子を模式的に示す図。
【図５】近傍離散座標の画素と、その周辺画素の例を示す図。
【図６】ガウス分布と、標準偏差と、解像度比の関係を模式的に示す図。
【図７】周辺画素に重みを設定する行う様子を模式的に示す図。
【図８】蓄積バッファへの累積加算の例を示す図。
【図９】第1の実施形態の効果を説明するための図。
【図１０】第2の実施形態に係る画像処理装置のブロック図。
【図１１】ベイヤ配列の例を示す図。
【図１２】カラーチャネル毎の蓄積バッファに、同じカラーチャネルのデータを反映させる様子を模式的に示す図。
【図１３】第3の実施形態に係る画像処理装置のブロック図。
【図１４】第4の実施形態に係る画像処理装置のブロック図。
【図１５】本発明の実施形態に係わる画像処理装置のハードウェア構成例を示す図。
【発明を実施するための形態】
【００１１】
以下、図面を参照しながら、本発明の実施形態について説明する。
【００１２】
（第1の実施形態）
図1は、第1の実施形態に係る画像処理装置のブロック図である。
【００１３】
この画像処理装置は、動き推定部11と、ワーピング部12と、重み計算部13と、重み付け部14と、蓄積バッファ15と、蓄積重みバッファ16と、重み正規化部17とを備える。本装置は、1つ以上の入力フレームと、基準フレームとに基づき、動き推定、ワーピング、重み計算、正規化等の処理を行って、出力フレームを生成する。要素14、15、16、17は、重み計算部13の計算結果と、入力フレームとに基づき、出力フレームを生成する画像生成部に相当する。
【００１４】
動き推定部11は、入力フレームから基準フレームへの動き推定を行うことにより、入力フレームの画素毎に、動きベクトルを算出する。動き推定部11は、入力フレームの画素毎に、準フレームへの動きベクトルを取得する動きベクトル取得部の一例に相当する。後述のように、動きベクトル取得部は、動き推定を行わず、記録媒体から事前に与えられた動きベクトルを読み出すことで、動きベクトルを取得してもよい。
【００１５】
ワーピング部12は、入力フレームの画素毎に、当該画素の位置情報と、動き推定部11で算出された動きベクトルに基づき、第1位置情報を生成する。たとえば位置情報に出力フレームと入力フレームの解像度比を乗じた値と、動きベクトルに当該解像度比を乗じた値との加算により、第1位置情報を生成する。ワーピング部12は、第1位置情報を生成する位置生成部に対応する。
【００１６】
重み計算部13は、入力フレームと同一または異なる解像度のフレーム（第1フレーム）において、第1位置情報により示される位置からの距離が大きくなるほど重みが小さくなるように、第1フレームの各画素に重みを算出する。第1フレームの解像度は、出力フレームの解像度と同じである。
【００１７】
また、重み計算部13は、第1フレームの画素毎に、重み計算部13で算出された重みの総和を計算する。入力フレームが複数の場合は、入力フレーム全体についての重み総和を計算する。蓄積重みバッファ16は、重みの総和を、第１フレームの画素毎に格納するためのバッファである。ここでは蓄積重みバッファ16は、第１フレームと同じ解像度のフレームを蓄積重みフレームとして保持しており、この蓄積重みフレームの画素に重み総和を格納する形で、重み総和を保持するものとする。蓄積重みフレームの解像度は出力フレームと同じである。なお、後述するように、本実施形態の具体例では、重みの総和を一度に計算して格納するのではなく、入力フレームの画素毎に算出された重みを、処理対象となる入力フレームの画素が切り替わるごとに、累積的に、蓄積重みフレームの各画素に対して累積加算していくことで重み総和を計算する。
【００１８】
重み付け部14は、第1フレームの画素毎に、重み計算部13により算出された重みにより、入力フレームの各画素の画素値を重み付けした重み付け画素値の総和を計算する。入力フレームが複数の場合は、入力フレーム全体に対して、重み付け画素値の総和を、第1フレームの画素毎に計算する。蓄積バッファ15は、重み付け画素値の総和を、第1フレームの画素毎に格納するためのバッファである。ここでは蓄積みバッファ15は、第１フレームと同じ解像度のフレームを蓄積フレームとして保持しており、この蓄積フレームに重み付け画素値の総和を格納する形で、重み付け画素値の総和を保持するものとする。蓄積フレーム15の解像度は出力フレームと同じである。なお、後述する本実施形態の具体例では、重み付け画素値の総和を一度に計算して格納するのではなく、入力フレームの画素毎に算出された重み付け画素値を、処理対象となる入力フレームの画素が切り替わるごとに、累積的に蓄積フレーム15の各画素に対して加算していくことで、重み付け画素値の総和を計算する。
【００１９】
重み正規化部17は、第1フレームの画素毎に、重み付け部14により重み付けされた画素値の総和を、重み計算部13で計算された重み総和で除算することにより出力画素値を算出し、第1フレームの画素に当該出力画素値を設定した出力フレームを生成する。より具体的には、蓄積バッファ15内の蓄積フレームの各画素値を、蓄積重みバッファ16内の蓄積重みフレームの対応する画素値で除算することで、出力フレームを生成する。
【００２０】
なお、出力フレームの解像度、すなわち、蓄積フレームおよび蓄積重みフレームの解像度は、入力フレームの解像度より大きくてもよいし、小さくてもよいし、入力フレームと同じでもよい。入力フレームの解像度より大きい場合は、ノイズを抑制した超解像が可能となる。入力フレームの解像度以下の場合は、ノイズを抑制した画像生成が可能となる。以下の説明においては、特に断りの無い限り、蓄積フレームおよび蓄積重みフレームの解像度は、入力フレームの解像度より大きい場合を想定する。
【００２１】
以下、各処理部の詳細について説明する。
【００２２】
［動き推定部11］
動き推定部11は、入力画像の1つ以上のフレームと、基準フレームとを格納した記憶装置から、入力フレームと、基準フレームを読み込む。入力フレームと基準フレームに基づき、動き推定を行うことで、入力フレームの画素毎に動きベクトルを取得する。入力フレームを複数用いる場合、1つの入力フレームの処理が終わる毎に、次の入力フレームを読み込む。
【００２３】
ここで、入力画像の各フレームは、動画像のフレームであってもよいし、複数の静止画像の個々のフレームであってもよい。入力画像の各フレームは、たとえば撮影時の手ブレなど、何らかの要因で時間的に位置ズレを起こしながら取得されたものでもよい。この場合、本実施形態の動作により、その位置ズレを補正した高解像度な出力フレームを得ることができる。
【００２４】
基準フレームは、入力画像のうちの1フレームでもよいし、入力画像とはまったく別の画像のフレームでもよい。入力画像のうちの1フレームの場合、基準フレームは、入力フレームより時間的に前のフレームであっても、時間的に後のフレームであってもよい。たとえば時刻ｔのフレームを基準フレームとし、時刻ｔ＋1、ｔ＋2、ｔ＋3・・・のフレームを入力フレームとしてもよい。図3に示すように一定時間間隔の4つ以上の入力フレームが入力される場合、時刻の最も早い1番目の入力フレームと基準フレームとに基づき動き推定を行い、次に、2番目の入力フレームと当該基準フレームとに基づき動き推定を行い、以降のフレームも同様にして、同じ基準フレームに対して動き推定を行ってもよい。
【００２５】
ここで、入力フレームの座標(x,y)の値を、Isrc(x,y)と定義する。
【００２６】
入力フレームの値は、スカラーでも、ベクトルでもよい。スカラーとしては、たとえば輝度値があり、ベクトルとしては、カラー画像におけるRGBやYUVがある。
【００２７】
また、基準フレームの座標(x,y)の値を、Iref(x,y)と定義する。本実施形態では、入力フレームと基準フレームの解像度は同じであるとするが、これらの解像度が異なってもよい。この場合、後述の動きベクトルスケール変換では、これらの解像度の違いも考慮してスケール変換を行えばよい。
【００２８】
＜動き推定＞
上述したように、動き推定部11は、入力フレームと基準フレームに基づき、動き推定を行うことで、入力フレームの画素毎に基準フレームへの動きベクトルを取得する。動きベクトルの検出には、様々な方法を使うことができる。ここでは、一例として、ブロックマッチングを使ったものを述べる。ただし、動き推定の方法は、これに限ったものではない。
【００２９】
ブロックマッチングは入力フレームを矩形ブロックに分割し、ブロック毎に対応するブロックを基準フレーム内から探索する方法である。ブロックの大きさ（縦横サイズ）をM1,M2によって表し、ブロックの位置をi,jとする。動きを求めるための誤差関数として、平均絶対値差分（Mean Absolute Difference：MAD）などを用いることができる。MADの計算式を以下に示す。
【数１】
2015053614.tif 000003
【００３０】
ここでu=(ux,uy)Tである（Tは転置を表す）。uは評価したい動きベクトルである。MADの代わりに、平均二乗誤差（Mean Squared Error）を用いてもよい。
【００３１】
探索範囲を-WからWまでの矩形領域とすると、i,j位置の動きベクトルu(i,j)を求めるブロックマッチングアルゴリズムは、以下のように表すことができる。
【数２】
2015053614.tif 000004
ここで
2015053614.tif 000005
は、誤差関数Eを最小にするux,uyを探すことを表す。またブロック内の各画素の動きベクトルは、ブロックの動きベクトルと同一であるとする。このようにして、入力フレーム内の全画素について、それぞれの動きベクトルを算出する。
【００３２】
また、動き推定は、画素単位（整数位置精度）のマッチングを行ってもよいし、小数位置精度のマッチングを行ってもよい。小数位置精度の動き推定に、例えば等角直線フィッティングなどを用いることができる。
【００３３】
ここでは、動き推定部11で動きベクトルを検出しているが、動きベクトルを予め与える構成も可能である。例えばMPEG2のような動画像符号化における圧縮のために用いられている動きベクトルを用いてもよい。または、圧縮動画像のデコーダによってデコードされた動きベクトルを用いることができる。つまり、本実施形態に係る動きベクトル取得部は、入力フレームから基準フレームへの動き推定を行うことで動きベクトルを取得してもよいし、予め与えられた動きベクトルを記憶媒体から読み出すことで取得してもよい。
【００３４】
また、動き推定部11では、LucasKanade法を使って画面全体のパラメトリックモーションを求めて、そこから動きベクトルを求めることもできる。以下、LucasKanade法を用いた動きベクトルの算出について、簡単に説明する。
【００３５】
パラメトリックモーションは、パラメータ化された射影で、動きを表現するものである。座標(x,y)の動きは、例えばアフィン変換を使って、以下のように表すことができる。
2015053614.tif 000006
【００３６】
ここでa=(a0,a1,a2,a3,a4,a5)Tが、動きのパラメータである。 (x y 1 0 0 0)とベクトルaの乗算によって、座標xの変換（写像）が行われ、(0 0 0 x y 1)とベクトルaの乗算によって座標yの変換が行われる。
【００３７】
このパラメータaを画面全体から、LucasKanade法（V. Couture and M. S. Langer, ”Can Lucas-Kanade be used to estimate motion parallax in 3D cluttered scenes?”, Computer and Robot Vision, p. 63-72, 2007）を用いて推定する。なお、1つの入力フレームに対して、ベクトルaは1つだけ得られる。
【００３８】
１． 勾配
2015053614.tif 000007
を計算
２． ヘッセ行列
2015053614.tif 000008
を計算
３．
2015053614.tif 000009
を計算
４． 更新
2015053614.tif 000010
、規定数に達するまで、ステップ2，3，4を繰り返す
ここで、上付のtは、反復回数を表す。
パラメータaが求まれば、u(x,y)=p(x,y)a-(x,y)Tによって、入力フレームにおける任意座標位置の動きベクトルを求めることができる。(x,y)が入力フレームの座標、p(x,y)aが入力フレームの座標の変換後の座標である。よって、これらの差分を取ることで、動きベクトルを求めることができる。
【００３９】
＜動きベクトルスケール変換＞
入力フレームと、蓄積フレームの解像度（すなわち出力フレームの解像度）が異なる場合に対応するため、動き推定部11は、入力フレームの解像度で求めた動きベクトルu(x,y)を、以下のように、蓄積フレームでのサイズにスケール変換する。
【数３】
2015053614.tif 000011
ここでU(x,y)はスケール変換された動きベクトル、u(x,y)はスケール変換前の動きベクトルである。また、ρは入力フレームと蓄積フレームの解像度比、すなわち、蓄積フレームの解像度／入力フレームの解像度である。なお、当然ながら、ρは整数の場合も、小数の場合もあり得る。
【００４０】
［ワーピング部12］
ワーピング部12は、入力フレームの画素Isrc(x,y)に対応する、第1フレーム上の位置、すなわち蓄積フレーム上の位置を求める。スケール変換された動きベクトルU(x,y)を用いると、Isrc(x,y)に対応する蓄積フレーム上の位置（蓄積位置座標）D(x,y)は、以下のように表すことができる。図4に、入力フレームの画素に対応する蓄積フレーム上の位置（蓄積位置座標）を求める様子を模式的に示す。
【数４】
2015053614.tif 000012
ここでρは、前述した入力フレームと蓄積フレームの解像度比、すなわち、蓄積フレームの解像度／入力フレームの解像度である。ρは整数の場合も、小数の場合もあり得る。
数式4で求まる蓄積バッファ15上の位置は、蓄積バッファ15の整数位置座標とは限らず、小数位置座標の場合（小数画素精度の場合）もあり得る。図4に示した例では、蓄積フレーム上の位置D(x,y)は、小数位置座標になっている。本実施形態では小数画素精度で処理を行うが、整数画素精度で処理を行うことも可能である。
【００４１】
なお、解像度比ρ＝1の場合は、数式3および数式4から、入力フレームの位置(x,y)に、動きベクトルu(x,y)を単純に加算した位置が、蓄積フレーム上の位置に対応する。
【００４２】
［蓄積バッファ15］
蓄積バッファ15が有する蓄積フレームの解像度は、前述したように、入力フレームより大きくても、小さくてもよいし、入力フレームと同じでもよい。例えば、蓄積フレームの解像度を、入力フレームに対して、縦横2倍や縦横3倍、縦横4倍にして、蓄積フレームの解像度を増加させることで、超解像効果が生じさせることができる。蓄積バッファ15は、任意の記憶媒体やプログラム上で管理されるバッファ領域により実現されることができる。
【００４３】
蓄積フレームの座標を(X,Y)と定義し、蓄積フレームの座標（X,Y）の値を、B(X,Y)と定義する。蓄積フレームの座標を、蓄積位置座標と呼ぶ場合がある。
【００４４】
［蓄積重みバッファ16］
蓄積重みバッファ16が有する蓄積重みフレームの解像度は、蓄積フレームと同一である。
【００４５】
蓄積重みフレームの座標を(X,Y)とし、蓄積重みフレームの座標(X,Y)の値を、W(X,Y)と定義する。蓄積重みフレームの座標も、蓄積バッファ15同様、蓄積位置座標と呼ぶ場合がある。
【００４６】
［出力フレーム］
出力フレームの解像度は、蓄積フレームおよび蓄積重みフレームと同じである。出力フレームの座標(X,Y)の値をIout(X,Y)と定義する。
【００４７】
［重み計算部13］
重み計算部13は、入力フレームの画素毎に、ワーピング部12で求めた蓄積フレームの対応する位置から遠くなるほど小さくなる重みを、蓄積フレームの各画素に対して算出する。
【００４８】
蓄積フレームは、デジタルデータを想定しており、画素位置は離散的である。なお、入力フレームおよび基準フレームなども、蓄積フレーム同様、デジタルデータを想定している。それに対して、ワーピング部12が計算した真の位置、すなわち、数式4で求まるD(x,y)は、離散的な整数位置ではなく、小数位置を示すことがあり得る。
【００４９】
重み計算部13は、D(x,y)により表される真の位置（小数画素精度の位置）からの距離に応じて、蓄積フレームの画素位置（整数位置）の画素に対して重みを設定し、重み加算部14は、蓄積フレームの各画素に、重み付けした画素値を蓄積（加算）する。これを入力フレームの画素毎に行うことで、蓄積バッファの各画素には、重み付けされた画素値が累積的に加算されていく。入力フレームが複数の場合は、複数の入力フレーム分の累積加算が行われる。なお、重み加算部14の動作の詳細は後述する。
【００５０】
関連技術では、図7（A）に示すように、動きベクトルに伴う移動先（ワープ先）の座標は高解像度の整数画素精度であるとともに、移動先の周辺への距離に応じた重み付けを行っておらず、大きな離散化誤差が発生する。このため、図9（A）に示すような、格子状ノイズが発生してしまう問題があった。これに対して、本実施形態では、図7（B）に示すように、移動先の真の位置からの距離に応じて各画素に重み付けを行うため、蓄積フレームにおいて離散的な画素位置間の中間的な位置での表現が可能となる。よって、図9（B）に示すように、格子状ノイズの発生を抑えることができる。
【００５１】
蓄積位置座標（真の位置）は、ワーピング部12で求められたようにD(x,y)であるが、これは、小数精度位置である可能性がある。そこで、蓄積位置座標D(x,y)の近傍離散座標Zを、以下のように求める。近傍離散座標は、最近傍画素の座標、すなわち、蓄積位置座標D(x,y)を包含する画素の位置座標、あるいは当該蓄積位置座標D(x,y)に最も近い画素の位置座標に相当する。図4に、蓄積位置座標D(x、y)から近傍離散座標Zを求める様子を模式的に示す。
【数５】
2015053614.tif 000013
round(D(x,y))は、蓄積位置座標D(x,y)を四捨五入することを表す。Z=(X,Y)Tは近傍離散座標を表す。
【００５２】
重み計算部13は、この近傍離散座標Z=(X,Y)と、蓄積位置座標D(x,y)との誤差（距離）に基づいた重みを、近傍離散座標Z=(X,Y)の画素に対して設定する。この距離は、図4では、D(x,y)とZ間の距離に対応する。この距離に対して、ガウス分布で重みを設計すると、近傍離散座標(X,Y)に対する重みw(X,Y)は、以下のように算出される。
【数６】
2015053614.tif 000014
【００５３】
ここで、σはガウス分布の減衰度合いを表すガウス分布の標準偏差である。σが大きいほど、裾が広がるような分布になる。
【００５４】
ただし、重みを与えるのは近傍離散座標の画素だけではなく、近傍離散座標の周辺の画素にもその距離に応じた重みを与える。近傍離散座標Zの周辺は、図5に示すように、近傍離散座標の画素に対し、半径rの範囲と定義する。ただしこの定義は一例であり、他の近傍の定義も可能である。最近傍画素と周辺画素とをまとめて蓄積画素と呼ぶ場合がある。
【００５５】
近傍離散座標に対し周辺の局所座標を(m,n)Tとすると、周辺の画素の重みは、以下のように定義できる。なお、半径rの外側に位置する画素については重みをゼロとすればよい。ガウス分布と、標準偏差σと、解像度比ρの関係を図6に模式的に示す。ガウス分布の中心が近傍離散座標に対応させられる。中心の重みが最も大きく、周辺に遠ざかるにつれて重みが小さくされる。図6では表記の都合上、縦および横方向のみの分布が示されるが、実際には中心の画素の中央から周囲全方位に向けて裾が広がる分布でもよい。
【数７】
2015053614.tif 000015
ここではガウス分布を用いたが、以下のように逆数を使って、周辺の画素の重みを定義してもよい。
【数８】
2015053614.tif 000016
||Z-D(x,y)||は距離を表す。他にも距離||Z-D(x,y)||が大きくなるほど、重みが小さくなるような関数である限り、その関数により重みを設定してもよい。例えば、エッジの方向に沿った異方性のガウス分布などを用いてもよい。
【００５６】
＜σの設定方法バリエーション＞
数式6および数式7の重み関数のσは、ガウス分布の広がりを表現している。広がりが大きいほど、拡散された蓄積が可能になるため、格子状ノイズの発生を抑えることができる。しかし、σが大きすぎると、ボケを発生させてしまう要因ともなる。したがって、σは大きすぎず小さすぎない適度な値に設定するのがよい。以下、σの設定例を示す。
【００５７】
設定方法の例としては、入力フレームと蓄積フレームの解像度比ρを使うことができる。ρ＝1、つまり、解像度変換を伴わない場合は、σは0に近い値でよい。元の1画素（入力フレームの1画素）に対して、蓄積フレームでは縦横それぞれにρ個分の領域内の画素が含まれることになる。ρ＝3であれば、図6に示すように、元の1画素に対して、蓄積フレームでは3×3個の画素が含まれることになる。このため、元の1画素の広がりの95％が収まるようなガウス分布は、ガウス分布の特性から、
2015053614.tif 000017
と計算できる。
【００５８】
またσは動き推定の精度にも依存する。動き推定の精度が高いならば、σは小さな値でも格子状ノイズは発生しない。しかしながら、動き推定精度が低いならば、σを大きくしないと、格子状ノイズの発生を抑制できない。
【００５９】
入力フレームの解像度において、動き推定の誤差をε画素と見積もることができたとする。この場合、蓄積フレームの解像度では、
2015053614.tif 000018
の誤差となる。
【００６０】
例えば、この誤差の半分程度で重みを付ける場合、σは以下のように設計できる。
2015053614.tif 000019
【００６１】
［重み付け部14］
重み付け部14は、入力フレームの画素Isrc(x,y)を、重み計算部13で求めた重みで重み付け（乗算）して重み付けした画素値を求め、蓄積フレームの各画素に蓄積する。蓄積は、累積加算により行う。つまり、処理対象となる入力フレームの画素が変わるごとに、蓄積フレームの画素に、重み付けされた画素値を累積的に加算していく。すべての入力フレームの全画素に対する処理が終わった後の最終的な累積加算後の値がゼロもしくは一定値以下の画素があるときは、周辺の画素から補間により当該画素の値を算出してもよい。
【００６２】
以下、蓄積バッファ15において、近傍離散座標Z=(X,Y)Tの画素とその周辺半径rの画素群を対象として蓄積を行う動作を示す。近傍離散座標Z=(X,Y)Tの周辺半径rの画素とは、図5に示したように、近傍離散座標Z=(X,Y)Tに対し左右それぞれｒ、上下それぞれｒの範囲内の他の画素群であるとする。
【００６３】
近傍離散座標Z=(X,Y)Tの周辺の局所座標を(m,n)Tと表記すると、重み付けされた画素値の計算および累積加算は以下のように行う。m,nは、-r<=m<=r、-r<=n<=rを満たす整数である。なおm=0,n=0の場合、近傍離散座標Z=(X,Y)Tそのものを指す。
【数９】
2015053614.tif 000020
【００６４】
この式は、w(X+m, Y+n)とIsrc(x,y)の乗算により、重み付けされた画素値を計算し、”+=”により累積加算を行う。s+=aは、aをsに加算することを意味する。この式の計算は、周辺の画素すべてに対して行う。
【００６５】
図8に蓄積フレームへの累積加算の例を示す。
【００６６】
2つの入力フレーム1、2を対象に、累積加算を行っている。入力フレーム1、2の解像度は、2×2であり、蓄積フレームの解像度は6×6である。したがって、蓄積フレームと入力フレームの解像度比は3である。入力フレーム1の左上の画素（画素値がaの画素）の動きベクトルu(0,0)は(1/3,0)Tである。その他の画素の動きベクトルも(1/3,0)Tであるとする。また、入力フレーム2の左上の画素の動きベクトルu(0,0)は、(0, 1/3)Tであり、その他の画素の動きベクトルも(0, 1/3)Tであるとする。
【００６７】
解像度比が3であるため、入力フレーム1、2上の動きベクトルにρ＝3を乗じた(1,0)Tが蓄積フレーム上の動きベクトルU(x,y)（= ρu(x,y)）になる。入力フレーム1における左上の画素（画素値aの画素）の座標は、当該画素の中心である(0.5,0.5) Tとすると、動きベクトルによるワープ先は3*(0.5,0.5) T +(1,0) T =(2.5,1.5)である。これは、蓄積フレームにおける画素値aの画素の中心の座標に対応し、近傍離散座標にたまたま一致する。この画素の重みが1、上下左右の隣接画素を周辺画素として重みを0.5とすると、重み付けされた画素値は、近傍離散座標の画素がa、周辺画素が0.5aとなる。なお、この例えは、簡単のため、近傍離散座標の画素に対して斜め方向の隣接画素については重みの計算を行わない場合を示している。
【００６８】
これと同様の処理を、入力フレーム1の他の画素、および入力フレーム2の画素についても行う。これにより、図8のように重み付けされた画素値の累積加算が得られる。たとえば左上から右に2つ、下に2つの画素では、重み付けされた画素値の累積加算は、0.5a+0.5eとなる。
【００６９】
＜蓄積重みフレームへの重みを蓄積＞
重み計算部13は、近傍離散座標の画素とその周辺画素に対して算出した重みを、以下の式に従って、蓄積重みフレームの対応する画素に蓄積する。蓄積は、累積加算により行う。つまり、処理対象となる入力フレームの画素が変わるごとに、蓄積重みフレームの画素に、重みを累積的に加算していく。すべての入力フレームの全画素に対する処理が終わった後の最終的な累積加算後の値がゼロもしくは一定値以下の画素があるときは、周辺の画素から補間により当該画素の値を算出してもよい。以下に重み加算（累積加算）の式の例を示す。
【数１０】
2015053614.tif 000021
【００７０】
［重み正規化部17］
重み正規化部17は、蓄積フレームの各画素の値（重み付けされた画素値の累積加算）を、蓄積重みフレームの各画素の値（重みの累積加算）で除算することにより、出力フレームを生成する。これは蓄積フレームの各画素によって蓄積された回数が異なるため、蓄積重みフレームによる除算により、蓄積フレームの各画素の値を正規化するものである。正規化の式を、下記に示す。蓄積フレームの各画素の値B(X,Y)を、蓄積重みフレームの各画素の値W(X,Y)で除算することにより、出力フレームIout（X,Y）を生成している。なお、本正規化は、入力フレームが複数の場合は、すべての入力フレームについて蓄積フレームおよび蓄積重みフレームへの累積加算が完了した後に行う。
【数１１】
2015053614.tif 000022
【００７１】
図2は、第1の実施形態に係る動作のフローチャートである。
【００７２】
動き推定部11は、入力フレームと基準フレームとを読み込む。入力フレームが複数の場合は、入力フレームのそれぞれごとに以下のステップS11〜S15を繰り返す。
【００７３】
ステップS11では、入力フレームから基準フレームに対する動き推定を行うことで、入力フレームの画素毎に、動きベクトルを取得する。
【００７４】
ステップS12では、入力フレームの画素のうち未選択の画素を1つ選択して、選択した画素の位置と、当該画素の動きベクトルと、入力フレームと蓄積フレームの解像度比に応じて、蓄積位置座標（第１位置情報）を求める。具体的に、選択した画素の位置情報に解像度比を乗じ、動きベクトルに解像度比を乗じ、これらの乗算結果を加算することで、蓄積位置座標を求める。
【００７５】
ステップS13では、蓄積位置座標から近傍離散座標の画素を求め、さらに周辺画素を特定する。そして、蓄積画素（近傍離散座標の画素と周辺画素）について、蓄積位置座標からの距離に応じて重みを算出する。
【００７６】
ステップS14では、ステップS12で選択した画素の画素値に、ステップS13で算出した重みをそれぞれ掛けて重み付け画素値を算出し、蓄積フレームにおける蓄積画素（近傍離散座標の画素および周辺画素）に対してそれぞれ蓄積する。
【００７７】
ステップS15では、ステップS13で算出した重みを、蓄積重みフレームにおける蓄積画素（近傍離散座標の画素および周辺画素）に対してそれぞれ蓄積（加算）する。
【００７８】
ステップS12で選択していない画素が存在する場合は、ステップS12〜S15を、すべての画素が選択されるまで繰り返し行う。
【００７９】
すべての入力フレームについてステップS11〜S15が完了したら、ステップS16に進む。
【００８０】
ステップS16では、蓄積フレームを蓄積重みフレームで除算することにより出力フレームを生成する。
【００８１】
以上、第1の実施形態によれば、格子状等のアーチファクト（ノイズ）が抑えられた超解像が可能となる。入力フレームの個数が1つの場合も、ノイズが抑えられた画像が得られるため、本実施形態は有効に機能する。
【００８２】
（第2の実施形態）
第1の実施形態では、入力画像の各フレームが、撮影時の手ブレなど何らかの要因で、時間的に位置ズレをしながら取得されたものである場合に、その位置ズレを補正した高解像度な画像のフレームが得られる。しかしながら、入力画像に、レンズによるボケや、画像符号化による劣化などの劣化が含まれる場合は、出力フレームの画像は、当該劣化が含まれたままの画像となる。本実施形態では、当該画像からさらに当該ボケなどの劣化を除去することで、劣化の無いもしくは低減された高解像度画像を取得する。
【００８３】
図10は、第2の実施形態に係る画像処理装置のブロック図である。図1に示した装置に対し、正規化部の後段に、劣化復元部18が追加されている。劣化復元部18以外の構成は、第1の実施形態と同様であるため、同一の符号を付して、重複する説明を省略する。
【００８４】
劣化復元部18は、重み正規化部17により得られた画像フレームから、レンズによるボケなどの劣化を復元した出力フレームを生成する。レンズによるボケなど画像の劣化を復元する手法は、一般的な手法などを用いることができる。
【００８５】
たとえば、周波数変換して逆変換するインバースフィルタや、直接正則化法（ウィーナーフィルタ、Tiknovの正則化）、反復法などがある（M. R. Banham and A. K. Katsaggelos, “Digigal Image Restoration”, IEEE Signal Proc. Magazine, 1997）。
【００８６】
一例として、もっとも単純な反復法であるLandweber法について示す。
ボケなどの劣化を
H
と表し、
正規化された画像を
Iout
劣化が復元された画像を
R
と表す。
【００８７】
ここで、画像（正規化された画像、および劣化が復元された画像）は、スキャンライン順に並べられたベクトル形式であるとする。また劣化Hもベクトル形式であるとする。
【００８８】
ここで、復元問題は、復元画像をHで劣化させた結果と、正規化された画像との差分（誤差）を最小化する問題として、以下のように記述できる。なお、Hは事前に与えられている。
【数１２】
2015053614.tif 000023
ここで
2015053614.tif 000024
は、Eを最小化するRを探すことを表す。
【００８９】
この最小化問題を最急降下法で求解するものがLandweber法であり、下記の式を反復的に計算すればよい。
【数１３】
2015053614.tif 000025
【００９０】
ここで上付のtは反復回数を表す。反復によって収束したRは、正規化された画像から劣化を取り除いた画像となる。
【００９１】
以上、第2の実施形態によれば、正規化された画像フレームに対して劣化復元処理を行うようにしたことにより、格子状等の形状のアーチファクト（ノイズ）が抑えるとともに、ボケなどの劣化を抑制できる。
【００９２】
（第3の実施形態）
本実施形態では、入力画像が、RAWデータと呼ばれる形式を有する場合を示す。CMOSイメージセンサなどのイメージセンサでは、撮像素子から出力される信号をそのままデジタル化したRAWデータとして撮像画像を取得する。RAWデータはベイヤ配例を有するのが一般的である。ベイヤ配列の例を図11に示す。R,G,Bなどの色情報が、空間的に規則的に並置されている。
【００９３】
RAWデータ上では、各画素はRGBのいずれか1つに対応し、1つの画素内にRGBが揃っているわけではない。蓄積フレームの同じ画素では、RとBなど、異なる色の情報は加算してはならない。そこで、本実施形態では、蓄積フレームをR, G, B用に3つ用意し、蓄積重みフレームもR, G, B用に3枚用意する。
【００９４】
図13に、第3の実施形態に係る画像処理装置のブロック図を示す。この画像処理装置は、R用の蓄積バッファ、G用の蓄積バッファ、B用の蓄積バッファの3つの蓄積バッファ25を備える。また、R用の蓄積重みバッファ、G用の蓄積重みバッファ、B用の蓄積重みバッファの3つの蓄積重みバッファを備える。R, G, Bの各蓄積バッファ25はそれぞれR,G,B用の蓄積フレームを保持する。R, G, Bの各蓄積重みバッファ26はそれぞれR,G,B用の蓄積重みフレームを保持する。
【００９５】
動き推定部11は、RAWデータ形式の入力フレームと、RAWデータ形式の基準フレームに基づき動き推定を行う。RAWデータフレームはRGBの画素が格子状に存在するため、そのままでは動き推定を行うことが難しい。そこで例えばRAWデータのフレームからR画素だけをサンプリングしてR画像フレームを生成する（図11のベイヤ配列の場合、解像度は1／2になる）。また、基準フレームも同様にして、R画像の基準フレームを生成する。
【００９６】
動き推定部11は、R画像の入力フレームと、R画像の基準フレームで、第1の実施形態と同様にして、動き推定を行う。ベイヤ配列の同じ単位領域（２×２の２つのGと、Rと、B）内の2つのG位置と、1つのB位置には、R位置と同じ動きベクトルを適用してもよいし、線形補間を使って、G位置やB位置の動きベクトルを求めてもよい。ここでは、R画像に基づき動き推定を行う例を示したが、G画像またはB画像に基づき動き推定を行ってもよい。
【００９７】
R画像で求めた動きベクトルを元のRAWデータでの動きベクトルに直すには、解像度比（ここでは2）を乗じればよい。またワーピング部12の処理では、第1の実施形態と同様に、RAWデータと蓄積バッファの解像度比を、当該動きベクトルに乗じればよい。
【００９８】
重み計算部13は、基本的に第1の実施形態と同様に重みを計算するが、本実施形態では、入力フレームの画素のカラーチャネルと、蓄積フレームのカラーチャネルが一致しているかどうかで、蓄積フレームに重み付けをする。すなわち、第1実施形態で用いた重みに加えて、本実施形態の重みをさらに乗じる。具体的に、入力フレームの画素がRならば、Rの蓄積フレームの重みは1とし、それ以外のカラーチャネル（G,B）の蓄積フレームの重みは0とする。これにより、図12に示すように、各蓄積フレームには同じカラーチャネルのデータのみが反映されるため、異なる色が混ざってしまう問題を回避できる。
【００９９】
重み正規化部17は、同じカラーチャネル同士で、蓄積フレームと蓄積重みフレーム間で第1の実施形態と同様に正規化を行う。これにより、RGBのそれぞれの出力フレームが得られる。この後、第2の実施形態と同様に、劣化復元処理を各出力フレームに対して行うことも可能である。
【０１００】
以上、第3の実施形態によれば、RAWデータの形式の入力画像の場合に、カラーチャネル毎に、蓄積バッファと蓄積重みバッファへの蓄積、および正規化を行うようにしたことにより、入力画像がRAWデータの場合も、格子状等の形状のアーチファクト（ノイズ）が抑えることができる。
【０１０１】
（第4の実施形態）
第1〜第3の実施形態では、画像処理装置から出力されるフレームは、基準フレームと時間的に同位相となるフレームである。これに対し、本実施形態では、第1〜第3の実施形態で出力されるフレームに対し逆ワーピング処理を行うことで、入力フレームの時間位相に合わせたフレームを生成する。この処理は、特に入力画像が動画像の場合に効果的である。
【０１０２】
図14に、第4の実施形態に係る画像処理装置のブロック図を示す。
【０１０３】
重み正規化部17で正規化されたフレームIout(X,Y)は、時間的には基準フレームと同位相であり、入力フレームの時間位相とは異なる。そこでスケール変換された動きベクトルによって、正規化されたフレームを時間的に引き戻すこと（逆ワーピング）によって、入力フレームと同一時刻のフレームに変換する。この変換後のフレームを本装置の出力とする。動き推定部11で求めた動きベクトルは、入力フレームから基準フレームへの動きベクトルであるため、その動きベクトルを用いて、正規化されたフレームを引き戻すことによって、入力フレームの時間位相に合わせた出力フレームを得ることができる。
【０１０４】
以下、逆ワーピング処理について詳細に説明する。
【０１０５】
入力フレームの座標(x,y)と、蓄積フレーム（あるいは正規化されたフレーム）の座標(X,Y)の関係は、次のようになっている。
2015053614.tif 000026
【０１０６】
したがって、座標(X,Y)の動きベクトルは、以下のように表すことができる。
2015053614.tif 000027
【０１０７】
ここで、Ux、Uyは動きベクトルのx要素、y要素とする。しかし、第1の実施形態で述べたように、動きベクトルは、入力画像の離散的な画素位置に対してのみ計算されているため、上記動きベクトル
2015053614.tif 000028
は、計算されていない可能性がある。つまり、(1／ρ)×Ｘまたは(1／ρ)×Ｙが小数位置を示す場合、上記の動きベクトルは計算されていない。そこで、このような場合は、線形補間など、一般的な補間方法を用いて、当該動きベクトルを求めればよい。
【０１０８】
上記では、U(x,y)を利用して、蓄積フレームにおける画素位置の動きベクトルを計算したが、u(x,y)を利用してもよい。この場合、蓄積フレームの画素位置に対応する入力フレームの位置での動きベクトルu(x,y)を求め、当該u(x,y)に解像度比ρを乗じることで、U(X/ρ、Y/ρ)を求めればよい。このとき、u(x,y)は、計算されていない可能性があるため、その場合は、線形補間など、一般的な補間方法を用いて、計算すればよい。
【０１０９】
逆ワーピングによる引き戻しは、以下のようにすればよい。
【数１４】
2015053614.tif 000029
【０１１０】
ここで、フレームIoutは、正規化部17により出力されるフレームであり、Iouttは、逆ワーピング部19により出力されるフレームである。フレームIoutの値は、離散的な画素位置に対してしか、求められていない。そこで、ここでも線形補間などの一般的な補間方法を用いることで、フレームIoutの離散的な画素位置の値を計算すればよい。
【０１１１】
上記逆ワープの式について、より詳細に説明すると、次の通りである。動きベクトルU(X/ρ、Y/ρ)と、正規化されたフレームの画素の位置（X,Y）とを加算して、位置（X+Ux(X/ρ、Y/ρ)、Y+Uy（X/ρ、Y/ρ））を計算する。当該正規化されたフレームにおいて当該位置（X+Ux(X/ρ、Y/ρ)、Y+Uy（X/ρ、Y/ρ））に対応する出力画素値Iout（X+Ux(X/ρ、Y/ρ)、Y+Uy（X/ρ、Y/ρ））を求める。そして、当該出力画素値を、上記正規化されたフレームの画素の位置（X,Y）と同じ位置の画素（X,Y）に設定する。これにより、逆ワープにより引き戻しを行った出力フレームを生成する。
【０１１２】
以上、第4の実施形態によれば、正規化されたフレームに対して逆ワーピングによる引き戻しを行うことにより、入力フレームの時間位相に合わせた出力フレームを生成できる。
【０１１３】
なお、各実施形態の画像処理装置は、例えば、例えば、図15に示すように、汎用のコンピュータ装置を基本ハードウェアとして用いることでも実現することが可能である。このコンピュータ装置200は、バス201にプロセッサ202、メモリ203、ハードディスク等の補助記憶部204が接続され、さらに外部Ｉ／Ｆ205を介して記憶媒体206が接続されている。画像処理装置内の各処理ブロックは、上記のコンピュータ装置に搭載されたプロセッサ202にプログラムを実行させることにより実現することができる。このとき、画像処理装置は、上記のプログラムをコンピュータ装置のメモリ203または補助記憶部204にあらかじめインストールすることで実現してもよいし、ＣＤ−ＲＯＭなどの記憶媒体206に記憶して、あるいはネットワークを介して上記のプログラムを配布して、このプログラムをコンピュータ装置に適宜インストールすることで実現してもよい。また、画像処理装置内の各バッファは、上記のコンピュータ装置に内蔵あるいは外付けされたメモリ203、ハードディスク204もしくはＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−ＲＡＭ、ＤＶＤ−Ｒなどの記憶媒体206などを適宜利用して実現することができる。
【０１１４】
これまで、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【図１】
2015053614.tif 000030
【図２】
2015053614.tif 000031
【図３】
2015053614.tif 000032
【図４】
2015053614.tif 000033
【図５】
2015053614.tif 000034
【図６】
2015053614.tif 000035
【図７】
2015053614.tif 000036
【図８】
2015053614.tif 000037
【図９】
2015053614.tif 000038
【図１０】
2015053614.tif 000039
【図１１】
2015053614.tif 000040
【図１２】
2015053614.tif 000041
【図１３】
2015053614.tif 000042
【図１４】
2015053614.tif 000043
【図１５】
2015053614.tif 000044