(57)【要約】【課題】高速撮影では、被写体の位置ずれ量が個別の要因で大幅に変化するため、高画質の高解像度画像が得られないことがある。【解決手段】参照フレーム決定部６０は、動画像から超解像処理に用いる所定枚数の参照フレームを選択する。超解像処理部３０は、所定枚数の参照フレームに対して超解像処理を施すことにより、参照フレームよりも解像度の高い高解像度画像を生成する。参照フレーム決定部６０は、動画像のフレームにおける画素の位置ずれ度合いを示す値にもとづいて、選択すべき参照フレームのフレーム間隔を決定する。【選択図】図１
2016181023.tif 000002
【特許請求の範囲】
【請求項１】
動画像をメモリに格納する画像入力部と、
前記動画像から超解像処理に用いる所定枚数の参照フレームを選択する参照フレーム決定部と、
前記所定枚数の参照フレームに対して超解像処理を施すことにより、参照フレームよりも解像度の高い高解像度画像を生成する超解像処理部とを含み、
前記参照フレーム決定部は、前記動画像のフレームにおける画素の位置ずれ度合いを示す値にもとづいて、選択すべき参照フレームのフレーム間隔を決定することを特徴とする画像処理装置。
【請求項２】
前記参照フレーム決定部は、前記動画像の第１フレームと第２フレームの間の位置ずれ度合いを示す値が第１閾値以上で第２閾値以下になるように前記第１フレームと前記第２フレームのフレーム間隔を決定し、前記第１フレームから前記第２フレームまでのフレームの中から、前記所定枚数の参照フレームを選択することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記位置ずれ度合いを示す値は、フレーム全体の画素の位置ずれ量であることを特徴とする請求項１または２に記載の画像処理装置。
【請求項４】
前記位置ずれ度合いを示す値は、フレームを分割したブロック毎の画素の位置ずれ量であり、
前記参照フレーム決定部は、前記動画像の第１フレームと第２フレームの間で画素の位置ずれ量が所定の画素数以上であるブロックの個数が所定の閾値以上になるように前記第１フレームと前記第２フレームを決定し、前記第１フレームから前記第２フレームまでのフレームの中から、前記所定枚数の参照フレームを選択することを特徴とする請求項１に記載の画像処理装置。
【請求項５】
前記超解像処理部は、等速直線運動を仮定して、前記第１フレームと前記第２フレームの間の位置ずれ度合いを示す値を均等割りすることにより、参照フレーム間の位置ずれ度合いを示す値を求めることを特徴とする請求項２または４に記載の画像処理装置。
【請求項６】
動画像をメモリに格納する画像入力ステップと、
前記動画像から超解像処理に用いる所定枚数の参照フレームを選択する参照フレーム決定ステップと、
前記所定枚数の参照フレームに対して超解像処理を施すことにより、参照フレームよりも解像度の高い高解像度画像を生成する超解像処理ステップとを含み、
前記参照フレーム決定ステップは、前記動画像のフレームにおける画素の位置ずれ度合いを示す値にもとづいて、選択すべき参照フレームのフレーム間隔を決定することを特徴とする画像処理方法。
【請求項７】
動画像をメモリに格納する画像入力ステップと、
前記動画像から超解像処理に用いる所定枚数の参照フレームを選択する参照フレーム決定ステップと、
前記所定枚数の参照フレームに対して超解像処理を施すことにより、参照フレームよりも解像度の高い高解像度画像を生成する超解像処理ステップとをコンピュータに実行させ、
前記参照フレーム決定ステップは、前記動画像のフレームにおける画素の位置ずれ度合いを示す値にもとづいて、選択すべき参照フレームのフレーム間隔を決定することを特徴とする画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理技術に関し、特に画像の解像度を変換する技術に関する。
【背景技術】
【０００２】
近年のデジタルカメラやビデオカメラには、６０ｆｐｓを超えるフレームレートの高い高速撮影機能を有するものがある。高速のシャッタスピードで撮影することで、瞬間の動きを捉えたり、撮り逃したくないシーンを撮影するために用いられる。通常、このような高速撮影ではフレームを記憶するためのデータ量が膨大になるため、ＣＭＯＳ等の撮像素子の読み出しスピードやＤＤＲ−ＳＤＲＡＭ等の記録媒体の書き込み速度の上限を考慮し、フレームレートが高いほど１フレーム当たりの解像度を小さくして記録される。
【０００３】
一方、液晶ディスプレイ等の表示装置は高解像度化が進んでおり、前述した高フレームレートで撮影した低解像度画像を表示させる場合、表示装置に合わせ拡大する必要があり、拡大した場合、ぼけた画像になりユーザーに不鮮明な印象を与えてしまう。
【０００４】
このような低解像度画像の拡大表示の時、鮮明な高画質の画像を提供する方法として、複数枚の低解像度画像を用いて高解像度画像を生成する超解像処理が知られている。超解像処理では、複数枚の低解像度画像の間に、ある程度の手ぶれや被写体の移動等による位置ずれがないと超解像処理で生成される高解像度画像において補間画素を生成することは難しい。そのため、フレームレートが高い画像の場合、高速撮影されるために被写体によっては位置ずれがほとんど存在しなくなり、超解像処理を行っても高画質の高解像度画像を生成することが難しい。
【０００５】
特許文献１では、フレームレートを検出し、フレームレートが高いほど、超解像処理に用いる動画像の参照フレームの枚数を多くするように決定する技術が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１１−１３９４２８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
高速撮影の特性上、撮影対象や撮影状況、撮影者の個人差など個別の要因に応じて被写体の位置ずれ量が大幅に変化するため、フレームレートのみに依存して超解像処理に用いる動画像のフレームの枚数を調整する方法では、高画質の高解像度画像が得られないことがある。
【０００８】
本発明はこうした状況に鑑みてなされたものであり、その目的は、高速撮影された画像を用いて高画質の高解像度画像を生成することのできる画像処理技術を提供することにある。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、本発明のある態様の画像処理装置は、動画像をメモリに格納する画像入力部と、前記動画像から超解像処理に用いる所定枚数の参照フレームを選択する参照フレーム決定部と、前記所定枚数の参照フレームに対して超解像処理を施すことにより、参照フレームよりも解像度の高い高解像度画像を生成する超解像処理部とを含む。前記参照フレーム決定部は、前記動画像のフレームにおける画素の位置ずれ度合いを示す値にもとづいて、選択すべき参照フレームのフレーム間隔を決定する。
【００１０】
本発明の別の態様は、画像処理方法である。この方法は、動画像をメモリに格納する画像入力ステップと、前記動画像から超解像処理に用いる所定枚数の参照フレームを選択する参照フレーム決定ステップと、前記所定枚数の参照フレームに対して超解像処理を施すことにより、参照フレームよりも解像度の高い高解像度画像を生成する超解像処理ステップとを含む。前記参照フレーム決定ステップは、前記動画像のフレームにおける画素の位置ずれ度合いを示す値にもとづいて、選択すべき参照フレームのフレーム間隔を決定する。
【００１１】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、記録媒体、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１２】
本発明によれば、高速撮影された画像を用いて高画質の高解像度画像を生成することができる。
【図面の簡単な説明】
【００１３】
【図１】本実施の形態に係る画像処理装置の構成図である。
【図２】画像処理装置による画像処理手順を示すフローチャートである。
【図３】画像入力部により入力される動画像のフォーマットを説明する図である。
【図４Ａ】図２の参照フレーム決定処理の詳細な手順を示すフローチャートである。
【図４Ｂ】図４Ａの処理ルーチンＡの手順を示すフローチャートである。
【図４Ｃ】図４Ａの処理ルーチンＢの手順を示すフローチャートである。
【図５】フレームレートに対応づけて、スタートフレームとエンドフレームの初期値の間隔を格納したテーブルを説明する図である。
【図６】図６（ａ）〜図６（ｃ）は、ユーザによる指定フレーム、スタートフレーム、おおよびエンドフレームの関係を説明する図である。
【図７】図７（ａ）および図７（ｂ）は、フレーム間隔にもとづいて決定される参照フレームを説明する図である。
【図８】図２の超解像処理の詳細な手順を示すフローチャートである。
【図９】図８の反復逆投影法の詳細な手順を示すフローチャートである。
【図１０】図１０（ａ）および図１０（ｂ）は被写体が動く速さが異なる動画像のフレームを説明する図である。
【図１１Ａ】実施例２の場合の図２の参照フレーム決定処理の詳細な手順を示すフローチャートである。
【図１１Ｂ】図１１Ａの処理ルーチンＡの手順を示すフローチャートである。
【図１１Ｃ】図１１Ａの処理ルーチンＢの手順を示すフローチャートである。
【発明を実施するための形態】
【００１４】
（実施例１）
図１は、本実施の形態に係る画像処理装置１００の構成図である。画像処理装置１００は、画像入力部１０と、記憶部２０と、超解像処理部３０と、表示部４０と、フレームレート検出部５０と、参照フレーム決定部６０とを含む。これらの構成は、ハードウェア、ソフトウェア、またはそれらの組合せにより実現される。
【００１５】
画像入力部１０は、カメラなどにより撮影された動画像を取得し、動画像の各フレームを記憶部２０に格納する。
【００１６】
フレームレート検出部５０は、記憶部２０に格納された動画像のフレームレートを検出し、参照フレーム決定部６０に与える。ここで、フレームレートとは動画像撮影時のシャッタスピード（言い換えればキャプチャスピード）により定義される値であり、再生時のフレームレートを指すものではない。
【００１７】
参照フレーム決定部６０は、フレームレート検出部５０から与えられたフレームレートにもとづいて超解像処理に用いる複数枚の参照フレームを決定する。参照フレーム決定部６０は、記憶部２０に格納された動画像のフレームの画素の位置ずれを検出し、位置ずれが所定量となるように参照フレームを選択する。
【００１８】
超解像処理部３０は、参照フレーム決定部６０により決定された動画像の複数の参照フレームを記憶部２０から読み出し、各参照フレームに対して超解像処理を施し、参照フレームよりも解像度の高い高解像度画像を生成し、記憶部２０に格納する。表示部４０は、記憶部２０に格納された高解像度画像を表示する。
【００１９】
超解像処理部３０は、入力された各参照フレームに対して、再構成型の超解像処理を行い、高解像画像に変換する。具体的には、ｎ回目の高解像度画像から点広がり関数を用いて推定低解像度画像を求め、推定低解像度画像と実際の撮影画像の誤差を逆投影関数を用いてｎ回目の高解像度画像に逆投影することにより（ｎ＋１）回目の高解像度画像に更新する。この処理を繰り返して高解像度画像を再構成する。
【００２０】
図２は、画像処理装置１００による画像処理手順を示すフローチャートである。フローチャートを参照しながら、画像処理装置１００の各構成の動作を説明する。
【００２１】
画像入力部１０は、撮影された動画像を入力し、動画像の各フレームを記憶部２０に格納する（ステップＳ１００）。
【００２２】
図３は、画像入力部１０により入力される動画像のフォーマットを説明する図である。横軸は時間を示す。動画像２００には、通常フレームレートのフレーム群２０１、２０３と、高速撮影された高速フレームレートのフレーム群２０２とが混在する。
【００２３】
通常のフレームレートとは２４ｆｐｓ、３０ｆｐｓ、６０ｆｐｓなど撮影装置が一般的に採用しているフレームレートである。高速フレームレートとは２４０ｆｐｓ、４００ｆｐｓ、６００ｆｐｓ、１２００ｆｐｓなど高速のシャッタスピードで撮影されたフレームレートを指す。
【００２４】
通常フレームレートで撮影された画像の解像度と比較すると、高速フレームレートで撮影された画像の解像度はフレームレートに応じて解像度が低くなる。ユーザは、動画を再生し、任意のフレームで一時停止等の操作をして、何らかの処理（たとえば表示や編集）を行いたいフレームを指定する。ユーザーが任意のフレームで一時停止等の操作を行うと、それ以降の処理が開始する。
【００２５】
フレームレート検出部５０は、ユーザによって指定されたフレームにおけるフレームレートを検出する（Ｓ１１０）。フレームレートの検出方法としては、例えば動画像の垂直同期信号を計測することでフレームレートを検出してもよく、あるいは、動画像に付加されたフレームレート情報からフレームレートを取得してもよい。
【００２６】
次に、参照フレーム決定部６０は、検出されたフレームレートにもとづいてスタートフレームとエンドフレームを決定し、スタートフレームとエンドフレーム間で所定量の位置ずれがあるかどうかを調べる動き推定を行い、超解像処理で用いる参照フレームのフレーム間隔を決定する（Ｓ１２０）。ステップＳ１２０の参照フレーム決定処理の詳細は後述する。
【００２７】
超解像処理部３０は、決定されたフレーム間隔にもとづいて動画像の複数の参照フレームを読み出し、各参照フレームに対して超解像処理を行い、高解像度画像を生成する（Ｓ１３０）。表示部４０は、生成された高解像度画像を表示デバイスに表示する（Ｓ１４０）。これにより、ユーザが一時停止等の操作を行ったフレームが高解像度で表示デバイスに表示される。
【００２８】
図４Ａ〜図４Ｃは、図２のステップＳ１２０の参照フレーム決定処理の詳細な手順を示すフローチャートである。
【００２９】
まず、図２のステップＳ１１０のフレームレート検出処理で検出されたフレームレートを取得する（Ｓ１０）。この検出されたフレームレートは、ユーザによる指定フレームｎのフレームレートである。指定フレームｎと検出されたフレームレートから、後述する位置ずれ検出の際に用いるスタートフレームＦｓとエンドフレームＦｅの初期値を求める（Ｓ１２）。スタートフレームＦｓとエンドフレームＦｅの初期値の間隔は、フレームレートに応じた値に設定される。
【００３０】
図５は、フレームレートに対応づけて、スタートフレームＦｓとエンドフレームＦｅの初期値の間隔を格納したテーブルを説明する図である。フレームレートが大きくなるほど１フレームごとの動きは小さくなるので、フレームレートに比例して、スタートフレームＦｓとエンドフレームＦｅの初期値の間隔を大きくする。たとえば、フレームレートが２４０ｆｐｓ、３００ｆｐｓ、６００ｆｐｓ、１２００ｆｐｓとなるにつれ、スタートフレームＦｓとエンドフレームＦｅの初期値の間隔を２、３、４、５と増加させる。
【００３１】
図６（ａ）〜図６（ｃ）は、ユーザによる指定フレームｎ、スタートフレームＦｓ、おおよびエンドフレームＦｅの関係を説明する図である。動画像は通常フレームレートのフレーム群２０１、高速フレームレートのフレーム群２０２、通常フレームレートのフレーム群２０３がこの順で並んでいる。高速フレームレートのフレーム群２０２は、ｎ＿ｓ番目のフレームから始まり、ｎ＿ｅ番目のフレームで終わる。ユーザが指定したｎ番目の指定フレームは高速フレームレート群２０２のいずれかのフレームである。
【００３２】
一般に図６（ａ）に示すように、スタートフレームＦｓとエンドフレームＦｅは指定フレームｎを挟む位置にある。スタートフレームＦｓとエンドフレームＦｅの初期値の間隔はこの例では２であるが、図５に示したようにフレームレートに応じて初期値の間隔は異なる。
【００３３】
ただし、ユーザの指定フレームｎがフレームレートが変わる境界に位置する場合もある。図６（ｂ）は、指定フレームｎが、通常フレームレートから高速フレームレートに切り替わるフレーム（高速フレームレートのフレーム群２０２の最初のフレームｎ＿ｓ）である場合を示す。図６（ｃ）は、指定フレームｎが、高速フレームレートから通常フレームレートに切り替わるフレーム（高速フレームレートのフレーム群２０２の最後のフレームｎ＿ｅ）である場合を示す。
【００３４】
ステップＳ１２で決定したスタートフレームＦｓとエンドフレームＦｅが指定フレームｎと同じフレームレートであるかどうかを判定する（Ｓ１４、Ｓ１６）。スタートフレームＦｓとエンドフレームＦｅのフレームレートが指定フレームｎのフレームレートと一致する場合（Ｓ１４のＹｅｓかつＳ１６のＹｅｓ）はステップＳ２２に進み、位置ずれ検出を行う。
【００３５】
スタートフレームＦｓのフレームレートが指定フレームｎのフレームレートと異なる場合（Ｓ１４のＮｏ）、スタートフレームＦｓは、指定フレームｎが属する高速フレームレートのフレーム群にはなく、その前の通常フレームレートのフレーム群にある。この場合、スタートフレームＦｓは、指定フレームｎが属する高速フレームレートのフレーム群の最初のフレームｎ＿ｓに設定され（Ｓ１８）、その後、図４Ｂの処理ルーチンＡに進む。
【００３６】
エンドフレームＦｅのフレームレートが指定フレームｎのフレームレートと異なる場合（Ｓ１６のＮｏ）、エンドフレームＦｅは、指定フレームｎが属する高速フレームレートのフレーム群にはなく、その後の通常フレームレートのフレーム群にある。この場合、エンドフレームＦｅは、指定フレームｎが属する高速フレームレートのフレーム群の最後のフレームｎ＿ｅに設定され（Ｓ２０）、その後、図４Ｃの処理ルーチンＢに進む。
【００３７】
これにより、図６（ｂ）のように指定フレームｎが高速フレームレートのフレーム群の最初のフレームｎ＿ｓである場合、スタートフレームＦｓは最初のフレームｎ＿ｓに設定される。また、図６（ｂ）のように指定フレームｎが高速フレームレートのフレーム群の最後のフレームｎ＿ｅである場合、エンドフレームＦｅは最後のフレームｎ＿ｅに設定される。
【００３８】
スタートフレームＦｓとエンドフレームＦｅの位置ずれ検出を行う（Ｓ２２）。位置ずれ検出方法としては、たとえば、カメラの動き推定等で用いられる既知の代表点マッチング法や位相限定相関法などを用いてフレーム間での画像全体の位置ずれ量を推定する方法がある。位置ずれ検出はサブ画素単位で行う。
【００３９】
次に、検出された位置ずれ量が水平方向、垂直方向にそれぞれ１画素以上であるかどうかを判定する（Ｓ２４）。位置ずれ量が１画素未満である場合（Ｓ２４のＮｏ）、指定フレームｎとスタートフレームＦｓのフレーム番号の絶対差分｜ｎ−Ｆｓ｜と、指定フレームとエンドフレームＦｅのフレーム番号の絶対差分｜ｎ−Ｆｅ｜とを求めて比較する（Ｓ２６）。
【００４０】
｜ｎ−Ｆｓ｜≧｜ｎ−Ｆｅ｜の場合（Ｓ２６のＹｅｓ）、エンドフレームＦｅのフレーム番号を所定フレーム数αだけ加算して更新する（Ｓ２８）。｜ｎ−Ｆｓ｜＜｜ｎ−Ｆｅ｜の場合（Ｓ２６のＮｏ）、スタートフレームＦｓのフレーム番号を所定フレーム数αだけ減算して更新する（Ｓ３０）。所定フレーム数αは変数であるが、αは１でもよく、検出したフレームレートによって変更してもよい。
【００４１】
所定フレーム数αだけ更新した後のスタートフレームＦｓ、エンドフレームＦｅが指定フレームｎと同じフレームレートであるかどうかを判定する（Ｓ３２、Ｓ３４）。スタートフレームＦｓ、エンドフレームＦｅのフレームレートが指定フレームｎのフレームレートに一致する場合（Ｓ３２のＹｅｓ、Ｓ３４のＹｅｓ）、ステップＳ２２に進み、位置ずれ検出を行う。
【００４２】
スタートフレームＦｓのフレームレートが指定フレームｎのフレームレートと異なる場合（Ｓ３２のＮｏ）、スタートフレームＦｓは、指定フレームｎが属する高速フレームレートのフレーム群の最初のフレームｎ＿ｓに設定され（Ｓ３６）、その後、図４Ｂの処理ルーチンＡに進む。
【００４３】
エンドフレームＦｅのフレームレートが指定フレームｎのフレームレートと異なる場合（Ｓ３４のＮｏ）、エンドフレームＦｅは、指定フレームｎが属する高速フレームレートのフレーム群の最後のフレームｎ＿ｅに設定され（Ｓ３８）、その後、図４Ｃの処理ルーチンＢに進む。
【００４４】
ステップＳ２４で位置ずれ量が１画素以上である場合（Ｓ２４のＹｅｓ）、位置ずれ量が閾値以下であるかどうかを判定する（Ｓ４０）。この閾値は任意であるが、位置ずれ量が大きすぎる場合、後述する超解像処理の位置推定の際、誤検出する可能性が高くなるため、閾値を例えば２画素など小さい値に設定することが好ましい。
【００４５】
位置ずれ量が閾値以下である場合（Ｓ４０のＹｅｓ）、ステップＳ５２に進み、スタートフレームＦｓとエンドフレームＦｅからフレーム間隔Ｆｄを計算する。フレーム間隔Ｆｄは、超解像処理で用いる複数の参照フレームを動画像から選択する際のフレーム間隔である。ステップＳ５２のフレーム間隔の計算方法については後述する。
【００４６】
位置ずれ量が閾値より大きい場合（Ｓ４０のＮｏ）、指定フレームｎとスタートフレームＦｓのフレーム番号の絶対差分｜ｎ−Ｆｓ｜と、指定フレームとエンドフレームＦｅのフレーム番号の絶対差分｜ｎ−Ｆｅ｜とを求めて比較する（Ｓ４２）。
【００４７】
｜ｎ−Ｆｓ｜＞｜ｎ−Ｆｅ｜の場合（Ｓ４２のＹｅｓ）、スタートフレームＦｓのフレーム番号を１だけ加算して更新する（Ｓ４４）。｜ｎ−Ｆｓ｜≦｜ｎ−Ｆｅ｜の場合（Ｓ４２のＮｏ）、エンドフレームＦｅのフレーム番号を１だけ減算して更新する（Ｓ４６）。
【００４８】
更新後、スタートフレームＦｓとエンドフレームＦｅのフレーム番号の絶対差分｜Ｆｓ−Ｆｅ｜がＮ−１以下になるかどうか判定し（Ｓ４８）、｜Ｆｓ−Ｆｅ｜≦Ｎ−１の場合（Ｓ４８のＹｅｓ）、ステップＳ５２に進み、フレーム間隔を計算する。｜Ｆｓ−Ｆｅ｜＞Ｎ−１の場合（Ｓ４８のＮｏ）、スタートフレームＦｓとエンドフレームＦｅの組合せについて既に位置ずれ検出を行ったかどうかを判定する（Ｓ５０）。スタートフレームＦｓとエンドフレームＦｅの組合せが既出である場合（Ｓ５０のＹｅｓ）、ステップＳ５２に進み、フレーム間隔を計算する。スタートフレームＦｓとエンドフレームＦｅの組合せが既出でない場合（Ｓ５０のＮｏ）、ステップＳ２２に戻り、更新されたスタートフレームＦｓとエンドフレームＦｅの組合せについて位置ずれ検出を行う。
【００４９】
ステップＳ５２において、スタートフレームＦｓとエンドフレームＦｅから次式によりフレーム間隔Ｆｄを計算する。
Ｆｄ＝｜Ｆｅ−Ｆｓ｜／（Ｎ−１）
【００５０】
ここでＮは利用する参照フレームの枚数である。参照フレームの枚数はフレームレートごとにあらかじめ指定しておき、検出されたフレームレートに応じて参照フレームの枚数を決定してもよい。一般にフレームレートが高いほど画像の解像度が低い。フレームレートが高いほど参照フレームの枚数を多くすることで低解像度の参照フレームから生成される高解像度画像の品質を高めることができる。あるいは、ディスプレイに出力する画像の解像度と現在のフレームレートの解像度から拡大倍率を求め、その倍率をもとに参照フレームの枚数を決定してもよい。倍率が大きいほど参照フレームの枚数を増やすことでディスプレイの高解像度に合わせて高画質の高解像度画像を生成することができる。
【００５１】
このようにして求めたＦｄが１より小さい場合、Ｆｄ＝１とする。Ｆｄが１より小さい場合は、スタートフレームＦｓとエンドフレームＦｅとの間のフレーム枚数が参照フレームＮの枚数より少ないことを示している。この場合、例えば、指定した参照フレーム枚数Ｎより少ないことをユーザに通知し、参照フレームＮを更新して続けるか処理をやめるか入力させるようにしてもよい。もしくは自動的に、参照フレーム枚数Ｎを更新するようにしてもよい。更新する際には参照フレームＮを絶対差分｜Ｆｓ-Ｆｅ｜に更新する。最後に、求めたフレーム間隔Ｆｄから後述する超解像処理で利用するＮ枚の参照フレームを決定する（Ｓ５４）。
【００５２】
図７（ａ）および図７（ｂ）は、フレーム間隔Ｆｄにもとづいて決定される参照フレームを説明する図である。
【００５３】
図７（ａ）は、ｎ番目の指定フレームに対して、参照フレーム決定処理によって最終的にスタートフレームＦｓは（ｎ−８）番目、エンドフレームＦｅは（ｎ＋８）番目となった場合を示す。参照フレームの枚数Ｎが９である場合、フレーム間隔Ｆｄは｜Ｆｅ−Ｆｓ｜／（Ｎ−１）＝１６／８＝２である。図７（ａ）に示すように、スタートフレームＦｓから始めてフレーム間隔を２枚ずつ空けながら参照フレームを選択する。このとき、指定フレームｎは必ず参照フレームとして選択する。
【００５４】
図７（ｂ）は、ｎ番目の指定フレームに対して、参照フレーム決定処理によって最終的にスタートフレームＦｓは（ｎ−６）番目、エンドフレームＦｅは（ｎ＋６）番目となった場合を示す。参照フレームの枚数Ｎが９である場合、フレーム間隔Ｆｄは｜Ｆｅ−Ｆｓ｜／（Ｎ−１）＝１２／８＝１．５である。図７（ｂ）に示すように、スタートフレームＦｓから始めて３枚毎に２枚の割合で参照フレームを選択する。このとき、指定フレームｎは必ず参照フレームとして選択する。
【００５５】
図４Ｂは、図４Ａの処理ルーチンＡの手順を示すフローチャートである。処理ルーチンＡは、図４ＡのステップＳ１８またはステップＳ３６において、スタートフレームＦｓが、指定フレームｎの属する高速フレームレートのフレーム群の最初のフレームｎ＿ｓに設定された場合に呼び出される位置ずれ検出ルーチンである。処理ルーチンＡでは、スタートフレームＦｓを最初のフレームｎ＿ｓに固定したまま、エンドフレームＦｅを前後に動かして所定の位置ずれ量となるように調整する。
【００５６】
最初のフレームｎ＿ｓに固定されたスタートフレームＦｓと、エンドフレームＦｅとの間で位置ずれ検出を行う（Ｓ６０Ａ）。検出された位置ずれ量が水平方向、垂直方向にそれぞれ１画素以上であるかどうかを判定する（Ｓ６２Ａ）。位置ずれ量が１画素未満である場合（Ｓ６２ＡのＮｏ）、エンドフレームＦｅのフレーム番号を所定フレーム数αだけ加算して更新する（Ｓ６４Ａ）。
【００５７】
所定フレーム数αだけ更新した後のエンドフレームＦｅが指定フレームｎと同じフレームレートであるかどうかを判定する（Ｓ６６Ａ）。エンドフレームＦｅのフレームレートが指定フレームｎのフレームレートに一致する場合（Ｓ６６ＡのＹｅｓ）、ステップＳ６０Ａに進み、位置ずれ検出を行う。
【００５８】
エンドフレームＦｅのフレームレートが指定フレームｎのフレームレートと異なる場合（Ｓ６６ＡのＮｏ）、エンドフレームＦｅは、指定フレームｎが属する高速フレームレートのフレーム群の最後のフレームｎ＿ｅに設定される（Ｓ６８Ａ）。次に、スタートフレームＦｓとエンドフレームＦｅの組合せについて既に位置ずれ検出を行ったかどうかを判定する（Ｓ７０Ａ）。スタートフレームＦｓとエンドフレームＦｅの組合せが既出である場合（Ｓ７０ＡのＹｅｓ）、ステップＳ８０Ａに進み、フレーム間隔を計算する。スタートフレームＦｓとエンドフレームＦｅの組合せが既出でない場合（Ｓ７０ＡのＮｏ）、ステップＳ６０Ａに戻り、スタートフレームＦｓとエンドフレームＦｅの組合せについて位置ずれ検出を行う。
【００５９】
ステップＳ６２Ａで位置ずれ量が１画素以上である場合（Ｓ６２ＡのＹｅｓ）、位置ずれ量が閾値以下であるかどうかを判定する（Ｓ７２Ａ）。位置ずれ量が閾値以下である場合（Ｓ７２ＡのＹｅｓ）、ステップＳ８０Ａに進み、スタートフレームＦｓとエンドフレームＦｅからフレーム間隔Ｆｄを計算する。
【００６０】
位置ずれ量が閾値より大きい場合（Ｓ７２ＡのＮｏ）、エンドフレームＦｅのフレーム番号を１だけ減算して更新する（Ｓ７４Ａ）。更新後、スタートフレームＦｓとエンドフレームＦｅのフレーム番号の絶対差分｜Ｆｓ−Ｆｅ｜がＮ−１以下になるかどうか判定し（Ｓ７６Ａ）、｜Ｆｓ−Ｆｅ｜≦Ｎ−１の場合（Ｓ７６ＡのＹｅｓ）、ステップＳ８０Ａに進み、フレーム間隔を計算する。｜Ｆｓ−Ｆｅ｜＞Ｎ−１の場合（Ｓ７６ＡのＮｏ）、スタートフレームＦｓとエンドフレームＦｅの組合せについて既に位置ずれ検出を行ったかどうかを判定する（Ｓ７８Ａ）。スタートフレームＦｓとエンドフレームＦｅの組合せが既出である場合（Ｓ７８ＡのＹｅｓ）、ステップＳ８０Ａに進み、フレーム間隔を計算する。スタートフレームＦｓとエンドフレームＦｅの組合せが既出でない場合（Ｓ７８ＡのＮｏ）、ステップＳ６０Ａに戻り、更新されたスタートフレームＦｓとエンドフレームＦｅの組合せについて位置ずれ検出を行う。
【００６１】
ステップＳ８０Ａにおいて、スタートフレームＦｓとエンドフレームＦｅからフレーム間隔Ｆｄ＝｜Ｆｅ−Ｆｓ｜／（Ｎ−１）を計算する。求めたフレーム間隔ＦｄからＮ枚の参照フレームを決定する（Ｓ８２Ａ）。
【００６２】
図４Ｃは、図４Ａの処理ルーチンＢの手順を示すフローチャートである。処理ルーチンＢは、図４ＡのステップＳ２０またはステップＳ３８において、エンドフレームＦｅが、指定フレームｎの属する高速フレームレートのフレーム群の最後のフレームｎ＿ｅに設定された場合に呼び出される位置ずれ検出ルーチンである。処理ルーチンＢでは、エンドフレームＦｅを最後のフレームｎ＿ｅに固定したまま、スタートフレームＦｓを前後に動かして所定の位置ずれ量となるように調整する。
【００６３】
スタートフレームＦｓと、最後のフレームｎ＿ｅに固定されたエンドフレームＦｅとの間で位置ずれ検出を行う（Ｓ６０Ｂ）。検出された位置ずれ量が水平方向、垂直方向にそれぞれ１画素以上であるかどうかを判定する（Ｓ６２Ｂ）。位置ずれ量が１画素未満である場合（Ｓ６２ＢのＮｏ）、スタートフレームＦｓのフレーム番号を所定フレーム数αだけ減算して更新する（Ｓ６４Ｂ）。
【００６４】
所定フレーム数αだけ更新した後のスタートフレームＦｓが指定フレームｎと同じフレームレートであるかどうかを判定する（Ｓ６６Ｂ）。スタートフレームＦｓのフレームレートが指定フレームｎのフレームレートに一致する場合（Ｓ６６ＢのＹｅｓ）、ステップＳ６０Ｂに進み、位置ずれ検出を行う。
【００６５】
スタートフレームＦｓのフレームレートが指定フレームｎのフレームレートと異なる場合（Ｓ６６ＢのＮｏ）、スタートフレームＦｓは、指定フレームｎが属する高速フレームレートのフレーム群の最初のフレームｎ＿ｓに設定される（Ｓ６８Ｂ）。次に、スタートフレームＦｓとエンドフレームＦｅの組合せについて既に位置ずれ検出を行ったかどうかを判定する（Ｓ７０Ｂ）。スタートフレームＦｓとエンドフレームＦｅの組合せが既出である場合（Ｓ７０ＢのＹｅｓ）、ステップＳ８０Ｂに進み、フレーム間隔を計算する。スタートフレームＦｓとエンドフレームＦｅの組合せが既出でない場合（Ｓ７０ＢのＮｏ）、ステップＳ６０Ｂに戻り、スタートフレームＦｓとエンドフレームＦｅの組合せについて位置ずれ検出を行う。
【００６６】
ステップＳ６２Ｂで位置ずれ量が１画素以上である場合（Ｓ６２ＢのＹｅｓ）、位置ずれ量が閾値以下であるかどうかを判定する（Ｓ７２Ｂ）。位置ずれ量が閾値以下である場合（Ｓ７２ＢのＹｅｓ）、ステップＳ８０Ｂに進み、スタートフレームＦｓとエンドフレームＦｅからフレーム間隔Ｆｄを計算する。
【００６７】
位置ずれ量が閾値より大きい場合（Ｓ７２ＢのＮｏ）、スタートフレームＦｓのフレーム番号を１だけ加算して更新する（Ｓ７４Ｂ）。更新後、スタートフレームＦｓとエンドフレームＦｅのフレーム番号の絶対差分｜Ｆｓ−Ｆｅ｜がＮ−１以下になるかどうか判定し（Ｓ７６Ｂ）、｜Ｆｓ−Ｆｅ｜≦Ｎ−１の場合（Ｓ７６ＢのＹｅｓ）、ステップＳ８０Ｂに進み、フレーム間隔を計算する。｜Ｆｓ−Ｆｅ｜＞Ｎ−１の場合（Ｓ７６ＢのＮｏ）、スタートフレームＦｓとエンドフレームＦｅの組合せについて既に位置ずれ検出を行ったかどうかを判定する（Ｓ７８Ｂ）。スタートフレームＦｓとエンドフレームＦｅの組合せが既出である場合（Ｓ７８ＢのＹｅｓ）、ステップＳ８０Ｂに進み、フレーム間隔を計算する。スタートフレームＦｓとエンドフレームＦｅの組合せが既出でない場合（Ｓ７８ＢのＮｏ）、ステップＳ６０Ｂに戻り、更新されたスタートフレームＦｓとエンドフレームＦｅの組合せについて位置ずれ検出を行う。
【００６８】
ステップＳ８０Ｂにおいて、スタートフレームＦｓとエンドフレームＦｅからフレーム間隔Ｆｄ＝｜Ｆｅ−Ｆｓ｜／（Ｎ−１）を計算する。求めたフレーム間隔ＦｄからＮ枚の参照フレームを決定する（Ｓ８２Ｂ）。
【００６９】
図８は、図２のステップＳ１３０の超解像処理の詳細な手順を示すフローチャートである。超解像処理にはいくつかの方法があるが、ここでは反復逆投影（ＩＢＰ(Iterative Backward Projection)）法を説明する。
【００７０】
まず、図２のステップＳ１１０のフレームレート検出処理で検出したフレームレートにもとづいて、ＩＢＰ法で用いられる点拡がり関数ＰＳＦ、バックプロジェクション（逆投影）関数ＢＰ、画像を拡大する倍率ｒを決定する（Ｓ２００）。一般に倍率に応じてＰＳＦとＢＰを選択する必要があり、高速撮影時はフレームレートに応じて撮影可能な解像度が決まるので、フレームレートにもとづいて点拡がり関数ＰＳＦ，バックプロジェクション関数ＢＰを決定することになる。点拡がり関数ＰＳＦおよびバックプロジェクション関数ＢＰは撮影したビデオカメラから事前に取得しておくか、あらかじめ記録していたものを利用してもよい。
【００７１】
ここで倍率ｒは、出力先の映像表示装置の解像度等の指定された出力解像度と、動画像のフレームレートに応じて決まる解像度との比から求められる。あるいは、倍率ｒは、通常フレームレートの画像の解像度と、高速フレームレートの画像の解像度との比から求めてもよい。この場合、画像の解像度がフレームレートと比例関係にあるなら、倍率ｒは、通常フレームレートと高速フレームレートとの比から求めることができる。
【００７２】
次に、図２のステップＳ１２０の参照フレーム決定処理で選択された複数の参照フレーム（ユーザーによる指定フレームｎを含む）に対して、サブ画素単位の位置ずれ推定を行う（Ｓ２１０）。位置ずれ推定方法としては、カメラの動き推定等で用いられる既知の代表点マッチング法や位相限定相関法などを用いてカメラの動きによる位置ずれを推定する。このとき、ステップＳ１２０の参照フレーム決定処理ですでに行った位置ずれ推定の結果を用いてもよい。
【００７３】
また、高速撮影の場合、一般的にはカメラの動き量は小さくなるため、微小な時間の動きは等速直線運動と仮定することができる。この場合、ステップＳ１２０の参照フレーム決定処理で最後に行ったスタートフレームＦｓ、エンドフレームＦｅの間の位置ずれ推定量を、参照フレーム決定処理で選択されたＮ枚の参照フレームの間で均等割りにして各参照フレームの位置ずれ推定量としてもよい。たとえば、閾値以上のフレームレートの場合に、等速直線運動と仮定して、上記の均等割りの計算を行う。これにより、位置ずれ推定を簡略化して高速に超解像度処理を実行することができる。
【００７４】
たとえば、図７（ａ）の場合、指定フレームｎに対してスタートフレームＦｓ＝ｎ−８、エンドフレームＦｅ＝ｎ＋８であり、スタートフレームＦｓとエンドフレームＦｅの絶対差は１６である。スタートフレームＦｓとエンドフレームＦｅの位置ずれ量が水平方向、垂直方向ともに１画素だった場合、位置ずれ量は１フレーム当たり１／１６＝０．０６２５である。参照フレーム決定ステップで選択された９枚の参照フレームと指定フレームｎのフレーム番号の差は左から−８，−６，−４，−２，０，２，４，６，８である。等速直線運動を仮定すると、指定フレームｎの位置ずれ量を（０，０）として、それぞれのフレーム番号の差に１フレーム当たりの位置ずれ量０．０６２５を乗算することにより、各参照フレームの位置ずれ量は、（−０．５，−０．５），（−０．３７５，−０．３７５），（−０．２５，−０．２５），（−０．１２５，−０．１２５），（０，０），（０．１２５，０．１２５），（０．２５，０．２５），（０．３７５，０．３７５），（０．５，０．５）となる。
【００７５】
続いてＩＢＰ法による超解像処理により初期高解像度画像を生成する（Ｓ２２０）。ＩＢＰ法では、推定した高解像度画像を点拡がり関数ＰＳＦを用いて撮影画像の解像度に合うように縮小して推定低解像度画像を生成する。生成した推定低解像度画像と実際の撮影画像との差分をとり、その誤差をバックプロジェクション関数ＢＰを作用させた上で推定した高解像度画像に足し込む反復処理により高解像度画像を更新する。誤差が収束するまで反復処理を繰り返すことで最終的な高解像度画像が生成される。反復処理を開始するためには、高解像度画像の初期値が必要となるが、これにユーザによる指定フレームを拡大して利用することができる。ただし、初期値の高解像度画像はどのような画像でもよく、初期値として高解像度画像を与える方法はこれに限られない。その後ＩＢＰ法により、高解像画像への拡大処理を行う（Ｓ２３０）。
【００７６】
図９は、図８のステップＳ２３０の反復逆投影法の詳細な手順を示すフローチャートである。まず、図８のステップＳ２２０で作成した初期高解像度画像を入力し、最初の推定高解像度画像ｆ０とする（Ｓ３００）。繰り返し回数ｉを０に初期化する（Ｓ３０２）。
【００７７】
参照フレームの枚数ｎを０に初期化する（Ｓ３０４）。参照フレームの枚数が指定した枚数Ｎに達したかどうかを判定する（Ｓ３０６）。参照フレームの枚数が指定した枚数Ｎに達していない場合（Ｓ３０６のＮｏ）、図８のステップＳ２１０の参照フレームの位置ずれ推定処理で決定された参照フレームｎの位置ズレ推定量ｄｎにもとづいて推定高解像度画像ｆの画素をシフトする（Ｓ３０８）。このとき、ステップＳ２１０で求めた位置ずれ量は低解像度画像での位置ずれ量であるため、拡大倍率を乗算して高解像度画像での位置ずれ量に変換した上で使用する。
【００７８】
画素シフトした推定高解像度画像に対し、点広がり関数ＰＳＦをコンボリューション（畳み込み積分）する（Ｓ３１０）。ここで用いるＰＳＦは図８のステップＳ２００でフレームレートにもとづいて選択したＰＳＦを用いる。
【００７９】
撮影画像の解像度になるようにダウンサンプリングを行い、推定低解像度画像を作成する（Ｓ３１２）。推定低解像度画像と実際の撮影画像である参照フレームｎとの差分を計算し差分低解像度画像を作成する（Ｓ３１４）。差分低解像度画像に対し、アップサンプリングを行い差分高解像度画像を生成する（Ｓ３１６）。アップサンプリングした差分高解像度画像に対してバックプロジェクション関数ＢＰをコンボリューションする（Ｓ３１８）。ここで用いるＢＰは図８のステップＳ２００でフレームレートにもとづいて選択したＢＰを用いる。ＢＰとコンボリューションした差分高解像度画像に対して、位置ずれ量にもとづいて最初のシフト方向とは反対方向にシフトを行う（Ｓ３２０）。ここまでの処理が終わったら、参照フレームの枚数ｎを１だけ増やし（Ｓ３２２）、ステップＳ３０６に進み、処理した参照フレームの枚数ｎがＮになるまで、同じ処理を繰り返す。
【００８０】
ステップＳ３０６において、参照フレームの枚数が指定した枚数Ｎに達した場合（Ｓ３０６のＹｅｓ）、ステップＳ３２０で逆方向にシフトされた差分高解像度画像を推定高解像度画像に加算して推定高解像度画像を更新する（Ｓ３２４）。次に、終了条件に達したかどうかを判定する（Ｓ３２６）。終了条件は、例えば指定した繰り返し回数に達したかどうか、各差分低解像度画像の平均値が閾値以下になったかどうか等の条件を設定する。終了条件を満たさない場合（Ｓ３２６のＮｏ）、繰り返し回数ｉを１だけ増やし（Ｓ３２８）、ステップＳ３０４に戻り、それ以降の処理を繰り返す。終了条件を満たす場合（Ｓ３２６のＹｅｓ）、反復逆投影法の処理を終了し、生成された推定高解像度画像を最終的な高解像度画像として出力する。
【００８１】
以上より、図８のステップＳ２３０のＩＢＰ法による画像拡大処理が終了し、高解像度画像が出力され、超解像処理が終了する。
【００８２】
図２のステップＳ１３０の超解像処理により得られた高解像度画像は、ステップＳ１４０の画像出力処理においてディスプレイなどに出力されて表示される。これにより、高速撮影時でも被写体や撮影状況、撮影者の個人差によらずに、指定されたフレームから高画質の高解像度画像を出力することが可能となる。
【００８３】
以上述べたように、実施例１によれば、超解像処理で用いる複数の参照フレームを選択する際、所定の位置ずれ量になるように参照フレームのフレーム間隔を決定することにより、高画質の高解像画像を生成することができる。高速フレームレートを用いた撮影はいろいろな状況下で行われる。高速に移動する被写体を撮影する場合もあれば、低速の被写体のある決定的な瞬間を撮影するために高速撮影することもある。また、撮影者によって手ぶれ等に個人差がある。被写体の違い、撮影状況の違い、撮影者の手ぶれなどの個人差などにより、動き量は大幅に変化する。フレームレートのみに依存せずに、参照フレームのフレーム間隔を位置ずれ量にもとづいて適切に決定することで、いかなる撮影状態でも高画質の高解像度画像を生成することができる。
【００８４】
（実施例２）
実施例１では、画像全体の位置ずれ量を推定して、超解像処理に用いる参照フレームのフレーム間隔Ｆｄを決定した。しかしながら、高速撮影時に、図１０（ａ）のようにカメラの手ぶれで位置ずれ量が水平方向、垂直方向にそれぞれ１画素ずれるのに３０フレームかかる場合もあれば、図１０（ｂ）のように、動きのある被写体３００が数フレームのうちに高速に動く場合もある。後者の場合、手ぶれ等のカメラの動きから位置ずれ量を推定するよりも、動きのある被写体３００の動きを推定した方がよい。そこで、実施例２では、被写体の動きに注目してフレーム間隔Ｆｄを決定する方法を説明する。実施例１と共通する構成と動作については適宜説明を省略する。
【００８５】
図１１Ａ〜図１１Ｃは、実施例２の場合の図２のステップＳ１２０の参照フレーム決定処理の詳細な手順を示すフローチャートである。実施例２では、実施例１とは違って、ブロック毎に位置ずれ検出を行う。
【００８６】
図２のステップＳ１１０のフレームレート検出処理で検出されたフレームレートを取得する（Ｓ４００）。指定フレームｎと検出されたフレームレートからスタートフレームＦｓとエンドフレームＦｅの初期値を求める（Ｓ４０２）。
【００８７】
ステップＳ４０２で決定したスタートフレームＦｓとエンドフレームＦｅが指定フレームｎと同じフレームレートであるかどうかを判定する（Ｓ４０４、Ｓ４０６）。スタートフレームＦｓとエンドフレームＦｅのフレームレートが指定フレームｎのフレームレートと一致する場合（Ｓ４０４のＹｅｓかつＳ４０６のＹｅｓ）はステップＳ４１２に進み、ブロック毎の位置ずれ検出を行う。
【００８８】
スタートフレームＦｓのフレームレートが指定フレームｎのフレームレートと異なる場合（Ｓ４０４のＮｏ）、スタートフレームＦｓは、指定フレームｎが属する高速フレームレートのフレーム群の最初のフレームｎ＿ｓに設定され（Ｓ４０８）、その後、図１１Ｂの処理ルーチンＡに進む。
【００８９】
エンドフレームＦｅのフレームレートが指定フレームｎのフレームレートと異なる場合（Ｓ４０６のＮｏ）、エンドフレームＦｅは、指定フレームｎが属する高速フレームレートのフレーム群の最後のフレームｎ＿ｅに設定され（Ｓ４１０）、その後、図１１Ｃの処理ルーチンＢに進む。
【００９０】
スタートフレームＦｓとエンドフレームＦｅの間でブロックマッチングによりブロック毎の位置ずれ検出を行う（Ｓ４１２）。フレーム画像を例えば８×８のブロックに分割し、ブロック毎に動きベクトルを検出する。各ブロックの動きベクトルを参照して、例えば水平方向、垂直方向に１画素以上、位置ずれが起きているかどうかを判定する。
【００９１】
次に、１画素以上ずれたブロックの数が閾値以上であるかどうかを判定する（ＳＳ４１４）。閾値は例えば５ブロックに設定する。高速撮影時はフレームレートに応じて撮影可能な解像度が決まるため、この閾値をフレームレートに応じて増減してもよい。あるいは、フレームの総ブロック数をフレームレートを参考にあらかじめ計算しておき、位置ずれ量が水平方向、垂直方向にそれぞれ１画素以上動いているブロックの割合が閾値以上であるかどうかを判定してもよい。
【００９２】
１画素以上ずれたブロックの数が閾値未満である場合（ＳＳ４１４のＮｏ）、指定フレームｎとスタートフレームＦｓのフレーム番号の絶対差分｜ｎ−Ｆｓ｜と、指定フレームとエンドフレームＦｅのフレーム番号の絶対差分｜ｎ−Ｆｅ｜とを求めて比較する（ＳＳ４１６）。
【００９３】
｜ｎ−Ｆｓ｜≧｜ｎ−Ｆｅ｜の場合（Ｓ４１６のＹｅｓ）、エンドフレームＦｅのフレーム番号を所定フレーム数αだけ加算して更新する（ＳＳ４１８）。｜ｎ−Ｆｓ｜＜｜ｎ−Ｆｅ｜の場合（Ｓ４１６のＮｏ）、スタートフレームＦｓのフレーム番号を所定フレーム数αだけ減算して更新する（Ｓ４２０）。
【００９４】
所定フレーム数αだけ更新した後のスタートフレームＦｓ、エンドフレームＦｅが指定フレームｎと同じフレームレートであるかどうかを判定する（Ｓ４２２、Ｓ４２４）。スタートフレームＦｓ、エンドフレームＦｅのフレームレートが指定フレームｎのフレームレートに一致する場合（Ｓ４２２のＹｅｓ、Ｓ４２４のＹｅｓ）、ステップＳ４１２に進み、ブロック毎の位置ずれ検出を行う。
【００９５】
スタートフレームＦｓのフレームレートが指定フレームｎのフレームレートと異なる場合（Ｓ４２２のＮｏ）、スタートフレームＦｓは、指定フレームｎが属する高速フレームレートのフレーム群の最初のフレームｎ＿ｓに設定され（Ｓ４２６）、その後、図１１Ｂの処理ルーチンＡに進む。
【００９６】
エンドフレームＦｅのフレームレートが指定フレームｎのフレームレートと異なる場合（Ｓ４２４のＮｏ）、エンドフレームＦｅは、指定フレームｎが属する高速フレームレートのフレーム群の最後のフレームｎ＿ｅに設定され（Ｓ４２８）、その後、図１１Ｃの処理ルーチンＢに進む。
【００９７】
１画素以上ずれたブロックの数が閾値以上である場合（Ｓ４１４のＹｅｓ）、ステップＳ４３０に進み、スタートフレームＦｓとエンドフレームＦｅからフレーム間隔Ｆｄ＝｜Ｆｅ−Ｆｓ｜／（Ｎ−１）を計算する。最後に、求めたフレーム間隔Ｆｄから超解像処理で利用するＮ枚の参照フレームを決定する（Ｓ４３２）。
【００９８】
図１１Ｂは、図１１Ａの処理ルーチンＡの手順を示すフローチャートである。処理ルーチンＡは、図１１ＡのステップＳ４０８またはステップＳ４２６において、スタートフレームＦｓが、指定フレームｎの属する高速フレームレートのフレーム群の最初のフレームｎ＿ｓに設定された場合に呼び出される位置ずれ検出ルーチンである。
【００９９】
最初のフレームｎ＿ｓに固定されたスタートフレームＦｓと、エンドフレームＦｅとの間でブロック毎の位置ずれ検出を行う（Ｓ４４０Ａ）。１画素以上ずれたブロックの数が閾値以上であるかどうかを判定する（Ｓ４４２Ａ）。１画素以上ずれたブロックの数が閾値未満である場合（Ｓ４４２ＡのＮｏ）、エンドフレームＦｅのフレーム番号を所定フレーム数αだけ加算して更新する（Ｓ４４４Ａ）。
【０１００】
所定フレーム数αだけ更新した後のエンドフレームＦｅが指定フレームｎと同じフレームレートであるかどうかを判定する（Ｓ４４６Ａ）。エンドフレームＦｅのフレームレートが指定フレームｎのフレームレートに一致する場合（Ｓ４４６ＡのＹｅｓ）、ステップＳ４４０Ａに進み、ブロック毎の位置ずれ検出を行う。
【０１０１】
エンドフレームＦｅのフレームレートが指定フレームｎのフレームレートと異なる場合（Ｓ４４６ＡのＮｏ）、エンドフレームＦｅは、指定フレームｎが属する高速フレームレートのフレーム群の最後のフレームｎ＿ｅに設定される（Ｓ４４８Ａ）。次に、スタートフレームＦｓとエンドフレームＦｅの組合せについて既に位置ずれ検出を行ったかどうかを判定する（Ｓ４５０Ａ）。スタートフレームＦｓとエンドフレームＦｅの組合せが既出である場合（Ｓ４５０ＡのＹｅｓ）、ステップＳ４５２Ａに進み、フレーム間隔を計算する。スタートフレームＦｓとエンドフレームＦｅの組合せが既出でない場合（Ｓ４５０ＡのＮｏ）、ステップＳ４４０Ａに戻り、スタートフレームＦｓとエンドフレームＦｅの組合せについてブロック毎の位置ずれ検出を行う。
【０１０２】
ステップＳ４４２Ａで１画素以上ずれたブロックの数が閾値以上である場合（Ｓ４４２ＡのＹｅｓ）、スタートフレームＦｓとエンドフレームＦｅからフレーム間隔Ｆｄ＝｜Ｆｅ−Ｆｓ｜／（Ｎ−１）を計算する（Ｓ４５２Ａ）。求めたフレーム間隔ＦｄからＮ枚の参照フレームを決定する（Ｓ４５４Ａ）。
【０１０３】
図１１Ｃは、図１１Ａの処理ルーチンＢの手順を示すフローチャートである。処理ルーチンＡは、図１１ＡのステップＳ４１０またはステップＳ４２８において、エンドフレームＦｅが、指定フレームｎの属する高速フレームレートのフレーム群の最後のフレームｎ＿ｅに設定された場合に呼び出される位置ずれ検出ルーチンである。
【０１０４】
スタートフレームＦｓと、最後のフレームｎ＿ｅに固定されたエンドフレームＦｅとの間でブロック毎の位置ずれ検出を行う（Ｓ４４０Ｂ）。１画素以上ずれたブロックの数が閾値以上であるかどうかを判定する（Ｓ４４２Ｂ）。１画素以上ずれたブロックの数が閾値未満である場合（Ｓ４４２ＢのＮｏ）、スタートフレームＦｓのフレーム番号を所定フレーム数αだけ減算して更新する（Ｓ４４４Ｂ）。
【０１０５】
所定フレーム数αだけ更新した後のスタートフレームＦｓが指定フレームｎと同じフレームレートであるかどうかを判定する（Ｓ４４６Ｂ）。スタートフレームＦｓのフレームレートが指定フレームｎのフレームレートに一致する場合（Ｓ４４６ＢのＹｅｓ）、ステップＳ４４０Ｂに進み、ブロック毎の位置ずれ検出を行う。
【０１０６】
スタートフレームＦｓのフレームレートが指定フレームｎのフレームレートと異なる場合（Ｓ４４６ＢのＮｏ）、スタートフレームＦｓは、指定フレームｎが属する高速フレームレートのフレーム群の最初のフレームｎ＿ｓに設定される（Ｓ４４８Ｂ）。次に、スタートフレームＦｓとエンドフレームＦｅの組合せについて既に位置ずれ検出を行ったかどうかを判定する（Ｓ４５０Ｂ）。スタートフレームＦｓとエンドフレームＦｅの組合せが既出である場合（Ｓ４５０ＢのＹｅｓ）、ステップＳ４５２Ｂに進み、フレーム間隔を計算する。スタートフレームＦｓとエンドフレームＦｅの組合せが既出でない場合（Ｓ４５０ＢのＮｏ）、ステップＳ４４０Ｂに戻り、スタートフレームＦｓとエンドフレームＦｅの組合せについてブロック毎の位置ずれ検出を行う。
【０１０７】
ステップＳ４４２Ｂで１画素以上ずれたブロックの数が閾値以上である場合（Ｓ４４２ＢのＹｅｓ）、スタートフレームＦｓとエンドフレームＦｅからフレーム間隔Ｆｄ＝｜Ｆｅ−Ｆｓ｜／（Ｎ−１）を計算する（Ｓ４５２Ｂ）。求めたフレーム間隔ＦｄからＮ枚の参照フレームを決定する（Ｓ４５４Ｂ）。
【０１０８】
実施例２では、高速に動く被写体を含む動画像の場合、ブロック単位で位置ずれを検出することで超解像処理に用いる複数の参照フレームのフレーム間隔を適切に決定して高画質の高解像度画像を生成することができる。
【０１０９】
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【０１１０】
上記の説明では、再構成型超解像処理を利用した実施例を説明したが、超解像処理は再構成型方式以外に学習型方式など他の方式を用いてもよい。
【符号の説明】
【０１１１】
１０  画像入力部、  ２０  記憶部、  ３０  超解像処理部、  ４０  表示部、  ５０  フレームレート検出部、  ６０  参照フレーム決定部。
【図１】
2016181023.tif 000003
【図２】
2016181023.tif 000004
【図３】
2016181023.tif 000005
【図４Ａ】
2016181023.tif 000006
【図４Ｂ】
2016181023.tif 000007
【図４Ｃ】
2016181023.tif 000008
【図５】
2016181023.tif 000009
【図６】
2016181023.tif 000010
【図７】
2016181023.tif 000011
【図８】
2016181023.tif 000012
【図９】
2016181023.tif 000013
【図１０】
2016181023.tif 000014
【図１１Ａ】
2016181023.tif 000015
【図１１Ｂ】
2016181023.tif 000016
【図１１Ｃ】
2016181023.tif 000017