(57)【特許請求の範囲】
【請求項１】
演算器で動き探索を行い，動き補償フレーム間予測符号化方式を用いて動画像を符号化する動画像符号化方法において，
画像を入力する画像入力ステップと，
動き探索をする動き探索ステップと，
動き探索ステップにて求めた動きベクトルを使って動き補償フレーム間予測符号化を行うフレーム間予測符号化ステップと，
符号化データを復号する局所復号ステップと，
を実行する動画像符号化方法であって，
符号化前に予め定められたフレームレートから１フレームを符号化する時間である符号化目標時間を設定する目標時間設定ステップと，
符号化前に予め設定した動き探索方法に対して，演算器で実行する動き探索の処理命令数である動き探索命令数情報を記憶しておく動きパラメータ記憶ステップと，
１フレームの符号化時間を計測する符号化時間計測ステップと，
１フレーム符号化終了後に，符号化時間計測ステップにて計測された符号化時間と動きパラメータ記憶ステップにて記憶してある動き探索命令数情報とから，動き探索以外の処理の時間を推定し，目標時間設定ステップにて設定される符号化目標時間から動き探索以外の処理の時間を引き，さらに前のフレームの符号化にて遅延が生じている場合にその遅延時間を引いた値を，次のフレームの動き探索を行うための動き探索目標時間として設定する動き探索時間設定ステップと，
動きパラメータ記憶ステップにて記憶してある動き探索命令数情報に従って，動き探索目標時間から動き探索方法を決定し動き探索処理を制御する動き探索制御ステップと，
を実行することを特徴とする処理時間適応画像符号化方法。
【請求項２】
演算器で動き探索を行い，動き補償フレーム間予測符号化方式を用いて動画像を符号化する動画像符号化方法において，
画像を入力する画像入力ステップと，
動き探索をする動き探索ステップと，
動き探索ステップにて求めた動きベクトルを使って動き補償フレーム間予測符号化を行うフレーム間予測符号化ステップと，
符号化データを復号する局所復号ステップと，
を実行する動画像符号化方法であって，
符号化前に予め定められたフレームレートから１フレームを符号化する時間である符号化目標時間を設定する目標時間設定ステップと，
符号化前に予め設定した動き探索方法に対して，演算器で実行する動き探索の処理命令数である動き探索命令数情報を記憶しておく動きパラメータ記憶ステップと，
１フレームの符号化時間を計測する符号化時間計測ステップと，
動き探索ステップの実行時間を測定する動き探索時間計測ステップと，
１フレーム符号化終了後に，符号化時間計測ステップにて計測された符号化時間と動き探索時間計測ステップにて計測された動き探索時間とから，動き探索以外の処理の時間を推定し，目標時間設定ステップにて設定される符号化目標時間から動き探索以外の処理の時間を引き，さらに前のフレームの符号化にて遅延が生じている場合にその遅延時間を引いた値を，次のフレームの動き探索を行うための動き探索目標時間として設定する動き探索時間設定ステップと，
次のフレームの動き探索を行うための動き探索目標時間を設定する動き探索時間設定ステップと，
動きパラメータ記憶ステップにて記憶してある動き探索命令数情報に従って，動き探索目標時間から動き探索方法を決定し動き探索処理を制御する動き探索制御ステップと，
動き探索時間計測ステップにて計測された動き探索時間から，動きパラメータ記憶ステップに記憶してある動き探索命令数情報を更新する動きパラメータ更新ステップと，
を実行することを特徴とする処理時間適応画像符号化方法。
【請求項３】
演算器で動き探索とグローバル動き探索を行い，動き補償フレーム間予測符号化方式を用いて動画像を符号化する動画像符号化方法において，
画像を入力する画像入力ステップと，
動き探索をする動き探索ステップと，
グローバル動き探索をするグローバル動き探索ステップと，
動き探索ステップにて求めた動きベクトルとグローバル動き探索ステップにて求めたグローバル動きベクトルを使って動き補償フレーム間予測符号化を行うフレーム間予測符号化ステップと，
符号化データを復号する局所復号ステップと，
を実行する動画像符号化方法であって，
符号化前に予め定められたフレームレートから１フレームを符号化する時間である符号化目標時間を設定する目標時間設定ステップと，
符号化前に予め設定した動き探索方法に対して，演算器で実行する動き探索の処理命令数である動き探索命令数情報を記憶しておく動きパラメータ記憶ステップと，
符号化前に予め設定したグローバル動き探索方法に対して，演算器で実行する動き探索の処理命令数であるグローバル動き探索命令数情報を記憶しておくグローバル動きパラメータ記憶ステップと，
１フレームの符号化時間を計測する符号化時間計測ステップと，
１フレーム符号化終了後に，符号化時間計測ステップにて計測された符号化時間と動きパラメータ記憶ステップにて記憶してある動き探索命令数情報とから，動き探索以外の処理の時間を推定し，目標時間設定ステップにて設定される符号化目標時間から動き探索以外の処理の時間を引き，さらに前のフレームの符号化にて遅延が生じている場合にその遅延時間を引いた値を，次のフレームの動き探索とグローバル動き探索を行うための動き探索目標時間として設定する動き探索時間設定ステップと，
動き探索目標時間から，動きパラメータ記憶ステップにて記憶してある動き探索命令数情報とグローバル動きパラメータ記憶ステップにて記憶してあるグローバル動き探索命令数情報に従って，動き探索方法とグローバル動き探索方法を決定し，動き探索処理とグローバル動き探索処理を制御する動き探索制御ステップと，
を実行することを特徴とする処理時間適応画像符号化方法。
【請求項４】
演算器で動き探索とグローバル動き探索を行い，動き補償フレーム間予測符号化方式を用いて動画像を符号化する動画像符号化方法において，
画像を入力する画像入力ステップと，
動き探索をする動き探索ステップと，
グローバル動き探索をするグローバル動き探索ステップと，
動き探索ステップにて求めた動きベクトルとグローバル動き探索ステップにて求めたグローバル動きベクトルを使って動き補償フレーム間予測符号化を行うフレーム間予測符号化ステップと，
符号化データを復号する局所復号ステップと，
を実行する動画像符号化方法であって，
符号化前に予め定められたフレームレートから１フレームを符号化する時間である符号化目標時間を設定する目標時間設定ステップと，
符号化前に予め設定した動き探索方法に対して，演算器で実行する動き探索の処理命令数である動き探索命令数情報を記憶しておく動きパラメータ記憶ステップと，
符号化前に予め設定したグローバル動き探索方法に対して，演算器で実行する動き探索の処理命令数であるグローバル動き探索命令数情報を記憶しておくグローバル動きパラメータ記憶ステップと，
１フレームの符号化時間を計測する符号化時間計測ステップと，
動き探索ステップの実行時間を測定する動き探索時間計測ステップと，
１フレーム符号化終了後に，符号化時間計測ステップにて計測された符号化時間と動き探索時間計測ステップにて計測された動き探索時間とから，動き探索以外の処理の時間を推定し，目標時間設定ステップにて設定される符号化目標時間から動き探索以外の処理の時間を引き，さらに前のフレームの符号化にて遅延が生じている場合にその遅延時間を引いた値を，次のフレームの動き探索とグローバル動き探索を行うための動き探索目標時間として設定する動き探索時間設定ステップと，
動き探索目標時間から，動きパラメータ記憶ステップにて記憶してある動き探索命令数情報とグローバル動きパラメータ記憶ステップにて記憶してあるグローバル動き探索命令数情報に従って，動き探索方法とグローバル動き探索方法を決定し，動き探索処理とグローバル動き探索処理を制御する動き探索制御ステップと，
動き探索時間計測ステップにて計測された動き探索時間から，動きパラメータ記憶ステップに記憶してある動き探索命令数情報を更新する動きパラメータ更新ステップと，
グローバル動き探索ステップの実行時間を測定するグローバル動き探索時間計測ステップと，
グローバル動き探索時間計測ステップにて計測されたグローバル動き探索時間から，グローバル動きパラメータ記憶ステップに記憶してあるグローバル動き探索命令数情報を更新するグローバル動きパラメータ更新ステップと，
を実行することを特徴とする処理時間適応画像符号化方法。
【請求項５】
演算器で動き探索を行い，動き補償フレーム間予測符号化方式を用いて動画像を符号化する動画像符号化方法において，
画像を入力する画像入力ステップと，
画面内を領域に分割し，領域毎に動き探索をするブロック動き探索ステップと，
動き探索ステップにて求めた領域毎に動きベクトルを使って動き補償フレーム間予測符号化を行うフレーム間予測符号化ステップと，
符号化データを復号する局所復号ステップと，
を実行する動画像符号化方法であって，
符号化前に予め定められたフレームレートから１フレームを符号化する時間である符号化目標時間を設定する目標時間設定ステップと，
符号化前に予め設定した動き探索方法に対して，演算器で実行する動き探索の処理命令数である動き探索命令数情報を記憶しておく動きパラメータ記憶ステップと，
１フレームの符号化時間を計測する符号化時間計測ステップと，
ブロック動き探索ステップで実行される領域毎の動き探索時間を測定するブロック動き探索時間計測ステップと，
ブロック動き探索時間計測ステップにて計測されたブロック毎の動き探索時間を，フレーム単位で合計したフレーム動き探索時間を求めるブロック動き探索時間加算ステップと，
１フレーム符号化終了後に，符号化時間計測ステップにて計測された符号化時間と前記フレーム動き探索時間とから，動き探索以外の処理の時間を推定し，目標時間設定ステップにて設定される符号化目標時間から動き探索以外の処理の時間を引き，さらに前のフレームの符号化にて遅延が生じている場合にその遅延時間を引いた値を，次のフレームの動き探索を行うための動き探索目標時間として設定する動き探索時間設定ステップと，
動きパラメータ記憶ステップにて記憶してある動き探索命令数情報に従って，動き探索目標時間とフレーム動き探索時間から動き探索方法を決定し動き探索処理を制御する動き探索制御ステップと，
を実行することを特徴とする処理時間適応画像符号化方法。
【請求項６】
演算器で動き探索とグローバル動き探索を行い，動き補償フレーム間予測符号化方式を用いて動画像を符号化する動画像符号化方法において，
画像を入力する画像入力ステップと，
画面内を領域に分割し，領域毎に動き探索をするブロック動き探索ステップと，
画面内を領域に分割し，領域毎に動き探索をしてグローバル動きベクトルを求めるグローバルブロック動き探索ステップと，
ブロック動き探索ステップにて求めた領域毎の動きベクトルとグローバルブロック動き探索ステップにて求めたグローバル動きベクトルを使って動き補償フレーム間予測符号化を行うフレーム間予測符号化ステップと，
符号化データを復号する局所復号ステップと，
を実行する動画像符号化方法であって，
符号化前に予め定められたフレームレートから１フレームを符号化する時間である符号化目標時間を設定する目標時間設定ステップと，
符号化前に予め設定した動き探索方法に対して，演算器で実行する動き探索の処理命令数である動き探索命令数情報を記憶しておく動きパラメータ記憶ステップと，
符号化前に予め設定したグローバル動き探索方法に対して，演算器で実行する動き探索の処理命令数であるグローバル動き探索命令数情報を記憶しておくグローバル動きパラメータ記憶ステップと，
１フレームの符号化時間を計測する符号化時間計測ステップと，
ブロック動き探索ステップで実行される領域毎の動き探索時間を測定するブロック動き探索時間計測ステップと，
ブロック動き探索時間計測ステップにて計測されたブロック毎の動き探索時間を，フレーム単位で合計したフレーム動き探索時間を求めるブロック動き探索時間加算ステップと，
グローバルブロック動き探索ステップで実行される領域毎の動き探索時間を測定するグローバルブロック動き探索時間計測ステップと，
グローバルブロック動き探索時間計測ステップにて計測されたブロック毎の動き探索時間を，フレーム単位で合計したフレームグローバル動き探索時間を求めるグローバルブロック動き探索時間加算ステップと，
１フレーム符号化終了後に，符号化時間計測ステップにて計測された符号化時間と前記フレーム動き探索時間と前記フレームグローバル動き探索時間とから，動き探索以外の処理の時間を推定し，目標時間設定ステップにて設定される符号化目標時間から動き探索以外の処理の時間を引き，さらに前のフレームの符号化にて遅延が生じている場合にその遅延時間を引いた値をもとに，次のフレームの動き探索を行うための動き探索目標時間であるローカル動き探索目標時間と，グローバル動き探索を行うための動き探索目標時間であるグローバル動き探索目標時間を設定する動き探索時間設定ステップと，
動きパラメータ記憶ステップにて記憶してある動き探索命令数情報に従って，ローカル動き探索目標時間とフレーム動き探索時間から動き探索方法を決定し動き探索処理を制御する動き探索制御ステップと，
グローバル動きパラメータ記憶ステップにて記憶してあるグローバル動き探索命令数情報に従って，グローバル動き探索目標時間とフレームグローバル動き探索時間からグローバル動き探索方法を決定しグローバル動き探索処理を制御するグローバル動き探索制御ステップと，
を実行することを特徴とする処理時間適応画像符号化方法。
【請求項７】
演算器で動き探索を行い，動き補償フレーム間予測符号化方式を用いて動画像を符号化する動画像符号化方法において，
画像を入力する画像入力ステップと，
画面内を領域に分割し，領域毎に動き探索をするブロック動き探索ステップと，
動き探索ステップにて求めた領域毎に動きベクトルを使って動き補償フレーム間予測符号化を行うフレーム間予測符号化ステップと，
符号化データを復号する局所復号ステップと，
を実行する動画像符号化方法であって，
符号化前に予め定められたフレームレートから１フレームを符号化する時間である符号化目標時間を設定する目標時間設定ステップと，
符号化前に予め設定した動き探索方法に対して，演算器で実行する動き探索の処理命令数である動き探索命令数情報を記憶しておく動きパラメータ記憶ステップと，
入力画像の画像情報から，画面内の各領域の画像統計情報を検出するブロック優先度検出ステップと，
画像統計情報から，動き探索する領域の順序を決定する探索ブロック決定ステップと，
１フレームの符号化時間を計測する符号化時間計測ステップと，
ブロック動き探索ステップで実行される領域毎の動き探索時間を測定するブロック動き探索時間計測ステップと，
ブロック動き探索時間計測ステップにて計測されたブロック毎の動き探索時間を，フレーム単位で合計したフレーム動き探索時間を求めるブロック動き探索時間加算ステップと，
１フレーム符号化終了後に，符号化時間計測ステップにて計測された符号化時間と前記フレーム動き探索時間とから，動き探索以外の処理の時間を推定し，目標時間設定ステップにて設定される符号化目標時間から動き探索以外の処理の時間を引き，さらに前のフレームの符号化にて遅延が生じている場合にその遅延時間を引いた値を，次のフレームの動き探索を行うための動き探索目標時間として設定する動き探索時間設定ステップと，
動きパラメータ記憶ステップにて記憶してある動き探索命令数情報に従って，動き探索目標時間とフレーム動き探索時間から動き探索方法を決定し動き探索処理を制御する動き探索制御ステップと，
を実行することを特徴とする処理時間適応画像符号化方法。
【請求項８】
演算器で動き探索とグローバル動き探索を行い，動き補償フレーム間予測符号化方式を用いて動画像を符号化する動画像符号化方法において，
画像を入力する画像入力ステップと，
画面内を領域に分割し，領域毎に動き探索をするブロック動き探索ステップと，
画面内を領域に分割し，領域毎に動き探索をしてグローバル動きベクトルを求めるグローバルブロック動き探索ステップと，
ブロック動き探索ステップにて求めた領域毎の動きベクトルとグローバルブロック動き探索ステップにて求めたグローバル動きベクトルを使って動き補償フレーム間予測符号化を行うフレーム間予測符号化ステップと，
符号化データを復号する局所復号ステップと，
を実行する動画像符号化方法であって，
符号化前に予め定められたフレームレートから１フレームを符号化する時間である符号化目標時間を設定する目標時間設定ステップと，
符号化前に予め設定した動き探索方法に対して，演算器で実行する動き探索の処理命令数である動き探索命令数情報を記憶しておく動きパラメータ記憶ステップと，
符号化前に予め設定したグローバル動き探索方法に対して，演算器で実行する動き探索の処理命令数であるグローバル動き探索命令数情報を記憶しておくグローバル動きパラメータ記憶ステップと，
入力画像の画像情報から，画面内の各領域の画像統計情報を検出するブロック優先度検出ステップと，
画像統計情報から，動き探索する領域の順序を決定する探索ブロック決定ステップと，
１フレームの符号化時間を計測する符号化時間計測ステップと，
ブロック動き探索ステップで実行される領域毎の動き探索時間を測定するブロック動き探索時間計測ステップと，
ブロック動き探索時間計測ステップにて計測されたブロック毎の動き探索時間を，フレーム単位で合計したフレーム動き探索時間を求めるブロック動き探索時間加算ステップと，
グローバルブロック動き探索ステップで実行される領域毎の動き探索時間を測定するグローバルブロック動き探索時間計測ステップと，
グローバルブロック動き探索時間計測ステップにて計測されたブロック毎の動き探索時間を，フレーム単位で合計したフレームグローバル動き探索時間を求めるグローバルブロック動き探索時間加算ステップと，
１フレーム符号化終了後に，符号化時間計測ステップにて計測された符号化時間と前記フレーム動き探索時間と前記フレームグローバル動き探索時間とから，動き探索以外の処理の時間を推定し，目標時間設定ステップにて設定される符号化目標時間から動き探索以外の処理の時間を引き，さらに前のフレームの符号化にて遅延が生じている場合にその遅延時間を引いた値をもとに，次のフレームの動き探索を行うための動き探索目標時間であるローカル動き探索目標時間と，グローバル動き探索を行うための動き探索目標時間であるグローバル動き探索目標時間を設定する動き探索時間設定ステップと，
動きパラメータ記憶ステップにて記憶してある動き探索命令数情報に従って，ローカル動き探索目標時間とフレーム動き探索時間から動き探索方法を決定し動き探索処理を制御する動き探索制御ステップと，
グローバル動きパラメータ記憶ステップにて記憶してあるグローバル動き探索命令数情報に従って，グローバル動き探索目標時間とフレームグローバル動き探索時間からグローバル動き探索方法を決定しグローバル動き探索処理を制御するグローバル動き探索制御ステップと，
を実行することを特徴とする処理時間適応画像符号化方法。
【請求項９】
請求項１から請求項８までのいずれか１項に記載の処理時間適応画像符号化方法をコンピュータに実行させるためのプログラムを記録した
ことを特徴とする処理時間適応画像符号化プログラムの記録媒体。
【発明の詳細な説明】
【０００１】
【発明が属する技術分野】
本発明は，動画像符号化の技術に関し，特に符号化処理の実行環境に応じて符号化の処理時間が異なる場合にも探索精度を切り替えることなどにより，実時間で動画像を符号化できるようにした処理時間適応画像符号化方法に関するものである。
【０００２】
【従来の技術】
動画像符号化では，一般的に符号化効率向上のために動き補償フレーム間予測符号化方法が用いられる。この方法は，現フレームの原画像と，それ以前に符号化された他のフレームの復号画像から作られる参照画像との間で，対応する画素間の画像情報の差分（予測誤差と呼ぶ）を符号化する。参照画像の作成には，過去や未来のフレームを使う方法や，過去や未来のフレームをアフィン変換して作成する方法がある。
【０００３】
また，予測誤差の符号化では，まず予測誤差について離散コサイン変換（ＤＣＴ）などの周波数変換を行い，その係数を量子化した後に可変長符号化する。画面内の同じ位置での画素間の予測誤差よりも平行移動した位置の予測誤差の方が小さい場合には，符号化効率を向上するために，平行移動した位置の予測誤差を符号化する。平行移動量は動きベクトルとして符号化される。
【０００４】
一般的には，画面を小領域に，例えば縦横１６画素のマクロブロックで区切り，その小領域毎に動きベクトルを設定する。例えば，マクロブロック内の画素に対して動きベクトルだけ同様に平行移動した位置の画素を設定し，これらの画素間の予測誤差をＤＣＴする。また，小領域内の各画素に対して同じ動きベクトルを設定するのではなく，隣接小領域の動きベクトルを使い，個々の画素の平行移動量を計算で求める方法もある。
【０００５】
参考文献：G.J.Sullivan and R.L.Baker:"Motion Compensation for video compression using contorol grid interpolation",IEEE ICA SSP '91, pp.2713-2716,1991。
【０００６】
また，平行移動量が整数ではない場合には，参照画像内で対応する位置に画素がないため，参照画像の周辺画素の画像情報から計算により求める。
【０００７】
この平行移動量を求める処理は「動き探索」と呼ばれる。一般的には，画面を縦横１６画素のマクロブロックで区切り，そのマクロブロック毎に動きベクトルを求める。マクロブロック内の全画素に対する予測誤差の評価関数としては，マクロブロック内のすべての画素の画像情報の絶対値差分の和や分散等が用いられる。これらの値が小さい位置の動きベクトルを選択すると予測誤差の符号化効率が高くなるため，これらの値が最も小さくなる位置を求める。
【０００８】
また，探索範囲を大きくするほど，動きベクトルの候補が増えるため符号化効率の高い動きベクトルを求めることができる。映像符号化方式Ｈ．２６３では，動きベクトルの表現上の制限により探索範囲は最大で縦横１６画素ずれた位置になる。この様子を図１に示す。この探索範囲内を１画素ずつずらしながら，絶対値差分和や分散を計算し，これらの値が最小となる位置を求める。
【０００９】
しかし，探索範囲を大きくするほど，動き探索の演算量が増える。動き探索の演算量を減らすために様々な手法が用いられている。以下に例を３つ挙げる。
【００１０】
［方法１］：絶対値差分和や分散を計算する画素数を少なくする。例えば，マクロブロック内の縦横１６画素（合計２５６画素）のうち，６４画素で計算する。マクロブロック内で６４画素を選択した例を図２に示す。図２において，黒丸で示した画素を選択すると，６４画素の計算となる。
【００１１】
［方法２］：探索範囲内で絶対値差分和や分散を計算する位置を少なくする。例えば２画素ずつずらしながら探索する。２画素ずつずらしながら探索する様子を図３に示す。
【００１２】
［方法３］：木探索する。例えば，予めある探索位置の候補を決めておき，その位置の周辺のみを探索する。
【００１３】
また，動き補償フレーム間予測符号化方法の１つに，カメラのパンニング等の画面全体の動きを計測して，画面全体をアフィン変換して参照画像を作成し，予測誤差を求めるグローバル動き補償方法がある。この際のアフィン変換のパラメータをグローバル動きベクトルと呼び，グローバル動きベクトルを求める処理をグローバル動き探索と呼ぶ。映像符号化方式ＭＰＥＧ−４では，グローバル動き補償と，アフィン変換を使わない動き補償を組み合わせることが可能である。例えば，マクロブロック毎に，グローバル動き補償とアフィン変換を使わない動き補償を選択することができる。符号化効率の高い方を選択することによって，フレーム全体の符号化効率を向上することができる。
【００１４】
グローバル動き探索では，画面全体をアフィン変換して画面全体の予測誤差が最も小さくなるアフィン変換パラメータを決定する方法もあるが，マクロブロック毎の動き探索の結果を利用する方法もある。この場合には，各マクロブロックの画面内の位置と動きベクトルから，アフィン変換パラメータを決定して，それをグローバル動きベクトルとする。動き探索の範囲を大きくするほど，予測誤差のより小さいグローバル動きベクトルが求められるが，逆に範囲が大きくなると演算量が大きくなる。
【００１５】
【発明が解決しようとする課題】
上記のように，動き探索の探索範囲を大きくすると，演算量が大きくなる。そのため，実時間で動画像を符号化することを目的とした場合，演算量が大きくなると符号化が間に合わず，目的の符号化速度の符号化データを得られない問題が発生する。特に，固定フレームレートの符号化データを出力することを目的とした場合には，１フレームの符号化が実時間でできない場合に，固定フレームレートを維持できない。
【００１６】
動画像符号化をハードウェアで実行する場合には，１つの演算命令に対してハードウェアでの演算処理速度が一対一に決まる。したがって，演算量が最大に大きくなった場合にも符号化が実行できるように，予めハードウェアの処理速度を設計すれば，符号化が間に合わない問題は発生しない。
【００１７】
他方，ソフトウェアで実行する場合には，演算処理速度が機械に依存するため，１つの演算命令に対して実際の演算処理速度が一対一に決まらない。そのため，演算処理速度の小さい機械上で実行する場合には符号化が間に合わない問題が発生する。また，パーソナルコンピュータ（ＰＣ）のように，同じ機械上で他のプログラムが実行される場合がある。この場合には，動画像符号化の最中に他のプログラムが実行されると，機械の演算処理がそのプログラムに割かれるために，符号化を実行できなくなり，結果的に符号化速度が低下する。このように符号化の最中に，符号化のための演算処理が実行されない時間が発生する問題がある。
【００１８】
【課題を解決するための手段】
パーソナルコンピュータのような機械の演算処理速度は，ＣＰＵのキャッシユへのアクセス速度やメモリへのアクセス速度等にも依存して決まるものであるが，主にプログラム中の演算命令を実行するＣＰＵの処理速度に依存する。また，実際に演算を行うのはＣＰＵであるため，１つの演算命令に対するＣＰＵの命令処理回数が，機械の演算処理速度となる。すなわち，１つの演算命令に対するＣＰＵの命令処理回数をＣＰＵの動作周波数で除算した結果が，その機械上における１つの演算命令の処理時間となる。したがって，例えば１フレームを符号化する処理時間を求めるには，符号化を行っている間のＣＰＵの命令処理回数を計測し，それをＣＰＵの動作周波数で除算すればよい。同様に，動き探索処理を実行する処理時間は，それを行っている間のＣＰＵの命令処理回数を計測すれば求めることができる。
【００１９】
このように，ＣＰＵの命令処理回数から処理時間を計測することができる。また，本来ＣＰＵが実行するべき符号化処理に必要な命令処理回数は，プログラムの構成にのみ依存する。そのため，例えば動き探索処理のように１フレーム符号化するために必要な処理命令数が固定な処理の場合では，必要な命令処理回数を実行前に予め求めておくことが可能である。予測誤差の符号化では，フレーム毎にＤＣＴの演算回数が異なる等で処理命令数が異なる。
【００２０】
ただし，上記課題においても述べた通り，符号化の最中に他のプログラムが実行される場合もある。ＣＰＵは時分割で動作するため，他のプログラムが実行されている間はＣＰＵは符号化処理を行わない。したがって，符号化を行っている間のＣＰＵの命令処理回数には，他のプログラムを実行するための命令も含まれる。これが，符号化の最中に他のプログラムが実行されると符号化速度が低下する原因となる。
【００２１】
本発明は，上記の課題を解決するため，探索精度を切り替えることなどにより，動きベクトル探索やグローバル動きベクトル探索に要する処理命令数を変更することを特徴とする。具体的には，以下の方法を用いる。
【００２２】
第１の発明では，演算器で動き探索を行い，動き補償フレーム間予測符号化方式を用いて動画像を符号化する動画像符号化方法において，符号化前に予め定められたフレームレートから１フレームを符号化する時間である符号化目標時間を設定し，符号化前に予め設定した動き探索方法に対して，演算器で実行する動き探索の処理命令数である動き探索命令数情報を記憶しておき，符号化時に各フレームの符号化時間を計測し，１フレーム符号化終了後に，前記設定した符号化目標時間と前記計測した符号化時間とから，次のフレームの動き探索を行うための動き探索目標時間を設定し，前記記憶しておいた動き探索命令数情報に従って，動き探索目標時間から動き探索方法を決定して動き探索処理を制御する。
前記動き探索目標時間の設定では，１フレーム符号化終了後に，計測された符号化時間と前記記憶しておいた動き探索命令数情報とから，動き探索以外の処理の時間を推定し，１フレームの符号化目標時間から動き探索以外の処理の時間を引き，さらに前のフレームの符号化にて遅延が生じている場合にその遅延時間を引いた値を，次のフレームの動き探索を行うための動き探索目標時間として設定する。なお，以降に説明する発明においても，同様に遅延時間を考慮し，前のフレームの符号化にて遅延が生じている場合には，動き探索目標時間から遅延時間を差し引くことを行う。
【００２３】
ここで，動き探索命令数情報とは，実質的に命令数に相当する情報であればよく，例えば時間に換算した値のような情報でもよい。以降に述べる発明でも同様である。
【００２４】
この第１の発明によれば，符号化前に予め設定した各動き探索方法に対して，演算器で実行する動き探索の処理命令数を求めておくので，動き探索時間が設定されたときに，その時間に実行される処理命令数を求めて動き探索方法を決定することができる。
【００２５】
例えば，次の２種類の動き探索を予め設定しているとする。
【００２６】
［方法Ａ］：マクロブロック内の全画素に対して絶対値差分和を求める。探索範囲内で１画素ずつずらして絶対値差分和を求め，絶対値差分和が最も小さい位置の平行移動量を動きベクトルとする。
【００２７】
［方法Ｂ］：マクロブロック内の全画素に対して絶対値差分和を求める。探索範囲内で２画素ずつずらして絶対値差分和を求め，絶対値差分和が最も小さい位置の平行移動量を動きベクトルとする。
【００２８】
符号化前に，予め方法Ａと方法Ｂで動き探索を行った場合に，演算器で実行する命令数を求めておく。この結果，方法Ａが１０命令で方法Ｂが５命令であるとする。その後で，演算器を備えた符号化器で符号化する際に動き探索時間が設定され，これが演算器で７命令分であったとする。この場合，方法Ａでは７命令内で動き探索を完了できないが，方法Ｂでは７命令内で完了できる。従っで，方法Ｂを選択し動き探索を実行すれば，実時間で符号化できることになる。
【００２９】
第２の発明では，演算器で動き探索を行い，動き補償フレーム間予測符号化方式を用いて動画像を符号化する動画像符号化方法において，符号化前に予め定められたフレームレートから１フレームを符号化する時間である符号化目標時間を設定し，符号化前に予め設定した動き探索方法に対して，演算器で実行する動き探索の処理命令数である動き探索命令数情報を記憶しておき，符号化時に各フレームの符号化時間を計測し，１フレーム符号化終了後に，前記設定した符号化目標時間と前記計測した符号化時間とから，次のフレームの動き探索を行うための動き探索目標時間を設定し，前記記憶しておいた動き探索命令数情報に従って，動き探索目標時間から動き探索方法を決定し動き探索処理を制御し，その動き探索処理の実行時間を計測し，実際に計測された動き探索時間から，前記記憶しておいた動き探索命令数情報を更新する。
【００３０】
この第２の発明によれば，第１の発明において符号化前に予め設定しておいた動き探索の処理命令数を，実際に動き探索を実行する符号化器で処理した命令数で更新することができる。この方法は，符号化前に予め正確な処理命令数を求めることができない場合に好適である。例えば，処理速度の異なる演算器を組み合わせて符号化器を構成する場合においては，符号化器の総合的な処理速度が分からないが，実際に数フレーム符号化して動き探索に必要な処理時間を求め，命令数を求めることができる。また，ＣＰＵのような汎用的な演算器で符号化処理を行う場合には，定期的に他のプログラムがＣＰＵを使う場合があるため，実際の符号化にかかる処理時間がわからない。しかし，本発明によれば，実際に符号化して動き探索に必要な処理時間を求め，命令数を求めることができる。
【００３１】
第３の発明では，演算器で動き探索とグローバル動き探索を行い，動き補償フレーム間予測符号化方式を用いて動画像を符号化する動画像符号化方法において，符号化前に予め定められたフレームレートから１フレームを符号化する時間である符号化目標時間を設定し，符号化前に予め設定した動き探索方法に対して，演算器で実行する動き探索の処理命令数である動き探索命令数情報を記憶しておき，また符号化前に予め設定したグローバル動き探索方法に対して，演算器で実行する動き探索の処理命令数であるグローバル動き探索命令数情報を記憶しておき，符号化時に各フレームの符号化時間を計測し，１フレーム符号化終了後に，前記設定した符号化目標時間と前記計測した符号化時間とから，次のフレームの動き探索とグローバル動き探索を行うための動き探索目標時間を設定し，動き探索目標時間から，前記記憶しておいた動き探索命令数情報とグローバル動き探索命令数情報に従って，動き探索方法とグローバル動き探索方法を決定し，動き探索処理とグローバル動き探索処理を制御する。
【００３２】
この第３の発明によれば，動き探索の他にグローバル動き探索を行う場合にも，第１の発明と同様に，動き探索を目標時間内に実行できるように，動き探索方法とグローバル動き探索方法を決定することができる。
【００３３】
第４の発明では，演算器で動き探索とグローバル動き探索を行い，動き補償フレーム間予測符号化方式を用いて動画像を符号化する動画像符号化方法において，符号化前に予め定められたフレームレートから１フレームを符号化する時間である符号化目標時間を設定し，符号化前に予め設定した動き探索方法に対して，演算器で実行する動き探索の処理命令数である動き探索命令数情報を記憶しておき，また符号化前に予め設定したグローバル動き探索方法に対して，演算器で実行する動き探索の処理命令数であるグローバル動き探索命令数情報を記憶しておき，符号化時に各フレームの符号化時間を計測し，１フレーム符号化終了後に，前記設定した符号化目標時間と前記計測した符号化時間とから，次のフレームの動き探索とグローバル動き探索を行うための動き探索目標時間を設定し，動き探索目標時間から，前記記憶しておいた動き探索命令数情報とグローバル動き探索命令数情報とに従って，動き探索方法とグローバル動き探索方法を決定し，動き探索処理とグローバル動き探索処理を制御し，その動き探索処理の実行時間を計測し，実際に計測された動き探索時間から，前記記憶しておいた動き探索命令数情報を更新し，またグローバル動き探索処理の実行時間を計測し，実際に計測されたグローバル動き探索時間から，前記記憶しておいたグローバル動き探索命令数情報を更新する。
【００３４】
この第４の発明によれば，動き探索の他にグローバル動き探索を行う場合にも，第２の発明と同様に，実際に符号化して動き探索に必要な処理時間を求め，動き探索に必要な命令数を求めることができる。
【００３５】
第５の発明では，演算器で画面内を分割した領域毎にブロック動き探索を行い，動き補償フレーム間予測符号化方式を用いて動画像を符号化する動画像符号化方法において，符号化前に予め定められたフレームレートから１フレームを符号化する時間である符号化目標時間を設定し，符号化前に予め設定した動き探索方法に対して，演算器で実行する動き探索の処理命令数である動き探索命令数情報を記憶しておき，符号化時に各フレームの符号化時間を計測し，１フレーム符号化終了後に，前記設定した符号化目標時間と前記計測した符号化時間とから，次のフレームの動き探索を行うための動き探索目標時間を設定し，ブロック動き探索処理で実行される領域毎の動き探索時間を計測し，その計測したブロック毎の動き探索時間を，フレーム単位で合計したフレーム動き探索時間を求め，前記記憶しておいた動き探索命令数情報に従って，動き探索目標時間とフレーム動き探索時間から動き探索方法を決定して動き探索処理を制御する。
【００３６】
この第５の発明によれば，領域毎に動き探索を実行して動き探索時間を計測し，その時間の合計値と動き探索目標時間を比較することができる。これは，符号化最中に実際に符号化器が処理した動き探索の命令数が，符号化前に予め設定しておいた動き探索の処理命令数と異なる場合に好適である。例えば，動き探索時間の合計値が目標時間よりも大きくなった場合には，そのフレームの動き探索を強制終了させることができる。領域としてはマクロブロックや，マクロブロックの集合であるスライスを適用することができる。強制終了した場合に探索できなかった領域には，０ベクトル（静止）や，前フレームの同じ位置の動きベクトルや，周囲の領域の動きベクトルを，その領域の動きベクトルとして使用することもできる。
【００３７】
第６の発明では，演算器で画面内を分割した領域毎にブロック動き探索とグローバル動き探索を行い，動き補償フレーム間予測符号化方式を用いて動画像を符号化する動画像符号化方法において，符号化前に予め定められたフレームレートから１フレームを符号化する時間である符号化目標時間を設定し，符号化前に予め設定した動き探索方法に対して，演算器で実行する動き探索の処理命令数である動き探索命令数情報を記憶しておき，また符号化前に予め設定したグローバル動き探索方法に対して，演算器で実行する動き探索の処理命令数であるグローバル動き探索命令数情報を記憶しておき，符号化時に各フレームの符号化時間を計測し，１フレーム符号化終了後に，前記設定した符号化目標時間と前記計測した符号化時間とから，次のフレームの動き探索を行うための動き探索目標時間であるローカル動き探索目標時間と，グローバル動き探索を行うための動き探索目標時間であるグローバル動き探索目標時間を設定し，ブロック動き探索処理で実行される領域毎の動き探索時間を計測し，その計測したブロック毎の動き探索時間を，フレーム単位で合計したフレーム動き探索時間を求め，グローバルブロック動き探索処理で実行される領域毎の動き探索時間を計測し，その計測したブロック毎の動き探索時間を，フレーム単位で合計したフレームグローバル動き探索時間を求め，前記記憶しておいた動き探索命令数情報に従って，ローカル動き探索目標時間とフレーム動き探索時間とから動き探索方法を決定して動き探索処理を制御し，また前記記憶しておいたグローバル動き探索命令数情報に従って，グローバル動き探索目標時間とフレームグローバル動き探索時間とからグローバル動き探索方法を決定し，グローバル動き探索処理を制御する。
【００３８】
第６の発明によれば，動き探索の他にグローバル動き探索を行う場合にも，第５の発明と同様に，例えば，符号化最中に実際に符号化器が処理した動き探索やグローバル動き探索の命令数が，符号化前に予め設定しておいた動き探索やグローバル動き探索の処理命令数と異なる場合に，動き探索時間とグローバル動き探索の合計値が目標時間よりも大きくなった場合には，そのフレームの動き探索やグローバル動き探索を強制終了させることができる。
【００３９】
第７の発明では，演算器で画面内を分割した領域毎にブロック動き探索を行い，動き補償フレーム間予測符号化方式を用いて動画像を符号化する動画像符号化方法において，符号化前に予め定められたフレームレートから１フレームを符号化する時間である符号化目標時間を設定し，符号化前に予め設定した動き探索方法に対して，演算器で実行する動き探索の処理命令数である動き探索命令数情報を記憶しておき，入力画像の画像情報から，画面内の各領域の画像統計情報を検出し，検出した画像統計情報から，動き探索する領域の順序を決定し，１フレームの符号化時間を計測し，１フレーム符号化終了後に，前記設定した符号化目標時間と前記計測した符号化時間とから，次のフレームの動き探索を行うための動き探索目標時間を設定し，ブロック動き探索処理で実行される領域毎の動き探索時間を計測し，その計測したブロック毎の動き探索時間をフレーム単位で合計したフレーム動き探索時間を求め，前記記憶しておいた動き探索命令数情報に従って，動き探索目標時間とフレーム動き探索時間とから動き探索方法を決定し動き探索処理を制御する。
【００４０】
この第７の発明によれば，第５の発明のようにフレーム内の途中で動き探索を終了する場合において，動き探索をする前に予め，各領域に対して動き探索の順序を設定することが可能である。これは，例えば動き探索をする前に，画面内の各領域が動領域かどうかを測定して，動領域を静止領域よりも先に動き探索処理することが可能となる。動き探索の前に静止領域と判断された領域の動き探索で，動き探索時間の合計値が目標時間よりも大きくなり，そのフレームの動き探索を強制終了したとしても，静止領域であるため，その領域の動きベクトルを０ベクトルとすることができる。これにより，実際に動きベクトルを求めた場合からの符号化効率の低下を軽減できる。
【００４１】
第８の発明では，演算器で画面内を分割した領域毎にブロック動き探索とグローバル動き探索を行い，動き補償フレーム間予測符号化方式を用いて動画像を符号化する動画像符号化方法において，符号化前に予め定められたフレームレートから１フレームを符号化する時間である符号化目標時間を設定し，符号化前に予め設定した動き探索方法に対して，演算器で実行する動き探索の処理命令数である動き探索命令数情報を記憶しておき，また符号化前に予め設定したグローバル動き探索方法に対して，演算器で実行する動き探索の処理命令数であるグローバル動き探索命令数情報を記憶しておき，入力画像の画像情報から，画面内の各領域の画像統計情報を検出し，その検出した画像統計情報から，動き探索する領域の順序を決定し，１フレームの符号化時間を計測し，１フレーム符号化終了後に，前記設定した符号化目標時間と前記計測した符号化時間とから，次のフレームの動き探索を行うための動き探索目標時間であるローカル動き探索目標時間と，グローバル動き探索を行うための動き探索目標時間であるグローバル動き探索目標時間を設定し，ブロック動き探索処理で実行される領域毎の動き探索時間を計測し，その計測したブロック毎の動き探索時間をフレーム単位で合計したフレーム動き探索時間を求め，グローバルブロック動き探索処理で実行される領域毎の動き探索時間を計測し，その計測したブロック毎の動き探索時間をフレーム単位で合計したフレームグローバル動き探索時間を求め，前記記憶しておいた動き探索命令数情報に従って，ローカル動き探索目標時間とフレーム動き探索時間とから動き探索方法を決定し，動き探索処理を制御し，前記記憶しておいたグローバル動き探索命令数情報に従って，グローバル動き探索目標時間とフレームグローバル動き探索時間からグローバル動き探索方法を決定し，グローバル動き探索処理を制御する。
【００４２】
この第８の発明によれば，第７の発明と同様に，動き探索をする前に，予め各領域に対して動き探索の順序を設定することにより，フレーム途中で動き探索を強制終了する際の符号化効率の低下を軽減できる。さらに，動き探索をする前に，予め各領域に対して動き探索をするかどうかを決定しておき，符号化の最中ではその領域のみ動き探索をし，グローバル動き探索に割り当てる時間を多くすることが可能である。例えば，動き探索をする前に，予め各領域が動領域か静止領域かを判定しておき，動領域のみ動き探索をして，静止領域は動き探索をしない。これにより，静止領域の動き探索のための時間をグローバル動き探索に割り当てることができる。
【００４３】
以上の処理方法をコンピュータによって実現するためのソフトウェアプログラムは，コンピュータが読み取り可能な可搬媒体メモリ，半導体メモリ，ハードディスクなどの適当な記録媒体に格納することができる。
【００４４】
【発明の実施の形態】
以下，本発明の実施の形態を図面を参照して説明する。
【００４５】
第１の実施例では，符号化前に予め，各動き探索方法に対する処理命令数と，各グローバル動き探索方法に対する処理命令数を設定しておき，この値に従って，実時間で動画像を符号化する仕組みを述べる。
【００４６】
動作周波数５００ＭＨｚのＣＰＵを搭載したコンピュータ上で，画面の大きさがＣＩＦ（横３５２画素，縦２８８画素）の動画像をフレームレートが毎秒１０フレームで符号化する場合の動作を示す。
【００４７】
動き探索方法としては下記の方法Ａと方法Ｂと方法Ｃを用意する。画面内のマクロブロックに対してすべて同じ方法を適用する。
【００４８】
［方法Ａ］：マクロブロック内の全画素に対して絶対値差分和を求める。探索範囲は縦１６画素・横１６画素とする。探索範囲内で１画素ずつずらして絶対値差分和を求め，絶対値差分和が最も小さい位置の平行移動量を動きベクトルとする。
【００４９】
［方法Ｂ］：マクロブロック内の全画素に対して絶対値差分和を求める。探索範囲は縦１６画素・横１６画素とする。探索範囲内で２画素ずつずらして絶対値差分和を求め，絶対値差分和が最も小さい位置の平行移動量を動きベクトルとする。
【００５０】
［方法Ｃ］：すべてのマクロブロックの動きベクトルを０ベクトルとする。
【００５１】
方法Ａの動き探索の命令数は１０００万で，方法Ｂの動き探索の命令数は５００万で，方法Ｃの命令数は１万であるとする。
【００５２】
また，グローバル動き探索方法としては，まずどちらも画面を縦８画素・横８画素のブロックに分割し，そのブロック単位に動き探索をする。全ブロックの動き探索が終わった後で，動きベクトルに対するブロック数を集計し，最もブロック数が多い動きベクトルをグローバル動きベクトルとする。ブロック単位の動き探索には，下記の方法Ｄと方法Ｅと方法Ｆを用意する。画面内のブロックに対してすべて同じ方法を適用する。
【００５３】
［方法Ｄ］：ブロック内の全画素に対して絶対値差分和を求める。探索範囲は縦３２画素・横３２画素とする。探索範囲内で１画素ずつずらして絶対値差分和を求め，絶対値差分和が最も小さい位置の平行移動量を動きベクトルとする。
【００５４】
［方法Ｅ］：ブロック内の全画素に対して絶対値差分和を求める。探索範囲は縦３２画素・横３２画素とする。探索範囲内で２画素ずつすらして絶対値差分和を求め，絶対値差分和が最も小さい位置の平行移動量を動きベクトルとする。
【００５５】
［方法Ｆ］：すべてのブロックの動きベクトルを０ベクトルとする。
【００５６】
方法Ｄを採用した場合のグローバル動き探索の命令数は３０００万で，方法Ｅを採用した場合のグローバル動き探索の命令数は１５００万で，方法Ｆを採用した場合のグローバル動き探索の命令数は１万であるとする。
【００５７】
図４に，第１の実施例における符号化方法の処理手順を示す。なお，図４に示す各ブロックに表記した「部」は「手順」と読み替えることができる。他の実施例も同様である。
【００５８】
図４の動き探索制御部（動き探索制御手順）１０６では，予め設定された方法Ａまたは方法Ｂまたは方法Ｃの中からいずれかを，また，方法Ｄまたは方法Ｅまたは方法Ｆの中からいずれかを選択する。
【００５９】
選択するフローを図５に示す。動き探索目標時間をｔａｒｇｅｔ＿ｍｅ＿ｔｉｍｅとし，方法Ａから方法Ｆまでの命令数を時間に変換した値を，ｍｅ＿ｔｉｍｅ［ｉ］（ｉ＝１：方法Ａ，ｉ＝２：方法Ｂ，ｉ＝３：方法Ｃ，１＝４：方法Ｄ，ｉ＝５：方法Ｅ，ｉ＝６：方法Ｆ）とする。以下の選択を行う。
【００６０】
ｍｅ＿ｔｉｍｅ［１］とｍｅ＿ｔｉｍｅ［４］の和が，動き探索目標時間（ｔａｒｇｅｔ＿ｍｅ＿ｔｉｍｅ）より小さい場合，方法Ａと方法Ｄを選択する（ステップＳ１０）。
【００６１】
ｍｅ＿ｔｉｍｅ［１］とｍｅ＿ｔｉｍｅ［５］の和が，動き探索目標時間（ｔａｒｇｅｔ＿ｍｅ＿ｔｉｍｅ）より小さい場合，方法Ａと方法Ｅを選択する（ステップＳ１１）。
【００６２】
ｍｅ＿ｔｉｍｅ［１］とｍｅ＿ｔｉｍｅ［６］の和が，動き探索目標時間（ｔａｒｇｅｔ＿ｍｅ＿ｔｉｍｅ）より小さい場合，方法Ａと方法Ｆを選択する（ステップＳ１２）。
【００６３】
ｍｅ＿ｔｉｍｅ［２］とｍｅ＿ｔｉｍｅ［６］の和が，動き探索目標時間（ｔａｒｇｅｔ＿ｍｅ＿ｔｉｍｅ）より小さい場合，方法Ｂと方法Ｆを選択する（ステップＳ１３）。
【００６４】
ｍｅ＿ｔｉｍｅ［３］とｍｅ＿ｔｉｍｅ［６］の和が，動き探索目標時間（ｔａｒｇｅｔ＿ｍｅ＿ｔｉｍｅ）より小さい場合，方法Ｃと方法Ｆを選択する（ステップＳ１４）。
【００６５】
以上のように，いずれの組み合わせを選択した場合にも，動き探索とグローバル動き探索が動き探索目標時間以内に処理されるように選択する。方法Ｃと方法Ｆを選択した場合に動き探索目標時間以内とならない場合（ステップＳ１４でＮＯの場合）には，そのフレームを符号化せずに，次のフレームを符号化開始するものとする。この場合，動き探索目標時間には，１フレーム符号化するための符号化目標時間が加算される。
【００６６】
まず，符号化開始前に目標時間設定部１０１にて，フレームレートが毎秒１０フレームであることから，符号化目標時間として１００ｍｓｅｃを設定する。また，動きパラメータ記憶部１０２にて方法Ａから方法Ｃまでの処理命令数を記憶し，グローバル動きパラメータ記憶部１０３にて方法Ｄから方法Ｆまでの処理命令数を記憶する。
【００６７】
本実施例では，処理命令数に対応する実際の時間は以下の通りとなる。
【００６８】
0003670566.tif 000002
続いて，符号化を開始後のＪ番目とＪ＋１番目のフレームの符号化手順を説明する。Ｊ−１番目のフレームでは符号化目標時間に符号化が間に合わず，Ｊ番目のフレームでは符号化目標時間に符号化が間に合ったとする。前提として，Ｊ−１番目のフレームに対して動き探索に方法Ａを使い，グローバル動き探索に方法Ｄを使って，符号化時間計測部１０４において計測した符号化時間が１１０ｍｓｅｃであったとする。すなわち，１０ｍｓｅｃの遅延が発生している。
【００６９】
この状況において，まず動き探索時間設定部１０５にて，Ｊ番目のフレームに対する動き探索目標時間を求める。方法Ａと方法Ｄを使って符号化時間が１１０ｍｓｅｃであったことから，動き探索以外の処理の時間は，
１１０ｍｓｅｃ−（方法Ａの時間＋方法Ｄの時間）＝１１０ｍｓｅｃ−（２０ｍｓｅｃ＋６０ｍｓｅｃ）＝３０ｍｓｅｃ
と計算できる。
【００７０】
次のフレームで１０ｍｓｅｃの遅延から回復することを踏まえ，動き探索目標時間ｔａｒｇｅｔ＿ｍｅ＿ｔｉｍｅは，
１００ｍｓｅｃ−（遅延時間）−（動き探索以外の時間）＝１００ｍｓｅｃ−１０ｍｓｅｃ−３０ｍｓｅｃ＝６０ｍｓｅｃ
と設定する。動き探索制御部１０６では，図５の選択フローに従って，方法Ａと方法Ｅを選択する。
【００７１】
画像入力部１０７にて，１フレーム分の画像情報を取得する。動き探索部１０８では，方法Ａで動き探索を行い，グローバル動き探索部１０９では，方法Ｅでグローバル動き探索を行う。フレーム間予測符号化部１１０では，動き探索部１０８で求められた動きベクトルとグローバル動き探索部１０９で求められたグローバル動きベクトルを用いてＪ番目のフレームの画像情報を符号化する。局所復号部１１１では，符号化データを復号する。符号化時間計測部１０４は，Ｊ番目のフレームの符号化時間を計測する。符号化時間は５５ｍｓｅｃであったとする。
【００７２】
この場合，Ｊ−１番目のフレームにて発生した１０ｍｓｅｃの遅延がなくなり，実時間で符号化できていることになる。このように，前フレームで実時間に符号化できない場合であっても，次のフレームの動き探索時間を調整することにより，次のフレームで遅延を解消することができる。
【００７３】
続いて，動き探索時間設定部１０５にて，Ｊ＋１番目のフレームに対する動き探索目標時間を求める。方法Ａと方法Ｅを使って符号化時間が５５ｍｓｅｃであったことから，動き探索以外の処理の時間は，
５５ｍｓｅｃ−（方法Ａの時間＋方法Ｅの時間）＝５０ｍｓｅｃ−（２０ｍｓｅｃ＋３０ｍｓｅｃ）＝５ｍｓｅｃ
と計算できる。そのため動き探索目標時間ｔａｒｇｅｔ＿ｍｅ＿ｔｉｍｅは，
１００ｍｓｅｃ−（動き探索以外の時間）＝１００ｍｓｅｃ−５ｍｓｅｃ＝９５ｍｓｅｃ
と設定する。動き探索制御部１０６では，図５の選択フローに従って，方法Ａと方法Ｄを選択する。
【００７４】
画像入力部１０７にて，１フレーム分の画像情報を取得する。動き探索部１０８では，方法Ａで動き探索を行い，グローバル動き探索部１０９では，方法Ｄでグローバル動き探索を行う。フレーム間予測符号化部１１０では，動き探索部１０８で求められた動きベクトルとグローバル動き探索部１０９で求められたグローバル動きベクトルを用いてＪ番目のフレームの画像情報を符号化する。局所復号部１１１では，符号化データを復号する。符号化時間計測部１０４は，Ｊ＋１番目のフレームの符号化時間を計測する。
【００７５】
このように前フレームの符号化時間が符号化目標時間以内であった場合には，次のフレームの動き探索処理時間を多くすることにより，前フレームよりも符号化効率を上げることが可能である。
【００７６】
第１の実施例のように，符号化前に予め，各動き探索方法に対する処理命令数と，各グローバル動き探索方法に対する処理命令数を設定しておき，この値に従って動き探索処理やグローバル動き探索処理を変更することにより，実時間で動画像を符号化できる。
【００７７】
なお，第１の実施例では，動きベクトル探索とグローバル動き探索の処理命令数を変更する方法として，探索範囲内で１画素ずつずらす方法（方法Ａと方法Ｄ），探索範囲内で２画素ずつずらす方法（方法Ｂと方法Ｅ），動きベクトルが０ベクトルの場合のみ計算する方法（方法Ｃと方法Ｆ）を示したが，３画素もしくはそれ以上の画素数ずらすことにより処理命令数をさらに削減することも可能である。また，動きベクトルの探索範囲が縦１６画素・横１６画素，グローバル動き探索の探索範囲が縦３２画素・横３２画素の場合のみ示したが，探索範囲を拡大または縮小することにより処理命令数を変更することも可能である。以下に示す第２〜第４の実施例でも同様である。
【００７８】
また，グローバル動き探索を用いない場合には，図４に示す第１の実施例において，グローバル動きパラメータ記憶部１０３の処理およびグローバル動き探索部１０９の処理を省略した手順になることは説明するまでもない。以下に示す他の実施例においても同様である。
【００７９】
第２の実施例では，符号化前に予め，各動き探索方法に対する処理命令数と，各グローバル動き探索方法に対する処理命令数とを設定しておき，この値に従って動画像を符号化し，符号化途中でこれらの処理命令数を変更する仕組みを述べる。
【００８０】
動作周波数５００ＭＨｚのＣＰＵを搭載したコンピュータ上で，画面の大きさがＣＩＦ（横３５２画素，縦２８８画素）の動画像をフレームレートが毎秒１０フレームで符号化する場合の動作を示す。
【００８１】
動き探索方法には，第１の実施例と同じく方法Ａと方法Ｂと方法Ｃを用意し，グローバル動き探索方法には，第１の実施例と同じく方法Ｄと方法Ｅと方法Ｆを用意する。動き探索方法とグローバル動き探索方法は，画面内のマクロブロックに対してすべで同じ方法を適用する。
【００８２】
図６に，第２の実施例における符号化方法の処理手順を示す。ここで，動き探索制御部２０６にて，動き予測方法とグローバル動き探索方法の選択フローは，第１の実施例と同じく図５とする。
【００８３】
符号化を開始後のＪ番目とＪ＋１番目のフレームの符号化手順を説明する。Ｊ−１番目のフレームでは，符号化目標時間に符号化が間に合わず，Ｊ番目のフレームでは，符号化目標時間に符号化が間に合った場合を示す。前提として，Ｊ−１番目のフレームに対して，動き探索に方法Ａを使い，グローバル動き探索に方法Ｄを使って，符号化時間計測部２０４において計測した符号化時間が１２０ｍｓｅｃであったとする。すなわち２０ｍｓｅｃの遅延が発生している。
【００８４】
また，動き探索時間計測部２１２にて計測された動き探索時間は４０ｍｓｅｃであり，グローバル動き探索時間計測部２１４にて計測されたグローバル動き探索時間は６０ｍｓｅｃであるとする。
【００８５】
また，動きパラメータ記憶部２０２にて記憶している各方法の命令数は，方法Ａは１０００万で，方法Ｂは５００万で，方法Ｃは１万であるとする。グローバル動きパラメータ記憶部２０３にて記憶している各方法の命令数は，方法Ｄは３０００万で，方法Ｅは１５００万で，方法Ｆは１万であるとする。
【００８６】
この状況において，まずＪ番目のフレームに対する動き探索命令数とグローバル動き探索命令数の更新を行う。動きパラメータ更新部２１３にて，方法Ａの命令数を４０ｍｓｅｃ＊５００ＭＨｚ＝２０００万に，グローバル動きパラメータ更新部２１５にて，方法Ｄの命令数を
６０ｍｓｅｃ＊５００ＭＨｚ＝３０００万
に更新する。
【００８７】
したがって，処理命令数に対応する実際の時間は以下の通りとなる。
【００８８】
0003670566.tif 000003
続いて動き探索時間設定部２０５にて，Ｊ番目のフレームに対する動き探索目標時間を求める。方法Ａと方法Ｄを使って符号化時間が１２０ｍｓｅｃであったことから，動き探索以外の処理の時間は，
0003670566.tif 000004
と計算できる。
【００８９】
次のフレームで２０ｍｓｅｃの遅延から回復することを踏まえ，動き探索目標時間ｔａｒｇｅｔ＿ｍｅ＿ｔｉｍｅは，
0003670566.tif 000005
と設定する。動き探索制御部２０６では，図５のフローに従って，方法Ａと方法Ｆを選択する。
【００９０】
画像入力部２０７にて，１フレーム分の画像情報を取得する。動き探索部２０８では方法Ａで動き探索を行い，グローバル動き探索部２０９では方法Ｆでグローバル動き探索を行う。フレーム間予測符号化部２１０では，動き探索部２０８で求められた動きベクトルとグローバル動き探索部２０９で求められたグローバル動きベクトルを用いてＪ番目のフレームの画像情報を符号化する。局所復号部２１１では，符号化データを復号する。符号化時間計測部２０４では，Ｊ番目のフレームの符号化時間を計測する。符号化時間は５５ｍｓｅｃであったとする。また，動き探索時間計測部２１２にて計測された動き探索時間は４０ｍｓｅｃであり，グローバル動き探索時間計測部２１４にて計測されたグローバル動き探索時間は０．１ｍｓｅｃであるとする。
【００９１】
この状況において，まずＪ＋１番目のフレームに対する動き探索命令数とグローバル動き探索命令数の更新を行う。動きパラメータ更新部２１３にて，方法Ａの命令数を４０ｍｓｅｃ＊５００ＭＨｚ＝２０００万に，グローバル動きパラメータ更新部２１５にて，方法Ｆの命令数を
０．１ｍｓｅｃ＊５００ＭＨｚ＝５万
に更新する。
【００９２】
したがって，処理命令数に対応する実際の時間は以下の通りとなる。
【００９３】
0003670566.tif 000006
続いて動き探索時間設定部２０５にて，Ｊ＋１番目のフレームに対する動き探索目標時間を求める。方法Ａと方法Ｆを使って符号化時間が５５ｍｓｅｃであったことから，動き探索以外の処理の時間は，
0003670566.tif 000007
と計算することができる。そのため，動き探索目標時間ｔａｒｇｅｔ＿ｍｅ＿ｔｉｍｅは，
0003670566.tif 000008
と設定する。動き探索制御部２０６では，図５のフローに従って，方法Ａと方法Ｅを選択する。
【００９４】
画像入力部２０７にて，１フレーム分の画像情報を取得する。動き探索部２０８では，方法Ａで動き探索を行い，グローバル動き探索部２０９では，方法Ｅでグローバル動き探索を行う。フレーム間予測符号化部２１０では，動き探索部２０８で求められた動きベクトルとグローバル動き探索部２０９で求められたグローバル動きベクトルを用いてＪ＋１番目のフレームの画像情報を符号化する。局所復号部２１１では，符号化データを復号する。符号化時間計測部２０４は，Ｊ＋１番目のフレームの符号化時間を計測する。
【００９５】
このように第２の実施例では，前フレームの符号化から，その演算器における動き探索命令数とグローバル動き探索命令数を求めて更新することにより，その演算器の演算処理速度に応じた動き探索方法とグローバル動き探索方法の選択をすることができる。
【００９６】
また第２の実施例において，動き探索部２０８の処理を実行した後に，動き探索時間計測部２１２で動き探索時間を計測して，この時間も使って再度グローバル動き探索を実行する際の動き探索目標時間を再設定する方法も好適である。例えば，Ｊ＋１番目のフレームにおける動き探索時間が２０ｍｓｅｃであったとすると，Ｊ＋１番目のフレームのグローバル動き探索のための動き探索目標時間を，
ｔａｒｇｅｔ＿ｍｅ＿ｔｉｍｅ＝８５．１ｍｓｅｃ−２０ｍｓｅｃ＝６５．１ｍｓｅｃ
と設定する。この情報に基づいて，再度グローバル動き探索方法を決定する。この選択フローを図７に示す。この選択フローに従って方法Ｄを選択して（ステップＳ２０），グローバル動き探索を行う。グローバル動きベクトルを求めた後の動作は図６の処理手順と同じである。
【００９７】
図７の選択フローでは，ｔａｒｇｅｔ＿ｍｅ＿ｔｉｍｅがｍｅ＿ｔｉｍｅ［４］より大きい場合に（ステップＳ２０），方法Ｄを選択し，ｔａｒｇｅｔ＿ｍｅ＿ｔｉｍｅがｍｅ＿ｔｉｍｅ［４］以下で，かつｍｅ＿ｔｉｍｅ［５］より大きい場合には（ステップＳ２１），方法Ｅを選択する。さらに，ｔａｒｇｅｔ＿ｍｅ＿ｔｉｍｅがｍｅ＿ｔｉｍｅ［５］以下で，かつｍｅ＿ｔｉｍｅ［６］より大きい場合には（ステップＳ２２），方法Ｆを選択し，ｍｅ＿ｔｉｍｅ［６］以下であればグローバル動き補償は行わない。
【００９８】
このように，動き探索後にグローバル動き探索のための動き探索目標時間を再設定することにより，予測誤差のより少ないグローバル動きベクトルを求めることも可能となる。
【００９９】
第３の実施例では，符号化前に予め，各動き探索方法に対する処理命令数を設定しておき，この値に従って，実時間で動画像を符号化する仕組みを述べる。ただし，第１の実施例と異なり，動き探索時間をマクロブロック単位に計測して動き探索を制御する。また符号化前に予めマクロブロック毎に動き探索の優先順位を決定する。以下の例では，動き探索目標時間以内にすべてのマクロブロックに対して動き探索を実行できない場合に，強制終了する動作例を示す。
【０１００】
動作周波数５００ＭＨｚのＣＰＵを搭載したコンピュータ上で，画面の大きさがＣＩＦ（横３５２画素，縦２８８画素）の動画像をフレームレートが毎秒１０フレームで符号化する場合の動作を示す。
【０１０１】
動き探索方法には，第１の実施例に記載の方法Ａと方法Ｂを用意する。方法Ａの動き探索の命令数は１０００万で，方法Ｂの動き探索の命令数は５００万であるとする。ただし，第１の実施例と異なり，動き探索方法は，画面内のマクロブロックに対して適宜変更する。図８に第３の実施例における符号化方法の処理手順を示す。ここで，動き探索制御部３０６にて行う動き予測方法の選択フローを図９に示す。
【０１０２】
ブロック動き探索時間計測部３１２にて計測されたブロック毎の動き探索時間をフレーム単位で合計し，その合計したフレーム動き探索時間をｔｏｔａｌ＿ｍｅ＿ｔｉｍｅとし，動き探索目標時間をｔａｒｇｅｔ＿ｍｅ＿ｔｉｍｅとし，方法Ａと方法Ｂまでの命令数を時間に変換した値を，ｍｅ＿ｔｉｍｅ［ｉ］（ｉ＝１：方法Ａ，ｉ＝２：方法Ｂ）とする。動き探索をしたマクロブロック数ｃｏｕｎｔ＿ＭＢは，動き探索処理を行った回数をカウントすることにより計測するものとする。画面中のマクロブロック数をｔｏｔａｌ＿ＭＢとする。
【０１０３】
また，ブロック優先度検出部３１６では，画面内のエッジ画素を検出し，マクロブロック毎にエッジ画素数をカウントする。エッジは視覚的な品質を維持するのに重要であるため，画像の品質を向上するために重要である。そのため，エッジ画素を多く含むマクロブロックの符号化効率を向上しておく必要がある。探索ブロック決定部３１７では，エッジ画素数の多い順番にマクロブロックの番号を並べたリストを作成する。
【０１０４】
このような手順の構成における本実施例の動作を示す。まず，符号化開始前に目標時間設定部３０１にて，フレームレートが毎秒１０フレームであることから，符号化目標時間として１００ｍｓｅｃを設定する。また，動きパラメータ記憶部３０２にて，方法Ａと方法Ｂの処理命令数を記憶する。
【０１０５】
続いて，符号化を開始後のＪ番目のフレームの符号化手順を説明する。前提として，Ｊ−１番目のフレームにおける符号化時間計測部３０４において計測した符号化時間が９０ｍｓｅｃであったとする。また，ｔｏｔａｌ＿ｍｅ＿ｔｉｍｅは８０ｍｓｅｃであったとする。
【０１０６】
この状況において，まず動き探索時間設定部３０５にて，Ｊ番目のフレームに対する動き探索目標時間を求める。符号化時間が９０ｍｓｅｃであったことから，動き探索以外の処理の時間は，
９０ｍｓｅｃ−８０ｍｓｅｃ＝１０ｍｓｅｃ
と計算できる。次のフレームでの動き探索目標時間ｔａｒｇｅｔ＿ｍｅ＿ｔｉｍｅは，
１００ｍｓｅｃ−（動き探索以外の時間）＝１００ｍｓｅｃ−１０ｍｓｅｃ＝９０ｍｓｅｃ
と設定する。このため，最初のマクロブロックでは，動き探索方法Ａを選択する。
【０１０７】
画像入力部３０７にて１フレーム分の画像情報を取得する。ブロック優先度検出部３１６では，エッジ検出を行い，マクロブロック毎にエッジ画素数をカウントする。探索ブロック決定部３１７では，エッジ画素の多いマクロブロック順にマクロブロック番号を並べたリストを作成する。ここで作成したリストの例を，図１０に示す。ブロック動き探索部３０８では，図９の選択フローに従って動き探索方法を決定し，図１０のリストの順にマクロブロック単位に動き探索をする。
【０１０８】
動き方法の選択では，図９に示すようにｔｏｔａｌ＿ＭＢとｃｏｕｎｔ＿ＭＢとの差をｔｏｔａｌ＿ＭＢで割ったものとｍｅ＿ｔｉｍｅ［１］との積が，ｔａｒｇｅｔ＿ｍｅ＿ｔｉｍｅとｔｏｔａｌ＿ｍｅ＿ｔｉｍｅとの差より小さい場合に（ステップＳ３０），方法Ａを選択する。そうでない場合，ｔｏｔａｌ＿ＭＢとｃｏｕｎｔ＿ＭＢとの差をｔｏｔａｌ＿ＭＢで割ったものとｍｅ＿ｔｉｍｅ［２］との積を計算し，それが，ｔａｒｇｅｔ＿ｍｅ＿ｔｉｍｅとｔｏｔａｌ＿ｍｅ＿ｔｉｍｅとの差より小さい場合（ステップＳ３１），方法Ｂを選択する。それ以外の場合には，動き探索を中止する。
【０１０９】
マクロブロック番号２００番のマクロブロックを符号化した後で，フレーム動き探索時間が６９．９９９９９９９ｍｓｅｃとなったとすると，図９の選択フローに従って，図１０のリストに記載されているマクロブロックのうち，２００番より後のマクロブロックについては動き探索を行わない。動き探索を行わないマクロブロックの動きベクトルは０ベクトルとする。
【０１１０】
フレーム間予測符号化部３１０では，ブロック動き探索部３０８で求められた動きベクトルを用いてＪ番目のフレームの画像情報を符号化する。局所復号部３１１では，符号化データを復号する。符号化時間計測部３０４は，Ｊ番目のフレームの符号化時間を計測する。
【０１１１】
このように，マクロブロック単位に動き探索処理時間を計測することによって，フレーム途中で動き探索処理を終了することが可能である。また，フレーム途中で動き探索を終了する場合であっても，符号化する前に予め各マクロブロックを動き探索する順序を決めておくことにより，エッジ画素を多く含むマクロブロックの符号化効率を向上し，画像品質の劣化を軽減することが可能である。
【０１１２】
第４の実施例では，符号化前に予め，各動き探索方法に対する処理命令数と，各グローバル動き探索方法に対する処理命令数とを設定しておき，この値に従って，実時間で動画像を符号化する仕組みを述べる。ただし，第１の実施例と異なり，動き探索時間をマクロブロック単位に計測して動き探索を制御し，グローバル動き探索時間をマクロブロック単位に計測してグローバル動き探索を制御する。また，符号化前に予めマクロブロック毎に動き探索とグローバル動き探索の優先順位を決定する。以下の例では，ブロック動き探索部４０８において，ローカル動き探索目標時間以内にすべてのマクロブロックに対して動き探索を実行できない場合に，強制終了する動作例を示す。
【０１１３】
動作周波数５００ＭＨｚのＣＰＵを搭載したコンピュータ上で，画面の大きさがＣＩＦ（横３５２画素，縦２８８画素）の動画像をフレームレートが毎秒１０フレームで符号化する場合の動作を示す。
【０１１４】
動き探索方法には，第１の実施例と同じく方法Ａと方法Ｂを用意し，グローバル動き探索方法には，第１の実施例と同じく方法Ｄと方法Ｅを用意する。方法Ａの動き探索の命令数は１０００万で，方法Ｂの動き探索の命令数は５００万であるとする。方法Ｄを採用した場合のグローバル動き探索の命令数は３０００万で，方法Ｅを採用した場合のグローバル動き探索の命令数は１５００万であるとする。ただし，第１の実施例と異なり，動き探索方法とグローバル動き探索方法は，画面内のマクロブロックに対して適宜変更する。
【０１１５】
図１１に，第４の実施例における符号化方法の処理手順を示す。動き探索時間設定部４０５では，動き探索目標時間ｔａｒｇｅｔ＿ｍｅ＿ｔｉｍｅからローカル動き探索目標時間ｔａｒｇｅｔ＿ｌｏｃａｌ＿ｍｅ＿ｔｉｍｅとグローバル動き探索目標時間ｔａｒｇｅｔ＿ｇｌｏｂａｌ＿ｍｅ＿ｔｉｍｅを決定する。方法Ａと方法Ｂの命令数を時間に変換した値を，ｍｅ＿ｔｉｍｅ［ｉ］（ｉ＝１：方法Ａ，ｉ＝２：方法Ｂ）とし，方法Ｄと方法Ｅの命令数を時間に変換した値を，ｍｅ＿ｔｉｍｅ［ｉ］（ｉ＝４：方法Ｄ，ｉ＝５：方法Ｅ）とする。次の式に従って求める。
【０１１６】
ｔａｒｇｅｔ＿ｌｏｃａｌ＿ｍｅ＿ｔｉｍｅ＝ｔａｒｇｅｔ＿ｍｅ＿ｔｉｍｅ＊ｍｅ＿ｔｉｍｅ［１］／（ｍｅ＿ｔｉｍｅ［ｌ］＋ｍｅ＿ｔｉｍｅ［４］）
ｔａｒｇｅｔ＿ｇｌｏｂａｌ＿ｍｅ＿ｔｉｍｅ＝ｔａｒｇｅｔ＿ｍｅ＿ｔｉｍｅ−ｔａｒｇｅｔ＿ｌｏｃａｌ＿ｍｅ＿ｔｉｍｅ
動き探索制御部４０６における動き予測方法の選択フローを図１２に，グローバル動き予測方法の選択フローを図１３に示す。
【０１１７】
ブロック動き探索時間計測部４１２にて計測されたブロック毎の動き探索時間をフレーム単位で合計し，その合計したフレーム動き探索時間をｔｏｔａｌ＿ｌｏｃａｌ＿ｍｅ＿ｔｉｍｅとする。動き探索をしたマクロブロック数ｃｏｕｎｔ＿ＭＢは，動き探索処理を行った回数をカウントすることにより計測するものとする。画面中のマクロブロック数をｔｏｔａｌ＿ＭＢとする。
【０１１８】
グローバルブロック動き探索時間計測部４１９にて計測されたブロック毎の動き探索時間をフレーム単位で合計したフレームグローバル動き探索時間をｔｏｔａｌ＿ｇｌｏｂａｌ＿ｍｅ＿ｔｉｍｅとする。
【０１１９】
また，各フレームの画素の画像情報は０〜２５５までの値を取るものとし，ブロック優先度検出部４１６では，現フレームの原画像と前フレームの局所復号画像との間で同一位置の画素間の差分の絶対値を求め，差分絶対値が５０以上となる画素（ここでは動画素と呼ぶ）の数をマクロブロック毎に計測する。動画素が多いほど，そのマクロブロックは動領域と判定できる。探索ブロック決定部４１７では，動画素の数の多い順番にマクロブロックの番号を並べたリストを作成する。
【０１２０】
このような手順の構成における本実施例の動作を示す。まず，符号化開始前に目標時間設定部４０１にて，フレームレートが毎秒１０フレームであることから，符号化目標時間として１００ｍｓｅｃを設定する。また，動きパラメータ記憶部４０２にて，方法Ａと方法Ｂの処理命令数を記憶する。
【０１２１】
続いて，符号化を開始後のＪ番目のフレームの符号化手順を説明する。前提として，Ｊ−１番目のフレームにおける符号化時間計測部４０４において計測した符号化時間が１００ｍｓｅｃであったとする。また，ｔｏｔａｌ＿ｌｏｃａｌ＿ｍｅ＿ｔｉｍｅは２０ｍｓｅｃであり，ｔｏｔａｌ＿ｇ１ｏｂａｌ＿ｍｅ＿ｔｉｍｅは５０ｍｓｅｃであったとする。
【０１２２】
この状況において，まず動き探索時間設定部４０５にて，Ｊ番目のフレームに対する動き探索目標時間を求める。符号化時間が１００ｍｓｅｃであったことから，動き探索以外の処理の時間は，
１００ｍｓｅｃ−２０ｍｓｅｃ−５０ｍｓｅｃ＝３０ｍｓｅｃ
と計算できる。次のフレームでの動き探索目標時間ｔａｒｇｅｔ＿ｍｅ＿ｔｉｍｅは，
１００ｍｓｅｃ−（動き探索以外の時間）＝１００ｍｓｅｃ−３０ｍｓｅｃ＝７０ｍｓｅｃ
と設定する。これから，ローカル動き探索目標時間ｔａｒｇｅｔ＿ｌｏｃａｌ＿ｍｅ＿ｔｉｍｅとグローバル動き探索目標時間ｔａｒｇｅｔ＿ｇｌｏｂａｌ＿ｍｅ＿ｔｉｍｅとを求める。
【０１２３】
0003670566.tif 000009
画像入力部４０７にて１フレーム分の画像情報を取得する。ブロック優先度検出部４１６では，現フレームの原画像と前フレームの局所復号画像との間の絶対値差分を求め，動画素の数をマクロブロック毎にカウントする。探索ブロック決定部４１７では，動画素数の多いマクロブロック順にマクロブロック番号を並べたリストを作成する。ここで作成したリストは図１０と同じとする。
【０１２４】
ブロック動き探索部４０８では，図１２の選択フローに従って動き探索方法を決定し，図１０のリストの順にマクロブロック単位に動き探索をする。マクロブロック番号１００番のマクロブロックを符号化した後で，フレーム動き探索時間が１７．４９９９９９９９ｍｓｅｃとなったとすると，図１２の選択フローに従って図１０のリストに記載されているマクロブロックのうち，１００番より後のマクロブロックについては動き探索を行わない。動き探索を行わないマクロブロックの動きベクトルは０ベクトルとする。
【０１２５】
グローバルブロック動き探索部４０９では，図１３の選択フローに従ってグローバル動き探索方法を決定し，図１０のリストの順にマクロブロック単位に動き探索をする。マクロブロック番号５０番のマクロブロックを符号化した後で，フレームグローバル動き探索時間が５２．４９９９９９９９ｍｓｅｃとなったとすると，図１３の選択フローに従って図１０のリストに記載されているマクロブロックのうち，５０番より後のマクロブロックについては動き探索を行わない。動き探索を行わないマクロブロックの動きベクトルは０ベクトルとする。これらのマクロブロック単位の動きベクトルのうち，最もマクロブロック数の多い動きベクトルをグローバル動きベクトルとする。
【０１２６】
フレーム間予測符号化部４１０では，ブロック動き探索部４０８で求められた動きベクトルとグローバルブロック動き探索部４０９で求められたグローバル動きベクトルを用いて，Ｊ番目のフレームの画像情報を符号化する。局所復号部４１１では，符号化データを復号する。符号化時間計測部４０４は，Ｊ番目のフレームの符号化時間を計測する。
【０１２７】
このように，動き探索目標時間からローカル動き探索目標時間とグローバル動き探索目標時間を設定し，マクロブロック単位に動き探索処理時間やグローバル動き探索処理時間を計測することによって，フレーム途中で動き探索処理やグローバル動き探索処理時間を終了することが可能である。
【０１２８】
また，すべてのマクロブロックに対してブロック動き探索部４０８が，予め設定したローカル動き探索目標時間以内に終了した場合には，余った時間をグローバル動き探索目標時間に加算することも好適である。例えば，ブロック動き探索時間計測部４１２で計測されたフレーム動き探索時間が９ｍｓｅｃでブロック動き探索部４０８を終了した場合，グローバル動き探索目標時間ｔａｒｇｅｔ＿ｇｌｏｂａｌ＿ｍｅ＿ｔｉｍｅを
５２．５ｍｓｅｃ＋（１７．５ｍｓｅｃ−９ｍｓｅｃ）＝６１ｍｓｅｃ
に設定する。この値に従って図１３の選択フローに従ってグローバル動き探索方法を決定する。この場合は最初のマクロブロックに対して方法Ｄが選択される。その後，図１１の手順に従って符号化する。
【０１２９】
このように，ブロック動き探索処理が目標よりも早く終了した場合には，グローバル動き探索目標時間を再度決定することにより，予測誤差のより少ないグローバル動きベクトルを求めることができる。
【０１３０】
なお，図１２の動き探索の選択フローおよび図１３のグローバル動き探索の選択フローに示す選択アルゴリズムは，前述した図９の例と同様であるので，各ステップごとの詳細な説明は省略する。
【０１３１】
【発明の効果】
本発明によれば，符号化前に予め，各動き探索方法に対する処理命令数と，各グローバル動き探索方法に対する処理命令数を設定しておき，この値に従って動き探索処理やグローバル動き探索処理を変更することにより，実時間で動画像を符号化できる。すなわち，パーソナルコンピュータで符号化する場合のように，他のプログラムが実行される間に符号化処理が停止したり，機種によりＣＰＵの処理速度が異なるため，同一のプログラムでも実行環境により処理時間が異なるような場合にも，動きベクトル探索に要する時間を調節して，実時間で動画像を符号化することができるようになる。
【図面の簡単な説明】
【図１】マクロブロックと探索範囲の関係を示す図である。
【図２】画素の選択方法の例を示す図である。
【図３】探索位置を２画素ずつずらす例を説明する図である。
【図４】第１の実施例の手順を説明する図である。
【図５】第１の実施例における動き探索の選択フローである。
【図６】第２の実施例の手順を説明する図である。
【図７】第２の実施例におけるグローバル動き探索の選択フローである。
【図８】第３の実施例の手順を説明する図である。
【図９】第３の実施例における動き探索の選択フローである。
【図１０】動き探索をするマクロブロックの順序の例を示す図である。
【図１１】第４の実施例の手順を説明する図である。
【図１２】第４の実施例における動き探索の選択フローである。
【図１３】第４の実施例におけるグローバル動き探索の選択フローである。
【符号の説明】
１０１  目標時間設定部
１０２  動きパラメータ記憶部
１０３  グローバル動きパラメータ記憶部
１０４  符号化時間計測部
１０５  動き探索時間設定部
１０６  動き探索制御部
１０７  画像入力部
１０８  動き探索部
１０９  グローバル動き探索部
１１０  フレーム間予測符号化部
１１１  局所復号部
【図１】
0003670566.tif 000010
【図２】
0003670566.tif 000011
【図３】
0003670566.tif 000012
【図４】
0003670566.tif 000013
【図５】
0003670566.tif 000014
【図６】
0003670566.tif 000015
【図７】
0003670566.tif 000016
【図８】
0003670566.tif 000017
【図９】
0003670566.tif 000018
【図１０】
0003670566.tif 000019
【図１１】
0003670566.tif 000020
【図１２】
0003670566.tif 000021
【図１３】
0003670566.tif 000022