(57)【特許請求の範囲】
【請求項１】
既に符号化されたフレームを復号化した復号化画像と現フレームの入力画像との間でグローバル動き補償による動き推定を行い、上記現フレームの予測画像を合成する画像符号化方法において、
上記予測画像の合成において、長方形である上記予測画像を対角線を用いて２個の直角三角形画像に分割し、それぞれの直角三角形画像に関し、３個の代表点における動きベクトルに対し、線形内・外挿を行うことによって直角三角形画像内のすべての画素に対する動きベクトルを計算する際に、
画素のサンプリング間隔が水平、垂直方向共に１であり、かつ、サンプリング点は座標の水平、垂直成分が共に整数である点の上に存在しているとして、
一方の直角三角形画像に対しては座標が（i，ｊ）、（ｉ＋ｐ，ｊ）、（ｉ，ｊ＋ｑ）で表される３点を代表点として使用し（ｉとｊは整数、ｐとｑは整数）、
もう一方の直角三角形画像に対しては、座標が（i’，ｊ’）、（ｉ’−ｐ，ｊ’）、（ｉ’，ｊ’−ｑ）で表される３点を代表点として使用し（ｉ’とｊ’は整数）、
かつ、ｐとｑがそれぞれ２のα乗と２のβ乗（α，βは正の整数）であること
を特徴とする画像符号化方法。
【請求項２】
既に符号化されたフレームを復号化した復号化画像と現フレームの入力画像との間でグローバル動き補償による動き推定を行い、上記現フレームの予測画像を合成する画像符号化方法において、
上記予測画像の合成において、長方形である上記予測画像を対角線を用いて２個の直角三角形画像に分割し、それぞれの直角三角形画像に関し、３個の代表点における動きベクトルに対し、線形内・外挿を行うことによって直角三角形画像内のすべての画素に対する動きベクトルを計算する際に、
画素のサンプリング間隔が水平、垂直方向共に１であり、かつ、サンプリング点は座標の水平、垂直成分が共に整数である点の上に存在しているとして、
一方の直角三角形画像に対しては座標が（i，ｊ）、（ｉ−ｐ，ｊ）、（ｉ，ｊ＋ｑ）で表される３点を代表点として使用し（ｉとｊは整数、ｐとｑは整数）、
もう一方の直角三角形画像に対しては、座標が（i’，ｊ’）、（ｉ’＋ｐ，ｊ’）、（ｉ’，ｊ’−ｑ）で表される３点を代表点として使用し（ｉ’とｊ’は整数）、
かつ、ｐとｑがそれぞれ２のα乗と２のβ乗（α，βは正の整数）であること
を特徴とする画像符号化方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、画像全体に対して線形内・外挿または共１次内・外挿に基づくグローバル動き補償を適用する画像符号化および復号化方法に関するものである。
【０００２】
【従来の技術】
動画像の高能率符号化において、時間的に近接するフレーム間の類似性を活用する動き補償は情報圧縮に大きな効果を示すことが知られている。現在の画像符号化技術の主流となっている動き補償方式は、動画像符号化方式の国際標準であるＨ.２６１，ＭＰＥＧ１，ＭＰＥＧ２に採用されているブロックマッチングである。この方式では、符号化しようとする画像を多数のブロックに分割し、ブロックごとにその動きベクトルを求める。
【０００３】
図１にＨ.２６１の符号化器の構成例１００を示す。Ｈ.２６１は、符号化方式として、ブロックマッチングとＤＣＴ（離散コサイン変換）を組み合わせたハイブリッド符号化方式（フレーム間／フレーム内適応符号化方式）を採用している。減算器１０２は入力画像（現フレームの原画像）１０１とフレーム間／フレーム内符号化切り換えスイッチ１１９の出力画像１１３（後述）との差を計算し、誤差画像１０３を出力する。この誤差画像は、ＤＣＴ変換器１０４でＤＣＴ係数に変換された後に量子化器１０５で量子化され、量子化ＤＣＴ係数１０６となる。この量子化ＤＣＴ計数は伝送情報として通信路に出力されると同時に、符号化器内でもフレーム間予測画像を合成するために使用される。以下に予測画像合成の手順を説明する。上述の量子化ＤＣＴ係数１０６は、逆量子化器１０８と逆ＤＣＴ変換器１０９を経て復号誤差画像１１０（受信側で再生される誤差画像と同じ画像）となる。これに、加算器１１１においてフレーム間／フレーム内符号化切り換えスイッチ１１９の出力画像１１３（後述）が加えられ、現フレームの復号画像１１２（受信側で再生される現フレームの復号画像と同じ画像）を得る。この画像は一旦フレームメモリ１１４に蓄えられ、１フレーム分の時間だけ遅延される。したがって、現時点では、フレームメモリ１１４は前フレームの復号画像１１５を出力している。この前フレームの復号画像と現フレームの入力画像１０１がブロックマッチング部１１６に入力され、ブロックマッチングの処理が行われる。ブロックマッチングでは、画像を複数のブロックに分割し、各ブロックごとに現フレームの原画像に最も似た部分を前フレームの復号画像から取り出すことにより、現フレームの予測画像１１７が合成される。このときに、各ブロックが前フレームと現フレームの間でどれだけ移動したかを検出する処理（動き推定処理）を行う必要がある。動き推定処理によって検出された各ブロックごとの動きベクトルは、動き情報１２０として受信側へ伝送される。受信側は、この動き情報と前フレームの復号画像から、独自に送信側で得られるものと同じ予測画像を合成することができる。予測画像１１７は、「０」信号１１８と共にフレーム間／フレーム内符号化切り換えスイッチ１１９に入力される。このスイッチは、両入力のいずれかを選択することにより、フレーム間符号化とフレーム内符号化を切り換える。予測画像１１７が選択された場合（図２はこの場合を表している）には、フレーム間符号化が行われる。一方、「０」信号が選択された場合には、入力画像がそのままＤＣＴ符号化されて通信路に出力されるため、フレーム内符号化が行われることになる。受信側が正しく復号化画像を得るためには、送信側でフレーム間符号化が行われたかフレーム内符号化が行われたかを知る必要がある。このため、識別フラグ１２１が通信路へ出力される。最終的なＨ.２６１符号化ビットストリーム１２３は多重化器１２２で量子化ＤＣＴ係数，動きベクトル，フレーム内／フレーム間識別フラグの情報を多重化することによって得られる。
【０００４】
図２に図１の符号化器が出力した符号化ビットストリームを受信する復号化器２００の構成例を示す。受信したＨ.２６１ビットストリーム２１７は、分離器２１６で量子化ＤＣＴ係数２０１，動きベクトル２０２，フレーム内／フレーム間識別フラグ２０３に分離される。量子化ＤＣＴ係数２０１は逆量子化器２０４と逆ＤＣＴ変換器２０５を経て復号化された誤差画像２０６となる。この誤差画像は加算器２０７でフレーム間／フレーム内符号化切り換えスイッチ２１４の出力画像２１５を加算され、復号化画像２０８として出力される。フレーム間／フレーム内符号化切り換えスイッチはフレーム間／フレーム内符号化識別フラグ２０３に従って、出力を切り換える。フレーム間符号化を行う場合に用いる予測画像２１２は、予測画像合成部２１１において合成される。ここでは、フレームメモリ２０９に蓄えられている前フレームの復号画像２１０に対して、受信した動きベクトル２０２に従ってブロックごとに位置を移動させる処理が行われる。一方フレーム内符号化の場合、フレーム間／フレーム内符号化切り換えスイッチは、「０」信号２１３をそのまま出力する。
【０００５】
ブロックマッチングは現在最も広く利用されている動き補償方式であるが、画像全体が拡大・縮小・回転している場合には、すべてのブロックに対して動きベクトルを伝送しなければならず、符号化効率が悪くなる問題が発生する。この問題に対し、画像全体の動きベクトル場を少ないパラメータを用いて表現するグローバル動き補償（例えば、M.Hotter, &#34Differential estimation of the global motion parameters zoom and pan&#34, Signal Processing, vol. 16, no. 3, pp. 249-265, Mar. 1989）が提案されている。これは、画像内の画素（ｘ,ｙ）の動きベクトル（ｕg(ｘ,ｙ),ｖg(ｘ,ｙ)）を、
【０００６】
【数１】
0003777998.tif 000002
【０００７】
や、
【０００８】
【数２】
0003777998.tif 000003
【０００９】
の形式で表し、この動きベクトルを利用して動き補償を行う方式である。ここでａ0〜ａ5，ｂ0〜ｂ7 は動きパラメータである。動き補償を行う際には、送信側と受信側で同じ予測画像が得られなければならない。このために、送信側は受信側へ ａ0〜ａ5 または ｂ0〜ｂ7 の値を直接伝送しても良いが、代わりにいくつかの代表点の動きベクトルを伝送する方法もある。いま、画像の左上端，右上端，左下端，右下端の画素の座標がそれぞれ（０,０)，(ｒ,０)，(０,ｓ)，(ｒ,ｓ）で表されるとする（ただし、ｒとｓは正の整数）。このとき、代表点（０,０)，(ｒ,０)，(０,ｓ）の動きベクトルの水平，垂直成分をそれぞれ（ｕa,ｖa)，(ｕb,ｖb)，(ｕc,ｖc）とすると、(数１) は
【００１０】
【数３】
0003777998.tif 000004
【００１１】
と書き換えることができる。このことは ａ0〜ａ5 を伝送する代わりに ｕa，ｖa，ｕb，ｖb，ｕc，ｖc を伝送しても同様の機能が実現できることを意味する。この様子を図３に示す。現フレームの原画像３０２と参照画像３０１の間でグローバル動き補償が行われたとして、動きパラメータの代わりに代表点３０３，３０４，３０５の動きベクトル３０６，３０７，３０８（このとき、動きベクトルは現フレームの原画像の点を出発点として、参照画像内の対応する点を終点とするものとして定義する）を伝送しても良い。これと同じように、４個の代表点（０,０)，(ｒ,０)，(０,ｓ)，(ｒ,ｓ）の動きベクトルの水平，垂直成分（ｕa,ｖa)，(ｕb,ｖb)，(ｕc,ｖc)，(ｕd,ｖd）を用いて (数２) は、
【００１２】
【数４】
0003777998.tif 000005
【００１３】
と書き換えることができる。したがって、ｂ0〜ｂ7 を伝送する代わりに ｕa，ｖa，ｕb，ｖb，ｕc，ｖc，ｕd，ｖd を伝送しても同様の機能が実現できる。本明細書では (数１) を用いる方式を線形内・外挿に基づくグローバル動き補償，(数２) を用いる方式を共１次内・外挿に基づくグローバル動き補償とよぶこととする。
【００１４】
代表点の動きベクトルを伝送する線形内・外挿に基づくグローバル動き補償方式を採用した画像符号化器の動き補償処理部４０１の構成例を図４に示す。図１と同じ番号は同じものを指すとする。図１のブロックマッチング部１１６をこの動き補償処理部４０１に入れ替えることにより、グローバル動き補償を行う画像符号化装置を構成することができる。グローバル動き補償部４０２で前フレームの復号画像１１５と現フレームの原画像１０１との間でグローバル動き補償に関する動き推定が行われ、上記 ｕa，ｖa，ｕb，ｖb，ｕc，ｖc の値が推定される。これらの値に関する情報４０３は動き情報１２０の一部として伝送される。グローバル動き補償の予測画像４０４は数３を用いて合成され、ブロックマッチング部４０５に供給される。ここでは、グローバル動き補償の予測画像と現フレームの原画像との間でブロックマッチングによる動き補償が行われ、ブロックの動きベクトル情報４０６と最終的な予測画像１１７が得られる。この動きベクトル情報は動きパラメータ情報と多重化部４０７において多重化され、動き情報１２０として出力される。
【００１５】
図４とは異なる動き補償処理部５０１の構成例を図５に示す。図１と同じ番号は同じものを指すとする。図１のブロックマッチング部１１６をこの動き補償処理部５０１に入れ替えることにより、グローバル動き補償を行う画像符号化装置を構成することができる。この例では、グローバル動き補償の予測画像にブロックマッチングを適用するのではなく、各ブロックに関してグローバル動き補償かブロックマッチングのいずれかが適用される。前フレームの復号画像１１５と現フレームの原画像１０１との間で、グローバル動き補償部５０２とブロックマッチング部５０５でそれぞれグローバル動き補償とブロックマッチングが並列に行われる。選択スイッチ５０８は、グローバル動き補償による予測画像５０３とブロックマッチングによる予測画像５０６の間でブロックごとに最適な方式を選択する。代表点の動きベクトル５０４，ブロックごとの動きベクトル５０７，グローバル動き補償／ブロックマッチングの選択情報５０９は多重化部５１０で多重化され、動き情報１２０として出力される。
【００１６】
以上述べたグローバル動き補償を導入することにより、画像の大局的な動きを少ないパラメータを用いて表現することが可能となり、より高い情報圧縮率が実現できる。しかし、その一方で符号化および復号化における処理量は従来の方式と比較して増加する。特に (数３) および (数４) に見られる除算は、処理を複雑にする大きな要因となってしまう。
【００１７】
【発明が解決しようとする課題】
画像全体の動きベクトル場を少ないパラメータによって近似するグローバル動き補償では、予測画像の合成のための処理量が多くなる問題が発生する。本発明の目的は、グローバル動き補償における除算の処理を２進数のシフト演算に置き換えることにより、演算量を減少させることにある。
【００１８】
【課題を解決するための手段】
グローバル動き補償を行う際の代表点の座標をうまく選択することにより、除算処理をシフト演算で実現できるようにする。
【００１９】
【発明の実施の形態】
以下の議論では、画素のサンプリング間隔を水平，垂直方向共に１とし、画像の左上端，右上端，左下端，右下端の画素の座標がそれぞれ（０,０)，(ｒ,０)，(０,ｓ)，(ｒ,ｓ）で表されるとする（ただし、ｒとｓは正の整数）。
【００２０】
線形内・外挿（アフィン変換）または共１次内・外挿（共１次変換）を用いた動き補償を行う際には、画素ごとの動きベクトルに対して量子化を行うと、ミスマッチの防止や演算の簡略化などの効果を得ることができる（特願平06-193970）。以下では、画素の動きベクトルの水平成分と垂直成分が１／ｍ（ｍは正の整数）の整数倍であるとする。また、「従来の技術」で説明した代表点の動きベクトルを用いるグローバル動き補償を行うと仮定し、各代表点の動きベクトルは１／ｋ（ｋは正の整数）の整数倍であるとする。なお、本明細書では、「画素の動きベクトル」はグローバル動き補償を行う際に、実際に予測画像を合成するために用いる動きベクトルのことを指す。一方、「代表点の動きベクトル」は画素の動きベクトルを計算するために用いるパラメータを意味している。したがって、量子化ステップサイズの違いなどが原因で、同じ座標上に存在していても画素の動きベクトルと代表点の動きベクトルが一致しない場合も起こり得る。
【００２１】
まず線形内・外挿を用いる場合について図６を用いて説明する。このとき、「従来の技術」で述べたように代表点を画像６０１の隅に位置する点とはせず、（ｉ,ｊ)，(ｉ+ｐ,ｊ)，(ｉ,ｊ+ｑ）に位置する点６０２，６０３，６０４とする（ｉ，ｊ，ｐ，ｑは整数）。このとき、点６０２，６０３，６０４は画像の内部に存在していても外部に存在していても良い。代表点の動きベクトルの水平，垂直成分をｋ倍したものをそれぞれ（ｕ0,ｖ0)，(ｕ1,ｖ1)，(ｕ2,ｖ2）とすると（ｕ0，ｖ0，ｕ1，ｖ1，ｕ2，ｖ2 は整数）、画素（ｘ,ｙ）の動きベクトルの水平，垂直成分をｍ倍したもの（ｕ(ｘ,ｙ),ｖ(ｘ,ｙ)）は以下の式で表すことができる（ただし、ｘ，ｙ，ｕ(ｘ,ｙ)，ｖ(ｘ,ｙ）は整数）。
【００２２】
【数５】
0003777998.tif 000006
【００２３】
ただし、「//」は通常の除算による演算結果が整数ではない場合にこれを近隣の整数に丸め込む除算で、演算子としての優先順位は乗除算と同等である。演算誤差を小さくするためには、非整数値は最も近い整数に丸め込まれることが望ましい。このとき整数に１／２を加えた値の丸め込み方法は、
(1) ０に近づける方向に丸め込む、
(2) ０から遠ざける方向に丸め込む、
(3) 被除数が負の場合は０に近づける方向，正の場合は０から遠ざける方向に丸め込む（除数は常に正であるとする）、
(4) 被除数が負の場合は０から遠ざける方向，正の場合は０に近づける方向に丸め込む（除数は常に正であるとする）、
などが考えられる。これらの中で（3）と（4）は、被除数の正負に関わらず丸め込みの方向が変化しないため、正負判定が必要ない分だけ処理量の点で有利である。(3）を用いた高速処理は以下の式によって実現される。
【００２４】
【数６】
0003777998.tif 000007
【００２５】
ただし、「＃」は小数点以下を０の方向に切り捨てる整数の除算であり、一般に計算機では最も実現しやすい形式の除算である。ここで、ＬとＭは除算の被除数を常に正に保つための数で、十分に大きな正の整数である。また、(ｐｑｋ＃２）の項は、除算結果を最も近い整数に丸め込むために用いられる。
【００２６】
処理を整数化することはそれ自体処理量の低減に貢献するが、ここで ｐ，ｑ，ｋ をそれぞれ２の α，β，ｈ0 乗（α，βは正の整数、ｈ0は負ではない整数）とすると、(数５) の除算は α＋β＋ｈ0 ビットのシフト演算で実現できるため、計算機や専用ハードウェアにおける処理量を大きく減らすことができる。さらにｍを２のｈ1乗とすれば（ｈ1は負ではない整数、ｈ1＜α＋β＋ｈ0）、(数６) は、
【００２７】
【数７】
0003777998.tif 000008
【００２８】
と書き換えることができ（「ｘ&#60&#60α」はｘをαビット左にシフトして下位αビットに０を入れる、「ｘ&#62&#62α」はｘをαビット右にシフトして上位αビットに０または１を入れる（ｘが２の補数表現の場合、ｘの最上位ビットが１のときは１，０のときは０を入れる）ことを意味し、これらの演算子の優先順位は加減算と乗除算の中間であるとする）、さらに演算を簡略化することができる。
【００２９】
線形内・外挿を用いた場合、さらに（ｉ+ｐ,ｊ+ｑ）に位置する代表点の動きベクトルの水平，垂直成分をｋ倍したものを（ｕ3,ｖ3）として、(数５) は（ｉ,ｊ)，(ｉ+ｐ,ｊ)，(ｉ+ｐ,ｊ+ｑ）を代表点とすれば、
【００３０】
【数８】
0003777998.tif 000009
【００３１】
（ｉ,ｊ)，(ｉ,ｊ+ｑ)，(ｉ+ｐ,ｊ+ｑ）を代表点とすれば、
【００３２】
【数９】
0003777998.tif 000010
【００３３】
（ｉ+ｐ,ｊ)，(ｉ,ｊ+ｑ)，(ｉ+ｐ,ｊ+ｑ）を代表点とすれば、
【００３４】
【数１０】
0003777998.tif 000011
【００３５】
と書き換えられ、ｐ，ｑ，ｋ，ｍ の値を２の正の整数乗とすることによって同様に処理量を減らすことができる。
【００３６】
共１次内・外挿を用いた場合には、代表点（ｉ,ｊ)，(ｉ+ｐ,ｊ)，(ｉ,ｊ+ｑ)，(ｉ+ｐ,ｊ+ｑ）それぞれの動きベクトルの水平，垂直成分をｋ倍したものである（ｕ0,ｖ0)，(ｕ1,ｖ1)，(ｕ2,ｖ2)，(ｕ3,ｖ3）を用いて（ｕ(ｘ,ｙ),ｖ(ｘ,ｙ)）は以下の式で表すことができる。
【００３７】
【数１１】
0003777998.tif 000012
【００３８】
この式も ｐ，ｑ，ｋ，ｍ の値をそれぞれ２の α，β，ｈ0，ｈ1 乗とすることによって、
【００３９】
【数１２】
0003777998.tif 000013
【００４０】
と書き換えることができ、上と同様に処理量を減らすことができる。
【００４１】
送信側と受信側で同じグローバル動き補償予測画像を得るためには、代表点の動きベクトルに関する情報を何らかの形で受信側に伝える必要がある。代表点の動きベクトルそのまま伝送する方法もあるが、画像の隅の点の動きベクトルを伝送し、この値から代表点の動きベクトルを計算する方法もある。この方法に関し、以下に説明する。
【００４２】
まずは線形内・外挿が使用される場合について説明する。画像の隅の３個の点（０,０)，(ｒ,０)，(０,ｓ）の動きベクトルが１／ｎ整数倍の値のみとれるとして、これらの水平，垂直成分をｎ倍した（ｕ00,ｖ00)，(ｕ01,ｖ01)，(ｕ02,ｖ02）が伝送されるとする。このとき、点（ｉ,ｊ)，(ｉ+ｐ,ｊ)，(ｉ,ｊ+ｑ)，(ｉ+ｐ,ｊ+ｑ）それぞれの動きベクトルの水平，垂直成分をｋ倍したものである（ｕ0,ｖ0)，(ｕ1,ｖ1)，(ｕ2,ｖ2)，(ｕ3,ｖ3）を、
【００４３】
【数１３】
0003777998.tif 000014
【００４４】
と定義する。ただし、ｕ'(ｘ,ｙ)，ｖ'(ｘ,ｙ）は、(数５) を変形して、
【００４５】
【数１４】
0003777998.tif 000015
【００４６】
と定義する。このとき、「///」は通常の除算による演算結果が整数ではない場合にこれを近隣の整数に丸め込む除算で、演算子としての優先順位は乗除算と同等である。(ｕ0,ｖ0)，(ｕ1,ｖ1)，(ｕ2,ｖ2)，(ｕ3,ｖ3）の中から３点を選び、それらを代表点とするグローバル動き補償を行えば、(０,０)，(ｒ,０)，(０,ｓ）を代表点とするグローバル動き補償を近似することができる。もちろんこのときにｐとｑを２の正の整数乗とすれば、上で述べたように処理を簡略化することが可能となる。なお、演算誤差を小さくするためには、「///」は非整数値を最も近い整数に丸め込むことが望ましい。このとき整数に１／２を加えた値の丸め込み方法としては、上で述べた（1）〜（4）の方法が考えられる。ただし、(数５)（画素ごとに計算）の場合と比較して、(数１４) （１枚の画像で３回のみ計算）は演算が実行される回数が少ないため、(1）または（2）の方法を選んだとしても全体の演算量に大きな影響は与えない。
【００４７】
画像の隅の点として (数１３) の例とは異なる３点が選ばれた場合も数８〜１０を変形することによって同様の処理を実現することができる。上記の例に加え、さらに画像の隅の点（ｒ,ｓ）の動きベクトルの水平，垂直成分をｎ倍したものを（ｕ03,ｖ03）とすれば、(数１４) は、（ｕ00,ｖ00)，(ｕ01,ｖ01)，(ｕ03,ｖ03）が伝送される場合には、
【００４８】
【数１５】
0003777998.tif 000016
【００４９】
と、(ｕ00,ｖ00)，(ｕ02,ｖ02)，(ｕ03,ｖ03）が伝送される場合には、
【００５０】
【数１６】
0003777998.tif 000017
【００５１】
と、(ｕ01,ｖ01)，(ｕ02,ｖ02)，(ｕ03,ｖ03）が伝送される場合には、
【００５２】
【数１７】
0003777998.tif 000018
【００５３】
と書き換えられる。
【００５４】
共１次内・外挿が行われる場合も同様である。上と同様に画像の隅の４個の代表点（０,０)，(ｒ,０)，(０,ｓ)，(ｒ,ｓ）の動きベクトルが１／ｎ整数倍の値のみとれるとして、これらの水平，垂直成分をｎ倍した（ｕ00,ｖ00)，(ｕ01,ｖ01)，(ｕ02,ｖ02)，(ｕ03,ｖ03）が伝送されるとする。このときの代表点（ｉ,ｊ)，(ｉ+ｐ,ｊ)，(ｉ,ｊ+ｑ)，(ｉ+ｐ,ｊ+ｑ）それぞれの動きベクトルの水平，垂直成分をｋ倍したものである（ｕ0,ｖ0)，(ｕ1,ｖ1)，(ｕ2,ｖ2)，(ｕ3,ｖ3）は上と同様、(数１３) で与えられる。ただし、ｕ'(ｘ,ｙ)，ｖ'(ｘ,ｙ）は、(数１１) を変形して、
【００５５】
【数１８】
0003777998.tif 000019
【００５６】
と定義される。
【００５７】
画像の隅の点の動きベクトルを伝送し、これに対して内・外挿を行うことによって代表点の動きベクトルを求める方式の長所は、画素ごとの動きベクトルの範囲を限定しやすい点である。例えば、(数４) で与えられる共１次内・外挿では、(ｘ,ｙ）が画像内の点であるとき、ｕg(ｘ,ｙ）の値は ｕa，ｕb，ｕc，ｕd の最大値を超えることも、最小値を下まわることもない。したがって、グローバル動き推定のときに ｕa，ｕb，ｕc，ｕd の値がある制限範囲内（例えば±３２画素以内の範囲）に収まるような制約条件を加えれば、全ての画素に関して ｕg(ｘ,ｙ）の値を同じ制限範囲内入れておくことができる（もちろんこれは ｖg(ｘ,ｙ）に関しても成立する）。こうすると演算に必要な桁数を明確にすることができ、ソフトウェアまたはハードウェアを設計する上で便利である。ただし、以上の議論は計算がすべて浮動小数点演算で行われた場合の議論なので、実際の処理では注意が必要である。画像の隅の点の動きベクトルから代表点の動きベクトルを求める演算 (数１８) には整数への丸め込みが存在するため、計算誤差の影響で (数１２) で求まる動きベクトルが上で述べた制限範囲内から出る可能性を考慮する必要がある。特に代表点が画像の内側に位置するような場合には注意が必要である。これは、代表点が囲む長方形の外側に位置する画素に関しては外挿によって動きベクトルが求められるため、丸め込み誤差が増幅される可能性があるためである。外挿によって動きベクトルが求まる例を図７に示す。画像７０１に対し、代表点７０２，７０３，７０４，７０５を用いてグローバル動き補償を行うと、画像内の斜線で示された部分は外挿により動きベクトルが計算されることになる。これは、斜線部が代表点が囲む長方形７０６の外にあるためである。
【００５８】
この問題への対策としては、４個の代表点を、代表点が囲む長方形が画像全体を含むように配置する方法が有効である。この例を図８に示す。代表点８０２，８０３，８０４，８０５が囲む長方形８０６は、画像８０１を含んでいる。こうすれば、全ての画素の動きベクトルは代表点からの内挿により求められるため、代表点における丸め込み誤差の影響は画像内では増幅されない。したがって、代表点の丸め込み誤差より大きな誤差が画像内で発生することはなく、誤差の上限が明確になる。ただし、代表点が囲む長方形を大きくし過ぎると、代表点の動きベクトルがとり得る値の範囲が広くなるため、演算に必要な桁数が増加し、実装する上では不利となる。
【００５９】
以上の議論から、丸め込み誤差の影響を小さくするため、ｐの値はｒ以上であり、ｑの値はｓ以上であるが望ましい。ｐ，ｑ はそれぞれ ｒ，ｓ より小さい場合にも、なるべく大きな値をとることが望ましい。また、ｉ，ｊ の値は、画像内のできるだけ広い部分が代表点により囲まれる領域に入るような値とすることが望ましい。
【００６０】
上で述べたように、グローバル動き補償に共１次内・外挿を用いた場合には、４個の代表点が囲む長方形に含まれる画素の動きベクトルの各成分は、代表点の動きベクトルの各成分の最大値と最小値の間の値しかとれないという性質がある。これに対し、線形内・外挿が使用された場合には、３個の代表点が囲む３角形内の画素の動きベクトルが同様の性質を持つ。したがって、線形内・外挿を用いるグローバル動き補償を行う場合には、画像の四隅の点の動きベクトルを伝送し、画像の対角線によって分割される２個の直角３角形に対してそれぞれ独立にグローバル動き補償を行う方法が有効である。こうすることにより、４隅の点に対する動きベクトルの範囲に関する制約が、そのまま画像内のすべての画素の動きベクトルに適用できる。このとき、ｉ，ｊ，ｐ，ｑ の値は、２個の直角３角形の間で異なっていても良い。また、演算誤差の観点から言えば、外挿によって画素の動きベクトルを計算するケースを避けるため、代表点の囲む３角形が、グローバル動き補償の対象となる直角３角形を含むことが望ましい。この例を図９に示す。画像９０１の４隅である点９０９，９０３，９０８，９１０の動きベクトルが伝送され、点９０９，９０３，９１０によって構成される直角３角形と、点９０９，９１０，９０８によって構成される直角３角形それぞれに対し、独立にグローバル動き補償が行われる。したがって、頂点の動きベクトルの範囲に関して制約を設ければ、画像内の全ての画素の動きベクトルもこの制約範囲内に入ることになる。点９０９，９０３，９１０によって構成される直角３角形は代表点として点９０２，９０３，９０４を使用し、点９０９，９１０，９０８によって構成される直角３角形は代表点として点９０６，９０７，９０８を使用する。代表点によって構成される３角形は、それぞれグローバル動き補償の対象となる直角３角形を中に含んでいる。このため、代表点の動きベクトルの丸め込み誤差の影響は、画像内の点において増幅されることはない。なお、この例では代表点が構成する２個の三角形は相似となっているが、必ずしもそうである必要はない。
【００６１】
【発明の効果】
本発明により、グローバル動き補償の予測画像合成処理における除算の処理をシフト演算で代用することが可能となり、ソフトウェアや専用ハードウェアによる処理を簡略化することが可能となる。
【図面の簡単な説明】
【図１】Ｈ.２６１の画像符号化器の構成例を示した図である。
【図２】Ｈ.２６１の画像復号化器の構成例を示した図である。
【図３】代表点の動きベクトルを伝送するグローバル動き補償の例を示した図である。
【図４】グローバル動き補償の予測画像に対してブロックマッチングを行う画像符号化器の動き補償処理部を示した図である。
【図５】ブロックごとにグローバル動き補償とブロックマッチングを選択する画像符号化器の動き補償処理部を示した図である。
【図６】高速な処理を行うための代表点の配置の例を示した図である。
【図７】画像内において、外挿によって動きベクトルを求める領域を示した図である。
【図８】画像内のすべての画素の動きベクトルが、代表点の動きベクトルからの内挿によって求められる場合を示した図である。
【図９】画像を２個の直角３角形に分割し、それぞれに対して代表点の動きベクトルからの内挿によるグローバル動き補償を適用した例を示した図である。
【符号の説明】
１００…画像符号化器、１０１…入力画像、１０２…減算器、１０３…誤差画像、１０４…ＤＣＴ変換器、１０５…ＤＣＴ係数量子化器、１０６，２０１…量子化ＤＣＴ係数、１０８，２０４…ＤＣＴ係数逆量子化器、１０９，２０５…逆ＤＣＴ変換器、１１０，２０６…復号誤差画像、１１１，２０７…加算器、１１２…現フレームの復号画像、１１３，２１５…フレーム間／フレーム内符号化切り換えスイッチの出力画像、１１４，２０９…フレームメモリ、１１５，２１０…前フレームの復号画像、１１６，４０５，５０５…ブロックマッチング部、１１７，２１２…現フレームの予測画像、１１８，２１３…「０」信号、１１９，２１４…フレーム間／フレーム内符号化切り換えスイッチ、１２０，２０２，４０６，５０７…動きベクトル情報、１２１，２０３…フレーム間／フレーム内識別フラグ、１２２，４０７，５１０…多重化器、１２３…伝送ビットストリーム、２００…画像復号化器、２０８…出力画像、２１１…予測画像合成部、２１６…分離器、３０１…参照画像、３０２…現フレームの原画像、３０３，３０４，３０５，６０２，６０３，６０４，７０２，７０３，７０４，７０５，８０２，８０３，８０４，８０５，９０２，９０４，９０６，９０７…代表点、３０６，３０７，３０８…代表点の動きベクトル、４０１，５０１…グローバル動き補償を行う動き補償処理部、４０２，５０２…グローバル動き補償部、４０３，５０４…動きパラメータ、４０４，５０３…グローバル動き補償の予測画像、５０６…ブロックマッチングによる予測画像、５０８…ブロックマッチング／グローバル動き補償切り換えスイッチ、５０９…ブロックマッチング／グローバル動き補償の選択情報、６０１，７０１，８０１，９０１…グローバル動き補償の対象となる画像、７０６…代表点が囲む長方形、９０３，９０８…画像の隅の点と代表点を兼用する点、９０９，９１０…画像の隅の点。
【図１】
0003777998.tif 000020
【図２】
0003777998.tif 000021
【図３】
0003777998.tif 000022
【図４】
0003777998.tif 000023
【図５】
0003777998.tif 000024
【図６】
0003777998.tif 000025
【図７】
0003777998.tif 000026
【図８】
0003777998.tif 000027
【図９】
0003777998.tif 000028