"動き補償を用いて予測画像を合成し、前記予測画像と入力画像との差分に関する情報と、前記動き補償によって求められた動きベクトルに関する情報とを多重化する動画像の符号化方法において、前記予測画像は、プラスの丸め込みを用いる動き補償によって合成される場合と、マイナスの丸め込みを用いる動き補償によって合成される場合とを有することを特徴とする動画像の符号化方法。H.263が符号化する画像は、輝度情報を持つ1枚の輝度プレーンYプレーンと色情報色差情報とも言うを持つ2枚の色差プレーンUプレーンとVプレーンで構成されている。このとき、画像が水平方向に2m画素、垂直方向に2n画素持っている場合にmとnは正の整数とする、Yプレーンは水平方向に2m、垂直方向に2n個の画素を持ち、UおよびVプレーンは水平方向にm、素直方向にn個の画素を持つことを特徴としている。このように色差プレーンの解像度が低いのは、人間の視覚が色差の空間的な変化に比較的鈍感であるという特徴を持つためである。このような画像を入力として、H.263ではマクロブロックと呼ばれるブロックを単位として符号化復号化の処理が行われる。図3にマクロブロックの構成を示す。マクロブロックはYブロック、Uブロック、Vブロックの3個のブロックで構成され、輝度値情報を持つYブロック301の大きさは16×16画素、色差情報をもつUブロック302およびVブロック303の大きさは8×8画素となっている。H.263では、各マクロブロックに対して半画素精度のブロックマッチングが適用される。したがって、推定された動きベクトルをとすると、uとvはそれぞれ画素間距離の半分、つまり1/2を最小単位として求められることになる。このときの強度値以下では、輝度値と色差の強度値を総称して強度値と呼ぶの内挿処理の様子を図4に示す。H.263では、数2の内挿を行う際に、除算の結果は最も近い整数に丸め込まれ、かつ除算の結果が整数に05を加えた値となるときには、これを0から遠ざける方向に切り上げる処理が行われる。つまり、図4において、画素401、402、403、404の強度値をそれぞれLa、Lb、Lc、LdとするとLa、Lb、Lc、Ldは負ではない整数、内挿により強度値を求めたい位置405、406、407、408の強度値Ia、Ib、Ic、IdはIa、Ib、Ic、Idは負ではない整数、以下の式によって表される。ただし、は小数部分を切り捨てる処理を表している。このとき、除算の結果を整数値に丸め込む処理によって発生する誤差の期待値を計算することを考える。内挿により強度値を求めたい位置が、図4の位置405、406、407、408となる確率をそれぞれ1/4とする。このとき、位置405の強度値Iaを求める際の誤差は明らかに0である。また、位置406の強度値Ibを求める際の誤差は、LaLbが偶数の場合は0、奇数の場合は切り上げが行われるので1/2となる。LaLbが偶数になる確率と奇数になる確率は共に1/2であるとすれば、誤差の期待値は、01/21/21/2=1/4となる。位置407の強度値Icを求める際も誤差の期待値はIbの場合と同様に1/4となる。位置408の強度値Icを求める際には、LaLbLcLdを4で割った際のあまりが0、1、2、3である場合の誤差はそれぞれ0、-1/4、1/2、1/4となり、あまりが0から3になる確率をそれぞれ等確率とすれば、誤差の期待値は01/4-1/41/41/21/41/41/4=1/8となる。上で述べた通り、位置405~408における強度値が計算される確率は等確率であるとすれば、最終的な誤差の期待値は、01/41/41/41/41/41/81/4=5/32となる。これは、一回ブロックマッチングによる動き補償を行う度に、画素の強度値に5/32の誤差が発生することを意味している。一般的に低レート符号化の場合には、フレーム間予測誤差を符号化するためのビット数を十分に確保することができないため、DCT係数の量子化ステップサイズを大きくする傾向がある。したがって、動き補償で発生した誤差を誤差符号化によって修正しにくくなる。このようなときにフレーム内符号化を行わずにフレーム間符号化をずっと続けた場合には、上記誤差が蓄積し、再生画像が赤色化するなどの悪い影響を与える場合がある。上で説明した通り、色差プレーンの画素数は縦方向、横方向共に画素数が半分となっている。したがって、UブロックとVブロックに対しては、Yブロックの動きベクトルの水平垂直成分をそれぞれ2で割った値が使用される。このとき、もとのYブロックの動きベクトルの水平垂直成分であるuとvが1/2の整数倍の値であるため、通常の割り算を実行した場合には、動きベクトルは1/4の整数倍の値が出現することになる。しかし、座標値が1/4の整数倍をとるときの強度値の内挿演算が複雑となるため、H.263ではUブロックとVブロックの動きベクトルも半画素精度に丸め込まれる。このときの丸め込みの方法は以下の通りである。いま、u/2=rs/4であるとする。このとき、rとsは整数であり、さらにsは0以上3以下の値をとるとする。sが0または2のときはu/2は1/2の整数倍であるため、丸め込みを行う必要がない。しかし、sが1または3のときは、これを2に丸め込む操作が行われる。これは、sが2となる確率を高くすることにより、強度値の内挿が行われる回数を増やし、動き補償処理にフィルタリングの作用を持たせるためである。丸め込みが行われる前のsの値が0~3の値をとる確率をそれぞれ1/4とした場合、丸め込みが終わったあとにsが0、2となる確率はそれぞれ1/4と3/4となる。以上は動きベクトルの水平成分uに関する議論であったが、垂直成分であるvに関しても全く同じ議論が適用できる。したがって、UブロックおよびVブロックにおいて、401の位置の強度値が求められる確率は1/41/4=1/16、402および403の位置の強度値が求められる確率は共に1/43/4=3/16、404の位置の強度値が求められる確率は3/43/4=9/16となる。これを用いて上と同様の手法により、強度値の誤差の期待値を求めると、01/161/43/161/43/161/89/16=21/128となり、上で説明したYブロックの場合と同様にフレーム内符号化を続けた場合の誤差の蓄積の問題が発生する。フレーム間予測を行い、輝度または色の強度が量子化された数値として表される動画像符号化および復号化方法では、フレーム間予測において輝度または色の強度を量子化する際の誤差が蓄積する場合がある。本発明の目的は、上記誤差の蓄積を防ぐことにより、再生画像の画質を向上させることにある。誤差の発生を抑えるか、発生した誤差を打ち消す操作を行うことにより、誤差の蓄積を防ぐ。本発明により、フレーム間予測画像における丸め込み誤差の蓄積を抑えることが可能となり、再生画像の画質を向上させることが可能となる。まず、従来の技術で述べた丸め込み誤差の蓄積がどのような場合に発生するかについて考える。図5にMPEG1、MPEG2、H.263などの双方向予測と片方向予測の両方を実行することができる符号化方法により符号化された動画像の例を示す。画像501はフレーム内符号化によって符号化されたフレームであり、Iフレームと呼ばれる。これに対し、画像503、505、507、509はPフレームと呼ばれ、直前のIまたはPフレームを参照画像とする片方向のフレーム間符号化により符号化される。したがって、例えば画像505を符号化する際には画像503を参照画像とするフレーム間予測が行われる。画像502、504、506、508はBフレームと呼ばれ、直前と直後のIまたはPフレームを用いた双方向のフレーム間予測が行われる。Bフレームは、他のフレームがフレーム間予測を行う際に参照画像として利用されないという特徴も持っている。まず、Iフレームでは動き補償が行われないため、動き補償が原因となる丸め込み誤差は発生しない。これに対し、Pフレームでは動き補償が行われる上に、他のPまたはBフレームの参照画像としても使用されるため、丸め込み誤差の蓄積を引き起こす原因となる。一方、Bフレームは動き補償は行われるために丸め込み誤差の蓄積の影響は現れるが、参照画像としては使用されないために丸め込み誤差の蓄積の原因とはならない。このことから、Pフレームにおける丸め込み誤差の蓄積を防げば、動画像全体で丸め込み誤差の悪影響を緩和することができる。なお、H.263ではPフレームとBフレームをまとめて符号化するPBフレームと呼ばれるフレームが存在するが例えばフレーム503と504をPBフレームとしてまとめて符号化することができる、組み合わされた2枚のフレームを別々の物として考えれば、上と同じ議論を適用することができる。つまり、PBフレームの中でPフレームに相当する部分に対して丸め込み誤差への対策を施せば、誤差の蓄積を防ぐことができる。丸め込み誤差は、強度値の内挿を行う際に、通常の除算演算結果が実数になる除算の結果として整数値に05を加えた値が出るような場合に、これを0から遠ざける方向に切り上げているために発生している。例えば内挿された強度値を求めるために4で割る操作を行うような場合、あまりが1である場合と3である場合は発生する誤差の絶対値が等しくかつ符号が逆になるため、誤差の期待値を計算する際に互いに打ち消し合う働きをするより一般的には、正の整数d’で割る場合には、あまりがtである場合とd’-tである場合が打ち消し合う。しかし、あまりが2である場合、つまり通常の除算の結果が整数に05を加えた値が出る場合には、これを打ち消すことができず、誤差の蓄積につながる。そこで、このように通常の除算の結果、整数に05を加えた値が出た際にに切り上げを行う丸め込み方法と切り捨てを行う丸め込み方法の両者を選択可能とし、これらをうまく組み合わせることより、発生した誤差を打ち消すことを考える。以下では、通常の除算の結果を最も近い整数に丸め込み、かつ整数に05を加えた値は0から遠ざける方向に切り上げる丸め込み方法をプラスの丸め込みと呼ぶ。また、通常の除算の結果を最も近い整数に丸め込み、かつ整数に05を加えた値は0に近づける方向に切り捨てる丸め込み方法をマイナスの丸め込みと呼ぶこととする。数3は、半画素精度のブロックマッチングにおいてプラスの丸め込みを行う場合の処理を示しているが、マイナスの丸め込みを行う場合には、これは以下のように書き換えることができる。いま、予測画像の合成における強度値の内挿の際ににプラスの丸め込みを行う動き補償を、プラスの丸め込みを用いる動き補償、マイナスの丸め込みを行う動き補償をマイナスの丸め込みを用いる動き補償とする。また、半画素精度のブロックマッチングを行い、かつプラスの丸め込みを用いる動き補償が適用されるPフレームをPフレーム、逆にマイナスの丸め込みを用いる動き補償が適用されるPフレームをP-フレームと呼ぶことするこの場合、H.263のPフレームはすべてPフレームということになる。P-フレームにおける丸め込み誤差の期待値は、Pフレームのそれと絶対値が等しく、符号が逆となる。したがって、時間軸に対し、PフレームとP-フレームが交互に現れるようにすれば、丸め込み誤差の蓄積を防ぐことができる。図5の例では、フレーム503、507をPフレーム、フレーム505、509をP-フレームとすれば、この処理を実現することができる。また、PフレームとP-フレームが交互に発生することは、Bフレームにおいて双方向の予測を行う際にPフレームとP-フレームが一枚ずつ参照画像として使用されることを意味している。一般的にBフレームにおいては順方向の予測画像例えば図5のフレーム504を符号化する際に、フレーム503を参照画像として合成される予測画像と逆方向の予測画像例えば図5のフレーム504を符号化する際に、フレーム505を参照画像として合成される予測画像の平均が予測画像として使用できる場合が多い。したがって、ここでPフレームとP-フレームから合成した画像を平均化することは、誤差の影響を打ち消す意味で有効である。なお、上で述べた通り、Bフレームにおける丸め込み処理は誤差の蓄積の原因とはならない。したがって、すべてのBフレームに対して同じ丸め込み方法を適用しても問題は発生しない。例えば、図5のBフレーム502、504、506、508のすべてが正の丸め込みに基づく動き補償を行ったとしても、特に画質の劣化の原因とはならない。Bフレームの復号化処理を簡略化する意味では、Bフレームに関しては1種類の丸め込み方法のみを用いることが望ましい。図16に、上で述べた複数の丸め込み方法に対応した画像符号化器のブロックマッチング部1600の例を示す。他の図と同じ番号は、同じものを指している。図1のブロックマッチング部116を1600に入れ換えることにより、複数の丸め込み方法に対応することができる。動き推定器1601において、入力画像101と前フレームの復号画像112との間で動き推定の処理が行われる。この結果、動き情報120が出力される。この動き情報は、予測画像合成器1603において予測画像を合成する際に利用される。丸め込み方法決定器1602は、現在符号化を行っているフレームにおいて使用する丸め込み方法を正の丸め込みとするか、負の丸め込みとするかを判定する。決定した丸め込み方法に関する情報1604は、予測画像合成器1603に入力される。この予測画像合成器では、1604によって指定された丸め込み方法に基づいて予測画像117が合成、出力される。なお、図1のブロックマッチング部116には、図16の1602、1604に相当する部分が無く、予測画像は、正の丸め込みによってのみ合成される。また、ブロックマッチング部から決定した丸め込み方法1605を出力し、この情報をさらに多重化して伝送ビットストリームに組み込んで伝送しても良い。図17に、複数の丸め込み方法に対応した画像復号化器の予測画像合成部1700の例を示す。他の図と同じ番号は、同じものを指している。図2の予測画像合成部211を1700に入れ換えることにより、複数の丸め込み方法に対応することが可能となる。丸め込み方法決定器1701では、復号化を行う際の予測画像合成処理に適用される丸め込み方法が決定される。なお、正しい復号化を行うためには、ここで決定される丸め込み方法は、符号化の際に適用された丸め込み方法と同じものでなければならない。例えば、最後に符号化されたIフレームから数えて奇数番目のPフレームには正の丸め込み、偶数番目のPフレームに対しては負の丸め込みが適用されることを原則とし、符号化側の丸め込み方法決定器例えば、図16の1602と復号化側の丸め込み方法決定器1701の両者がこの原則に従えば、正しい復号化を行うことが可能となる。このようにして決定された丸め込み方法に関する情報1702と、前フレームの復号画像210、動き情報202から、予測画像合成器1703では、予測画像が合成される。この予測画像212は出力され、復号画像の合成に活用される。なお、ビットストリーム内に丸め込み方法に関する情報が組み込まれる場合図16の符号化器で、丸め込み方法に関する情報1605が出力されるような場合も考えることができる。この場合、丸め込み方法決定器1701は使用されず、符号化ビットストリームから抽出された丸め込み方法に関する情報1704が予測画像合成器1703に入力される。本発明は、図1、2に示されている従来型の専用回路専用チップを用いる画像符号化装置、画像復号化装置の他に、汎用プロセッサを用いるソフトウェア画像符号化装置、ソフトウェア画像復号化装置にも適用することができる。図6と7にこのソフトウェア画像符号化装置600とソフトウェア画像復号化装置700の例を示す。ソフトウェア符号化器600では、まず入力画像601は入力フレームメモリ602に蓄えられ、汎用プロセッサ603はここから情報を読み込んで符号化の処理を行う。この汎用プロセッサを駆動するためのプログラムはハードディスクやフロッピー登録商標ディスクなどによる蓄積デバイス608から読み出されてプログラム用メモリ604に蓄えられる。また、汎用プロセッサは処理用メモリ605を活用して符号化の処理を行う。汎用プロセッサが出力する符号化情報は一旦出力バッファ606に蓄えられた後に符号化ビットストリーム607として出力される。図6に示したソフトウェア符号化器上で動作する符号化ソフトウェアは内挿のための実数の関数、Tは実数zを整数に丸め込む関数であり、Rx,y、x、yの定義は数4と同じである。Tzが、プラスの丸め込みを表す関数である場合にはプラスの丸め込みを用いる動き補償、マイナスの丸め込みを表す関数である場合にはマイナスの丸め込みを用いる動き補償が行われる。この数5の形式で表すことのできる内挿方法に対しては、本発明を適用することが可能である。例えばhr,sを、のように定義すれば共1次内挿が行われる。しかし、例えばhr,sをのように定義すれば、共1次内挿とは異なる内挿方法が実施されるが、この場合も本発明を適用することは可能である。10本発明は、誤差画像の符号化方法をDCTに限定するものではない、例えば、DCTではなく、ウェーブレット変換例えば、MAntonionietalImageCodingUsingWaveletTransformIEEETransImageProcessingvol1no2April1992や、ウォルシューアダマール変換WalshHadamardTransform例えば、ANNetravalliandBGHaskellDigitalPicturesPlenumPress1998を使用した場合でも本発明は適用可能である。"