(57)【要約】【課題】高画質の画像を生成する画像処理装置、撮像装置及び画像処理方法を提供する。【解決手段】実施形態によれば、記憶部と算出部とを含む画像処理装置が提供される。前記記憶部は、画像を記憶する。前記算出部は、基準画像と、処理対象の画像との間の動きベクトルに基づいて、前記処理対象の画像の少なくとも一部を前記記憶部に記憶される第１蓄積画像に蓄積し、前記基準画像と前記処理対象の画像との関係が判定条件を満たすとき、前記処理対象の画像を前記基準画像とすると判定する。【選択図】図１
2015216459.tif 000002
【特許請求の範囲】
【請求項１】
画像を記憶するための記憶部と、
基準画像と、処理対象の画像との間の動きベクトルに基づいて、前記処理対象の画像の少なくとも一部を前記記憶部に記憶される第１蓄積画像に蓄積し、前記基準画像と前記処理対象の画像との関係が判定条件を満たすとき、前記処理対象の画像を前記基準画像とすると判定する算出部と、
を備えた画像処理装置。
【請求項２】
前記算出部は、前記判定条件を満たすとき、入れ替えられた前記基準画像を用い、動きベクトルを算出するする請求項１記載の画像処理装置。
【請求項３】
前記算出部は、前記基準画像と前記処理対象の画像内における対象物の位置の差に応じた動きベクトルを算出し、前記第１蓄積画像内において前記対象物の位置を移動させた第２蓄積画像を導出し、前記第２蓄積画像を前記第１蓄積画像とする請求項１または２記載の画像処理装置。
【請求項４】
前記算出部は、前記動きベクトルの大きさに応じて前記第２蓄積画像の画素の値を定める請求項３記載の画像処理装置。
【請求項５】
前記判定条件は、前記基準画像を取得した時刻と、前記処理対象の画像を取得した時刻と、の間の時間の長さに基づいて定められた条件である請求項１〜４のいずれか１つに記載の画像処理装置。
【請求項６】
前記判定条件は、前記基準画像の後に取得した前記処理対象の画像の数に基づいて定められた条件である請求項１〜４のいずれか１つに記載の画像処理装置。
【請求項７】
前記算出部は、前記動きベクトルに基づいて、前記処理対象の画像の位置を移動させ、前記処理対象の画像の前記移動後の画像の少なくとも一部を、前記第１蓄積画像に蓄積する請求項１〜６のいずれか１つに記載の画像処理装置。
【請求項８】
前記判定条件は、前記基準画像の面積と、前記処理対象の画像の前記移動後の画像と前記基準画像との重なる面積と、の比に基づいて定められた条件である請求項７記載の画像処理装置。
【請求項９】
前記判定条件は、前記基準画像に含まれる画素の値と、前記処理対象の画像に含まれる画素の値と、の差に基づいて定められた条件である請求項１〜８のいずれか１つに記載の画像処理装置。
【請求項１０】
前記算出部は、前記第１蓄積画像と、前記第１蓄積画像の画素のそれぞれについての蓄積の重みと、に基づいて出力画像を導出する請求項１〜９のいずれか１つに記載の画像処理装置。
【請求項１１】
前記算出部は、前記動きベクトルに基づいて、前記第１蓄積画像内の対象物の位置を移動させた出力画像を生成する請求項１〜９のいずれか１つに記載の画像処理装置。
【請求項１２】
請求項１〜１１のいずれか１つに記載の画像処理装置と、
前記処理対象の画像を撮像する撮像素子と、
を備えた撮像装置。
【請求項１３】
処理対象の画像を取得し、基準画像と前記処理対象の画像との間の動きベクトルに基づいて、前記処理対象の画像の少なくとも一部を第１蓄積画像に蓄積する工程と、
前記基準画像と前記処理対象の画像との関係が判定条件を満たすとき、前記処理対象の画像を前記基準画像とする工程と、
を備えた画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、画像処理装置、撮像装置及び画像処理方法に関する。
【背景技術】
【０００２】
例えば、複数の入力フレームを加算し、出力フレームを生成する画像処理装置がある。このような画像処理装置において、画像の画質を向上することが望まれる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第４６７１４２９号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の実施形態は、高画質の画像を生成する画像処理装置、撮像装置及び画像処理方法を提供する。
【課題を解決するための手段】
【０００５】
本発明の実施形態によれば、記憶部と算出部とを含む画像処理装置が提供される。前記記憶部は、画像を記憶する。前記算出部は、基準画像と、処理対象の画像との間の動きベクトルに基づいて、前記処理対象の画像の少なくとも一部を前記記憶部に記憶される第１蓄積画像に蓄積し、前記基準画像と前記処理対象の画像との関係が判定条件を満たすとき、前記処理対象の画像を前記基準画像とすると判定する。
【図面の簡単な説明】
【０００６】
【図１】第１の実施形態に係る画像処理装置を示すブロック図である。
【図２】第１の実施形態に係る画像処理装置の動作を示すフローチャートである。
【図３】第１の実施形態に係る画像処理装置の動作を示す模式図である。
【図４】第１の実施形態に係る画像処理装置の動作を示す模式図である。
【図５】第１の実施形態に係る画像処理装置の動作を示す模式図である。
【図６】第２の実施形態に係る画像処理装置を示すブロック図である。
【図７】第２の実施形態に係る画像処理装置の動作を示す模式図である。
【図８】第３の実施形態に係る画像処理装置を示す模式図である。
【図９】第４の実施形態に係る撮像装置を示す模式図である。
【発明を実施するための形態】
【０００７】
以下に、各実施の形態について図面を参照しつつ説明する。  
なお、図面は模式的または概念的なものであり、各部分の厚みと幅との関係、部分間の大きさの比率などは、必ずしも現実のものと同一とは限らない。また、同じ部分を表す場合であっても、図面により互いの寸法や比率が異なって表される場合もある。  
なお、本願明細書と各図において、既出の図に関して前述したものと同様の要素には同一の符号を付して詳細な説明は適宜省略する。
【０００８】
（第１の実施形態）  
図１は、第１の実施形態に係る画像処理装置を例示するブロック図である。  
図１は、第１の実施形態に係る画像処理装置１００は、算出部５０と、記憶部５２とを含む。図１に表したように、算出部５０は、動き推定部１０と、ワーピング部２０と、動き補償部３０と、入れ替え判定部４０と、を含む。
【０００９】
算出部５０は、入力フレームＩｓｒｃ（入力画像）を取得する。後述するように、画像処理装置１００の動作において、複数の入力フレームＩｓｒｃが取得される。入力フレームＩｓｒｃは、例えば、動画像のうちの１フレームである。画像処理装置１００には、例えば、イメージセンサやテレビ映像などから、複数の入力フレームＩｓｒｃが時々刻々入力される。画像処理装置１００は、複数の入力フレームＩｓｒｃを蓄積することで、高画質の画像を生成する。但し、実施形態においては、入力フレームＩｓｒｃは、静止画のうちの１フレームであってもよい。
【００１０】
記憶部５２は、画像を記憶するために用いられる。例えば、記憶部５２には蓄積バッファ（第１蓄積画像）が記憶される。入力フレームＩｓｒｃは、蓄積バッファＩＢ（第１蓄積画像）に蓄積される。入力フレームＩｓｒｃを蓄積する際に、動き推定部１０において、基準フレームＩｒｅｆ（基準画像）と入力フレームＩｓｒｃとのズレ（動きベクトル）が求められる。例えば、ズレは、カメラの手ブレなどに起因する。
【００１１】
ワーピング部２０において、求められたズレに応じて、入力フレームＩｓｒｃが基準フレームＩｒｅｆに対して位置合わせされる。位置合わせされた入力フレームＩｓｒｃが蓄積バッファＩＢに蓄積される。これにより、例えば、ノイズ除去（手ブレ補正）を行うことができる。
【００１２】
このように複数の入力フレームＩｓｒｃが蓄積された蓄積バッファＩＢを用いて、出力フレームＩＯが出力される。これにより、高画質の画像が生成される。また、蓄積バッファＩＢとは別の基準フレームＩｒｅｆに対して入力フレームＩｓｒｃが位置合わせされる。これにより、位置合わせの誤差の累積を抑制することができる。動き補償部３０及び入れ替え判定部４０については、後述する。
【００１３】
なお、ブロック図は、実施形態に係る画像処理装置の一例であり、必ずしも実際のプログラムモジュールの構成とは一致しない場合がある。  
実施形態に係る画像処理装置の一部、又は全部として、ＬＳＩ（Large Scale Integration）等の集積回路、または、ＩＣ（Integrated Circuit）チップセットを用いることができる。各機能ブロックには、個別のプロセッサを用いてもよい。各機能ブロックの一部又は全部を集積したプロセッサを用いてもよい。ＬＳＩに限らず、専用回路又は汎用プロセッサを用いた集積回路を用いてもよい。
【００１４】
入力フレームＩｓｒｃの座標（ｘ、ｙ）における値を、Ｉｓｒｃ（ｘ、ｙ）と定義する。例えば、入力フレームＩｓｒｃの値は、輝度値のようなスカラーである。入力フレームＩｓｒｃの値は、カラー画像（ＲＧＢやＹＵＶ）のようなベクトルでも良い。
【００１５】
出力フレームＩＯは、処理された結果の画像である。出力フレームＩＯの座標（ｘ、ｙ）における値を、Ｏ（ｘ、ｙ）と定義する。
【００１６】
基準フレームＩｒｅｆは、蓄積の基準となるフレームである。例えば、入力画像のうちの１フレームを基準フレームＩｒｅｆとして用いる。処理の開始時には例えば最初のフレームを基準フレームとして用いる。座標（ｘ、ｙ）の基準フレームＩｒｅｆの値をＩｒｅｆ（ｘ、ｙ）と定義する。
【００１７】
蓄積バッファＩＢは、基準フレームＩｒｅｆに対して位置合わせされた入力フレームＩｓｒｃを蓄積していくためのバッファ（フレーム）である。蓄積バッファＩＢの解像度は、入力フレームＩｓｒｃの解像度と同じでなくてもよい。例えば、蓄積バッファＩＢは、入力フレームＩｓｒｃに対して、縦方向及び横方向に２倍、縦方向及び横方向に３倍、または、縦方向及び横方向に４倍、の解像度を有していてもよい。例えば、解像度を増加させることで超解像効果が生じる。これにより、高画質の画像を生成することができる。なお、蓄積バッファＩＢの解像度は、入力フレームＩｓｒｃの解像度よりも小さくてもよい。蓄積バッファＩＢの座標を（Ｘ、Ｙ）とする。蓄積バッファＩＢの座標（Ｘ、Ｙ）における値を、Ｂ（Ｘ、Ｙ）と定義する。
【００１８】
実施形態においては、蓄積バッファＩＢから出力フレームＩＯを生成する際に、蓄積バッファＩＢの画素のそれぞれについて、後述する重みが考慮される。重みは、蓄積重みバッファＩＷに保持される。蓄積重みバッファＩＷの解像度は、蓄積バッファＩＢの解像度と同じである。蓄積重みバッファＩＷの座標（Ｘ、Ｙ）における値を、Ｗ（Ｘ、Ｙ）と定義する。
【００１９】
図２は、第１の実施形態に係る画像処理装置の動作を例示するフローチャートである。  図２に表したように、画像処理装置１００は、第１動作Ａ１と、第２動作Ａ２と、を実施する。第１動作Ａ１は、ステップＳ１１〜Ｓ１４を含む。第２動作Ａ２は、ステップＳ１５及びＳ１６を含む。
【００２０】
ステップＳ１１において、動き推定部１０は、入力フレームＩｓｒｃ（処理対象の画像）を取得する。  
ステップＳ１２（動き推定）において、動き推定部１０は、入力フレームＩｓｒｃから基準フレームＩｒｅｆへの動きベクトルを検出する。動きベクトルは、例えば、入力フレームＩｓｒｃにおける被写体（対象物）の位置と、基準フレームＩｒｅｆにおける同じ被写体の位置と、の差を表す。
【００２１】
動きベクトルの検出には様々な方法を用いることができ、例えば、ブロックマッチングを用いることができる。ただし、実施形態において、動きベクトルの検出方法は、ブロックマッチングに限らない。ブロックマッチングは、入力フレームＩｓｒｃを矩形ブロックに分割し、ブロック毎に対応するブロックを基準フレームＩｒｅｆ上から探索する方法である。１つのブロックのＸ軸方向の長さをＭ１とし、Ｙ軸方向の長さをＭ２とする。ブロックの位置を（ｉ、ｊ）とする。
【００２２】
動きを求めるための誤差関数として平均絶対値差分（Mean Absolute Difference：ＭＡＤ）などを用いることができる。
【００２３】
【数１】
2015216459.tif 000003
ここで、ベクトルｕ＝（ｕｘ、ｕｙ）Ｔは、評価したい動きベクトルである。Ｔは、転置を表す。
【００２４】
誤差関数として、平均二乗誤差（Mean Squared Error）を用いてもよい。探索範囲を、−Ｗ≦ｘ≦Ｗかつ−Ｗ≦ｙ≦Ｗの矩形領域とすると、位置（ｉ、ｊ）における動きベクトルｕ（ｉ、ｊ）を求めるブロックマッチングアルゴリズムは、以下のようになる。
【００２５】
【数２】
2015216459.tif 000004
ここで、
【数３】
2015216459.tif 000005
は、誤差関数Ｅを最小とするｕｘ及びｕｙを探すことを表す。ブロック内の動きベクトルは、ブロックの動きベクトルと同一とする。すなわち、
【数４】
2015216459.tif 000006
座標が小数で表される位置を含む精度でマッチングを行っても良い。例えば、等角直線フィッティングなどを用いることができる。  
動きベクトルをここで検出しなくても、例えばＭＰＥＧ２のような動画像符号化における圧縮のために用いられている動きベクトルを用いても良い。デコーダによってデコードされた動きベクトルを用いることができる。
【００２６】
動きベクトルの検出において、画面全体の動きを表現したパラメトリックモーションを求めても良い。例えば、ＬｕｃａｓＫａｎａｄｅ法を使って画面全体のパラメトリックモーションを求める。求められたパラメトリックモーションから動きベクトルを求める。
【００２７】
パラメトリックモーションはパラメータ化された射影で動きを表現するものである。座標（ｘ、ｙ）における動きは、例えばアフィン変換を用いて、以下のようにあらわすことができる。
【００２８】
【数５】
2015216459.tif 000007
ここで、ベクトルａ＝（ａ０、ａ１、ａ２、ａ３、ａ４、ａ５）Ｔは、動きのパラメータである。このような動きパラメータを、画面全体からＬｕｋａｓＫａｎａｄｅ法を用いて推定する。ＬｕｋａｓＫａｎａｄｅ法においては、以下の手順１〜４が実施される。
【００２９】
手順１  
勾配
【数６】
2015216459.tif 000008
を計算する。
【００３０】
手順２  
ヘッセ行列
【数７】
2015216459.tif 000009
を計算する。
【００３１】
手順３  
【数８】
2015216459.tif 000010
を計算する。
【００３２】
手順４  
更新
【数９】
2015216459.tif 000011
を計算する。規定数に達するまでステップ（２）〜（４）を繰り返す。ここで上付きのｔは、反復回数を表す。
【００３３】
パラメータが求まれば、
【数１０】
2015216459.tif 000012
によって、任意の座標位置の動きベクトルを求めることができる。これ以外にも、例えば、２つのフレームのそれぞれにおいて特徴点を算出し、特徴点どうしの対応付けからパラメトリックモーションを求めても良い。
【００３４】
ステップＳ１３において、入力フレームＩｓｒｃを蓄積バッファＩＢに蓄積する。  
前述したように、蓄積バッファＩＢの解像度は、入力フレームＩｓｒｃの解像度と異なる場合がある。このため、蓄積に際して、入力フレームＩｓｒｃの解像度で求めた動きベクトルが蓄積バッファＩＢの解像度に対応するように、スケールを変換する。
【数１１】
2015216459.tif 000013
ここで、ベクトルＵ（ｘ、ｙ）は、スケール変換された動きベクトルである。ρは、入力フレームＩｓｒｃの解像度と蓄積バッファＩＢの解像度との比である。
【００３５】
入力フレームＩｓｒｃの画素の値Ｉｓｒｃ（ｘ、ｙ）を蓄積する位置を求める。スケール変換された動きベクトルを用いると、蓄積バッファＩＢ上の蓄積位置座標は、
【数１２】
2015216459.tif 000014
である。ここでρは、入力フレームＩｓｒｃの解像度と蓄積バッファＩＢの解像度との比である。  
このように、ワーピング部２０において、動きベクトルに基づいて、入力フレームＩｓｒｃの座標（ｘ、ｙ）に位置する画素の位置を移動（ワーピング）させる。すなわち、動きベクトルに基づいて、入力画像内において、被写体（対象物）の位置を移動させる。このようにして、基準フレームＩｒｅｆに対する入力フレームＩｓｒｃの位置合わせが行われる。
【００３６】
入力フレームＩｓｒｃのワーピング後の画像を、蓄積バッファＩＢに蓄積する。すなわち、蓄積バッファＩＢに入力フレームＩｓｒｃの画素値Ｉｓｒｃ（ｘ、ｙ）を蓄積する。蓄積位置座標は、ワーピング部２０で求められたように、座標Ｄ（ｘ、ｙ）である。蓄積位置座標は、少数である可能性がある。そこで、蓄積位置座標の近傍離散座標を求める。
【数１３】
2015216459.tif 000015
ここで、
【数１４】
2015216459.tif 000016
は、近傍離散座標を表す。
【数１５】
2015216459.tif 000017
は、蓄積位置座標の要素のそれぞれを四捨五入することを表す。
【００３７】
以下のように、近傍離散座標に入力画素を実施することで、蓄積が実施される。  
Ｂ（Ｘ、Ｙ）＋＝Ｉｓｒｃ（ｘ、ｙ）
ここで、ｚ＋＝ａは、ａをｚに加算することを表す。
【００３８】
蓄積重みバッファＩＷに、蓄積バッファＩＢの画素のそれぞれについて、蓄積の重みを蓄積する。すなわち、
Ｗ（Ｘ、Ｙ）＋＝１．０
を実施する。  
このようにして、入力フレームＩｓｒｃが蓄積バッファＩＢに蓄積される。図２に表したように、第１動作Ａ１または第２動作Ａ２の後に、さらに第１動作Ａ１が実施され、複数の入力フレームＩｓｒｃが蓄積バッファＩＢに蓄積される。例えば、画素のそれぞれにおける重みＷ（Ｘ、Ｙ）は、画素のそれぞれにおいて入力フレームＩｓｒｃが蓄積された回数である。
【００３９】
重みＷ（Ｘ、Ｙ）は、動きベクトルの推定の信頼性によって変化させてもよい。例えば、被写体の動きが激しく、動きベクトルが大きい場合、動きベクトルの大きさに応じて、重みを変化させてもよい。つまり、推定された動きベクトルの大きさに応じて、蓄積重みバッファＩＷに加算される値を変化させる。例えば、動きベクトルが大きい場合は、動きベクトルの大きさが小さい場合に比べて、蓄積重みバッファに加算される値を小さくする。これにより、蓄積における誤差を抑制することができる。
【００４０】
例えば、時々刻々入力される入力フレームを蓄積する画像処理装置において、基準フレームと入力フレームとのズレ（動きベクトル）が大き過ぎる場合、位置合わせの誤差が大きくなる場合がある。例えば、時間経過と共に、カメラの手ブレ範囲が大きくなるような状況が想定される。位置合わせの誤差が大きくなることで、生成される出力フレームの画質が劣化する。この場合、位置を補正できる範囲によって、蓄積できるフレームの数が制限される。
【００４１】
これに対して、実施形態に係る画像処理装置１００においては、適宜、基準フレームＩｒｅｆを入力フレームＩｓｒｃで入れ替え（置き換え）る。これにより、位置合わせの誤差を抑制することができ、高画質の画像を生成することができる。入れ替え判定においては、このような基準フレームＩｒｅｆの入れ替えを実施するか否かを判定する。
【００４２】
ステップＳ１４において、入れ替え判定部４０は、基準フレームＩｒｅｆと入力フレームＩｓｒｃとの関係を判定し、入れ替えを実施するか否かを決定する。例えば、基準フレームＩｒｅｆが取得された時間から一定時間が経過した場合や、基準フレームＩｒｅｆに対する入力フレームＩｓｒｃの変位が一定以上に大きくなった場合に、基準フレームＩｒｅｆを入れ替えると判定する。なお、ステップＳ１４は、ステップＳ１３の前に実施してもよい。
【００４３】
基準フレームＩｒｅｆを入力フレームＩｓｒｃで入れ替えるかどうかの基準は、入力フレームＩｓｒｃと基準フレームＩｒｅｆが何らかの意味で離れているかどうか、である。基準フレームＩｒｅｆを入れ替えることで、一定以上に入力フレームＩｓｒｃと基準フレームＩｒｅｆとが離れないようにする。これにより、位置合わせにおいて、誤差を抑制することができる。
【００４４】
基準フレームＩｒｅｆと入力フレームＩｓｒｃとの関係が判定条件を満たさないとき、すなわち、入れ替えを実施しないと判定されたときは、算出部５０は、再び第１動作Ａ１を実施する。基準フレームＩｒｅｆと入力フレームＩｓｒｃとの関係が判定条件を満たしたとき、すなわち、入れ替えを実施すると判定されたときは、算出部５０は、第２動作Ａ２を実施する。算出部５０は、第２動作Ａ２を実施した後、第２動作Ａ２において入れ替えられた基準フレームＩｒｅｆを用いて、さらに第１動作Ａ１を実施する。このようにして、蓄積バッファＩＢに複数の入力フレームＩｓｒｃが蓄積される。
【００４５】
入れ替えを実施すると判定された場合には、ステップＳ１５及びステップＳ１６が実施される。なお、第２動作Ａ２のステップＳ１５及びステップＳ１６は、実施される順番が入れ替わってもよく、同時に実施されてもよい。ステップＳ１６において、基準フレームＩｒｅｆを現在の入力フレームＩｓｒｃで置き換える。
【００４６】
前述のように、基準フレームＩｒｅｆを入れ替えた後に、再び第１動作Ａ１を実施し、蓄積バッファＩＢに入力フレームＩｓｒｃが蓄積される。しかし、蓄積バッファＩＢは、入れ替え前の基準フレームＩｒｅｆが取得された時刻に対応している。すなわち、蓄積バッファＩＢにおける被写体の位置は、入れ替え前の基準フレームＩｒｅｆにおける同じ被写体の位置に合わせられている。このため、基準フレームＩｒｅｆを入れ替えた場合、入れ替え後の基準フレームＩｒｅｆにおける被写体の位置と、それまでの蓄積バッファＩＢ（第１蓄積画像ＩＢ１）における被写体の位置と、は異なる。基準フレームＩｒｅｆを入れ替える前の蓄積バッファＩＢには、入れ替え後の基準フレームＩｒｅｆに位置合わせされた入力フレームＩｓｒｃを、そのまま蓄積することができない。
【００４７】
そこで、ステップＳ１５において、動き補償部３０は、動きベクトルを用いて、蓄積バッファＩＢ（第１蓄積画像ＩＢ１）の位置を、現在の入力フレームＩｓｒｃの位置に向かって移動させる（動き補償する）。このようにして、動きベクトルに基づいて移動させた蓄積バッファＩＢ（第２蓄積画像ＩＢ２）で、それまでの蓄積バッファＩＢ（第１蓄積画像ＩＢ１）を入れ替える。  
すなわち、算出部５０は、第２動作Ａ２において、動きベクトルに基づいて、第１蓄積画像ＩＢ１内において被写体の位置を移動させた第２蓄積画像ＩＢ２を導出し、第２蓄積画像ＩＢ２を新しく第１蓄積画像ＩＢ１とすると判定する。
【００４８】
蓄積バッファＩＢの動き補償は、以下のように実施される。まず、座標（ｘ、ｙ）と座標（Ｘ、Ｙ）との関係は、次のようである。
【数１６】
2015216459.tif 000018
座標（Ｘ、Ｙ）の位置における動きベクトルは、
【数１７】
2015216459.tif 000019
となる。ここで、Ｕｘは、動きベクトルのｘ要素、Ｕｙは、動きベクトルのｙ要素である。しかし、離散的な画素位置にしか動きベクトルは定義されていないため、
【数１８】
2015216459.tif 000020
は、存在しない可能性がある。そこで、線形補間などを用いて、式（２２）の動きベクトルを補間すればよい。動き補償による引き戻しは以下のようにすればよい。  
【数１９】
2015216459.tif 000021
蓄積バッファＩＢの値Ｂ（Ｘ、Ｙ）は、離散的な画素位置にしか定義されていない。そこで、ここでも線形補間などの補間を用いることで計算すればよい。蓄積重みバッファＩＷも同様に動き補償を行う。
【００４９】
ここで、αは、０≦α≦１の値をとる係数である。αによって、それまでの蓄積バッファＩＢを次の蓄積バッファＩＢに引き継ぐ割合を調整することができる。例えば、被写体の動きが激しい場合等、推定された動きベクトルが大きい場合は、αを小さくする。すなわち、動きベクトルの大きさに応じて第２蓄積画像の画素の値を定める。これにより、蓄積における誤差を抑制することができる。
【００５０】
このようにして、複数の入力フレームＩｓｒｃが蓄積バッファＩＢに蓄積される。図２に表したように、ステップＳ１７及びステップＳ１８を実施することで、蓄積バッファＩＢから出力フレームＩＯを生成し、出力する。  
出力フレームＩＯの生成及び出力は、適宜、実施される。例えば、蓄積が複数回行われた後に、出力を一度行う。蓄積が行われる度に、出力フレームＩＯを出力してもよい。
【００５１】
蓄積バッファＩＢにおいては、画素によって蓄積の重みが異なる。そこで、蓄積バッファＩＢと、蓄積バッファＩＢの画素のそれぞれについての重みと、に基づいて出力フレームＩＯ（出力画像）を導出する。ステップＳ１７において、蓄積バッファＩＢの値を、蓄積重みバッファＩＷの重みで除する。これにより、出力フレームＩＯが生成される。出力フレームＩＯ（蓄積出力フレーム）は、以下のように計算できる。
【数２０】
2015216459.tif 000022
このようにして計算された出力フレームＩＯが、ステップＳ１８において出力され、高画質の画像が得られる。
【００５２】
なお、入力フレームＩｓｒｃが蓄積されるごとに、蓄積の重みを考慮した蓄積バッファＩＢを導出してもよい。しかし、上記のように、出力の際において、蓄積バッファＩＢと蓄積重みバッファＩＷとを用いて出力フレームＩＯを生成した方がノイズ低減効果が高く、好ましい。
【００５３】
図３は、第１の実施形態に係る画像処理装置の動作を例示する模式図である。  
図３に表したように、例えば、時刻ｔ−４〜時刻ｔのそれぞれにおいて、入力フレームＩｓｒｃが取得される。複数の入力フレームＩｓｒｃのそれぞれは、蓄積バッファＩＢに蓄積される。この例では、時刻ｔ−４〜時刻ｔのそれぞれにおいて、蓄積バッファＩＢから出力フレームＩＯが出力されている。
【００５４】
この例では、まず、時刻ｔ−４における入力フレームＩｓｒｃが基準フレームＩｒｅｆとされる。その後、時刻ｔ−３、時刻ｔ−２及び時刻ｔ−１において取得された入力フレームＩｓｒｃについて、順次、基準フレームＩｒｅｆに対する動き推定が行われる。入力フレームＩｓｒｃのそれぞれは、推定された動きベクトルに基づいて、蓄積バッファＩＢ（第１蓄積画像ＩＢ１）に蓄積される。
【００５５】
例えば、算出部５０は、動きベクトルに基づいて、入力フレームＩｓｒｃ内において、被写体の位置を移動させる。これにより、入力フレームＩｓｒｃ内の被写体の位置を基準フレームＩｒｅｆ内における被写体の位置と合わせる。入力フレームＩｓｒｃの移動後の画像の少なくとも一部を蓄積バッファＩＢに蓄積する。
【００５６】
ここで、基準フレームＩｒｅｆ（すなわち、時刻ｔ−４における入力フレームＩｓｒｃ）と、時刻ｔ−１における入力フレームＩｓｒｃと、の関係が判定条件を満たしたとする。この場合、基準フレームＩｒｅｆは、時刻ｔ−１における入力フレームＩｓｒｃで入れ替えられる。すなわち、時刻ｔ−１における入力フレームＩｓｒｃが、新たに基準フレームＩｒｅｆとされる。
【００５７】
さらに、算出部５０は、第２動作Ａ２において、入れ替え前の基準フレームＩｒｅｆに対する、時刻ｔ−１における入力フレームＩｓｒｃの動きベクトルに基づいて、第２蓄積画像ＩＢ２を導出する。第２蓄積画像ＩＢ２は、例えば、動きベクトルに基づいて、第１蓄積画像ＩＢ１内において、被写体の位置を移動させた画像である。第２蓄積画像ＩＢ２における被写体の位置は、入力フレームＩｓｒｃにおける被写体の位置と合わせられている。そして、第２蓄積画像ＩＢ２を新しく第１蓄積画像ＩＢ１とする。このように、時刻ｔ−１以前における入力フレームＩｓｒｃの蓄積結果を引き継いだ新たな蓄積バッファＩＢが導出される。
【００５８】
時刻ｔにおける入力フレームＩｓｒｃは、入れ替えられた基準フレームＩｒｅｆに対して、動き推定される。推定された動きベクトルに基づいて、時刻ｔにおける入力フレームＩｓｒｃは、入れ替えられた蓄積バッファＩＢ（第２蓄積画像ＩＢ２）に蓄積される。
【００５９】
このように、例えば入力フレームＩｓｒｃの撮像シーンの変化に合わせて、蓄積バッファＩＢ及び基準フレームＩｒｅｆを入れ替える。これにより、高画質の画像を得ることができる。
【００６０】
図４及び図５は、第１の実施形態に係る画像処理装置の動作を例示する模式図である。
【００６１】
図４及び図５において、横軸は、時間Ｔ１を表し、縦軸は、画像の位置Ｐ１を表す。曲線Ｌ１は、例えば、それぞれの時刻における入力フレームＩｓｒｃの位置を表す。例えば、曲線Ｌ１は、入力フレームＩｓｒｃを撮像するカメラの手ブレの軌跡に対応する。曲線Ｌ１上の丸は、入力フレームＩｓｒｃが取得された時刻を表す。
【００６２】
図４に表した例では、基準フレームＩｒｅｆの入れ替えの判定条件は、基準フレームＩｒｅｆを取得した時刻と、入力フレームＩｓｒｃを取得した時刻との間の長さに基づいて定められる。  
例えば、基準フレームＩｒｅｆが取得された時刻は、複数の入力フレームＩｓｒｃのいずれか１つが取得された時刻である。この基準フレームＩｒｅｆが取得された時刻と、現在の入力フレームＩｓｒｃが取得された時刻と、の差が、予め設定された基準値よりも大きくなったら基準フレームＩｒｅｆを入れ替えると判定する。
【００６３】
図４に表したように、時間ｔの経過ごとに、基準フレームＩｒｅｆが入れ替えられる。入れ替えに伴い、蓄積バッファＩＢも動き補償によって、更新される。このように、基準フレームを入れ替えながら蓄積し、入れ替えるときに蓄積結果も引き継いでいくことで、蓄積を継続することができる。これにより、例えば、蓄積できるフレームの数が制限されず、高画質の画像を得ることができる。
【００６４】
判定条件は、基準フレームＩｒｅｆが取得された後に取得した複数の入力フレームＩｓｒｃの数に基づいて定められてもよい。例えば、基準フレームＩｒｅｆを取得した後に取得された入力フレームＩｓｒｃのフレーム数が基準値よりも大きくなった場合に、基準フレームＩｒｅｆを入れ替えると判定する。図４の例では、６フレームごとに基準フレームＩｒｅｆが入れ替えられる。図４の例は、例えば、複数の入力フレームＩｓｒｃが、動く被写体を撮像した動画像である場合などに用いられる。
【００６５】
判定条件は、動きベクトルの大きさに応じて定められてもよい。例えば、動きベクトルが一定の大きさよりも大きくなったら、基準フレームＩｒｅｆを入れ替えると判定する。動きベクトルの大きさは、例えば、画面内の動きベクトルの大きさの最大値を用いても良いし、画面内の動きベクトルの平均値を用いても良い。  
例えば、図５の縦軸の位置Ｐ１の変化は、動きベクトルの大きさの変化に対応する。この例では、基準フレームＩｒｅｆにおける位置Ｐ１と、入力フレームＩｓｒｃにおける位置Ｐ１との差が、一定の大きさよりも大きいときに、基準フレームＩｒｅｆを入れ替えている。これにより、基準フレームと入力フレームとのズレ（動きベクトル）が大きくなっても蓄積を継続することができる。
【００６６】
判定条件は、基準フレームＩｒｅｆの面積と、入力フレームＩｓｒｃの移動後（ワーピング後）の画像と基準フレームＩｒｅｆとの重なる面積と、の比（カバー率）に基づいて定められてもよい。カバー率は、動きベクトルに基づいて移動した後の入力フレームＩｓｒｃが、基準フレームＩｒｅｆをカバーしている面積の比率である。動きベクトルの参照先のマスキングを、
【数２１】
2015216459.tif 000023
とする。マスクは、０に初期化しておく。このときカバー率を以下のように定義する。
【数２２】
2015216459.tif 000024
ここで、Ｎは全画素数である。例えば、入力フレームＩｓｒｃにおける被写体の位置が、基準フレームＩｒｅｆにおける被写体の位置から全く動いていない場合には、カバー率は、１となる。例えば、このカバー率が一定値以下であれば、入れ替えを実施すると判定する。
【００６７】
判定条件は、基準フレームＩｒｅｆに含まれる画素の値と、入力フレームＩｓｒｃに含まれる画素の値と、の差分に基づいて定められてもよい。例えば、以下のような差分値を基準としてもよい。
【数２３】
2015216459.tif 000025
入力フレームＩｓｒｃと基準フレームＩｒｅｆとが同一であれば、差分値は、０となる。基準フレームＩｒｅｆに対する入力フレームＩｓｒｃの変化が大きいほど、差分値は、大きい値となる。差分値が一定以上であれば入れ替えると判定する。
【００６８】
なお、以上において説明した判定条件は、単独で用いても良いし、組み合わせて用いてもよい。これにより、位置合わせの誤差の累積を抑制し、高画質の画像を得ることができる。
【００６９】
（第２の実施形態）  
図６は、第２の実施形態に係る画像処理装置を例示するブロック図である。  
図６は、第２の実施形態に係る画像処理装置１０１の算出部５１を例示している。
【００７０】
図６に表したように、算出部５１は、動き推定部１０と、ワーピング部２０と、を含む。これらについての説明は、第１の実施形態と同様である。算出部５１は、動き補償部３１及び入れ替え判定部４１をさらに含む。
【００７１】
前述のように、蓄積バッファＩＢは、基準フレームＩｒｅｆが取得された時刻に対応している。すなわち、蓄積バッファＩＢにおける被写体の位置は、基準フレームＩｒｅｆにおける同じ被写体の位置に合わせられている。  
動き補償部３１は、蓄積バッファＩＢを入力フレームＩｓｒｃが取得された時刻に合わせる。すなわち、蓄積バッファＩＢにおける被写体の位置を、入力フレームＩｓｒｃにおける同じ被写体の位置に合わせる（動き補償によって引き戻す）。例えば、入力フレームＩｓｒｃが取得されるごと（第１動作Ａ１を行う度）に、動き補償部３１における処理を実施し、出力フレームＩＯを導出する。これにより、入力された複数の入力フレームＩｓｒｃを、高画質な動画像として出力することができる。
【００７２】
入れ替え判定部４１は、基準フレームＩｒｅｆと入力フレームＩｓｒｃとの関係を判定し、基準フレームＩｒｅｆの入れ替えを実施するか否かを決定する。この例では、出力フレームＩＯは、入力フレームＩｓｒｃが取得された時刻に対応している。
【００７３】
動き補償部３１における処理は、以下のように実施される。  
座標（ｘ、ｙ）と座標（Ｘ、Ｙ）との関係は次のようになっている。  
【数２４】
2015216459.tif 000026
座標（Ｘ、Ｙ）の位置における動きベクトルは、
【数２５】
2015216459.tif 000027
となる。ここで、Ｕｘは、動きベクトルのｘ要素である。Ｕｙは、動きベクトルのｙ要素である。しかし、離散的な位置にしか動きベクトルは定義されていないため、
【数２６】
2015216459.tif 000028
は、存在しない可能性が或る。そこで、線形補間などを用いて、式（２２）の動きベクトルを補間すればよい。動き補償による引き戻しは、以下のようにすればよい。
【数２７】
2015216459.tif 000029
Ｏ（Ｘ、Ｙ）の値は、離散的な位置にしか定義されていない。そこで、ここでも線形補間などの補間を用いることで計算すればよい。このように、第２の実施形態においては、動きベクトルに基づいて、蓄積バッファＩＢ内の被写体の位置を移動させる。これにより、蓄積バッファＩＢ内の被写体の位置を、入力フレームＩｓｒｃ内の被写体の位置と合わせた出力フレームＩＯ（出力画像）が生成される。
【００７４】
第１の実施形態では、蓄積バッファを入れ替えると判定された場合に、蓄積バッファＩＢの動き補償を実施していた。これに対して、この例では、入力フレームごとに、蓄積バッファＩＢの動き補償を行っている。このため、入れ替えを実施すると判定された場合には、新たに動き補償を行わなくてもよい。この場合、蓄積バッファＩＢを、動き補償された出力フレームＩＯで置き換えればよい。
【００７５】
図７は、第２の実施形態に係る画像処理装置の動作を例示する模式図である。  
図７に表したように、時刻ｔ−４〜時刻ｔのそれぞれにおいて、入力フレームＩｓｒｃが取得され、出力フレームＩＯが出力される。
【００７６】
各時刻において、蓄積バッファＩＢは、動き推定によって求められた動きベクトルに応じて、動き補償され、出力フレームＩＯが導出される。
【００７７】
図３の例と同様に、この例でも、時刻ｔ−１において基準フレームＩｒｅｆの入れ替えが実施されている。このとき、蓄積バッファＩＢは、時刻ｔ−１における出力フレームＩＯで置き換えられる。複数の入力フレームＩｓｒｃの蓄積における誤差を抑制し、高画質な動画像を得ることができる。
【００７８】
（第３の実施形態）  
図８は、第３の実施形態に係る画像処理装置を例示する模式図である。  
図８に例示したコンピュータ装置２００は、例えば、第１〜第３の実施形態に関して説明した画像処理が実施可能である。コンピュータ装置２００は、例えば、画像処理装置である。
【００７９】
図８に表したコンピュータ装置２００は、バス２０１と、制御部２０２と、主記憶部２０３と、補助記憶部２０４と、外部Ｉ／Ｆ２０５と、を含む。バス２０１に、制御部２０２と、主記憶部２０３と、補助記憶部２０４と、外部Ｉ／Ｆ２０５と、が接続されている。
【００８０】
補助記憶部２０４には、例えば、ハードディスク等が用いられる。外部Ｉ／Ｆ２０５には、例えば、記憶媒体２０６が接続されている。記憶媒体２０６には、例えば、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−ＲＡＭまたはＤＶＤ−Ｒ等が用いられる。
【００８１】
例えば、主記憶部２０３または補助記憶部２０４には、画像処理装置１００における処理を実行するためのプログラムが記憶されている。制御部２０２がプログラムを実行することによって、画像処理装置１００における処理が実行される。画像処理装置１００における処理の実行において、例えば、主記憶部２０３または補助記憶部２０４が、それぞれのフレームを記憶するバッファとして用いられる。
【００８２】
画像処理装置１００における処理を実行するためのプログラムは、例えば、あらかじめ主記憶部２０３または補助記憶部２０４にインストールされる。プログラムは、記憶媒体２０６に記憶されていてもよい。この場合、例えば、プログラムは、コンピュータ装置２００に適宜インストールされる。ネットワークを介してプログラムを取得してもよい。
【００８３】
（第４の実施形態）
図９は、第４の実施形態に係る撮像装置を例示する模式図である。  
図９に表したように撮像装置２１０は、光学素子２１１と、撮像部（撮像素子）２１２と、主記憶部２１３と、補助記憶部２１４と、処理回路２１５と、表示部２１６と、出入力Ｉ／Ｆ２１７と、を含む。
【００８４】
光学素子２１１には、例えば、レンズなどが設けられる。被写体から撮像装置２１０へ向かう光の一部は、光学素子２１１を透過し、撮像部２１２へ入射する。撮像部２１２には、例えば、ＣＭＯＳイメージセンサや、ＣＣＤイメージセンサなどが用いられる。光学素子２１１及び撮像部２１２によって、基準フレームＩｒｅｆや入力フレームＩｓｒｃが撮像される。例えば、主記憶部２１３または補助記憶部２１４には、画像処理装置１００における処理を実行するためのプログラムが予め記憶されている。処理回路２１５によってプログラムが実行され、画像処理装置１００における処理が実行される。すなわち、この例では、主記憶部２１３、補助記憶部２１４及び処理回路２１５によって、画像処理装置１００の処理が実施される。画像処理装置１００における処理の実行において、例えば、主記憶部２１３または補助記憶部２１４が、それぞれのフレームを記憶するバッファとして用いられる。画像処理装置１００における処理によって、出力フレームが出力される。例えば、出力フレームは、出入力Ｉ／Ｆ２１７を介して表示部２１６において表示される。
【００８５】
すなわち、撮像装置２１０は、例えば、上記の実施形態に係るいずれかの画像処理装置と、撮像部２１２と、を含む。撮像部２１２は、例えば、画像処理装置が取得する画像情報（例えば、基準フレーム、入力フレーム）を取得する。
【００８６】
実施形態によれば、高画質の画像を生成する画像処理装置、撮像装置及び画像処理方法が提供できる。
【００８７】
以上、具体例を参照しつつ、本発明の実施の形態について説明した。しかし、本発明の実施形態は、これらの具体例に限定されるものではない。例えば、算出部、動き推定部、ワーピング部、動き補償部、入れ替え判定部、主記憶部、補助記憶部、制御部、処理回路、表示部、及び撮像部などの各要素の具体的な構成に関しては、当業者が公知の範囲から適宜選択することにより本発明を同様に実施し、同様の効果を得ることができる限り、本発明の範囲に包含される。  
また、各具体例のいずれか２つ以上の要素を技術的に可能な範囲で組み合わせたものも、本発明の要旨を包含する限り本発明の範囲に含まれる。
【００８８】
その他、本発明の実施の形態として上述した画像処理装置、撮像装置及び画像処理方法を基にして、当業者が適宜設計変更して実施し得る全ての画像処理装置、撮像装置及び画像処理方法も、本発明の要旨を包含する限り、本発明の範囲に属する。
【００８９】
その他、本発明の思想の範疇において、当業者であれば、各種の変更例及び修正例に想到し得るものであり、それら変更例及び修正例についても本発明の範囲に属するものと了解される。
【００９０】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００９１】
１０…推定部、  ２０…ワーピング部、  ３０、３１…補償部、  ４０、４１…判定部、  ５０、５１…算出部、  ５２…記憶部、  １００、１０１…画像処理装置、  ２００…コンピュータ装置、  ２０１…バス、  ２０２…制御部、  ２０３…主記憶部、  ２０４…補助記憶部、  ２０６…記憶媒体、  ２１０…撮像装置、  ２１１…光学素子、  ２１２…撮像部、  ２１３…主記憶部、  ２１４…補助記憶部、  ２１５…処理回路、  ２１６…表示部、  Ａ１…第１動作、  Ａ２…第２動作、  ２０５…外部Ｉ／Ｆ、  ２１７…出入力Ｉ／Ｆ、  ＩＢ…蓄積バッファ、  ＩＢ１…第１蓄積画像、  ＩＢ２…第２蓄積画像、  ＩＯ…出力フレーム、  ＩＷ…蓄積重みバッファ、  Ｉｒｅｆ…基準フレーム、  Ｉｓｒｃ…入力フレーム、  Ｌ１…曲線、  Ｐ１…位置、  Ｓ１１〜Ｓ１８…ステップ、  Ｔ１…時間、  ｔ…時間
【図１】
2015216459.tif 000030
【図２】
2015216459.tif 000031
【図３】
2015216459.tif 000032
【図４】
2015216459.tif 000033
【図５】
2015216459.tif 000034
【図６】
2015216459.tif 000035
【図７】
2015216459.tif 000036
【図８】
2015216459.tif 000037
【図９】
2015216459.tif 000038