動画像を入力する入力部と、前記入力した動画像を構成する複数のフレームの情報を記憶する入力画像記憶部と、前記入力画像記憶部から処理対象のフレームと、前記処理対象フレームが参照する参照フレームとを読み出し、前記処理対象フレームと参照フレームとの残差評価に基づき、動きベクトルを探索する動きベクトル探索処理部と、前記参照フレームをデコードしたデコード参照フレームを作成するデコード処理部と、前記動きベクトル探索処理部による動きベクトルの探索結果に基づき、前記処理対象フレームと、前記デコード参照フレームとの残差評価を行う残差評価再処理部と、前記残差評価再処理部による残差評価結果に基づいて、前記処理対象フレームの符号化処理を行う符号化処理部と、前記動きベクトル探索処理部は、前記処理対象フレームのデコード参照フレームを作成する前に、次の処理対象フレームの動きベクトルの探索を開始する、画像処理装置前記動きベクトル探索処理部は、前記処理対象フレームのデコード参照フレームを作成する前に、前記処理対象フレームを参照する、次の処理対象フレームの動きベクトルの探索を開始する、請求項1に記載の画像処理装置前記デコード処理部は、前記動きベクトル探索処理部による残差評価を行った後に、前記参照フレームをデコードしたデコード参照フレームを作成する、請求項1又は2に記載の画像処理装置前記処理対象フレームを複数の画像領域に分割する画像領域分割処理部と、前記画像領域分割処理部で分割された画像領域を記憶する処理対象画像領域記憶部と、前記動きベクトル探索処理部と、前記デコード処理部と、前記残差評価再処理部と、前記符号化処理部は、それぞれ画像領域を処理する複数の処理部を有しており、前記複数の処理部は、現在処理中の処理対象画像領域がない場合、処理対象画像領域記憶部から、処理対象となる各画像領域を取得する、請求項1又は2、3に記載の画像処理装置。パーソナルコンピュータに搭載されたオペレーティングシステム上において、物理プロセッサ数と同時実行数は厳密には同じだが、プロセッサ1つあたりに対して複数のスレッドがそれぞれ動的に割り込む形で、物理プロセッサ数以上の並列処理を疑似的に同時実行できるという特徴を持つ。また、マルチタスクに対応したOSでは、実行しているソフトウェアが一つだけではなく、他のソフトウェアやデバイスドライバ等、様々なソフトウェアが物理プロセッサというリソースを共有している。これらは、スレッド、プロセスなどの各タスクにおいて、1つの物理プロセッサをタイムシェアリングすることで動作しており、これらはOSによって制御される。従って、映像符号化処理を実現するにあたり、物理プロセッサ数とスレッド数を意識してプログラムを記述する必要はない。しかしながら、このような環境では、例え同じ計算量であっても各処理や各スレッドの完了タイミングは異なるのが一般的である。例えば20回の計算が必要な処理でスレッドを二つ作成し、それぞれのスレッドで10回の計算をする場合、スレッドAは10msecで処理が完了するが、スレッドBは11msecで処理が完了するといった状況が発生する。この時、空きリソースとして利用可能な物理プロセッサの数がスレッド数と同じ2個であれば、スレッドの両方が終わるのを同期的に待機する場合、一方の物理プロセッサは1msecの間、何も仕事をしないことになる。特に、映像符号化処理の場合は、1回あたりの計算にかかる時間が必ずしも同じ時間で終わるものばかりではなく、むしろ異なる場合が多い。このように、単純に処理を並列化しただけでは、並列処理の完了待ちなどの同期処理において、無駄な待機時間が生じるため、マルチコアプロセッサを効率的に使用できないという問題があった。また、映像の符号化においては、前段の処理の結果を待って、後段の処理を行わなければならないといった制約が数多く存在する。例えば動き予測処理では、一般的に、処理対象フレームが、自身のPTSより前或いは後ろのPTSを持つフレームを参照する場合、そのフレームが既に符号化され、なおかつ復号化した画像が必要となる。このような制限化における高速化については様々な手法が存在するが、高速化のためにそれらの制約を取り払うことまでは積極的に行われてこなかった。そこで本発明は、最もボトルネックとなる部分の制約を取り払うことで並列化の範囲を拡大し、並列化によって生まれる無駄な待機時間を可能な限り縮小することで、プロセッサを効率的に使用することができる映像符号化方法を提供することを目的とする。上記目的を達成するために、本発明の映像符号化方法は、動画像を入力する入力ステップと、入力した動画像を構成する複数のフレームの情報を記憶する入力画像記憶ステップと、入力画像記憶ステップにおいて記憶された複数のフレームの中から、処理対象のフレームと処理対象フレームが参照する参照フレームとを読み出すステップと、読み出した処理対象フレームと参照フレームとの間で残差評価処理を行い、動きベクトルを探索する動きベクトル探索処理ステップと、参照フレームをデコードしたデコード参照フレームを作成するデコード処理ステップと、動きベクトルの探索結果に基づき、処理対象フレームと、デコード参照フレームとの残差評価を行う残差評価再処理ステップと、残差評価再処理結果に基づいて、処理対象フレームの符号化処理を行う符号化ステップを備える。なお、動きベクトル探索処理ステップにおいて、デコード画像ではなくオリジナル画像を参照することで、参照フレームのデコードステップを待たずに処理を開始することができる。また、動きベクトル探索処理ステップ、デコード処理ステップ、残差再評価処理ステップ、符号化処理ステップの各処理ステップは、それぞれで同じ処理を並列実行できる複数の処理部を持ち、それぞれで処理対象フレームを複数の画像領域に分割する画像領域分割処理ステップと、分割された画像領域を記憶する処理対象画像領域記憶ステップ、記憶された処理対象画像領域を読み出す処理対象画像領域読み出しステップを備える。ここでいう画像領域とは、マクロブロック単位或いはスライス単位であり、各処理ステップ内の処理内容が、隣接マクロブロックに依存する場合はスライス単位、依存しない場合はマクロブロック単位を、一つの画像領域として処理する。各処理ステップで並列に実行される複数の処理部において、事前に処理対象画像領域を振り分けるのではなく、現在処理中の処理対象画像領域がない場合、処理対象画像領域記憶部から、処理対象となる各画像領域を取得する。以上のように、本発明の映像符号化方法によれば、プロセッサを効率的に使用することができる。以下、本発明の実施の形態について、図1から図10を用いて説明する。図1は、本発明の実施の形態1にかかる映像符号化装置のシステム構成を示すブロック図である。本実施の形態では、映像符号化装置として、並列処理可能なプロセッサを備えたパーソナルコンピュータ及びマルチコア、マルチスレッドに対応したオペレーティングシステム想定している。また、ここでは簡単のため、映像符号化の方式としてMPEG2Videoの例を示すものとする。図1において、まず動画像入力部100で、符号化したい映像をフレーム単位で入力する。動画像入力部100で入力されたフレームを、入力画像記憶部101で記憶する。動きベクトル探索処理部102において、処理対象フレームが他のフレームを参照する必要がある場合、動きベクトルの探索を行う。この時、処理対象フレームのオリジナル画像と、参照フレームのオリジナル画像の間で、繰り返し残差評価を行い、最も残差が少ないか、規定値を下回るブロックを表すベクトルを取得する。動きベクトルの探索が行われた後、デコード処理部103は、実際に参照されたフレームの符号化が完了するのを待機し、そのフレームを復号化することでデコード画像を取得する。デコード画像を取得した後、残差評価再処理部104は、動きベクトルの探索で求められた動きベクトルが表すブロックに対してのみ、残差評価を再度行う。この時、処理対象フレームのオリジナル画像と、参照フレームのデコード画像の間で、残差評価が行われる。最後に、符号化処理部105は、DCT変換、量子化、VLC符号化など、映像の符号化で一般的に必要な処理を行う。動きベクトル探索処理部102において、処理対象フレームが他のフレームを参照する必要がない場合、動きベクトル探索処理を行わずに、符号化処理部105において、DCT変換、量子化、VLC符号化など、映像の符号化で一般的に必要な処理を行う。ここで、画像領域分割処理部106~109は、動きベクトル探索処理部102、デコード処理部103、残差評価再処理部104、符号化処理部105から、それぞれ処理対象フレームを受け取り、隣接マクロブロックに依存する処理の場合はスライス単位、隣接マクロブロックに依存しない場合はマクロブロック単位で画像領域を分割する。処理対象画像領域記憶部110~113は、画像領域分割処理部106~109で分割された画像領域にそれぞれインデックスを付け、処理対象リストとして記憶する。動きベクトル探索処理部102、デコード処理部103、残差評価再処理部104、符号化処理部105は、それぞれ処理対象画像領域記憶部110~113から、インデックスが付与された処理対象画像領域を取得し、その処理対象がなくなるまで繰り返し処理を行う。図2は、本発明の実施の形態1にかかる映像符号化処理の動作フローチャートである。まず、ステップS101で動画像を入力する。次に、ステップS102において、入力された動画像をフレームとして記憶する。ステップS103では、記憶されたフレームの総数を取得し、ステップS104で、符号化を開始することが可能なフレーム数が記憶されているかどうかを判定する。条件を満たさない場合は、ステップS103に戻り、再度フレームの総数を確認する。条件を満たした場合は、ステップS105で処理対象フレームの符号化を行う。最後に、ステップS106において、符号化されたデータを出力する。図3は、本発明の実施の形態1にかかる処理対象フレームの符号化処理の動作フローチャートであり、図2で示した映像符号化処理の処理対象フレームの符号化サブルーチンの動作を示す。まず、ステップS201で動きベクトルの探索を行う。ここでは、Pピクチャ、Bピクチャなど、処理対象フレームが他のフレームを参照する必要がある場合、動きベクトルの探索を行う。Iピクチャの場合は何も処理をせず、次の処理へ移行する。次に、S202でマクロブロックタイプの決定を行う。マクロブロックタイプの決定では、例えば、Pピクチャ、Bピクチャなど、処理対象フレームにおいて、動きベクトルの探索で得られた残差評価の値と、イントラ予測で得られた残差評価の値を比較し、コストの少ない方を選択し、マクロブロックタイプを決定する。マクロブロックタイプの決定が終わった後、ステップS203において、DCT変換及び量子化を行う。そして、Bピクチャから参照されるPピクチャ、Pピクチャ及びBピクチャから参照されるIピクチャの場合は、ステップS204において、逆量子化及び逆DCT変換を行い、デコード画像を生成しておく。最後に、ステップS205において、VLC符号化を行い、全体の符号量を削減する。図4は、本発明の実施の形態1にかかる符号化処理のサブルーチンの動作フローチャートであり、図3で示した処理対象フレームの符号化の動きベクトルの探索マクロブロックタイプの決定DCT変換及び量子化逆量子化及びDCT変換VLC符号化サブルーチンの動作を示す。図4のパターンパターンaでは、まず、ステップS301において、処理対象フレームの総数を取得する。次に、ステップS302において、処理対象フレームの総数が0より大きいかを確認する。ここで、処理対象フレームの総数が0以下の場合は、ステップS310に進む。逆に、処理対象フレームの総数が0より大きい場合は、ステップS303において、処理対象フレームを処理対象リストから1つ取得する。取得した処理対象フレームに対して、ステップS306で画像領域の分割と記憶を行い、ステップS307において並列処理用サブルーチンを実行する。なお、ステップS307に示される並列処理用サブルーチンとは、処理対象画像領域毎のDCT変換及び量子化逆量子化及びDCT変換VLC符号化などの処理を指す。これらの並列処理用サブルーチンが同時実行されている間、ステップS308において、全サブルーチンの完了を待つ。全サブルーチンの処理が完了した後、ステップS309において、処理が完了した処理対象フレームを処理対象リストから1つ削除し、代わりに後段にある別の処理の処理対象リストに処理対象フレームを設定する。最後に、処理を停止する必要があるかどうかを確認し、停止する必要がない場合は、ステップS301に戻り、停止する必要がある場合は、処理を終える。符号化処理のサブルーチンの動作は、図4を用いて説明したパターンaではなく、他のパターンを適用してもよい。以下に図9、図10を用いて他のパターンにおける符号化処理のサブルーチンについて説明する。なお、これらのサブルーチンは、ある程度共通の動作を持つことから、説明を簡単化するためにフローチャートを図4および図9、図10にて共通にしている。図9のパターンパターンbでは、図4のパターンに加え、ステップS303において取得された処理対象フレームが、Iピクチャなど他のフレームを参照しないフレームであった場合、次のステップS304において、処理対象フレームがインターフレームであるかどうかを確認し、インターフレームであるなら次のステップS306に進む。イントラフレームである場合は、何も処理を行わない。なお、ステップS307に示される並列処理用サブルーチンとは、処理対象領域毎の動きベクトルの探索などの処理を指す。図10のパターンパターンcでは、図4のパターンに加え、ステップS303において処理対象フレームを取得した後、ステップS305において、処理対象フレームが参照する参照フレームのデコード画像が作成されるのを待機する。この時、参照フレームを符号化するスレッドでデコード画像を作成するようにしても良いし、処理対象フレームを取得したスレッドでデコード画像を作成するようにしても良い。なお、ステップS307に示される並列処理用サブルーチンとは、処理対象領域毎のマクロブロックタイプの決定などの処理を指す。図5は、本発明の実施の形態1にかかる画像領域の分割と記憶の動作フローチャートであり、パターン、、で示した符号化処理のサブルーチンの画像領域の分割と記憶サブルーチンの動作を示す。まず、ステップS401において、処理対象領域毎に処理する並列処理用サブルーチンで行われる演算処理が、隣接するマクロブロックの結果に依存するか否かの確認を行う。隣接するマクロブロックに依存する場合は、ステップS402において、スライス単位で画像領域を分割する。なお、ここでは、1フレームあたりのマクロブロックの行数とスライスの行数は等しいものとする。隣接するマクロブロックに依存しない場合は、ステップS403において、マクロブロック単位で画像領域を分割する。ステップS402或いはステップS403において、画像領域を分割した後、ステップS404において、各画像領域にインデックスを付与し、処理対象リストとして記憶する。図6は、本発明の実施の形態1にかかる並列処理用サブルーチンの動作フローチャートであり、パターン、、で示した符号化処理のサブルーチンの並列処理用サブルーチンの動作を示す。まず、ステップS501において、処理対象画像領域の総数を取得する。次に、ステップS502において、処理対象画像領域の総数が0より大きいかどうかを確認する。ここで、処理対象画像領域の総数が0以下の場合は、ステップS506に進む。逆に、処理対象フレームの総数が0より大きい場合は、ステップS503において、処理対象画像領域を処理対象リストから1つ取得する。次に、ステップS504において、演算処理用サブルーチンを実行する。演算処理用サブルーチンの処理が完了した後、ステップS505において、処理が完了した処理対象画像領域を処理対象リストから1つ削除する。最後に、処理を停止する必要があるかどうかを確認し、停止する必要がない場合は、ステップS501に戻り、停止する必要がある場合は、処理を終わる。図7は、本発明の実施の形態1にかかる符号化処理のサブルーチンの動作パターン表であり、パターン、、で示した符号化処理のサブルーチンがそれぞれどの処理に適用されるのかを示す。並列化にはいくつかのパターンがあり、ここでは2種類のパターンを示す。なお、本発明では、動きベクトルの探索処理においてデコード画像を参照しないため、一般的な符号化よりも若干画質が落ちるというデメリットを持つ。但し、ある程度のビットレートが確保できる状況では、その影響は軽微であることを確認している。以下に、各並列化における動作パターンについて説明する。並列化Aにおいて、動きベクトルの探索処理は、イントラフレームに対して一切の処理を行わないため、動作パターンはとなる。マクロブロックタイプの決定処理は、マクロブロックタイプの決定にデコード画像を利用するため、動作パターンはとなる。DCT変換及び量子化、逆量子化及びDCT変換、VLC符号化については、既に作成されたデコード画像を再利用するため、動作パターンはとなる。並列化Bにおいて、動きベクトルの探索処理は、イントラフレームに対して一切の処理を行わないため、動作パターンはとなる。マクロブロックタイプの決定処理は、マクロブロックタイプの決定にデコード画像を利用しないため、動作パターンはとなる。DCT変換及び量子化では、デコード画像を利用するため、動作パターンはとなる。逆量子化及びDCT変換、VLC符号化については、既に作成されたデコード画像を再利用するため、動作パターンはとなる。図8は、実施の形態1にかかる映像符号化における並列処理の流れであり、図7の並列化Aのパターンにおける例を示す。入力された動画像の一部のフレームのインデックスを符号化順にn、n1、n2、...とした時、全ての動きベクトルの探索処理はスレッドTh1、Th2、Th3、...で疑似的に同時実行される。n1、n2番目のBFrameのマクロブロック決定処理では、n番目のPFrameのデコード画像が生成されるのを待機する必要があるが、一般的に動きベクトルの探索処理の割合が映像符号化処理の大半を占めるため、待機時間を短縮することができる。また、処理量の多い動きベクトル探索処理を複数のスレッドTh1、Th2、Th3、...で処理することができる。更に、各スレッドTh1、Th2、Th3、...は、動きベクトルの探索、マクロブロックタイプの決定処理などにおいて、そのスレッド内で更に複数のスレッドを作成しても良い。