(57)【特許請求の範囲】
【請求項１】
画像フレームを入力する入力手段と、
前記入力手段により入力される連続する第１及び第２画像フレームの間に表示されるべき補間フレームの数に関する情報を取得する取得手段と、
前記補間フレームの数に関する情報に基づいて、前記第１及び第２画像フレームの画素数を増加させる拡大手段と、
前記第１及び第２画像フレームの間に表示されるべき複数の補間フレームのうち、第１補間フレームの処理対象ブロックの動きベクトルを、前記拡大手段による画素数の増加後の第１画像フレームと第２画像フレームとの相関に基づいて検出する検出手段と
を有し、
前記検出手段は、前記拡大手段による画素数の増加後の第１画像フレームの第１ブロックであって、前記第１補間フレームの前記処理対象ブロックの位置と前記補間フレームの数とに基づいた位置にある前記第１ブロックと前記拡大手段による画素数の増加後の第２画像フレームの第２ブロックに所定の相関がある場合、前記第１及び第２ブロックの位置に基づいて前記処理対象ブロックの動きベクトルを検出することを特徴とする画像処理装置。
【請求項２】
前記複数の補間フレームの中で最も先に表示されるべき前記第１補間フレームの前記処理対象ブロックと前記第１画像フレームの前記第１ブロックとの空間的な距離は、前記第１補間フレームの前記処理対象ブロックと前記第２画像フレームの前記第２ブロックとの空間的な距離よりも短いことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記第２画像フレームが第１フレーム時刻に対応し、前記第１画像フレームが第２フレーム時刻に対応し、前記第１補間フレームが第３フレーム時刻に対応する場合、
前記検出手段は、前記第１フレーム時刻から前記第３フレーム時刻を減じた値である第１の差分値を、前記入力手段による画像フレームの入力フレームレートに基づくフレーム時間で除した値である第１の時刻比を、動き探索のための変数に乗じることで、前記第１ブロックを特定すると共に、前記第３フレーム時刻から前記第２フレーム時刻を減じた値である第２の差分値を前記フレーム時間で除した値である第２の時刻比を、前記変数に乗じることで、前記第２ブロックを特定し、
前記第１及び第２ブロックに前記所定の相関がある場合、前記変数を用いて前記処理対象ブロックの動きベクトルを算出することを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
前記検出手段は、前記動き探索のための変数を変更することで、前記処理対象ブロックの動きベクトルの検出のために、前記第１及び第２画像フレームの複数のブロックの相関を判定し、前記相関がより高いと判定された前記第１及び第２ブロックに前記所定の相関があると判定することを特徴とする請求項３に記載の画像処理装置。
【請求項５】
前記検出手段により検出された前記動きベクトルを用いて、前記第１補間フレームの前記処理対象ブロックの画像データを生成する生成手段を有することを特徴とする請求項１乃至４何れか１項に記載の画像処理装置。
【請求項６】
画像処理装置の制御方法であって、
画像フレームを入力する入力工程と、
前記入力工程により入力される連続する第１及び第２画像フレームの間に表示されるべき補間フレームの数に関する情報を取得する取得工程と、
前記補間フレームの数に関する情報に基づいて、前記第１及び第２画像フレームの画素数を増加させる拡大工程と、
前記第１及び第２画像フレームの間に表示されるべき複数の補間フレームのうち、第１補間フレームの処理対象ブロックの動きベクトルを、前記拡大工程における画素数の増加後の第１画像フレームと第２画像フレームとの相関に基づいて検出する検出工程と
を含み、
前記検出工程では、前記拡大工程における画素数の増加後の第１画像フレームの第１ブロックであって、前記第１補間フレームの前記処理対象ブロックの位置と前記補間フレームの数とに基づいた位置にある前記第１ブロックと前記拡大工程における画素数の増加後の第２画像フレームの第２ブロックに所定の相関がある場合、前記第１及び第２ブロックの位置に基づいて前記処理対象ブロックの動きベクトルを検出することを特徴とする制御方法。
【請求項７】
前記複数の補間フレームの中で最も先に表示されるべき前記第１補間フレームの前記処理対象ブロックと前記第１画像フレームの前記第１ブロックとの空間的な距離は、前記第１補間フレームの前記処理対象ブロックと前記第２画像フレームの前記第２ブロックとの空間的な距離よりも短いことを特徴とする請求項６に記載の制御方法。
【請求項８】
前記第２画像フレームが第１フレーム時刻に対応し、前記第１画像フレームが第２フレーム時刻に対応し、前記第１補間フレームが第３フレーム時刻に対応する場合、
前記検出工程では、前記第１フレーム時刻から前記第３フレーム時刻を減じた値である第１の差分値を、前記入力工程による画像フレームの入力フレームレートに基づくフレーム時間で除した値である第１の時刻比を、動き探索のための変数に乗じることで、前記第１ブロックを特定すると共に、前記第３フレーム時刻から前記第２フレーム時刻を減じた値である第２の差分値を前記フレーム時間で除した値である第２の時刻比を、前記変数に乗じることで、前記第２ブロックを特定し、
前記第１及び第２ブロックに前記所定の相関がある場合、前記変数を用いて前記処理対象ブロックの動きベクトルを算出することを特徴とする請求項６又は７に記載の制御方法。
【請求項９】
コンピュータを、請求項１乃至５何れか１項に記載の画像処理装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
入力画像データと遅延画像データとに基づいて補間画像データを生成する技術に関するものである。
【背景技術】
【０００２】
従来、入力される画像データのフレームレートを変換する処理を実行するものとして、動き検出技術及び動き補償技術が知られている（例えば、特許文献１参照）。動き検出技術は、連続する複数の画像データを用いて動きベクトルを検出する技術であり、動き補償技術は、動きベクトルを用いて補間画像データを生成する技術である。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第３５７７３５４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の技術は、２倍のフレームレート変換にのみ対応しており、任意の倍数のフレームレート変換に対応していない。このため、２４Ｈｚの映像コンテンツに対して従来の技術を適応すると４８Ｈｚになり、デジタルテレビ等の一般的な表示装置のリフレッシュレートである６０Ｈzや１２０Ｈｚと一致しない。このため、従来の技術は、映像コンテンツのフレームレートが表示装置のリフレッシュレートの１／２の場合にしか適応できないという問題があった。
【０００５】
また、別の問題として、従来の技術は、動き検出処理において、動きベクトルの探索精度が低かった。このため、動き補償処理において生成される補間画像データの画質が損なわれ、ユーザの視聴において不快感を与えていた。
【０００６】
そこで、本発明の目的は、任意の倍数のフレームレート変換処理を可能とするとともに、高精度な動きベクトルの探索を行うことにある。
【課題を解決するための手段】
【０００７】
本発明の画像処理装置は、画像フレームを入力する入力手段と、前記入力手段により入力される連続する第１及び第２画像フレームの間に表示されるべき補間フレームの数に関する情報を取得する取得手段と、前記補間フレームの数に関する情報に基づいて、前記第１及び第２画像フレームの画素数を増加させる拡大手段と、前記第１及び第２画像フレームの間に表示されるべき複数の補間フレームのうち、第１補間フレームの処理対象ブロックの動きベクトルを、前記拡大手段による画素数の増加後の第１画像フレームと第２画像フレームとの相関に基づいて検出する検出手段とを有し、前記検出手段は、前記拡大手段による画素数の増加後の第１画像フレームの第１ブロックであって、前記第１補間フレームの前記処理対象ブロックの位置と前記補間フレームの数とに基づいた位置にある前記第１ブロックと前記拡大手段による画素数の増加後の第２画像フレームの第２ブロックに所定の相関がある場合、前記第１及び第２ブロックの位置に基づいて前記処理対象ブロックの動きベクトルを検出することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、任意の倍数のフレームレート変換処理が可能となるとともに、高精度な動きベクトルを行うことができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施形態に係る画像処理装置のハードウェア構成の例を示す図である。
【図２】動き検出・動き補償プログラムをＣＰＵが実行することにより実現される処理の流れを示すフローチャートである。
【図３】入力画像データ、遅延画像データ及び補間画像データのフレーム時刻を模式的に示す図である。
【図４】動きベクトルについて説明するための図である。
【図５】ステップＳ２０４における動きベクトル検出処理を説明するための図である。
【図６】図２のステップＳ２０４における動きベクトル検出処理の詳細を示すフローチャートである。
【図７】図６のサブフローチャート（１）を用いて説明した動きベクトル検出処理の探索精度に関する課題とその改善方法を説明するための図である。
【図８】図２のステップＳ２０４における動きベクトル検出処理の詳細を示すフローチャートである。
【図９】図２のステップＳ２０４における動きベクトル検出処理の詳細を示すフローチャートである。
【図１０】図２のステップＳ２０５における補間画像データ生成処理の詳細を示すフローチャートである。
【図１１】本発明の実施形態に係る画像処理装置の構成を示す図である。
【図１２】ビデオ処理部の構成を示す図である。
【図１３】動きベクトル検出部の構成を示す図である。
【図１４】補間画像生成部の構成を示す図である。
【発明を実施するための形態】
【００１０】
以下、本発明を適用した好適な実施形態を、添付図面を参照しながら詳細に説明する。
【００１１】
先ず、本発明の第１の実施形態について説明する。図１は、本発明の第１の実施形態に係る画像処理装置のハードウェア構成の例を示す図である。図１において、１００は画像処理装置である。ＣＰＵ１０１は、外部記憶装置（ハードディスク）１０７に格納されているＯＳ、後述する動き検出・動き補償プログラム等のアプリケーションプログラムを実行して画像処理装置１００の動作を制御する。また、ＣＰＵ１０１は、ＲＡＭ１０３にプログラムの実行に必要な情報、ファイル等を一時的に格納する制御を行う。ＲＯＭ１０２は、基本Ｉ／Ｏプログラム等のプログラムが記憶されている。ＲＡＭ１０３は、ＣＰＵ１０１の主メモリ、ワークエリア等として機能する。
【００１２】
ネットワークインタフェース（Ｉ／Ｆ）１０４は、ＬＡＮ、ＷＡＮに接続して外部装置と通信するためのインタフェースである。入力装置１０５は、ユーザからの入力を受け付けるマウス、キーボードの他、被写体を撮影して当該被写体の画像データを入力するための撮像装置を含むことができる。当該撮像装置を有することにより、画像処理装置１００は、デジタルカメラ又はデジタルビデオカメラとして機能する。
【００１３】
出力装置１０６は、液晶ディスプレイ等の表示装置である。外部記憶装置１０７は、アプリケーションプログラム、ドライバプログラム、ＯＳ、制御プログラム、以下に説明する実施形態の処理を実行するためのプログラム等を格納している。システムバス１０８は、画像処理装置１００内のデータの流れを司る。
【００１４】
図２は、動き検出・動き補償プログラムをＣＰＵ１０１が実行することにより実現される処理の流れを示すフローチャートである。動き検出・動き補償プログラムは、通常、外部記憶装置１０７に記録されている。ＣＰＵ１０１は、処理を開始するにあたり、動き検出・動き補償プログラムを外部記憶装置１０７から読み込み、ＲＡＭ１０３に展開する。以下、図２を参照しながら、動き検出・動き補償プログラムに基づき実行される処理の流れについて説明する。
【００１５】
ステップＳ２０１において、ＣＰＵ１０１は、画像データを入力する。後にフレーム単位の処理が実行されるので、通常はフレーム単位で画像データが入力される。なお、画像データはＹＵＶの色空間で定義された画素データの集合とする。また、画像データの１画素当たりのビット精度はＹＵＶそれぞれ８ビットであり、ビットレンジは正の値のみ取り、０〜２５５とする。また、１画像データの画素データサイズは、ｘ方向に１９２０画素、ｙ方向に１０８０画素とする。
【００１６】
ステップＳ２０２において、ＣＰＵ１０１は、ステップＳ２０１で入力した画像データを１フレーム時間だけ遅延させる。これは、２フレーム以上の画像データを用いて動きベクトル検出処理を行うためである。また、図１におけるＲＡＭ１０２に画像データの記憶領域を設けることにより、ＣＰＵ１０１が画像データを遅延させることを可能としている。
【００１７】
以降、特に断りがなければ、ステップＳ２０１において入力された画像データを入力画像データと称す。また、ステップＳ２０２にて１フレーム時間だけ遅延された画像データを遅延画像データと称す。
【００１８】
ステップＳ２０３において、ＣＰＵ１０１は、動きベクトルに基づいて作成する補間画像データのフレーム時刻を設定する。ここで、図３を用いてステップＳ２０３の詳細を説明する。図３は、入力画像データ、遅延画像データ及び補間画像データのフレーム時刻を模式的に示す図である。図３において、３００は遅延画像データであり、そのフレーム時刻をｔ＝ｔ0（第３の時刻）とする。３０１は入力画像データであり、そのフレーム時刻をｔ＝ｔ1＝t0＋ｎ（第１の時刻）とする。３０２は補間画像データであり、そのフレーム時刻をｔ＝ｔ2＝ｔ0＋Ａｎ（第２の時刻）とする。但し、遅延画像データ３００と入力画像データ３０１との間に時間的に内挿するようにＡを設定する。Ａは補間時刻比率であり、取り得る値は０＜Ａ＜１である。本実施形態ではＡ＝１／３、２／３と設定して、遅延画像データ３００と入力画像データ３０１との間に２フレームの補間画像データ３０２を生成する。但し、補間時刻比率Ａによる処理手順の差はないため、以降のステップＳ２０４及びＳ２０５の処理説明では、Ａ＝１／３と設定した場合について説明する。また、ステップＳ２０６の処理説明では、Ａ＝１／３、２／３における２フレームの補間画像データ３０２が生成されたものとして説明する。
【００１９】
また本実施形態では、１フレームの入力画像データ３０１につき、２フレームの補間画像データ３０２を生成するので、３倍の情報量となる。このことから、補間倍率Ｂ＝３と定義する。本実施形態では、補間時刻比率Ａ、補間倍率Ｂは、プログラムの一部として動き検出・動き補償プログラム内に記録されているものとする。
【００２０】
ステップＳ２０４において、ＣＰＵ１０１は、動きベクトルマップＭＶ＿ＭＡＰ（ｐ，ｑ）を生成する。ここで、ステップＳ２０４の処理の説明に先立ち、動きベクトルマップＭＶ＿ＭＡＰ（ｐ，ｑ）及び動きベクトルＭＶ（ｘ，ｙ，Δｘ，Δｙ）の補足説明を行う。動きベクトルマップＭＶ＿ＭＡＰ（ｐ，ｑ）は、動きベクトルＭＶ（ｘ，ｙ，Δｘ，Δｙ）の集合である。本実施形態において、動きベクトルマップＭＶ＿ＭＡＰ（ｐ，ｑ）の要素数を（ｐ：ｘ方向動きベクトルマップポインタ、ｑ：ｙ方向動きベクトルマップポインタ）、以下のように算出する。
【００２１】
本実施形態では、ブロックマッチング法による動きベクトル検出を行う。動きベクトル検出処理の処理単位となるブロックサイズは、Ｍ＝４０、Ｎ＝４０とする（Ｍ：ｘ方向ブロックサイズ、Ｎ：ｙ方向ブロックサイズ）。また、隣接するブロック同士が重複しないようにブロック境界を定義して、ブロックサイズで画像データサイズを割った数だけ動きベクトル検出処理を行うものとする。このような前提条件を与えた場合、動きベクトルマップＭＶ＿ＭＡＰ（ｐ，ｑ）の要素数は、１９２０／４０・１０８０／４０＝４８・２７＝１２９６個となる。また、ｘ方向動きベクトルマップサイズＰ＝４８、ｙ方向動きベクトルマップサイズＱ＝２７となる。
【００２２】
次に、動きベクトルＭＶ（ｘ，ｙ，Δｘ，Δｙ）について説明する。図４（ａ）に示すように、座標値（ｘ，ｙ）と差分値（Δｘ，Δｙ）とが与えられたとき、座標値（ｘ，ｙ）が動きベクトルの始点であり、座標値（ｘ＋Δｘ、ｙ＋Δｙ）が動きベクトルの終点と定義するのが一般的である。しかしながら、本実施形態においては、図４（ｂ）に示すように、座標値（ｘ−ＡΔｘ，ｙ−ＡΔｙ）が動きベクトルの始点であり、座標値｛ｘ＋（１−Ａ）Δｘ，ｙ＋（１−Ａ）Δｙ｝が動きベクトルの終点と定義する。なお、Ａ−１は、第１の時刻から第３の時刻を減じた値である第１の差分値を１フレーム時間で除した値である第１の時刻比である。Ａは、第３の時刻から第２の時刻を減じた値である第２の差分値を１フレーム時間で除した値である第２の時刻比である。
【００２３】
個々の動きベクトルＭＶ（ｘ，ｙ，Δｘ，Δｙ）の検出方法に違いはないため、以下では１つの動きベクトルＭＶ（ｘ，ｙ，Δｘ，Δｙ）の検出方法について説明することにより、動きベクトルマップＭＶ＿ＭＡＰ（ｐ，ｑ）の生成処理の説明の代わりとする。
【００２４】
図５は、ステップＳ２０４における動きベクトル検出処理を説明するための図である。以下、図５を参照しながら、ステップＳ２０４における動きベクトル検出処理について説明する。
【００２５】
図５（ａ）において、３００はフレーム時刻ｔ＝ｔ0の遅延画像データであり、３０１はフレーム時刻t＝ｔ1＝ｔ0＋ｎの入力画像データであり、３０２はフレーム時刻ｔ＝ｔ2＝t0＋Ａｎの補間画像データである。
【００２６】
補間画像データ３０２における探索基準位置５００の座標値を（ｘ2，ｙ2）とする。ブロック５０１は探索基準位置５００に基づいて定義される。本実施形態では、探索基準位置５００を用いたブロック位置定義方法として、ブロック５０１の上左端の座標値が探索基準位置５００に一致するように定義する。
【００２７】
遅延画像データ３００における遅延画像探索位置５０２の座標値を（ｘ0，ｙ0）とする。ブロック５０３（第２のブロック）は遅延画像探索位置５０２に基づいて定義される。即ち、本実施形態では、遅延画像探索位置５０２を用いたブロック位置定義方法として、ブロック５０３の上左端の座標値が遅延画像探索位置５０２に一致するように定義する。
【００２８】
入力画像データ３０１における入力画像探索位置５０４の座標値を（ｘ1，ｙ1）とする。ブロック５０５（第１のブロック）は入力画像探索位置５０４に基づいて定義される。即ち、本実施形態では、入力画像探索位置５０４を用いたブロック位置定義方法として、ブロック５０５の上左端の座標値が入力画像探索位置５０４に一致するように定義する。
【００２９】
このように、ブロック５０１に関する探索基準位置５００を用いたブロック位置定義方法、ブロック５０３に関する遅延画像探索位置５０２を用いたブロック位置定義方法及びブロック５０５に関する入力画像探索位置５０４を用いたブロック位置定義方法は全て同様の手法である。なお、ブロック５０１、ブロック５０３及びブロック５０５のブロックサイズは、上述したようにＭ＝４０、Ｎ＝４０である。
【００３０】
次に、図５（ｂ）を用いて、本実施形態における動きベクトル検出方法について説明する。図５（ｂ）は、補間画像データ３０２に、遅延画像探索位置５０２、ブロック５０３、入力画像探索位置５０４、ブロック５０５を配置した状態を示す図である。ここで１つ注意すべきことは、図５（ｂ）において、ブロック５０３の画像情報は遅延画像データ３００によるものであり、ブロック５０５の画像情報は入力画像データ３０１によるものである。２次元の紙面上において時空間の３次元情報を正確に表すことはできないため、図５（ｂ）においては、このような表現方法を採っている。
【００３１】
フレーム時刻ｔ＝ｔ0におけるブロック５０３の画像情報が、フレーム時刻ｔ＝ｔ1＝ｔ0＋ｎにおいてブロック５０５で表されるとき、フレーム時間間隔ｎにおいてブロック５０３がｘ方向にΔｘ１、ｙ方向にΔｙ１移動したとする。フレーム時刻ｔ＝ｔ0からｔ＝ｔ2＝ｔ0＋Ａｎのフレーム時間間隔Ａｎにおいては、ブロック５０３の画像情報はｘ方向にＡΔｘ１、ｙ方向にＡΔｙ１だけ移動する。ブロック５０３の画像情報が移動後に丁度ブロック５０１の位置に到達するならば、探索基準位置５００の座標値（ｘ2，ｙ2）と遅延画像探索位置５０２の座標値（ｘ0，ｙ0）とを用いて、（ｘ2，ｙ2）＝（ｘ0＋ＡΔｘ１，ｙ0＋ＡΔｙ１）と表すことができる。式を変形すると、（ｘ0，ｙ0）＝（ｘ2−ＡΔｘ１，ｙ2−ＡΔｙ１）となる。なお、上記Δｘ１、Δｙ１は、空間のずれ量を示す第２の変数である。
【００３２】
また、フレーム時刻ｔ＝ｔ２＝ｔ０＋Ａｎからｔ＝ｔ１＝ｔ０＋ｎのフレーム時間間隔（１−Ａ）ｎにおいては、ブロック５０１の画像情報はｘ方向にＡΔｘ１、ｙ方向にＡΔｙ１だけ移動する。ブロック５０５の画像情報が移動前に丁度ブロック５０１の位置にあったならば、探索基準位置５００の座標値（ｘ２，ｙ２）と入力画像探索位置５０４の座標値（ｘ１，ｙ１）とを用いて、（ｘ１，ｙ１）＝｛ｘ２＋（１−Ａ）Δｘ１，ｙ２＋（１−Ａ）Δｙ１｝と表すことができる。なお、上記（１−Ａ）Δｘ１、（１−Ａ）Δｙ１は、空間のずれ量を示す第１の変数である。
【００３３】
このことから、ブロック５０３とブロック５０５とをブロックマッチングする。これにより、フレーム時刻ｔ＝ｔ2＝ｔ0＋Ａｎの補間画像データ３０２の、座標値が（ｘ2，ｙ2）である探索基準位置５００における動きベクトルＭＶ（ｘ2，ｙ2,Δｘ１，Δｙ１）を検出することができる。
【００３４】
このように、本実施形態においては、補間画像データ３０２上の座標値を動きベクトル検索における基準として、補間画像データ３０２上の座標値を通過する動きベクトルの候補から動きベクトルを検出する。
【００３５】
次に、ステップＳ２０４における動きベクトル検出処理について詳細に説明する。図６は、図２のステップＳ２０４における動きベクトル検出処理の詳細を示すフローチャートである。なお、以下の説明では、図６に示す動きベクトル検出処理のフローチャートをサブフローチャート（１）と称す。
【００３６】
ステップＳ６０１において、ＣＰＵ１０１は、入力画像データ及び遅延画像データを入力する。ステップＳ６０２において、ＣＰＵ１０１は、補間時刻比率Ａ及び補間倍率Ｂを入力する。
【００３７】
ステップＳ６０３において、ＣＰＵ１０１は、探索条件として、探索基準位置５００の座標値（ｘ2，ｙ2）、ｘ方向ブロックサイズＭ、ｙ方向ブロックサイズＮ、ｘ方向探索範囲Ｓ＿ＳＩＺＥ＿Ｘ、ｙ方向探索範囲Ｓ＿ＳＩＺＥ＿Ｙを入力する。上述したようにＭ＝４０、Ｎ＝４０である。また本実施形態では、Ｓ＿ＳＩＺＥ＿Ｘ＝２０、Ｓ＿ＳＩＺＥ＿Ｙ＝２０とする。
【００３８】
ステップＳ６０４において、ＣＰＵ１０１は、サブフローチャート（１）で用いる内部パラメータを初期化する。本実施形態では、ｘ方向動きベクトルΔｘ１、ｙ方向動きベクトルΔｙ１、ｘ方向探索動きベクトルΔｘ０、ｙ方向探索動きベクトルΔｙ０、最大相関係数値Ｒ＿ＭＡＸが内部パラメータである。それぞれΔｘ１＝０、Δｙ１＝０、Δｘ０＝−Ｓ＿ＳＩＺＥ＿Ｘ、Δｙ０＝−Ｓ＿ＳＩＺＥ＿Ｙ、Ｒ＿ＭＡＸ＝０と初期化する。
【００３９】
ステップＳ６０５において、ＣＰＵ１０１は、ｙ方向探索動きベクトルΔｙ０がΔｙ０＜Ｓ＿ＳＩＺＥ＿Ｙの条件（繰返し条件（１））を満たしているかどうかを判断する。満たしている場合、ステップＳ６０６へ処理を進める。一方、満たしていない場合、ステップＳ６１５へ処理を進める。
【００４０】
ステップＳ６０６において、ＣＰＵ１０１は、補間倍率Ｂを用いて、Δｙ０＝Δｙ０＋Ｂによりｙ方向探索動きベクトルΔｙ０を更新する。ステップＳ６０７において、ＣＰＵ１０１は、ｘ方向探索動きベクトルΔｘ０がΔｘ０＜Ｓ＿ＳＩＺＥ＿Ｘの条件（繰返し条件（２））を満たしているかどうかを判断する。満たしている場合、ステップＳ６０８へ処理を進める。一方、満たしていない場合、ステップＳ６０５へ処理を進める。
【００４１】
ステップＳ６０８において、ＣＰＵ１０１は、補間倍率Ｂを用いて、Δｘ０＝Δｘ０＋Ｂによりｘ方向探索動きベクトルΔｘ０を更新する。ステップＳ６０９において、ＣＰＵ１０１は、遅延画像データからブロック５０３を取得する。ブロック５０３の遅延画像探索位置５０２の座標値（ｘ0，ｙ0）は、次の式１により算出される。ステップＳ６１０において、ＣＰＵ１０１は、入力画像データからブロック５０５を取得する。ブロック５０５の入力画像探索位置５０４の座標値（ｘ1，ｙ1）は、次の式２により算出される。なお、ステップＳ６０９、Ｓ６１０は、第１の取得手段の処理例である。
【００４２】
【数１】
0005863273.tif 000002
【００４３】
【数２】
0005863273.tif 000003
【００４４】
ステップＳ６１１において、ＣＰＵ１０１は、ブロック５０３とブロック５０５との相関性として相関係数Ｒを算出する。相関係数Ｒは次の式３より求められる。式３において、ｆ（ｘ，ｙ）はブロック５０３の座標値（ｘ，ｙ）における画素値である。また、ｇ（ｘ，ｙ）はブロック５０５の座標値（ｘ，ｙ）における画素値である。なお、相関係数Ｒの代わりに差分絶対値和ＳＡＤを算出することも可能である。差分絶対値和ＳＡＤは、ブロック５０３とブロック５０５とを用いて、次の式４より算出される。なお、ステップＳ６１１は、第１の算出手段の処理例である。
【００４５】
【数３】
0005863273.tif 000004
【００４６】
【数４】
0005863273.tif 000005
【００４７】
ステップＳ６１２において、ＣＰＵ１０１は、ステップＳ６１１で算出された相関係数Ｒと最大相関係数値Ｒ＿ＭＡＸとの大小比較を行う。Ｒ＞Ｒ＿ＭＡＸであるならば、ステップＳ６１３へ処理を進める。一方、Ｒ≦Ｒ＿ＭＡＸであるならば、ステップＳ６０７へ処理を進める。なお、ステップＳ６１１で差分絶対値和ＳＡＤを算出した場合、ＣＰＵ１０１は、差分絶対値和ＳＡＤと最大相関係数値Ｒ＿ＭＡＸとの大小比較を行う。ＳＡＤ≦Ｒ＿ＭＡＸであるならば、ステップＳ６１３へ処理を進める。一方、ＳＡＤ＞Ｒ＿ＭＡＸであるならば、ステップＳ６０７へ処理を進める。
【００４８】
ステップＳ６１３において、ＣＰＵ１０１は、相関係数Ｒを用いて、Ｒ＿ＭＡＸ＝Ｒにより最大相関係数値Ｒ＿ＭＡＸを更新する。なお、ステップＳ６１１で差分絶対値和ＳＡＤを算出した場合、ＣＰＵ１０１は、差分絶対値和ＳＡＤを用いて、Ｒ＿ＭＡＸ＝ＳＡＤにより最大相関係数値Ｒ＿ＭＡＸを更新する。
【００４９】
ステップＳ６１４において、ＣＰＵ１０１は、Δｘ１＝Δｘ０によりｘ方向動きベクトルΔｘ１を更新するとともに、Δｙ１＝Δｙ０によりｙ方向動きベクトルΔｙ１を更新する。ステップＳ６１５において、ＣＰＵ１０１は、探索基準位置５００の座標値（ｘ2，ｙ2）、ｘ方向動きベクトルΔｘ１及びｙ方向動きベクトルΔｙ１から、動きベクトルＭＶ（ｘ2，ｙ2，Δｘ１，Δｙ１）を出力する。以上がサブフローチャート（１）の説明である。なお、ステップＳ６１４は、第２の算出手段の処理例である。
【００５０】
次に、図６のサブフローチャート（１）を用いて説明した動きベクトル検出処理の探索精度を向上させるための方法について説明する。この方法は、図２のステップＳ２０４における動きベクトル検出処理にて実施される方法であり、図６のサブフローチャート（１）に示した動きベクトル検出処理に代えて実施されるものである。
【００５１】
図７は、図６のサブフローチャート（１）を用いて説明した動きベクトル検出処理の探索精度に関する課題とその改善方法を説明するための図である。
【００５２】
図７は、図５と同様に、フレーム時刻ｔ＝ｔ0の遅延画像データとフレーム時刻ｔ＝ｔ0＋ｎの入力画像データとの２つの画像データを用いて、フレーム時刻ｔ＝ｔ0＋Ａｎにおける補間画像データを生成するための動きベクトルの検出方法を説明するための図である。なお、図７は、図５よりも詳細に、画素単位で動きベクトルの検出パターンを表している。
【００５３】
図７（ａ）、図７（ｂ）及び図７（ｃ）のそれぞれは、ｙ−ｔ平面を表している。このｙ−ｔ平面における横軸はフレーム時刻であり、縦軸はｙ座標である。本来はｘ−ｙ−ｔの３次元立体上で説明すべきであるが、空間軸についてはｙのみの１次元で説明しても差し支えないため、ｘ軸を省略している。
【００５４】
また、図７（ａ）、図７（ｂ）及び図７（ｃ）のそれぞれにおいて、時刻ｔ＝ｔ0では、遅延画像データ３００を構成するＩ（ｙ，ｔ）＝Ｉ（ｐ−１，ｔ0）、Ｉ（ｙ，ｔ）＝Ｉ（ｐ，ｔ0）、Ｉ（ｙ，ｔ）＝Ｉ（ｐ＋１，ｔ0）、Ｉ（ｙ，ｔ）＝Ｉ（ｐ＋２，ｔ0）の画素が配置されている。時刻ｔ＝ｔ0＋ｎでは、Ｉ（ｙ，ｔ）＝Ｉ（ｐ−１，ｔ0＋ｎ）、Ｉ（ｙ，ｔ）＝Ｉ（ｐ，ｔ0＋ｎ）、Ｉ（ｙ，ｔ）＝Ｉ（ｐ＋１，ｔ0＋ｎ）、Ｉ（ｙ，ｔ）＝Ｉ（ｐ＋２，ｔ0＋ｎ）の画素が配置されている。
【００５５】
まず、図７（ａ）の例では、図６のサブフローチャート（１）を用いて説明した動きベクトル検出処理は、整数画素精度の探索がなされておらず、探索精度が低いことを示している。図７（ａ）において、フレーム時刻ｔ＝ｔ0＋Ａｎにおける画素Ｉ（ｙ，ｔ）＝Ｉ（ｐ，ｔ0＋Ａｎ）を動きベクトル検出における探索基準位置として、動きベクトルの探索パターンを説明する。なお、この画素Ｉ（ｙ，ｔ）＝Ｉ（ｐ，ｔ0＋Ａｎ）は、図５における補間画像データ３０２上の探索基準位置５００と一致する。
【００５６】
先ず、最初の探索パターンにより、Ｉ（ｙ，ｔ）＝Ｉ（ｐ，ｔ0）を遅延画像探索位置とし、Ｉ（ｙ，ｔ）＝Ｉ（ｐ，ｔ0＋ｎ）を入力画像探索位置とする第一のブロックマッチングが行われる。次に最初の探索パターンに続く２番目の探索パターンにより、Ｉ（ｙ，ｔ）＝Ｉ（ｐ−１，ｔ0）を遅延画像探索位置とし、Ｉ（ｙ，ｔ）＝Ｉ（ｐ＋２，ｔ0＋ｎ）を入力画像探索位置とする第二のブロックマッチングが行なわれる。
【００５７】
ここで、第一のブロックマッチングと第二のブロックマッチングとの間で起こる探索画素位置のシフト量を計算する。遅延画像データ側は（ｐ−１）−ｐ＝−１であり、ｙ軸の負の方向に１画素シフトしている。入力画像データ側は（ｐ＋２）−ｐ＝２であり、ｙ軸の正の方向に２画素シフトしている。遅延画像データ側のシフト量と入力画像データ側のシフト量との差分は３画素であり、整数画素精度である１画素にならない。このことから、図６のサブフローチャート（１）を用いて説明した動きベクトルの検出処理は、整数画素精度の探索がなされておらず、探索精度が低いことがわかる。
【００５８】
このように、動きベクトル探索におけるシフト量が１にならないのは、１以上の整数画素精度のシフト量でｙ軸に対して正負逆に遅延画像探索位置と入力画像探索位置とをシフトしているためである。また、探索基準位置を通過する動きベクトルのみを探索しているためでもある。
【００５９】
次に、整数画素精度の動きベクトル検出、又は、サブピクセル精度の動きベクトル検出を可能とするために、画像拡大処理の後に動きベクトル検出を行う方法について、図７（ｂ）を参照しながら説明する。またその後、図７（ｃ）を参照しながら、本来の探索基準位置から離れた画素位置を新たな探索基準位置として、動きベクトル検出を行う方法について説明する。
【００６０】
先ず、図７（ｂ）を参照しながら、画像拡大処理の後に動きベクトル検出を行う方法について説明する。図７（ｂ）では、動きベクトル検出を行うに先立ち、補間倍率Ｂと等しい倍率で画像データを拡大させる。本実施形態では補間倍率Ｂ＝３であるため、３倍に拡大させる。
【００６１】
時刻ｔ＝ｔ0において、Ｉ（ｙ，ｔ）＝Ｉ（ｐ−１，ｔ0）、Ｉ（ｙ，ｔ）＝Ｉ（ｐ，ｔ0）、Ｉ（ｙ，ｔ）＝Ｉ（ｐ＋１，ｔ0）、Ｉ（ｙ，ｔ）＝Ｉ（ｐ＋２，ｔ0）の画素が配置されている。ＣＰＵ１０１は、これらの画素を用いて補間画素Ｉ（ｙ，ｔ）＝Ｉ（ｐ−２／３，ｔ0）、Ｉ（ｙ，ｔ）＝Ｉ（ｐ−１／３，ｔ0）、Ｉ（ｙ，ｔ）＝Ｉ（ｐ＋１／３，ｔ0）、Ｉ（ｙ，ｔ）＝Ｉ（ｐ＋２／３，ｔ0）、Ｉ（ｙ，ｔ）＝Ｉ（ｐ＋４／３，ｔ0）及びＩ（ｙ，ｔ）＝Ｉ（ｐ＋５／３，ｔ0）を生成する。
【００６２】
時刻ｔ＝ｔ0＋ｎにおいて、Ｉ（ｙ，ｔ）＝Ｉ（ｐ−１，ｔ0＋ｎ）、Ｉ（ｙ，ｔ）＝Ｉ（ｐ，ｔ0＋ｎ）、Ｉ（ｙ，ｔ）＝Ｉ（ｐ＋１，ｔ0＋ｎ）、Ｉ（ｙ，ｔ）＝Ｉ（ｐ＋２，ｔ0＋ｎ）の画素が配置されている。ＣＰＵ１０１は、これらの画素を用いて補間画素Ｉ（ｙ，ｔ）＝Ｉ（ｐ−２／３，ｔ0＋ｎ）、Ｉ（ｙ，ｔ）＝Ｉ（ｐ−１／３，ｔ0＋ｎ）、Ｉ（ｙ，ｔ）＝Ｉ（ｐ＋１／３，ｔ0＋ｎ）、Ｉ（ｙ，ｔ）＝Ｉ（ｐ＋２／３，ｔ0＋ｎ）、Ｉ（ｙ，ｔ）＝Ｉ（ｐ＋４／３，ｔ0＋ｎ）及びＩ（ｙ，ｔ）＝Ｉ（ｐ＋５／３，ｔ0＋ｎ）を生成する。
【００６３】
なお、画像拡大処理における拡大補間アルゴリズムは、最近傍補間法、バイリニア補間法、バイキュービック補間法及びその他の如何なる画像拡大処理を用いてもよい。
【００６４】
次に、画像拡大処理を行った遅延画像データと入力画像データとを用いた動きベクトルの探索パターンについて説明する。ここでは、フレーム時刻ｔ＝ｔ0＋Ａｎにおける画素Ｉ（ｙ，ｔ）＝Ｉ（ｐ，ｔ0＋Ａｎ）を動きベクトル検出における探索基準位置とする。
【００６５】
最初の探索パターンにより、Ｉ（ｙ，ｔ）＝Ｉ（ｐ，ｔ0）を遅延画像探索位置とし、Ｉ（ｙ，ｔ）＝Ｉ（ｐ，ｔ0＋ｎ）を入力画像探索位置とする第一のブロックマッチングが行われる。最初の探索パターンに続く２番目の探索パターンにより、Ｉ（ｙ，ｔ）＝Ｉ（ｐ−１／３，ｔ0）を遅延画像探索位置とし、Ｉ（ｙ，ｔ）＝Ｉ（ｐ＋２／３，ｔ0＋ｎ）を入力画像探索位置とする第二のブロックマッチングが行われる。
【００６６】
ここで、第一のブロックマッチングと第二のブロックマッチングとの間で起こる探索画素位置のシフト量を計算する。遅延画像データ側は（ｐ−１／３）−ｐ＝−１／３であり、ｙ軸の負の方向に１／３画素シフトしている。入力画像データ側は（ｐ＋２／３）−ｐ＝２／３であり、ｙ軸の正の方向に２／３画素シフトしている。遅延画像データ側のシフト量と入力画像データ側のシフト量との差分は１画素となる。このように、画像拡大処理を行うことで、整数画素精度の動きベクトル検出が可能となる。
【００６７】
なお、本実施形態では、補間倍率Ｂ＝３であり、画像を３倍より大きく拡大させると、サブピクセル精度の動きベクトル検出が可能となる。
【００６８】
次に、図７（ｃ）を参照しながら、本来の探索基準位置から離れた画素位置を新たな探索基準位置として、動きベクトル検出を行う方法について説明する。図７（ｃ）では、図６のサブフローチャート（１）を用いて説明した動きベクトルの検出処理の後に、検出された動きベクトルの近傍の動きベクトルを再探索する。
【００６９】
図７（ｃ）において、フレーム時刻ｔ＝ｔ0＋Ａｎにおける動きベクトルを検出するため、画素Ｉ（ｙ，ｔ）＝Ｉ（ｐ，ｔ0＋Ａｎ）を探索基準位置とする動きベクトルＭＶ（ｐ，０）が検出されたものとする。ここでは、説明の省略のため、ｘ軸については考えないが、仮に考えて、ｘ方向の探索基準位置ｘ2＝４０、ｘ方向の動きベクトルΔｘ1＝１０であるとすると、ＭＶ（４０，ｐ，１０，０）と検出されているのと同じである。
【００７０】
この検出された動きベクトルＭＶ（ｐ，０）の近傍の動きベクトルを探索するために、探索基準位置Ｉ（ｙ，ｔ）＝Ｉ（ｐ，ｔ0＋Ａｎ）から、１／３画素ずれたＩ（ｙ，ｔ）＝Ｉ（ｐ＋１／３，ｔ0＋Ａｎ）を定義して新たな探索基準位置とする。この新たな探索基準位置Ｉ（ｙ，ｔ）＝Ｉ（ｐ＋１／３，ｔ0＋Ａｎ）を導入することで、Ｉ（ｙ，ｔ）＝Ｉ（ｐ，ｔ0）を遅延画像探索位置とし、Ｉ（ｙ，ｔ）＝Ｉ（ｐ＋１，ｔ0＋ｎ）を入力画像探索位置とするブロックマッチングが行われる。また、動きベクトルは新たな探索基準位置Ｉ（ｙ，ｔ）＝Ｉ（ｐ＋１／３，ｔ0＋Ａｎ）を通過する。
【００７１】
ここで、動きベクトルＭＶ（ｐ，０）を検出する際に行われた第一のブロックマッチングと、新たな探索基準位置Ｉ（ｙ，ｔ）＝Ｉ（ｐ＋４／３，ｔ0＋Ａｎ）を用いて行われた第二のブロックマッチングとの間で起こる探索画素位置のシフト量を計算する。遅延画像データ側はｐ−ｐ＝０であり、シフトしていない。入力画像データ側は（ｐ＋１）−ｐ＝１であり、ｙ軸の正の方向に１画素シフトしている。遅延画像データ側のシフト量と入力画像データ側のシフト量との差分は１画素となる。このように、本来の探索基準位置から離れた画素位置を新たな探索基準位置として動きベクトルを検出することで、整数画素精度での動きベクトルを検出することが可能になる。
【００７２】
図７（ｂ）に示すように、画像拡大処理の後に動きベクトル検出を行うことにより、整数画素精度の動きベクトル検出、又は、サブピクセル精度の動きベクトル検出が可能となる。
【００７３】
また、図７（ｃ）に示すように、本来の探索基準位置から離れた画素位置を新たな探索基準位置として、動きベクトル検出を行うことにより、整数画素精度の動きベクトル検出、又は、サブピクセル精度の動きベクトル検出が可能となる。なお、上記両方の方法を実行するようにしても同様の効果を得ることができる。
【００７４】
次に、図８のフローチャートを参照しながら、図７（ｂ）を用いて説明した、画像拡大処理の後に動きベクトル検出を行う方法について詳細に説明する。その後、図７（ｃ）を用いて説明した、本来の探索基準位置から離れた画素位置を新たな探索基準位置として動きベクトル検出を行う方法について詳細に説明する。
【００７５】
図８は、図２のステップＳ２０４における動きベクトル検出処理の詳細を示すフローチャートである。なお、以下の説明では、図８に示す動きベクトル検出処理のフローチャートをサブフローチャート（２）と称す。
【００７６】
図８のサブフローチャート（２）は、図６のサブフローチャート（１）の処理内容と多くの点で同様である。そのため、サブフローチャート（２）独自の処理についてのみ説明を行い、サブフローチャート（１）と同様の処理は、説明を省略する。即ち、サブフローチャート（２）におけるステップＳ６００からステップＳ６０２の説明は省略するものとする。また、ステップＳ６０３の説明も省略する。また、ステップＳ６０４からステップＳ６１４の説明も省略する。さらに、ステップＳ６１５及びステップＳ６１６の説明も省略する。
【００７７】
ステップＳ８００において、ＣＰＵ１０１は、補間倍率Ｂを用いて入力画像データ及び遅延画像データを拡大する。本実施形態では、補間倍率Ｂ＝３であるので、入力画像データ及び遅延画像データを３倍に拡大する。画像拡大処理の方法は既に図７（ｂ）を用いて説明したので省略する。
【００７８】
ステップＳ８０１において、ＣＰＵ１０１は、ステップ６０３で入力した探索条件を補間倍率Ｂを用いて再設定する。本実施形態では、補間倍率Ｂ＝３であるので、ＣＰＵ１０１は、ｘ方向ブロックサイズＭ、ｙ方向ブロックサイズＮ、ｘ方向探索範囲Ｓ＿ＳＩＺＥ＿Ｘ、ｙ方向探索範囲Ｓ＿ＳＩＺＥ＿Ｙに対して、Ｍ＝ＢＭ＝３Ｍ、Ｎ＝ＢＮ＝３Ｎ、Ｓ＿ＳＩＺＥ＿Ｘ＝Ｂ＊Ｓ＿ＳＩＺＥ＿Ｘ＝３Ｓ＿ＳＩＺＥ＿Ｘ及びＳ＿ＳＩＺＥ＿Ｙ＝Ｂ＊Ｓ＿ＳＩＺＥ＿Ｙ＝３Ｓ＿ＳＩＺＥ＿Ｙと再設定する。
【００７９】
ステップＳ８０２において、ＣＰＵ１０１は、補間倍率Ｂを用いて動きベクトルを縮小する。本実施形態では、補間倍率Ｂ＝３であるので、ＣＰＵ１０１は、ＭＶ（ｘ2，ｙ2，Δｘ１，Δｙ１）で算出されている動きベクトルに対して、ｘ2＝ｘ2／Ｂ＝ｘ2／３、ｙ2＝ｙ2／Ｂ＝ｙ2／３、Δｘ1＝Δｘ1／Ｂ＝Δｘ1／３、Δｙ1＝Δｙ1／Ｂ＝Δｙ1／３と縮小する。以上がサブフローチャート（２）の説明である。
【００８０】
このように、画像拡大処理の後に動きベクトル検出を行うことで、整数画素精度の動きベクトル検出が可能になる。なお、本実施形態では、補間倍率Ｂ＝３であり、画像を３倍より大きく拡大させると、サブピクセル精度の動きベクトル検出が可能となる。
【００８１】
次に、図７（ｃ）に示した、本来の探索基準位置から離れた画素位置を新たな探索基準位置として用いる動きベクトル検出方法の詳細を、図９のフローチャートを参照しながら説明する。図９は、図２のステップＳ２０４における動きベクトル検出処理の詳細を示すフローチャートである。なお、以下の説明では、動きベクトル検出処理のフローチャートをサブフローチャート（３）と称す。
【００８２】
図９のサブフローチャート（３）は、図６のサブフローチャート（１）の処理内容と多くの点で同様である。そのため、サブフローチャート（３）独自の処理についてのみ説明を行い、サブフローチャート（１）と同様の処理は、説明を省略する。即ち、サブフローチャート（３）におけるステップＳ６００からステップＳ６１５の説明を省略する。
【００８３】
ステップＳ９００において、ＣＰＵ１０１は、ｘ方向探索範囲Ｓ＿ＳＩＺＥ＿Ｘ、ｙ方向探索範囲Ｓ＿ＳＩＺＥ＿Ｙに関して、Ｓ＿ＳＩＺＥ＿Ｘ＝Δｘ1＋Ｂ、Ｓ＿ＳＩＺＥ＿Ｙ＝Δｙ1＋Ｂと、探索条件を再設定する。
【００８４】
ステップＳ９０１において、ＣＰＵ１０１は、サブフローチャート（３）で用いる再検索用内部パラメータを初期化する。本実施形態において、再検索用内部パラメータは、過去側ｘ方向探索動きベクトルΔｘ００、過去側ｙ方向探索動きベクトルΔｙ００、未来側ｘ方向探索動きベクトルΔｘ０１、未来側ｙ方向探索動きベクトルΔｙ０１である。ＣＰＵ１０１は、それぞれΔｘ００＝Δｘ1−Ｂ−１、Δｙ００＝Δｙ1−Ｂ−１、Δｘ０１＝Δｘ1−Ｂ−１、Δｙ０１＝Δｙ1−Ｂ−１と初期化する。
【００８５】
ステップＳ９０２において、ＣＰＵ１０１は、過去側ｙ方向探索動きベクトルΔｙ００がΔｙ００＜Ｓ＿ＳＩＺＥ＿Ｙの条件（繰返し条件（３））を満たしているかどうかを判断する。満たしている場合、ステップＳ９０３へ処理を進める。一方、満たしていない場合、ステップＳ９１９へ処理を進める。
【００８６】
ステップＳ９０３において、ＣＰＵ１０１は、Δｙ００＝Δｙ００＋１として、過去側ｙ方向探索動きベクトルΔｙ００を更新する。ステップＳ９０４において、ＣＰＵ１０１は、過去側ｘ方向探索動きベクトルΔｘ００がΔｘ００＜Ｓ＿ＳＩＺＥ＿Ｘの条件（繰返し条件（４））を満たしているかどうかを判断する。満たしている場合、ステップＳ９０５へ処理を進める。一方、満たしていない場合、ステップＳ９０２へ処理を進める。
【００８７】
ステップＳ９０５において、ＣＰＵ１０１は、Δｘ００＝Δｘ００＋１により過去側ｘ方向探索動きベクトルΔｘ００を更新する。ステップＳ９０６において、ＣＰＵ１０１は、未来側ｙ方向探索動きベクトルΔｙ０１がΔｙ０１＜Ｓ＿ＳＩＺＥ＿Ｙの条件（繰返し条件（５））を満たしているかどうかを判断する。満たしている場合、ステップＳ９０７へ処理を進める。一方、満たしていない場合、ステップＳ９０４へ処理を進める。
【００８８】
ステップＳ９０７において、ＣＰＵ１０１は、Δｙ０１＝Δｙ０１＋１により未来側ｙ方向探索動きベクトルΔｙ０１を更新する。ステップＳ９０８において、ＣＰＵ１０１は、未来側ｘ方向探索動きベクトルΔｘ０１がΔｘ０１＜Ｓ＿ＳＩＺＥ＿Ｘの条件（繰返し条件（６））を満たしているかどうかを判断する。満たしている場合、ステップＳ９０９へ処理を進める。一方、満たしていない場合、ステップＳ９０６へ処理を進める。
【００８９】
ステップＳ９０９において、ＣＰＵ１０１は、Δｘ０１＝Δｘ０１＋１により未来側ｘ方向探索動きベクトルΔｘ０１を更新する。ステップＳ９１０において、ＣＰＵ１０１は、探索基準位置５００の座標値（ｘ2，ｙ2）を始点として、新たな探索基準位置の座標値（ｘ4，ｙ4）を終点とする補正ベクトル（Δｘ4，Δｙ4）を算出する。算出には過去側ｘ方向探索動きベクトルΔｘ００、過去側ｙ方向探索動きベクトルΔｙ００、未来側ｘ方向探索動きベクトルΔｘ０１及び未来側ｙ方向探索動きベクトルΔｙ０１を用いる。ｘ4とｙ4とはそれぞれ、ｘ4＝Δｘ００＋Ａ＊（Δｘ０１−Δｘ００）、ｙ4＝Δｙ００＋Ａ＊（Δｙ０１−Δｙ００）で算出される。また、Δｘ4とΔｙ4とはそれぞれ、Δｘ4＝ｘ4−ｘ2、Δｙ4＝ｙ4−ｙ2である。
【００９０】
ステップＳ９１１において、ＣＰＵ１０１は、所定閾値ｔｈ２に対して補正ベクトル（Δｘ4，Δｙ4）の大きさがｔｈ２≦（Δｘ42＋Δｙ42）1/2かどうかを判断する。所定閾値ｔｈ２以下の場合、ステップＳ９１２へ処理を進める。一方、所定閾値ｔｈ２よりも大きい場合、ステップＳ９０８へ処理を進める。なお、本実施形態では、所定閾値ｔｈ２＝２1/2とする。
【００９１】
ステップＳ９１２において、ＣＰＵ１０１は、遅延画像データから過去側ｘ方向探索動きベクトルΔｘ００及び過去側ｙ方向探索動きベクトルΔｙ００を基準位置とするブロック（第４のブロック）を取得する。ステップＳ９１３において、ＣＰＵ１０１は、入力画像データから未来側ｘ方向探索動きベクトルΔｘ０１及び未来側ｙ方向探索動きベクトルΔｙ０１を基準位置とするブロック（第３のブロック）を取得する。なお、ステップＳ９１２、Ｓ９１３は、第２の取得手段の処理例である。
【００９２】
ステップＳ９１４において、ＣＰＵ１０１は、ステップＳ９１２及びステップＳ９１３にて取得した２つのブロックの相関係数Ｒを算出する。なお、相関係数Ｒの代わりに差分絶対値和ＳＡＤを算出してもよい。
【００９３】
ステップＳ９１５において、ＣＰＵ１０１は、ステップＳ９１４で算出した相関係数Ｒと最大相関係数値Ｒ＿ＭＡＸとの大小比較を行う。Ｒ＞Ｒ＿ＭＡＸであるならば、ステップＳ９１６へ処理を進める。Ｒ≦Ｒ＿ＭＡＸであるならば、ステップＳ９０８へ処理を進める。なお、ＣＰＵ１０１は、ステップＳ９１４で差分絶対値和ＳＡＤを算出した場合、差分絶対値和ＳＡＤと最大相関係数値Ｒ＿ＭＡＸとの大小比較を行う。ＳＡＤ≦Ｒ＿ＭＡＸであるならば、ステップＳ９１６へ処理を進める。ＳＡＤ＞Ｒ＿ＭＡＸであるならば、ステップＳ９０８へ処理を進める。なお、ステップＳ９１６は、第３の算出手段の処理例である。
【００９４】
ステップＳ９１６において、ＣＰＵ１０１は、相関係数Ｒを用いて、Ｒ＿ＭＡＸ＝Ｒにより最大相関係数値Ｒ＿ＭＡＸを更新する。なお、ステップＳ９１４で差分絶対値和ＳＡＤを算出した場合、ＣＰＵ１０１は、差分絶対値和ＳＡＤを用いて、Ｒ＿ＭＡＸ＝ＳＡＤにより最大相関係数値Ｒ＿ＭＡＸを更新する。
【００９５】
ステップＳ９１７において、ＣＰＵ１０１は、過去側ｘ方向探索動きベクトルΔｘ００、過去側ｙ方向探索動きベクトルΔｙ００、未来側ｘ方向探索動きベクトルΔｘ０１及び未来側ｙ方向探索動きベクトルΔｙ０１を用いて、動きベクトルＭＶ（ｘ2，ｙ2，Δｘ1，Δｙ1）を更新する。Δｘ1とΔｙ1とは、Δｘ1＝Δｘ０１−Δｘ００、Δｙ1＝Δｙ０１−Δｙ００である。
【００９６】
ステップＳ９１８において、ＣＰＵ１０１は、補正ベクトル（Δｘ4,Δｙ4）を用いて、動きベクトルＭＶ（ｘ2，ｙ2，Δｘ1，Δｙ1）を補正する。Δｘ1とΔｙ1とは、Δｘ1＝Δｘ1−Δｘ4、Δｙ1＝Δｙ1−Δｙ4で算出される。ステップＳ９１９において、ＣＰＵ１０１は、動きベクトルＭＶ（ｘ2，ｙ2，Δｘ1，Δｙ1）を出力する。以上が、サブフローチャート（３）の説明である。
【００９７】
このように、本来の探索基準位置から離れた画素位置を新たな探索基準位置として動きベクトル検出することで、整数画素精度での動きベクトルを検出することが可能になる。以上、ステップＳ２０４における動きベクトルの検出処理の詳細について説明した。
【００９８】
サブフローチャート（１）、サブフローチャート（２）及びサブフローチャート（３）は、いずれも本実施形態の特徴を表したものである。特徴とは即ち、補間画像データ上の座標値を動きベクトル探索における基準とし、当該補間画像フレーム上の座標値を通過する動きベクトルの候補から動きベクトルを検出することである。
【００９９】
ステップＳ２０５において、ＣＰＵ１０１は、フレーム時刻ｔ＝ｔ2＝ｔ0＋Ａｎにおける補間画像データ３０２を作成する。ここで、ステップＳ２０５における補間画像データ生成処理の詳細について説明する。図１０は、図２のステップＳ２０５における補間画像データ生成処理の詳細を示すフローチャートである。なお、以下の説明では、補間画像データ生成処理を示す図１０のフローチャートをサブフローチャート（４）と称す。
【０１００】
ステップＳ１００１において、ＣＰＵ１０１は、補間時刻比率Ａを入力する。ステップＳ１００２において、ＣＰＵ１０１は、入力画像データ及び遅延画像データを入力する。ステップＳ１００３において、ＣＰＵ１０１は、ステップＳ２０４にて検出された動きベクトルマップＭＶ＿ＭＡＰ（ｐ、ｑ）及びｘ方向動きベクトルマップサイズＰ、ｙ方向動きベクトルマップサイズＱを入力する。
【０１０１】
ステップＳ１００４において、ＣＰＵ１０１は、サブフローチャート（４）で用いる内部パラメータを初期化する。本実施形態では、ｘ方向動きベクトルマップポインタｐ、ｙ方向動きベクトルマップポインタｑが内部パラメータである。それぞれｐ＝−１、ｑ＝−１と初期化する。
【０１０２】
ステップＳ１００５において、ＣＰＵ１０１は、ｑ＝ｑ＋１によりｙ方向動きベクトルマップポインタｑを更新する。ステップＳ１００６において、ＣＰＵ１０１は、ｙ方向動きベクトルマップポインタｑがｑ＜Ｑの条件（繰返し条件（１））を満たしているかどうかを判断する。満たしている場合、ステップＳ１００７へ処理を進める。一方、満たしていない場合、ステップＳ１０１２へ処理を進める。
【０１０３】
ステップＳ１００７において、ＣＰＵ１０１は、ｐ＝ｐ＋１により、ｘ方向動きベクトルマップポインタｐを更新する。ステップＳ１００８において、ＣＰＵ１０１は、ｘ方向動きベクトルマップポインタｐがｐ＜Ｐの条件（繰返し条件（２））を満たしているかどうかを判断する。満たしている場合、ステップＳ１００９へ処理を進める。一方、満たしていない場合、ステップＳ１００６へ処理を進める。
【０１０４】
ステップＳ１００９において、ＣＰＵ１０１は、動きベクトルマップＭＶ＿ＭＡＰ（ｐ，ｑ）から動きベクトルＭＶ（ｘ2，ｙ2，Δｘ１，Δｙ１）を取得する。ステップＳ１０１０において、ＣＰＵ１０１は、遅延画像データからブロック５０３（第６のブロック）を取得する。ブロック５０３の遅延画像探索位置５０２の座標値（ｘ0，ｙ0）は式５により算出される。ステップＳ１０１１において、ＣＰＵ１０１は、入力画像データからブロック５０５（第５のブロック）を取得する。ブロック５０５の入力画像探索位置５０４の座標値（ｘ1，ｙ1）は式６により算出される。
【０１０５】
【数５】
0005863273.tif 000006
【０１０６】
【数６】
0005863273.tif 000007
【０１０７】
ここで、ステップＳ１０１０、ステップＳ１０１１の処理で用いられる動きベクトルＭＶ（ｘ2，ｙ2，Δｘ１，Δｙ１）に応じた適応処理について補足説明する。
【０１０８】
ステップＳ２０４にて、図８のフローチャートに示す画像拡大処理の後に動きベクトル検出を行った場合、動きベクトルは整数画素精度又はサブピクセル精度で検出される。同様に、図９のフローチャートに示す本来の探索基準位置から離れた画素位置を新たな探索基準位置として用いる動きベクトル検出を行った場合、動きベクトルは整数画素精度又はサブピクセル精度で検出される。
【０１０９】
このため、式５にて算出されるブロック５０３の遅延画像探索位置５０２の座標値（ｘ0，ｙ0）及び式６にて算出されるブロック５０５の入力画像探索位置５０４の座標値（ｘ1，ｙ1）は小数値を含む可能性がある。座標値（ｘ0，ｙ0）及び座標値（ｘ1，ｙ1）が小数値を含む場合、既存の画素を用いて、小数精度の画素位置の画素を補間する。
【０１１０】
動きベクトルＭＶ（ｘ2，ｙ2，Δｘ１，Δｙ１）において、ｘ方向動きベクトルΔｘ１の整数部Δｘ１＿ｉｎｔ、小数部をΔｘ１＿ｄｅｃとすると、Δｘ１＝Δｘ１＿ｉｎｔ＋Δｘ１＿ｄｅｃと表すことができる。同様に、ｙ方向動きベクトルΔｙ１の整数部Δｙ１＿ｉｎｔ、小数部をΔｙ１＿ｄｅｃとすると、Δｙ1＝Δｙ１＿ｉｎｔ＋Δｙ１＿ｄｅｃと表すことができる。
【０１１１】
このとき、補間画素位置（ｘ5，ｙ5）は、
ｘ5＝（１−Δｘ１＿ｄｅｃ）＊Δｘ１＿ｉｎｔ＋Δｘ１＿ｄｅｃ＊（Δｘ１＿ｉｎｔ＋１）
ｙ5＝（１−Δｙ１＿ｄｅｃ）＊Δｙ１＿ｉｎｔ＋Δｙ１＿ｄｅｃ＊（Δｙ１＿ｉｎｔ＋１）
と算出される。
以上がステップＳ１０１０、ステップＳ１０１１の処理で用いられる動きベクトルＭＶ（ｘ2，ｙ2，Δｘ１，Δｙ１）に応じた適応処理についての補足説明である。
【０１１２】
ステップＳ１０１２において、ＣＰＵ１０１は、式７より、ブロック５０３及びブロック５０５を用いて、座標値（ｘ2，ｙ2）の探索基準位置５００を基準とする補間画像データのブロック（第７のブロック）を生成する。式７において、ｈ（ｘ，ｙ）はブロック５０１の座標値（ｘ、ｙ）における画素値である。また、ｆ（ｘ，ｙ）はブロック５０３の座標値（ｘ，ｙ）における画素値である。また、ｇ（ｘ，ｙ）はブロック５０５の座標値（ｘ，ｙ）における画素値である。ｍ、ｎはオフセット値であり、０≦ｍ＜Ｍ、０≦ｎ＜Ｎの範囲をとる。以上がステップＳ２０５にて、フレーム時刻ｔ＝ｔ2＝t0＋Ａｎにおける補間画像データ３０２を生成する処理の詳細説明である。
【０１１３】
【数７】
0005863273.tif 000008
【０１１４】
ステップＳ２０６において、ＣＰＵ１０１は、遅延画像データ、補間時刻比率Ａ＝１／３にて生成された補間画像データ、補間時刻比率Ａ＝２／３にて生成された補間画像データをこの順番で出力する。以上がサブフローチャート（４）の説明である。
【０１１５】
以上のように、第１の実施形態によれば、動き検出技術及び動き補償技術を用いたフレームレート変換処理において、従来の技術では成しえなかった任意の倍数のフレームレート変換処理が可能となる。
【０１１６】
また、従来の技術よりも高精度な動きベクトルの探索を可能とすることにより、動き補償処理において生成される補間画像データの画質を向上させ、ユーザに好適な映像を提供することが可能になる。
【０１１７】
なお、第１の実施形態において、画像データの色空間はＹＵＶであったが、本発明の本質は画像データの色空間を限定するものではなく、ＲＧＢでもＬａｂでもＨＳＬでもよい。また、１画素当たりのビット精度は８ビットに限らず何ビットでもよい。同様にビットレンジも負の値を取りうることも可能である。
【０１１８】
なお、第１の実施形態において、補間時刻比率Ａは、プログラムの一部として動き検出・動き補償プログラム内に記録されているものとして扱ったが、本発明の本質はこれに限定することなく、入力装置１０５から入力することも可能である。
【０１１９】
また、第１の実施形態において、動きベクトルマップＭＶ＿ＭＡＰ（ｐ、ｑ）の要素数は、動きベクトル検出処理の処理単位となるブロックサイズに依存して１２９６個であった。しかしながら、本発明の本質はこれに限定することなく、動きベクトルマップＭＶ＿ＭＡＰ（ｐ、ｑ）の要素数は、動きベクトル検出処理の処理単位となるブロックサイズに依存させる必要はない。即ち、任意の要素数を持つ動きベクトルマップＭＶ＿ＭＡＰ（ｐ、ｑ）を生成するように、画像データ中の任意の座標値を探索基準位置として、動きベクトル検出処理を行ってもよい。
【０１２０】
また、第１の実施形態において、ブロックサイズは、Ｍ＝４０、Ｎ＝４０としたが、本発明の本質はこれに限定することなく、画像データサイズ以下であれば、ＭとＮを如何様にも設定してよい。
【０１２１】
また、第１の実施形態において、ブロック５０１の探索基準位置５００を用いたブロック位置定義方法として、ブロック５０１の上左端の座標値が探索基準位置５００に一致するように定義した。しかしながら、本発明の本質はこれに限定することなく、ブロック５０１の重心の座標値が探索基準位置５００に一致するように定義してもよい。また、ブロック５０１の重心の座標値からある一定のベクトルだけ離れた点が探索基準位置５００に一致するように定義してもよい。ブロック５０３の遅延画像探索位置５０２を用いたブロック位置の定義方法についても、ブロック５０５の入力画像探索位置５０４を用いたブロック位置の定義方法についても同様である。
【０１２２】
また、第１の実施形態において、ｘ方向探索範囲Ｓ＿ＳＩＺＥ＿Ｘ＝２０、ｙ方向探索範囲Ｓ＿ＳＩＺＥ＿Ｙ＝２０としたが、本発明の本質はこれに限定することなく、Ｓ＿ＳＩＺＥ＿ＸとＳ＿ＳＩＺＥ＿Ｙとを如何様にも設定してよい。
【０１２３】
次に、本発明の第２の実施形態について説明する。図１１は、本発明の第２の実施形態に係る画像処理装置の構成を示す図であり、本発明をテレビに適用した場合の実施形態を示している。
【０１２４】
１１０１は、画像処理装置である。放送波はアンテナ１１０２、１１０３、１１０４等を経て受信部１１０５の地上波デジタルチューナ部１１０６、衛星デジタルチューナ部１１０８、アナログチューナ部１１１０で受信される。受信された放送波は、デジタルデコード部１１０７、１１０９、アナログデコード部１１１１でオーディオ信号やビデオ信号に復号される。Ｉ／Ｆ部１１２３は、外部入出力装置１１１８、リモコン１１１９、ＳＷ（スイッチ）１１２０、環境光１１２１、ＳＤカード等１１２２の夫々に対応して、オーディオ・ビデオ入出力Ｉ／Ｆ１１２４、リモートＩ／Ｆ１１２５、操作Ｉ／Ｆ１１２６、環境光Ｉ／Ｆ１１２７、外部メディア１１２８を備える。また、Ｉ／Ｆ部１１２３は、チャンネル選択、ボリューム調整、画質補正等の各種入出力制御信号のインタフェースを司る。
【０１２５】
信号処理部１１１２は、オーディオ処理部１１１３、ビデオ処理部１１１５、ＯＳＤ処理部１１１４を備え、オーディオ、ビデオ、ＯＳＤ（オン・スクリーン・ディスプレイ）等の処理を実行する。オーディオ駆動部１１１６は、オーディオ信号を音としてスピーカ１１３５から出力し、ビデオ駆動部１１１７は、ビデオ信号を動画像としてパネル１１３６にて表示する。
【０１２６】
ＣＰＵ１１３０は、ＲＯＭ１１３１に格納されているプログラムを実行して画像処理装置１１０１を制御する。ＲＡＭ１１３２は、ＣＰＵ１１３０の主メモリ、ワークエリア等として機能する。なお、ＣＰＵ１１３０、ＲＯＭ１１３１、ＲＡＭ１１３２及び信号処理部１１１２は、データバス１１２９を介して接続されている。電源部１１３４は、電源プラグ１１３３を介して外部から電源を供給する。
【０１２７】
図１２は、ビデオ処理部１１１５の構成を示す図である。以下、図１２を参照しながら、ビデオ処理部１１１５の構成について説明する。なお、第１の実施形態と重複する内容については、第１の実施形態において説明した内容に準ずるものとして、その説明を省略する。
【０１２８】
１２００はフレームメモリ部である。１２０１は補間フレーム時刻設定部である。１２０２は探索条件設定部である。１２０３は動きベクトル検出部である。１２０４は補間画像生成部である。１２０５は画像出力部である。
【０１２９】
フレームメモリ部１２００は、１フレームずつ画像データを入力するとともに、入力した画像データを保持するメモリを有する。フレームメモリ部１２００は、入力した画像データと、メモリにて１フレーム時間遅延させた画像データとの２つの時刻の画像データを出力する。以下では、入力して即座に出力する画像データを入力画像データ、遅延した後に出力する画像データを遅延画像データと称す。
【０１３０】
補間フレーム時刻設定部１２０１は、第１の実施形態で説明した補間時刻比率Ａ及び補間倍率Ｂを出力する。本実施形態においても、Ａ＝１／３，２／３、Ｂ＝３である。但し、補間時刻比率Ａによる処理手順に差はないため、以降の動きベクトル検出部１２０３及び補間画像生成部１２０４の処理説明ではＡ＝１／３と設定した場合について説明する。
【０１３１】
なお、補間フレーム時刻設定部１２０１の実装形態は、本発明において限定しない。本実施形態では、補間フレーム時刻設定部１２０１はＲＯＭ１１３１に記録されており、画像処理装置１１０１が起動されると同時にビデオ処理部１１１５に読み込まれるものとする。
【０１３２】
探索条件設定部１２０２は、第１の実施形態で説明した図５における探索基準位置５００の座標値（ｘ2，ｙ2）を取得する。また、探索条件設定部１２０２は、ｘ方向ブロックサイズＭ、ｙ方向ブロックサイズＮ、ｘ方向探索範囲Ｓ＿ＳＩＺＥ＿Ｘ、ｙ方向探索範囲Ｓ＿ＳＩＺＥ＿Ｙを入力する。第１の実施形態と同様に、Ｍ＝４０、Ｎ＝４０、Ｓ＿ＳＩＺＥ＿Ｘ＝２０、Ｓ＿ＳＩＺＥ＿Ｙ＝２０である。
【０１３３】
なお、探索条件設定部１２０２の実装形態は、本発明において限定しない。本実施形態では、探索条件設定部１２０２は、ＲＯＭ１１３１に記録されており、画像処理装置１１０１が起動されると同時にビデオ処理部１１１５に読み込まれるものとする。
【０１３４】
動きベクトル検出部１２０３は、フレームメモリ部１２００から入力画像データ及び遅延画像データを入力するとともに、補間フレーム時刻設定部１２０１から補間時刻比率Ａ及び補間倍率Ｂを入力する。また、動きベクトル検出部１２０３は、探索条件設定部１２０２から探索基準位置５００の座標値（ｘ2，ｙ2）、ｘ方向ブロックサイズＭ、ｙ方向ブロックサイズＮ、ｘ方向探索範囲Ｓ＿ＳＩＺＥ＿Ｘ及びｙ方向探索範囲Ｓ＿ＳＩＺＥ＿Ｙを入力する。動きベクトル検出部１２０３は、これらを用いて動きベクトルマップＭＶ＿ＭＡＰ（ｐ、ｑ）を生成する。
【０１３５】
第１の実施形態と同様に、本実施形態における個々の動きベクトルＭＶ（ｘ，ｙ，Δｘ，Δｙ）の検出方法は第１の実施形態と同様である。そのため、以下では１つの動きベクトルＭＶ（ｘ，ｙ，Δｘ，Δｙ）の検出方法について説明することで、動きベクトルマップＭＶ＿ＭＡＰ（ｐ，ｑ）の生成処理の説明の代わりとする。
【０１３６】
図１３は、動きベクトル検出部１２０３の構成を示す図である。以下、図１３を参照しながら、動きベクトル検出部１２０３の構成について説明する。
【０１３７】
１３００は補間時刻比率入力部（１）である。１３０１は探索条件入力部である。１３０２は内部パラメータ初期化部（１）である。１３０３は探索用動きベクトル更新部である。１３０４は遅延画像データ参照部（１）である。１３０５は入力画像データ参照部（１）である。１３０６は相関演算部である。１３０７は動きベクトル更新部である。１３０８は動きベクトルマップ出力部である。
【０１３８】
補間時刻比率入力部（１）１３００は、補間フレーム時刻設定部１２０１から補間時刻比率Ａ及び補間倍率Ｂを入力する。探索条件入力部１３０１は、探索条件設定部１２０２から探索基準位置５００の座標値（ｘ2，ｙ2）、ｘ方向ブロックサイズＭ、ｙ方向ブロックサイズＮ、ｘ方向探索範囲Ｓ＿ＳＩＺＥ＿Ｘ及びｙ方向探索範囲Ｓ＿ＳＩＺＥ＿Ｙを入力する。
【０１３９】
内部パラメータ初期化部（１）１３０２は、動きベクトル検出部１２０３で用いる内部パラメータを初期化する。本実施形態では、ｘ方向動きベクトルΔｘ１、ｙ方向動きベクトルΔｙ１、ｘ方向探索動きベクトルΔｘ０、ｙ方向探索動きベクトルΔｙ０、最大相関係数値Ｒ＿ＭＡＸが内部パラメータである。
【０１４０】
内部パラメータ初期化部（１）１３０２は、それぞれΔｘ１＝０、Δｙ１＝０、Δｘ０＝−Ｓ＿ＳＩＺＥ＿Ｘ、Δｙ０＝−Ｓ＿ＳＩＺＥ＿Ｙ、Ｒ＿ＭＡＸ＝０と初期化する。ｘ方向探索範囲Ｓ＿ＳＩＺＥ＿Ｘ及びｙ方向探索範囲Ｓ＿ＳＩＺＥ＿Ｙは、探索条件入力部１３０１より入力される。探索用動きベクトル更新部１３０３は、以下の条件（１）及び条件（２）を判定することで、ｘ方向探索動きベクトルΔｘ０、ｙ方向探索動きベクトルΔｙ０を更新する。
【０１４１】
探索用動きベクトル更新部１３０３は、ｙ方向探索動きベクトルΔｙ０がΔｙ０＜Ｓ＿ＳＩＺＥ＿Ｙの条件（１）を満たしているかどうかを判断する。条件（１）を満たしている場合、探索用動きベクトル更新部１３０３は、補間倍率Ｂを用いて、Δｙ０＝Δｙ０＋Ｂによりｙ方向探索動きベクトルΔｙ０を更新する。一方、条件（１）を満たしていない場合、探索用動きベクトル更新部１３０３は、動きベクトルマップ出力部１３０８へ制御信号を送信する。
【０１４２】
条件（１）を満たしている場合、探索用動きベクトル更新部１３０３は、ｙ方向探索動きベクトルΔｙ０を更新した後、ｘ方向探索動きベクトルΔｘ０がΔｘ０＜Ｓ＿ＳＩＺＥ＿Ｘの条件（２）を満たしているかどうかを判断する。条件（２）を満たしている場合、探索用動きベクトル更新部１３０３は、補間倍率Ｂを用いて、Δｘ０＝Δｘ０＋Ｂによりｘ方向探索動きベクトルΔｘ０を更新する。一方、条件（２）を満たしていない場合、探索用動きベクトル更新部１３０３は、条件（１）の判断を再度行う。
【０１４３】
遅延画像データ参照部（１）１３０４は、フレームメモリ部１２００に記憶されている遅延画像データを参照してブロック５０３を取得する。具体的には、遅延画像データ参照部（１）１３０４は、ｘ方向探索動きベクトルΔｘ０及びｙ方向探索動きベクトルΔｙ０を用いて、式１により、ブロック５０３の遅延画像探索位置５０２の座標値（ｘ0，ｙ0）を算出し、ブロック５０３を取得する。
【０１４４】
入力画像データ参照部（１）１３０５は、フレームメモリ部１２００に記憶されている入力画像データを参照してブロック５０５を取得する。具体的には、入力画像データ参照部（１）１３０５は、ｘ方向探索動きベクトルΔｘ０及びｙ方向探索動きベクトルΔｙ０を用いて、式２により、ブロック５０５の入力画像探索位置５０４の座標値（ｘ1，ｙ1）を算出し、ブロック５０５を取得する。
【０１４５】
相関演算部１３０６は、ブロック５０３とブロック５０５との相関係数Ｒを算出する。相関係数Ｒは式３より求められる。式３において、ｆ（ｘ，ｙ）はブロック５０３の座標値（ｘ，ｙ）における画素値である。また、ｇ（ｘ，ｙ）はブロック５０５の座標値（ｘ，ｙ）における画素値である。なお、相関係数Ｒの代わりに差分絶対値和ＳＡＤを算出してもよい。差分絶対値和ＳＡＤは、ブロック５０３とブロック５０５とを用いて式４により算出することができる。
【０１４６】
動きベクトル更新部１３０７は、相関演算部１３０６より入力される相関係数Ｒと、最大相関係数値Ｒ＿ＭＡＸとの大小比較を行う。Ｒ＞Ｒ＿ＭＡＸであるならば、動きベクトル更新部１３０７は、相関係数Ｒを用いて、Ｒ＿ＭＡＸ＝Ｒにより最大相関係数値Ｒ＿ＭＡＸを更新する。
【０１４７】
なお、動きベクトル更新部１３０７は、相関演算部１３０６で差分絶対値和ＳＡＤを算出した場合、差分絶対値和ＳＡＤと最大相関係数値Ｒ＿ＭＡＸとの大小比較を行う。ＳＡＤ≦Ｒ＿ＭＡＸであるならば、動きベクトル更新部１３０７は、差分絶対値和ＳＡＤを用いて、Ｒ＿ＭＡＸ＝ＳＡＤにより最大相関係数値Ｒ＿ＭＡＸを更新する。
【０１４８】
動きベクトルマップ出力部１３０８は、探索用動きベクトル更新部１３０３から制御信号が入力されると、探索基準位置５００の座標値（ｘ2，ｙ2）、ｘ方向動きベクトルΔｘ１及びｙ方向動きベクトルΔｙ１から、動きベクトルＭＶ（ｘ2，ｙ2，Δｘ１，Δｙ１）を生成する。
【０１４９】
ｘ方向動きベクトルΔｘ１及びｙ方向動きベクトルΔｙ１は、動きベクトル更新部１３０７より入力されるｘ方向探索動きベクトルΔｘ０及びｙ方向探索動きベクトルΔｙ０を用いて、Δｘ１＝Δｘ０、Δｙ１＝Δｙ０とすることで算出される。
【０１５０】
全てのブロックについて動きベクトルＭＶ（ｘ2，ｙ2，Δｘ１，Δｙ１）を生成することで、動きベクトルマップＭＶ＿ＭＡＰ（ｐ，ｑ）の生成が完了する。動きベクトルマップ出力部１３０８は、動きベクトルマップＭＶ＿ＭＡＰ（ｐ，ｑ）を生成した段階で動きベクトルマップＭＶ＿ＭＡＰ（ｐ，ｑ）を出力する。
【０１５１】
補間画像生成部１２０４は、フレームメモリ部１２００から入力画像データ及び遅延画像データを入力する。また、補間画像生成部１２０４は、補間フレーム時刻設定部１２０１から補間時刻比率Ａ、補間倍率Ｂを入力する。さらに、補間画像生成部１２０４は、動きベクトル検出部１２０３から動きベクトルマップＭＶ＿ＭＡＰ（ｐ，ｑ）及びｘ方向動きベクトルマップサイズＰ、ｙ方向動きベクトルマップサイズＱを入力する。補間画像生成部１２０４は、これらを用いて補間画像データを生成する。
【０１５２】
図１４は、補間画像生成部１２０４の構成を示す図である。以下、図１４を参照しながら、補間画像生成部１２４について説明する。
【０１５３】
１４００は補間時刻比率入力部（２）である。１４０１は動きベクトルマップ入力部である。１４０２は内部パラメータ初期化部（２）である。１４０３は動きベクトル更新部である。１４０４は遅延画像データ参照部（２）である。１４０５は入力画像データ参照部（２）である。１４０６は補間ブロック画像生成部である。１４０７は補間画像出力部である。
【０１５４】
補間時刻比率入力部（２）１４００は、補間フレーム時刻設定部１２０１から補間時刻比率Ａ及び補間倍率Ｂを入力する。動きベクトルマップ入力部１４０１は、動きベクトル検出部１２０３から動きベクトルマップＭＶ＿ＭＡＰ（ｐ，ｑ）及びｘ方向動きベクトルマップサイズＰ、ｙ方向動きベクトルマップサイズＱを入力する。
【０１５５】
内部パラメータ初期化部（２）１４０２は、補間画像生成部１２０４で用いる内部パラメータを初期化する。本実施形態では、ｘ方向動きベクトルマップポインタｐ、ｙ方向動きベクトルマップポインタｑが内部パラメータである。それぞれｐ＝−１、ｑ＝−１と初期化する。動きベクトル更新部１４０３は、動きベクトルマップＭＶ＿ＭＡＰ（ｐ，ｑ）から動きベクトルＭＶ（ｘ2，ｙ2，Δｘ１，Δｙ１）を取得する。
【０１５６】
動きベクトルマップＭＶ＿ＭＡＰ（ｐ，ｑ）には、ＰＱ個の動きベクトルがマッピングされている。これを個々に参照するため、動きベクトル更新部１４０３は、ｘ方向動きベクトルマップポインタｐ及びｙ方向動きベクトルマップポインタｑを以下に説明するように順次更新して、動きベクトルＭＶ（ｘ2，ｙ2，Δｘ１，Δｙ１）を取得する。
【０１５７】
動きベクトル更新部１４０３は、以下の条件（３）及び条件（４）を判定することで、ｘ方向動きベクトルマップポインタｐ及びｙ方向動きベクトルマップポインタｑを更新する。まず、動きベクトル更新部１４０３は、更新処理（１）として、ｑ＝ｑ＋１によりｙ方向動きベクトルマップポインタｑを更新する。その後、動きベクトル更新部１４０３は、ｙ方向動きベクトルマップポインタｑがｑ＜Ｑの条件（３）を満たしているかどうかを判断する。
【０１５８】
条件（３）を満たしている場合、動きベクトル更新部１４０３は、更新処理（２）として、ｐ＝ｐ＋１によりｘ方向動きベクトルマップポインタｐを更新する。一方、条件（３）を満たしていない場合、動きベクトル更新部１４０３は、補間画像生成部１４０７へ制御信号を送信する。更新処理（２）の後、動きベクトル更新部１４０３は、ｘ方向動きベクトルマップポインタｐがｐ＜Ｐの条件（４）を満たしているかどうかを判断する。条件（４）を満たしている場合、動きベクトル更新部１４０３は、動きベクトルＭＶ（ｘ2，ｙ2，Δｘ１，Δｙ１）＝ＭＶ＿ＭＡＰ（ｐ，ｑ）を取得する。一方、条件（４）を満たしていない場合、動きベクトル更新部１４０３は、更新処理（１）を再度行う。
【０１５９】
遅延画像データ参照部（２）１４０４は、フレームメモリ部１２００に記憶されている遅延画像データを参照してブロック５０３を取得する。具体的には、遅延画像データ参照部（２）１４０４は、式５によりｘ方向探索動きベクトルΔｘ０及びｙ方向探索動きベクトルΔｙ０を用いてブロック５０３の遅延画像探索位置５０２の座標値（ｘ0，ｙ0）を算出し、ブロック５０３を取得する。
【０１６０】
入力画像データ参照部（２）１４０５は、フレームメモリ部１２００に記憶されている入力画像データを参照してブロック５０５を取得する。具体的には、入力画像データ参照部（２）１４０５は、式６によりｘ方向探索動きベクトルΔｘ０及びｙ方向探索動きベクトルΔｙ０を用いてブロック５０５の遅延画像探索位置５０４の座標値（ｘ1，ｙ1）を算出し、ブロック５０５を取得する。
【０１６１】
補間ブロック画像生成部１４０６は、式７より、ブロック５０３及びブロック５０５を用いて、座標値（ｘ2，ｙ2）の探索基準位置５００を基準とする補間画像データを生成する。式７において、ｈ（ｘ，ｙ）はブロック５０１の座標値（ｘ，ｙ）における画素値である。また、ｆ（ｘ，ｙ）はブロック５０３の座標値（ｘ，ｙ）における画素値である。また、ｇ（ｘ，ｙ）はブロック５０５の座標値（ｘ，ｙ）における画素値である。ｍ、ｎはオフセット値であり、０≦ｍ＜Ｍ、０≦ｎ＜Ｎの範囲をとる。補間画像出力部１４０７は、動きベクトル更新部１４０３から入力される制御信号を受けて、補間ブロック画像生成部１４０６が生成した補間画像データを出力する。
【０１６２】
画像出力部１２０５は、フレームメモリ部１２００から遅延画像データを入力する。また、補間画像生成部１２０４からＡ＝１／３における補間画像データ及びＡ＝２／３における補間画像データを入力する。これらを遅延画像データ、Ａ＝１／３における補間画像データ、Ａ＝２／３における補間画像データ、の順番で出力する。
【０１６３】
以上のように、第２の実施形態によれば、動き検出技術及び動き補償技術を用いたフレームレート変換処理において、従来の技術では成しえなかった任意の倍数のフレームレート変換処理が可能となる。
【０１６４】
また、従来の技術よりも高精度な動きベクトルの探索を可能とすることにより、動き補償処理において生成される補間画像データの画質を向上させ、ユーザに好適な映像を提供することが可能になる。
【０１６５】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【０１６６】
１０１：ＣＰＵ、１０２：ＲＯＭ、１０３：ＲＡＭ、１０４：ネットワークＩ／Ｆ、１０５：入力装置、１０６：出力装置、１０７：外部記憶装置
【図１】
0005863273.tif 000009
【図２】
0005863273.tif 000010
【図３】
0005863273.tif 000011
【図４】
0005863273.tif 000012
【図５】
0005863273.tif 000013
【図６】
0005863273.tif 000014
【図７】
0005863273.tif 000015
【図８】
0005863273.tif 000016
【図９】
0005863273.tif 000017
【図１０】
0005863273.tif 000018
【図１１】
0005863273.tif 000019
【図１２】
0005863273.tif 000020
【図１３】
0005863273.tif 000021
【図１４】
0005863273.tif 000022