(57)【特許請求の範囲】
【請求項１】
高解像化する基準フレーム上でその他の参照フレーム上の画素を位置合わせして、その結果を元に再構成処理を行うことにより、複数フレームの低解像度の画像から１フレームの高解像度の画像を生成する超解像処理を行う画像処理装置において、
並列動作可能な複数の演算処理手段を備え、
前記複数の演算処理手段上で、前記基準フレームおよび前記参照フレーム間の位置合わせ処理を行う際、基準と参照の関係を逆とした位置合わせ処理を並列に動作させて、各位置合わせ処理においてその処理結果を互いに共有するように構成される
画像処理装置。
【請求項２】
並列に動作している前記位置合わせ処理において、既に一方の位置合わせ処理によって前記参照フレームおよび前記基準フレーム上の対応点ペアが計算されている画素については、その計算結果を他方の位置合わせ処理で用いるように構成される
請求項１に記載の画像処理装置。
【請求項３】
並列に動作するペアとなる前記位置合わせ処理の各々がアクセス可能で各々の処理結果が格納される記憶領域であって、ペアとなる前記位置合わせ処理の各々に対して入力画像の画素毎の記憶領域が用意される記憶手段を有し、
前記一方の位置合わせ処理により対応点ペアが計算済みであり、かつ、該対応点ペアの前記他方の位置合わせ処理による計算が未完である場合、前記一方の位置合わせ処理により前記他方の位置合わせ処理用の対応する前記記憶領域にその処理結果を反映させることにより、該処理結果を前記他方の位置合わせ処理で用いるように構成される請求項２に記載の画像処理装置。
【請求項４】
並列に動作するペアとなる前記位置合わせ処理の各々がそれぞれの参照フレームの画素に対し相互に逆順に位置合わせ処理を行い、一方の位置合わせ処理がその参照フレーム側の全画素について処理を先に完了した場合、該一方の位置合わせ処理が、他方の位置合わせ処理が処理対象とする参照フレーム上の未処理の画素の一部について、その位置合わせ処理を肩代わりするように構成される請求項１から請求項３のいずれか１項に記載の画像処理装置。
【請求項５】
並列に動作するペアとなる前記位置合わせ処理の各々がそれぞれの参照フレーム上の同じ位置の１ラインの画素に対し相互に逆順に位置合わせ処理を行い、該当の１ラインについて一方の位置合わせ処理が先に完了した場合、該一方の位置合わせ処理が、前記他方の位置合わせ処理が処理対象とする１ライン上の未処理の画素の一部について、その位置合わせ処理を肩代わりするように構成される請求項１から請求項３のいずれか１項に記載の画像処理装置。
【請求項６】
前記位置合わせ処理の各々により並列処理された位置合わせの結果を受けて、各基準フレームから高解像画像を生成するための前記再構成処理をパイプライン動作させるように構成される請求項１から請求項５のいずれか１項に記載の画像処理装置。
【請求項７】
並列動作可能な複数の演算処理手段を備えて、高解像化する基準フレーム上でその他の参照フレーム上の画素を位置合わせして、その結果を元に再構成処理を行うことにより、複数フレームの低解像度の画像から１フレームの高解像度の画像を生成する超解像処理を行う画像処理装置における、画像処理方法であって、
前記基準フレームおよび前記参照フレーム間の位置合わせ処理を行う際に、前記複数の演算処理手段に、
基準と参照の関係を逆とした位置合わせ処理を並列に動作させる工程と、
並列に動作する前記複数の演算処理手段による各位置合わせ処理においてその処理結果を互いに共有させる工程と、
を行わせる画像処理方法。
【請求項８】
並列動作可能な複数の演算処理手段を備えて、高解像化する基準フレーム上でその他の参照フレーム上の画素を位置合わせして、その結果を元に再構成処理を行うことにより、複数フレームの低解像度の画像から１フレームの高解像度の画像を生成する超解像処理を行う画像処理装置における、画像処理プログラムであって、
前記基準フレームおよび前記参照フレーム間の位置合わせ処理を行う際に、前記複数の演算処理手段に、
基準と参照の関係を逆とした位置合わせ処理を並列に動作させる工程と、
並列に動作する前記複数の演算処理手段による各位置合わせ処理においてその処理結果を互いに共有させる工程と、
を実行させる画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、画像処理装置、画像処理方法およびそのプログラムに関する。
【背景技術】
【０００２】
近年、ＴＶやディスプレイに超解像技術を使った製品が市販されている。超解像技術は、画像の画素サンプリング時（撮像素子による光電変換時や縮小処理時）に失われる詳細な部分（ナイキスト周波数以上の成分）を画像処理によって再現する技術である。たとえば、解像度が低いＮＴＳＣ方式のビデオカメラやＤＶＤの映像を大画面液晶ＴＶに表示する場合に、超解像技術を使うと詳細な部分が再現されて、解像度が高い鮮明な画像を得ることができる。
【０００３】
超解像技術にはさまざまな方式が提案されている。フレーム内超解像、辞書ベース超解像、複数フレーム超解像などである。それらの中で特に画像の詳細部分の再現率が高くて高性能なのは、複数フレーム超解像方式である。位置あわせ処理として時間的に前後する複数のフレームから同じ物体の同じ部分を対応点として検出し、この位置あわせ処理によって得られた参照フレームと基準フレームの対応点の情報を用いて再構成処理を行うことで高解像度の画像が得られる。このようにして、単一フレームよりも情報量が多くなった状態から１フレームの高解像フレームを生成する。それを、１フレームずつ進めながら連続して行うことにより高解像の動画が生成される。なお、再構成処理には、高画質であるが処理負荷が高い繰り返し処理を用いる方式と、処理負荷が低い反面画質は劣る繰り返しを用いない方式がある。
【０００４】
ところで、複数フレーム超解像の処理を実際に実行する場合、ＣＰＵによるソフトウェア処理と、専用ハードウェア処理の二通りの実施形態がある。ＣＰＵによるソフトウェア処理は、従来は演算処理部が１つのパーソナルコンピュータ上で実施されることが主流であった。このようなパーソナルコンピュータ上では、複数フレーム超解像の各処理は逐次的に行われる。つまり、前フレームとの位置あわせ処理を行い、後フレームとの位置あわせ処理を行い、最後に再構成処理を行う。あるいは、マルチスレッドというソフトウェアプログラミング技術により、ＯＳがコントロールする優先度にしたがって時分割で擬似的な並列演算がなされる場合もあるが、この技術では、処理の切り替えオーバーヘッドによって逐次的に処理を行うよりも時間がかかることさえある。
【０００５】
近年では、複数の演算処理部を１つのＣＰＵに内蔵して性能向上を狙う製品が主流となってきた。そのようなＣＰＵは、演算処理部＝コアと呼び、それを複数または多数持つことから、マルチコアＣＰＵ、メニーコアＣＰＵと呼ばれる。そのＣＰＵでは、複数のプログラムは複数の演算処理部を使って並列動作させることができる。
【０００６】
また、パーソナルコンピュータに搭載されるマルチコアＣＰＵだけでなく、組み込みＣＰＵやＤＳＰ（Digital  Signal  Processor）においてもマルチコア化、メニーコア化が進んでいる。このように、専用ハードウェアにも、複数の演算処理部を実装して処理を並列に行うことができるようになっている。このような複数の演算処理部を利用すれば、前フレームとの位置あわせ処理と、後フレームの位置あわせ処理と、再構成処理とを並列に行うようにすることができる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１０−２１８２７１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、単一の演算処理部による場合、超解像処理において、前後の参照フレームの全画素を、拡大したい基準フレームに位置あわせする処理を行う必要があり、一定サイズのブロックと類似するパターンをフレーム内で繰り返しサーチ（ブロックマッチング）するため、処理負荷の高さが問題であった。また、高画質を得るため再構成処理として繰り返し処理を用いる方式を採用した場合も処理負荷が高くなるという問題があった。これらの問題に対処するためマルチコアＣＰＵを利用するとしても、１つのプログラムを複数の演算処理部を使って並列動作させるためにはアルゴリズムの工夫が必要であり、自動的に並列動作させることができないのが現状である。そこで、マルチコアＣＰＵの複数の演算処理部を、効果的に並列動作させる複数フレーム超解像用のアルゴリズムが望まれた。
【０００９】
一方、近年のメモリアーキテクチャは、大容量であるがランダムアクセス時に速度が低下するメインメモリと、容量は小さいがランダムアクセスが高速なキャッシュメモリの２階層構成（時にはそれ以上の階層）になっているが、ＣＰＵによるソフトウェア処理においても、専用ハードウェア処理においても、メモリアクセス帯域の問題がある。処理に必要なデータはなるべくキャッシュメモリ上に配置されるようにしないと、メインメモリとキャッシュメモリ間のメモリアクセス帯域のボトルネックにより処理速度の低下が生じてしまう。特に画像データはそのサイズが大きくこのような問題が表面化するのでその解決策も望まれていた。
【００１０】
本発明が解決しようとする課題は、超解像処理のために、複数の演算手段を効果的に並列動作させることができ、さらにはメモリアクセスを効率的に行える画像処理装置、画像処理方法およびそのプログラムを提供することである。
【課題を解決するための手段】
【００１１】
実施形態の画像処理装置は、高解像化する基準フレーム上でその他の参照フレーム上の画素を位置合わせして、その結果を元に再構成処理を行うことにより、複数フレームの低解像度の画像から１フレームの高解像度の画像を生成する超解像処理を行う画像処理装置である。実施形態の画像処理装置は、並列動作可能な複数の演算処理手段を備えたものを用いる。そして、この複数の演算処理手段上で、基準フレームおよび参照フレーム間の位置合わせ処理を行う際、基準と参照の関係を逆とした位置合わせ処理を並列に動作させて、各位置合わせ処理においてその処理結果を互いに共有するようにする。
【図面の簡単な説明】
【００１２】
【図１】図１は一実施形態であるマルチコアＣＰＵを使った画像処理装置のブロック図である。
【図２】図２は、超解像処理における位置合わせ処理のフレーム間の関係を示した図である。
【図３】図３は、比較例１として、マルチコアＣＰＵを用いた従来の処理方式（その１）を説明するための図である。
【図４】図４は、比較例２として、マルチコアＣＰＵを用いた従来の処理方式（その２）を説明するための図である。
【図５】図５は、実施形態における、マルチコアＣＰＵを用いた処理方式（その１）を説明するための図である。
【図６】図６は、同実施形態における、前後２フレームを参照フレームとしたマルチコアＣＰＵを用いた処理方式（その２）を説明するための図である。
【図７】図７は、同実施形態において、実施例１としてのダイレクトに相手の結果バッファへ書き込む方法による位置合わせ処理のフローチャートである。
【図８】図８は、同実施形態における結果バッファの一例を示した図である。
【図９】図９は、同実施形態における位置合わせ処理の概要を示す図である。
【図１０】図１０は、同実施形態において、実施例２としてのダイレクトに相手の結果バッファへ書き込む方法による位置合わせ処理のフローチャートである。
【図１１】図１１は、位置合わせ処理２１と位置合わせ処理１２の関係を示す図である。
【図１２】図１２は、位置合わせ処理２１による、位置合わせ処理１２の処理の肩代わりを示す図である。
【図１３】図１３は、同実施形態において、実施例３としてのダイレクトに相手の結果バッファへ書き込む方法による位置合わせ処理のフローチャートである。
【図１４】図１４は、位置合わせ処理２１と位置合わせ処理１２の関係を示す図である。
【図１５】図１５は、位置合わせ処理２１による、位置合わせ処理１２の処理の肩代わりを示す図である。
【発明を実施するための形態】
【００１３】
図１は一実施形態であるマルチコアＣＰＵを使った画像処理装置のブロック図である。
【００１４】
図１に示すマルチコアＣＰＵ１００は、４基の演算処理部（ＰＥ１・１０１〜ＰＥ４・１０４）と、キャッシュメモリ１０５を含んで構成され、外部のメインメモリ２００とバス２０１を介して接続されている。映像は映像入力１０として外部から取り込まれ、図示しないＤＭＡ（Direct  Memory  Access）等によりメインメモリ２００へ保存され、マルチコアＣＰＵ１００により必要な画像処理が施され、映像出力２０として出力される。
【００１５】
マルチコアＣＰＵ１００は、４基の演算処理部をもつので、各演算処理部により、４つのプログラムを並列処理することが可能である。従って、並列処理するように作成されたプログラムの下では、プログラム内の４つの処理を同時に行うことができる。なお、これらのプログラムは、当該画像処理装置に備わるＲＯＭやＨＤＤ等の不揮発性の記憶デバイス（図示せず）に格納されており、起動時または実行時にメインメモリ２００にロードされ、マルチコアＣＰＵ１００によって実行される。
【００１６】
キャッシュメモリ１０５は、メインメモリ２００よりもランダムアクセスが高速であり、メインメモリ２００に記憶されたものと同じ内容を一時的に記憶し、各演算処理部は、キャッシュメモリ１０５からその内容を読み出すことができる。また、キャッシュメモリ１０５に記憶されていない内容については、メインメモリ２００から読み出して演算処理部へ送られると同時にキャッシュメモリ１０５へも書き込まれる。キャッシュメモリ１０５のサイズは、メインメモリ２００よりも小さいために書き込みと同時に使われなくなったデータは上書き消去される。そのため、なるべく狭いアドレス範囲のデータを連続して使用することが処理速度の向上につながる。処理が終わった結果の映像データは、映像出力２０としてＤＭＡ等により外部へ出力されるか、ＰＣならばモニタへ表示されることとなる。
【００１７】
図２は、超解像処理における位置合わせ処理のフレーム間の関係を示した図である。図中の符号１〜４で示すものはそれぞれ映像の１フレームであり、その数字はフレーム番号を示す。矢印の元のフレームは参照フレーム、矢印の先のフレームは基準フレームとなる。たとえば、図中２１は参照フレーム１の画素が、基準フレーム２のどの座標にあるか位置合わせを行うことを示す。１２は、それとは参照フレームと基準フレームが入れ替わる。
【００１８】
位置合わせのための探索には前述のようにブロックマッチングによる方法等がある。参照フレーム上の、求めたい点（すなわち位置合わせをしたい画素）を中心とした固定サイズのブロックを設定し、基準フレーム上でそのブロックと重ね合わせられるブロックとの間でＳＳＤ（Sum  of  Square  Difference）やＳＡＤ（Sum  of  Absolute  Difference）を、ブロックを１画素ずつ移動しながら繰り返し求める。ＳＳＤやＳＡＤ値が最も小さい場所の座標を整数精度の対応点座標とする。さらにその座標を、パラボラフィッティングや等角直線法により小数精度へと高める。この手順を参照フレーム上の全画素について繰り返す。この方法は一般的なもので、本実施形態における位置合わせのための探索の方式はこの方式に限定するものではない。ブロックマッチング以外の手法としては、位相相関限定法やオプティカルフローも知られている。
【００１９】
なお、図２では説明を簡単にするため、基準フレームの前後のみを参照フレームとしているが、さらに２つ前、３つ前といったように参照フレームはいくつ使ってもよい。ただし、参照フレーム数を増やしても画質の向上には限度があるので、通常は処理量と画質のバランスをとって決められる。
【００２０】
図３に、比較例１として、マルチコアＣＰＵを用いた従来の処理方式（その１）を示す。マルチコアＣＰＵを意識しないプログラムでは、このように逐次的に処理が行われる。位置合わせの際のフレームの番号は、図２の例と同じである。まず基準フレームを２として前の参照フレーム１と位置合わせ処理を行い、その後に後の参照フレーム３と位置合わせ処理を行う。それらの結果を用いて基準フレーム２を高解像度化する再構成処理２を行う。この場合では、演算処理部が複数あったとしてもその内の１基しか使われない。
【００２１】
図４に、比較例２として、マルチコアＣＰＵを用いた従来の処理方式（その２）を示す。この例では、マルチコアＣＰＵを意識したプログラミングがなされて、３つの処理が並列動作している。前半ではフレーム１〜３の合計３フレームが使われている。再構成２は、位置合わせ２１と位置合わせ２３の結果が同時に入力されているため、処理負荷の問題がある。つまり、同時に２つの位置合わせ結果が入力された場合は、実際には、どちらか一方が待たされるか、バッファを設けて一次保存する必要がある。
【００２２】
図５は、本実施形態における、マルチコアＣＰＵを用いた処理方式（その１）である。本実施形態においても、マルチコアＣＰＵを意識したプログラミングがなされて、４つの処理が並列動作している。従来の処理手順（その２）と異なる特徴的な部分は、位置合わせ処理２１と位置合わせ処理１２のように方向の異なる（つまり参照と基準の関係が逆の）位置合わせ処理が並列処理される部分である。例えば、位置合わせ処理２１によって、参照フレーム１上の座標（１０，２０）の画素が、フレーム２上の座標（１２，２２）の画素と対応する点であることが先に求められた場合は、位置合わせ処理１２の参照フレーム２上の座標（１２，２２）の対応点を求める計算をしないで、位置合わせ処理２１の結果である（１０，２０）を採用するようにしている。ただし、座標の小数精度部分は共通利用できないために位置合わせ処理ごとに計算する必要がある。
【００２３】
また、図４の例では３フレームのリードが必要であったが、本例では２フレームのリードでよいため図１のバス２０１を介したメモリアクセス帯域は低く抑ええることができる。さらに、図１のキャッシュメモリ１０５に、位置合わせ処理に用いる３フレーム分のデータが収まらなかった場合は、図４の例では頻繁なデータ入れ替えが発生し処理能力が低下する。本実施形態では、２フレーム分のデータを使用するだけなので、データ入れ替えの可能性は低くなる。データの入れ替えを抑制するために、キャッシュメモリ１０５の容量とその制御方法から、入れ替えの発生しないメモリ範囲を求めて、２つの位置合わせ処理がそのメモリ範囲を共通して使えるように速度制御することも可能である。例えば特開２０１１−６１６０３号公報に記載された手法と組み合わせるとさらに抑制できる。
【００２４】
本実施形態ではまた、同図に示すように、再構成処理を前半と後半の２ステージに時間的に分割することで、すなわちパイプライン動作させることで、処理負荷の分散を図っている。これによって、位置合わせ処理に対して再構成処理が１対１の関係となり、複数の位置合わせ間の待ち合わせやそのためのバッファの必要がなくなる。なお、図５の例では、位置合わせ２１（位置合わせ処理２１）には再構成２前半が対応し、位置合わせ２３（位置合わせ処理２３）には再構成２後半が対応している。再構成２前半では、（例えば補間による）初期画像の生成およびこの初期画像と位置合わせ処理２１による処理結果とから中間画像を再構成する。そして、再構成２後半において再構成２前半の処理結果と位置合わせ処理２３の処理結果とを合せて１フレーム分の高解像画像が再構成される。
【００２５】
図６は、本実施形態における、前後２フレームを参照フレームとしたマルチコアＣＰＵを用いた処理方式（その２）である。従来の並列化方式（図４の例を拡張したもの）では位置合わせ処理のメモリアクセス帯域は５フレーム分となるところを、本実施例では３フレームに抑制している。最初のステージでは、位置合わせ２４と４２がペアに、また、位置合わせ３４と４３がペアとなって処理を行う。
【００２６】
なお、図６の例では、位置合わせ４２および４３には再構成４  1/4と2/4が対応し、位置合わせ４５には再構成４  3/4が対応し、位置合わせ４６には、再構成４  4/4が対応している。再構成４  1/4と2/4で、初期画像の生成およびこの初期画像と位置合わせ処理４２および４３による処理結果とから中間画像が再構成され、再構成４  3/4で、再構成４  1/4と2/4の処理結果と位置合わせ４５の処理結果とからさらに中間画像が再構成され、再構成４  4/4で、再構成４  3/4の処理結果と位置合わせ処理４６の処理結果とを合せて１フレーム分の高解像画像が再構成される。
【００２７】
図６の例では、再構成処理のメモリアクセス帯域は増加するが、位置合わせ処理の繰り返し回数（探索フレーム数×画素数×探索範囲）よりも再構成処理の繰り返し回数（画素数×再構成回数（通常１０回以下））が少ないために影響は少ない。なお、図に示すこの処理パターンは一例でありこれに限定するものではない。
【００２８】
なお、図５および図６等に示したものは、処理の順序を概念的に表わしたものであり、各演算処理部で実際に実行されるタイミングは処理負荷等に応じて変わるものである。
【００２９】
（実施例１）
次に、本実施形態における、ペアとなった位置合わせ処理が互いの処理結果を共有するための方式として、ダイレクトに相手の結果バッファに書き込む方式について説明する。
【００３０】
図７は、ダイレクトに相手の結果バッファへ書き込む方法による位置合わせ処理のフローチャートである。ここでは位置合わせ処理２１を例としているが、位置合わせ処理１２が、同フローチャートの手順で、並列して実行される。結果バッファはキャッシュメモリ１０５に設けられ位置合わせ処理ごとにフレーム単位で入力画像の画素数分だけ準備する。
【００３１】
この結果バッファにはそれぞれ、対応する位置合わせ処理の処理結果である整数精度計算による整数計算結果（整数部結果（＝座標の整数部））および小数精度計算による小数計算結果（小数部結果（＝座標の小数部））と、処理の状態（整数計算済み／小数計算済み／未計算）を示すステータスとが格納される（図８参照）。なお、各結果バッファのステータスは位置合わせ処理のはじめに未計算状態に初期化される。以下の説明では、位置合わせ処理２１に対応する結果バッファを結果バッファ２１と記し、位置合わせ処理１２に対応する結果バッファを結果バッファ１２と記す。
【００３２】
はじめに、ステップＳ１００１において、位置合わせ処理２１のステータスが格納される結果バッファ２１のステータスをチェックし、位置合わせ処理１２によって既に“整数計算済み”とされているかチェックする。このとき位置合わせ処理１２による対応点ペアの整数精度計算（整数計算）が既になされている場合は、位置合わせ処理１２により、該当画素について、結果バッファ２１のステータスは“整数計算済み”に設定されている。従って、その場合は、ステップＳ１００１でＹｅｓと判定され、ステップＳ１００３へ移行する。
【００３３】
一方、上記チェックで結果バッファ２１のステータスが“整数計算済み”となっていない場合は（ステップＳ１００１でＮｏ）、続くステップＳ１００２で、位置合わせ処理２１のブロックマッチングが実行されて、計算されたＳＳＤを基に対応点ペアの座標の整数部結果が得られる（図９右側参照）。
【００３４】
続いて、ステップＳ１００３で、位置合わせ処理２１の小数精度計算がされて、対応点ペアの座標の小数部結果が得られる。そして、整数部および小数部の計算結果はそれぞれ結果バッファ２１へ書き込まれる。
【００３５】
このようにして、位置合わせの対象の画素について、対応点ペアの小数精度計算が終了すると、ステップＳ１００４で、結果バッファ２１のステータスを“小数計算済み”に変更する。
【００３６】
一方、上記ステップＳ１００１の結果バッファ２１のステータスのチェックで、“整数計算済み”となっている場合は（このとき、位置合わせ処理１２により対応点ペアの整数精度計算が完了している）、位置合わせ処理２１における整数精度演算（上記ステップＳ１００２）は省略され、上記ステップＳ１００３の小数精度計算以降の処理のみ行われる。
【００３７】
ステップＳ１００４の後、ステップＳ１００５にて、さらに、対応点ペアとなる画素について、位置合わせ処理１２の結果バッファ１２のステータスをチェックする。つまり、位置合わせ処理２１で求まった対応点ペアの位置合わせ処理２１における基準フレーム側の座標の画素が、位置合わせ処理１２における参照フレーム側の画素として既に計算されているかチェックする。そのステータスが“未計算”である場合は（ステップＳ１００５でＹｅｓ）、ステップＳ１００６で、結果バッファ１２にステップＳ１００２で求めた整数部結果を設定し、ステップＳ１００７で、結果バッファ１２のステータスを“整数計算済み”に変更する。すると、位置合わせ処理１２において該当画素の計算のときに小数部のみ計算される。一方、Ｓ１００５のチェックで“未計算”でなかった場合は（ステップＳ１００５でＮｏ）、結果バッファ１２に対して何もせず、ステップＳ１００８へ移行する。
【００３８】
以上の一連の処理後、ステップＳ１００８で、この位置合わせ処理２１が参照フレーム内の全画素について小数計算済みか判定し、未処理の画素がある場合は（ステップＳ１００８でＮｏ）、ステップＳ１００１に戻り（Ｌ１１００）、引き続き一連の処理を繰り返す（図９左側参照）。そうでない場合は、この位置合わせ処理２１は終了する。この後は、同じ演算処理部により、後続のフレームに対し位置合わせの処理が実施されることとなる（図５参照）。
【００３９】
このように、一方の位置合わせ処理により、対応点ペアの座標が先の求められた場合は、遅れて実行される位置合わせ処理における対応点ペアの座標の整数部演算を省略するようにしたので、本実施形態における位置合わせ処理は処理量が削減されて、並列処理による高速化に加え、全体としてさらに高速化される。
【００４０】
なお、上記例では、先に計算を済ませた方が、ペアとなる位置合わせ処理の相手側の結果バッファに、直接、整数計算結果を書き込むことにより、互いの処理結果を共有することを実現させているが、メインメモリ２００に、位置合わせ処理の結果の履歴を一定時間保存するようにして、各位置合わせ処理において位置合わせ前にこの履歴情報を参照して既に対応点ペアが計算されている画素についてはその結果を用いるようにしてもよい。
【００４１】
（実施例２）
上記実施例１では、ペアとなる位置合わせ処理の一方が他方より先に、ある参照フレーム側の画素に対する対応点の計算を終了させた場合に、他方の処理ではその整数計算結果を利用することでその整数精度計算を省略できるようにしたものであるが、以下に説明する本実施例の処理の流れは、上記処理に加え、一方の位置合わせ処理が対象とする参照フレーム側の全画素について一連の処理を完了したときに、ペアとなる他方の位置合わせ処理が未完の場合、処理対象の残りの画素の一部について、位置合わせ処理を肩代わりするようにしたものである（このとき、２つの演算処理部が、同じ参照フレームおよび基準フレームに対して位置合わせ処理を行うことになる）。
【００４２】
図１０は、本実施例のフローチャートである。同図に示すように、ステップＳ２００１〜ステップＳ２００８までは、前述した実施例１におけるステップＳ１００１〜ステップＳ１００８と同じである。実施例１では、位置合わせ処理２１と位置合わせ処理１２は、同様の処理が行われることとしたが、本実施例でも、位置合わせ処理１２は、位置合わせ処理２１とは、参照フレーム側の画素の選択を逆順として計算を開始するようにしている点（図１１参照）を除いて、図９に示す処理を行う。
【００４３】
ステップＳ２００１〜ステップＳ２００８までは、前述した実施例１におけるステップＳ１００１〜ステップＳ１００８と同じであるので、その説明は省略する。参照フレーム側の全画素について位置合わせ処理２１の計算が完了すると（ステップＳ２００８でＹｅｓ）、ステップＳ２００９にて、位置合わせ処理１２側がその参照フレーム側の全画素について、小数計算済みか判定する。この判定は、位置合わせ処理１２の結果バッファ１２のステータスを参照することにより可能である。
【００４４】
ここで位置合わせ処理１２の方も参照フレーム側の全画素について小数計算済みの場合は（ステップＳ２００９でＹｅｓ）、位置合わせ処理２１は終了する。もし、位置合わせ処理１２側で、参照フレーム側の全画素について小数計算済みとなっていない場合は（ステップＳ２００９でＮｏ）、ステップＳ２０１０にて、位置合わせ処理２１は、その参照フレームと基準フレームとを入れ替える。
【００４５】
続く、ステップＳ２０１１〜ステップＳ２０１４は、本来は、ステップＳ２００１〜ステップＳ２００４に対応する位置合わせ処理１２によって実行される処理であるが、ここでは、先に処理が終わった位置合わせ処理２１が肩代わりしている（図１１参照）。
【００４６】
次いで、ステップＳ２０１５にて、位置合わせ処理１２が、参照フレーム側の全画素について、小数計算済みか判定する。このとき小数計算済みとなっていない場合は（ステップＳ２０１５でＮｏ）、ステップＳ２０１１に戻り（Ｌ２１０１）、一連の処理を繰り返すこととなる。一方、小数計算済みとなっていた場合は（ステップＳ２０１５でＹｅｓ）、位置合わせ処理２１を終了する。
【００４７】
ところで、図１２右側に示すように、逆順に進行している、位置合わせ処理２１による処理と本来の位置合わせ処理１２の処理が処理の対象とする参照フレーム側の画素が（処理上）ぶつかると、位置合わせ処理１２の参照フレーム側の全画素について結果バッファ１２のステータスは“小数計算済み”となる。そのとき、ステップＳ２０１５にて参照フレーム側の全画素について、小数計算済みと判定され、図１０に示す一連の処理は終了する。
【００４８】
以上のように、ペアとなる位置合わせ処理の一方が、その処理が先に終了した場合に他方の処理を肩代わりすることで、肩代わりされる演算処理部の負荷を分散させ、ペアとなる位置合わせ処理全体としての処理速度を向上させることができる。
【００４９】
（実施例３）
上記実施例２では、一方の位置合わせ処理が対象とする参照フレーム側の全画素について一連の処理を完了したときに、それとは逆順で処理を行っているペアとなる他方の位置合わせ処理が未完の場合、処理対象の残りの画素の一部について、処理を肩代わりするようにしたものであったが、本実施例では、１ライン単位に、ペアとなる位置合わせ処理を逆順に行い（図１４参照）、先に処理を完了した方が、他方の位置合わせ処理が処理対象とする残りの画素の一部について、その処理を肩代わりするようにしたものである（このとき、２つの演算処理部が、同じ参照フレーム上の該当の１ラインに対して、（逆順で）位置合わせ処理を行うことになる）（図１５参照）。
【００５０】
図１３は、本実施例のフローチャートである。同図に示すように、ステップＳ３００１〜ステップＳ３００７までは、前述した実施例１におけるステップＳ１００１〜ステップＳ１００７および実施例２におけるステップＳ２００１〜ステップＳ２００７と同じである。ここでは、その説明は省略する。
【００５１】
本実施例では、位置合わせ処理２１と位置合わせ処理１２が処理対象とするそれぞれの参照フレーム（このとき一方の位置合わせ処理の参照フレームは他方の位置合わせ処理の基準フレームである）において、対応する１ライン毎に位置合わせ処理２１と位置合わせ処理１２を逆順で行い、一方の１ライン分の位置合わせ処理が先に終了したときに、他方の処理の一部を肩代わりするようにしているので、ステップＳ３００８で位置合わせ処理２１が該当の１ラインに対しその１ライン分の画素について小数計算済みか判定をしている。
【００５２】
このとき、位置合わせ処理２１がその参照フレーム側の該当の１ラインの画素について小数精度まで計算を完了させていない場合（ステップＳ３００８でＮｏ）、ステップＳ３００１に戻り（Ｌ３１００）、次の画素についてステップＳ３００１以降の処理を実行する。一方、位置合わせ処理２１がその参照フレーム側の該当の１ラインの画素について小数精度まで計算を完了させていると（ステップＳ３００８でＹｅｓ）、ステップＳ３００９にて、位置合わせ処理１２側が、その参照フレームの対応する１ライン分の画素について、小数計算済みであるかをさらに判定する。これらの判定は、位置合わせ処理２１の結果バッファ２１のステータスおよび位置合わせ処理１２の結果バッファ１２のステータスを参照することにより可能である。
【００５３】
ここで位置合わせ処理１２の方も参照フレーム側の該当の１ライン分の画素について、小数計算済みの場合は（ステップＳ３００９でＹｅｓ）、ステップＳ３０１６にて、位置合わせ処理２１がその参照フレーム側の全画素について、小数計算済みか判定する。この判定は、位置合わせ処理１２の結果バッファ１２のステータスを参照することにより可能である。
【００５４】
この判定において、上記全画素について小数計算済みであったとき（ステップＳ３０１６でＹｅｓ）、位置合わせ処理２１は終了する。そうでない場合（ステップＳ３０１６でＮｏ）、ステップＳ３００１に戻り（Ｌ３１０２）、次の１ラインについてステップＳ３００１以降の処理を実行する。
【００５５】
上記ステップＳ３００９にて位置合わせ処理１２の方がその参照フレーム側の該当の１ライン分の画素について小数計算済みとなっていない場合は（ステップＳ３００９でＮｏ）、ステップＳ３０１０にて、位置合わせ処理２１は、その参照フレームと基準フレームを入れ替える。
【００５６】
続く、ステップＳ３０１１〜ステップＳ３０１４は、本来は、ステップＳ３００１〜ステップＳ３００４に対応した、位置合わせ処理１２により実行される処理であるが、ここでは、先に処理が終わった位置合わせ処理２１が肩代わりしている（図１５参照）。そして、ステップＳ３０１５にて、位置合わせ処理１２が、参照フレーム側の全画素について、小数計算済みか判定する。このとき小数計算済みとなっていない場合は（ステップＳ３０１５でＮｏ）、ステップＳ３０１１に戻り（Ｌ３１０１）、ステップＳ３０１１以降の処理を繰り返すこととなる。一方、小数計算済みとなっていた場合は（ステップＳ３０１５でＹｅｓ）、ステップＳ３０１６へ移行する。
【００５７】
ところで、図１５右側に示すように、ある１ライン上で逆順に進行している、位置合わせ処理２１による処理と本来の位置合わせ処理１２の処理が処理の対象とする参照フレーム側の画素が（処理上）ぶつかると、位置合わせ処理１２の参照フレーム側の該当１ラインの全画素について結果バッファ１２のステータスは“小数計算済み”となる。そのとき、ステップＳ３０１５にて参照フレーム側の該当１ラインの全画素について、小数計算済みと判定され、図１３に示す一連の処理は終了する。
【００５８】
以上のように、ペアとなる位置合わせ処理の一方が、処理対象となっている１ラインについてその処理が先に終了した場合に他方の処理を肩代わりすることで、ペアとなる位置合わせ処理全体としての処理速度を向上させることができる。また、各々の参照フレーム上の同一ラインについて、ペアとなる位置合わせ処理を順に完了させるので、並列動作させる位置合わせ処理の処理速度をライン単位で調整でき、結果として同時期に参照されるメモリのアドレス範囲を制限することができ、キャッシュメモリ１０５を有効に利用することができる（キャッシュメモリ１０５の有効利用による処理速度の向上が期待できる）。
【００５９】
以上説明したとおり、本実施形態および諸実施例によれば、超解像処理のために、複数の演算処理部を効果的に並列動作させることができ、さらにはメモリアクセスを効率的に行えるようになる。
【００６０】
なお、本実施形態の画像処理装置で実行されるプログラムは、この画像処理装置に備わるＲＯＭやＨＤＤ等の不揮発性の記憶デバイスに予め組み込まれて提供される。
【００６１】
本実施形態の画像処理装置で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Digital  Versatile  Disk）等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよい。
【００６２】
さらに、上記プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、当該ネットワーク経由で提供または配布するように構成しても良い。
【００６３】
以上、本発明の実施形態とそのいくつかの実施例を説明したが、これらは、例として提示したものであり、発明の範囲を限定することは意図していない。上記新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。上記実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。例えば、前述の実施形態ではマルチコアＣＰＵ１００によるソフトウェア処理を中心として説明したが専用ハードウェアによるシステム構成であっても同様の仕組みを使うことができる。その場合、図１に示した１０１〜１０４の各演算処理部は専用の位置合わせロジックとなり、キャッシュメモリ１０５は少ないクロックサイクルで読み出される高速メモリとなる。
【符号の説明】
【００６４】
１００  マルチコアＣＰＵ
１０１  ＰＥ１
１０２  ＰＥ２
１０３  ＰＥ３
１０４  ＰＥ４
１０５  キャッシュメモリ
２００  メインメモリ
２０１  バス
【図１】
0005462305.tif 000002
【図２】
0005462305.tif 000003
【図３】
0005462305.tif 000004
【図４】
0005462305.tif 000005
【図５】
0005462305.tif 000006
【図６】
0005462305.tif 000007
【図７】
0005462305.tif 000008
【図８】
0005462305.tif 000009
【図９】
0005462305.tif 000010
【図１０】
0005462305.tif 000011
【図１１】
0005462305.tif 000012
【図１２】
0005462305.tif 000013
【図１３】
0005462305.tif 000014
【図１４】
0005462305.tif 000015
【図１５】
0005462305.tif 000016