本発明を実施する好適な動画像符号化装置及び動画像復号化装置について説明する。図2は本発明の実施例に係る動画像符号化装置100の構成を示すブロック図である。動画像符号化装置100は、画像メモリ101、動きベクトル検出部102、動きベクトル予測部103、インター予測情報検出部104、動き補償予測部105、マージ検出部106、予測方法決定部107、スイッチ108、第1の符号化ビット列生成部109、残差信号生成部110、直交変換・量子化部111、逆量子化・逆直交変換部112、復号画像信号重畳部113、符号化情報格納メモリ114、復号画像メモリ115、第2の符号化ビット列生成部116及び符号化ビット列多重化部117を備える。尚、各ブロック間を結ぶ太実線の矢印はピクチャの画像信号、細実線の矢印は符号化を制御するパラメータ信号の流れを表すものである。
画像メモリ101は、撮影/表示時間順に供給された符号化対象の画像信号を一時格納する。画像メモリ101は、格納された符号化対象の画像信号を、所定の画素ブロック単位で、動きベクトル検出部102、予測方法決定部107及び残差信号生成部110に供給する。その際、撮影/表示時間順に格納された画像は、符号化順序に並べ替えられて、画素ブロック単位で、画像メモリ101から出力される。
動きベクトル検出部102は、画像メモリ101から供給される画像信号と復号画像メモリ115から供給される復号画像(参照ピクチャ)間でブロックマッチング等により、各予測ブロックサイズ、予測モードごとの動きベクトルを予測ブロック単位で検出し、検出された動きベクトルを動き補償予測部105、動きベクトル予測部103及び予測方法決定部107に供給する。ここで、予測モードは図3(a)に示されるように大別されており、図3(a)、(b)中の片方向予測或いは双予測モードの動きベクトルが検出される。予測モードは後述するシンタックスの定義にて説明する。
動きベクトル予測部103は、予測モードが動き検出モードの場合にインター予測情報検出部104にて出力される符号化情報の動きベクトルを予測動きベクトルとして、動きベクトル検出部102が検出した動きベクトルと当該予測動きベクトルから差分動きベクトルを算出し、算出された差分動きベクトルを予測方法決定部107に供給する。更に、選択された予測動きベクトルを特定するインデックスを予測方法決定部107に供給する。動きベクトル予測部103の詳細な構成と動作は後述する。
インター予測情報検出部104は、処理対象の予測ブロックが参照する同一ピクチャ上で処理対象の予測ブロックの周辺に隣接する符号化済みの予測ブロック、或いは時間が異なる別ピクチャの中で処理対象の予測ブロックと同一位置のブロック周辺に隣接する予測ブロックの符号化情報を符号化情報格納メモリ114から取得する。符号化情報格納メモリ114に記憶されている既に符号化された周辺の隣接ブロック、或いは時間が異なる別ピクチャの隣接ブロックの符号化情報のうち、処理対象の予測ブロックの位置情報から、複数の参照先候補の隣接ブロックの符号化情報を検出し、参照先として選択される隣接ブロックの符号化情報とその隣接ブロックを特定するインデックスを、スイッチ108に入力される動画像符号化装置100により制御される予測モードで切り換えて供給する。インター予測情報検出部104の詳細な構成と動作は後述する。
動き補償予測部105は、動きベクトル検出部102により検出された動きベクトル或いはインター予測情報検出部104により検出された参照先として選択される隣接ブロックの符号化情報を用いて、参照ピクチャから動き補償予測により予測画像信号を生成し、当該予測画像信号を予測方法決定部107に供給する。尚、双予測の場合は、主に前方向の予測として使われるL0予測、主に後方向の予測として使われるL1予測の2つの動き補償予測画像信号に適応的に重み係数を掛け算して重畳し、最終的な予測画像信号を生成する。この重み付け係数は、スライス単位或いは予測ブロック単位で設定される。
マージ検出部106は、予測モードがマージモードの場合にインター予測情報検出部104にて取得される処理対象の予測ブロックが参照する隣接ブロック(以下、参照隣接ブロックという)の符号化情報を、処理対象の予測ブロックの符号化情報として利用する為に、隣接ブロックを優先して参照する順位に並び換えて参照候補リストに登録する。マージ検出部106は、当該参照候補リストの中に登録された符号化情報を処理対象の予測ブロックの符号化情報として検出し、検出された符号化情報の動きベクトル、参照ピクチャ番号、参照リスト等を動き補償予測部105に供給する。更に、マージ検出部106は、検出された符号化情報を備える参照隣接ブロックを特定するインデックスを予測方法決定部107に供給する。マージ検出部106の詳細な構成と動作は後述する。
予測方法決定部107は、参照隣接ブロックの符号化情報、隣接ブロックを特定するインデックスの符号量、動き補償予測信号と画像信号との間の歪量等を評価することにより、複数の予測方法の中から、最適な予測ブロックサイズ、分割モード(PartMode)、予測モード(PredMode)等を含む予測方法を決定する。予測方法決定部107は、決定された予測方法を示す情報及び決定された予測方法に応じた差分動きベクトル等を含む符号化情報を第1の符号化ビット列生成部109に供給する。尚、予測ブロックサイズ、分割モード及び予測モードの詳細については後述する。
スイッチ108は、動画像符号化装置100により制御される予測モードに応じて、インター予測情報検出部104により検出された参照先として選択される隣接ブロックの符号化情報を動きベクトル予測部103或いはマージ検出部106との間で切り換えて供給する。更に、スイッチ108は、決定された予測方法を示す情報及び決定された予測方法に応じた動きベクトル等を含む符号化情報を符号化情報格納メモリ114に格納し、決定された予測モードに応じた動き補償予測画像信号を残差信号生成部110及び復号画像信号重畳部113に与える。
残差信号生成部110は、符号化する画像信号と予測信号との引き算を行い残差信号を生成し、直交変換・量子化部111に与える。直交変換・量子化部111は、残差信号に対して直交変換及び量子化を行い直交変換・量子化された残差信号を生成し、第2の符号化ビット列生成部116と逆量子化・逆直交変換部112に供給する。
第1の符号化ビット列生成部109は、予測方法決定部107によって決定された予測方法情報及び当該予測方法情報に応じた差分動きベクトルに関する情報を、規定のシンタックス規則に従って符号化して第1の符号化ビット列を生成し、符号化ビット列多重化部117に供給する。
尚、必要に応じて予測方法決定部107から供給される重み付け予測の重み付けパラメータ、インターレース符号化の際のフレーム/フィールド予測を識別するフラグ、量子化の量子化パラメータ、残差信号を符号化したか否かを示すフラグ、直交変換の手法を識別するフラグ、残差信号の符号化順序を識別するフラグ、デブロッキングフィルタ等のポストフィルタの情報等の、符号化情報の予測値と実際に用いる値との差分が第1の符号化ビット列生成部109に供給され、符号化される。更に、残差信号の符号化順序を識別するフラグ等の、予測された符号化情報を符号化情報格納メモリ114に格納する。
第2の符号化ビット列生成部116は、直交変換及び量子化された残差信号を規定のシンタックス規則に従ってエントロピー符号化して第2の符号化ビット列を生成し、符号化ビット列多重化部117に供給する。符号化ビット列多重化部117は、第1の符号化ビット列と第2の符号化ビット列を規定のシンタックス規則に従って多重化し、ビットストリームを出力する。
逆量子化・逆直交変換部112は、直交変換・量子化部111から供給された直交変換・量子化された残差信号を逆量子化及び逆直交変換して残差信号を算出し、復号画像信号重畳部113に供給する。復号画像信号重畳部113は、予測方法決定部107による決定に応じた予測信号と、逆量子化・逆直交変換部112で逆量子化及び逆直交変換された残差信号を重畳して復号画像を生成し、復号画像メモリ115に格納する。尚、復号画像に対して符号化によるブロック歪等の歪を減少させるフィルタリング処理を施して、復号画像メモリ115に格納されることもある。その場合、必要に応じてデブロッキングフィルタ等のポストフィルタの情報を識別するフラグ等の、予測された符号化情報を符号化情報格納メモリ114に格納する。
図4は図2の動画像符号化装置100に対応した実施例における動画像復号装置200の構成を示すブロック図である。当該動画像復号装置200は、ビット列分離部201、第1の符号化ビット列復号部202、第2の符号化ビット列復号部203、動きベクトル算出部204、インター予測情報検出部205、マージ判定部206、動き補償予測部207、逆量子化・逆直交変換部208、復号画像信号重畳部209、符号化情報格納メモリ210、復号画像メモリ211及びスイッチ212を備える。尚、図2の動画像符号化装置100と同様に、各ブロック間を結ぶ太実線の矢印はピクチャの画像信号、細実線の矢印は符号化を制御するパラメータ信号の流れを表すものである。
図4の動画像復号装置200の復号処理は、図2の動画像符号化装置100の内部に設けられている復号処理に対応するものであるから、図4の動き補償予測部207、逆量子化・逆直交変換部208、復号画像信号重畳部209、符号化情報格納メモリ210及び復号画像メモリ211の各構成は、図2の動画像符号化装置100の動き補償予測部105、逆量子化・逆直交変換部112、復号画像信号重畳部113、符号化情報格納メモリ114及び復号画像メモリ115の各構成とそれぞれ対応する機能を有する。
ビット列分離部201に供給されるビットストリームは、規定のシンタックスの規則に従って分離され、分離された符号化ビット列が第1の符号化ビット列復号部202及び第2の符号化ビット列復号部203に供給される。
第1の符号化ビット列復号部202は、供給された符号化ビット列を復号して予測モード、動きベクトル等に関する符号化情報を出力し、符号化情報を動きベクトル算出部204またはインター予測情報検出部205と、動き補償予測部207に与えるとともに符号化情報格納メモリ210に格納する。
第2の符号化ビット列復号部203は、供給された符号化ビット列を復号して直交変換・量子化された残差信号を算出し、直交変換・量子化された残差信号を逆量子化・逆直交変換部208に与える。
動きベクトル算出部204は、予測モードが動き検出モードの場合にインター予測情報検出部205にて判定され、出力される符号化情報の動きベクトルを予測動きベクトルとして、第1の符号化ビット列復号部202で復号された差分ベクトル及び当該予測動きベクトルから動きベクトルを算出し、当該動きベクトルを動き補償予測部207に供給するとともに、符号化情報格納メモリ210に供給する。
インター予測情報検出部205は、処理対象の予測ブロックが参照する同一ピクチャ上で処理対象の予測ブロックの周辺に隣接する復号済みの予測ブロック、或いは時間が異なる別ピクチャの中で処理対象の予測ブロックと同一位置のブロック周辺に隣接する予測ブロックの符号化情報を符号化情報格納メモリ210から取得する。符号化情報格納メモリ210に記憶されている既に復号された周辺の隣接ブロック、或いは時間が異なる別ピクチャの隣接ブロックの符号化情報のうち、処理対象の予測ブロックの位置情報から、複数の参照先候補の隣接ブロックの符号化情報を検出し、参照先として選択される隣接ブロックの符号化情報とその隣接ブロックを特定するインデックスを、スイッチ212に入力される動画像復号装置200により復号された予測モードで切り換えて供給する。インター予測情報検出部205の詳細な構成と動作は後述する。
マージ判定部206は、予測モードがマージモードの場合にインター予測情報検出部205にて取得される処理対象の予測ブロックが参照隣接ブロックの符号化情報を、処理対象の予測ブロックの符号化情報として利用する為に、隣接ブロックを優先して参照する順位に並び換えて参照候補リストに登録する。マージ判定部206は、当該参照候補リストの中から第1の符号化ビット列復号部202で復号された参照隣接ブロックを特定するインデックスで指定される隣接ブロックを検出し、その符号化情報を動き補償予測部207に供給するとともに、符号化情報格納メモリ210に供給する。マージ判定部206の詳細な構成と動作は後述する。
動き補償予測部207は、動きベクトル算出部204で算出された動きベクトル或いはマージ判定部206により検出された参照先として選択される隣接ブロックの符号化情報を用いて、参照ピクチャから動き補償予測により予測画像信号を生成し、予測画像信号を復号画像信号重畳部209に供給する。尚、双予測の場合は、L0予測、L1予測の2つの動き補償予測画像信号に適応的に重み係数を掛け算して重畳し、最終的な予測画像信号を生成する。
逆量子化・逆直交変換部208は、第1の符号化ビット列復号部202で復号された直交変換・量子化された残差信号に対して逆直交変換及び逆量子化を行い、逆直交変換・逆量子化された残差信号を得る。
復号画像信号重畳部209は、動き補償予測部207で動き補償予測された予測画像信号と、逆量子化・逆直交変換部208により逆直交変換・逆量子化された残差信号とを重畳することにより、復号画像信号を復号し、復号画像メモリ211に格納する。復号画像メモリ211に格納する際には、復号画像に対して符号化によるブロック歪等を減少させるフィルタリング処理を施して、復号画像メモリ211に格納されることもある。
スイッチ212は、第1の符号化ビット列復号部202で復号された予測モードに応じて、インター予測情報検出部205により検出された参照先として選択される隣接ブロックの符号化情報を動きベクトル算出部204或いはマージ判定部206との間で切り換えて供給する。
以下の実施例では、動画像符号化装置100のインター予測情報検出部104及び動画像復号装置200のインター予測情報検出部205の中で共通に実施される動きベクトルの予測方法とマージ手法とで参照する周辺の隣接ブロックの配置を統合し、その中から参照隣接ブロックを選出する方法の詳細について説明する。
本発明における実施例で参照隣接ブロックの選出方法を説明する前に、本実施例にて使用する用語を定義する
(本発明にて使用する用語の定義)
・符号化ブロックの定義
本実施例では、図5に示されるように、画面内を同一サイズの正方の矩形ブロックにて均等分割される。このブロックを符号化ブロックと呼び、符号化及び復号化を行う際の処理の基本とする。符号化ブロックは画面内のテクスチャに応じて、符号化処理を最適にすべく、符号化ブロック内を4分割して、ブロックサイズの小さい符号化ブロックにすることが出来る。図5で示される画面内を均等サイズで分割される符号化ブロックを最大符号化ブロックと呼び、その内部を符号化条件に応じて4分割したものを総じて符号化ブロックとする。符号化ブロックをこれ以上4分割出来ない最小のサイズとなる符号化ブロックを最小符号化ブロックと呼ぶこととする。
・予測ブロックの定義
画面内をブロックに分割して動き補償を行う場合、動き補償のブロックサイズをより小さくした方が、よりきめ細かい予測を行うことが出来ることから、いくつかのブロックサイズの中から最適なものを選択して、動き補償を行う仕組みを取り入れている。この動き補償を行うブロックを予測ブロックと呼ぶ。予測ブロックは符号化ブロックの内部を分割する場合に使用され、動き補償に応じて、符号化ブロック内部を分割せず1ブロックとみなす場合を最大とし、水平或いは垂直方向に2分割したもの、水平と垂直の均等分割により4分割したものに分けられる。分割方法に応じて、分割タイプに対応した分割モード(PartMode)が定義されており、図6に示される。図7(a)〜(d)中の矩形内部の番号は分割された予測ブロックの番号を表す。最小符号化ブロック内部において、予測ブロックを管理する為に、0から開始する番号が予測ブロックに対して上から下、左から右の順に割り当てられる。
以上のように、符号化ブロックを動き検出・補償を行う場合、動き検出・補償の単位としては、符号化ブロック自身のサイズ、符号化ブロックを2分割或いは4分割した個々の小ブロック、更に4分割した個々の小ブロックを符号化ブロックとして同様に分割することで予測ブロックの最小サイズまで再帰的に得られるサイズのブロックとなる。以下の説明では、特に断らない限り動き検出・補償を行う単位は形状、サイズに関わらず"予測ブロック"とする。
(参照リスト)
次に、参照リストについて説明する。符号化及び復号の際には、参照リストLX毎の参照インデックスから参照ピクチャ番号を指定して参照する。L0とL1の2つが用意されていて、Xには0或いは1が入る。参照リストL0に登録されている参照ピクチャを参照するインター予測をL0予測(Pred_L0)と呼び、参照リストL1に登録されている参照ピクチャを参照する動き補償予測をL1予測(Pred_L1)と呼ぶ。主としてL0予測は前方向予測に、L1予測は後方向予測として使用され、PスライスではL0予測のみ、BスライスではL0予測、L1予測及びL0予測とL1予測を平均または重み付け加算する双予測が使用出来る。以降の処理において出力に添え字LXが付いている値に対しては、L0予測、L1予測ごとに処理を行うことを前提とする。
(符号化情報の記録)
次に、動き検出・補償により検出される動きベクトル等の符号化情報の記録について説明する。ここで、符号化情報は、動きベクトルをはじめ、参照リスト、参照リストに登録されている参照ピクチャを示す参照ピクチャ番号、予測モード等、符号化に使用された情報から構成される。予測ブロック単位に動き検出・補償が行われるが、検出された動きベクトル等の符号化情報は、予測ブロック単位で記録せず、上述した最小予測ブロック単位で記録する。即ち、予測ブロック内部を構成する複数の最小予測ブロックに同一の符号化情報を記録するようにする。
予測ブロックのサイズは符号化条件によって変わるので、予測ブロック単位に符号化情報格納メモリ114、210に記録するには、検出された動きベクトルの他に予測ブロックのピクチャ上での位置、予測ブロックの形状等の付加情報が必要になり、符号化情報を取得する為のアクセスが複雑化する。その為、情報の重複記録による冗長度はあるが、均一な最小予測ブロック単位に分割し、記録する方がアクセスが容易である。
図8はピクチャを最小予測ブロックで分割した一例であり、この図を用いて符号化情報格納メモリ114、210に記録される符号化情報の保存形式を説明する。図8中のwはピクチャの幅、hはピクチャの高さを表す。最小予測ブロックの幅及び高さをpとすると、横方向にw/p個、縦方向にh/p個の最小予測ブロックでピクチャは構成されることになり、この1つ1つの最小予測ブロックに対応する符号化情報が図8中の太実線で表されるラスタスキャン順に符号化情報格納メモリ114、210に記録される。
ここで、図8中の太線で囲まれた矩形領域を予測ブロック(図8中のハッチングで示される領域)とする。予測ブロックでは動き検出により動きベクトル等の符号化情報が検出される。検出された符号化情報は、予測ブロックの中を構成する最小予測ブロックに対応する符号化情報格納メモリ114、210に記録される。符号化情報格納メモリ114、210の符号化情報の記録領域の先頭アドレスを図8中の左上を原点とすると、予測ブロックの先頭位置は図6中の黒丸で示される。予測ブロックの先頭位置が最小予測ブロック単位で原点から右にx個、下にy個の位置にあるとすると、予測ブロックの先頭アドレスはw/p×y+xで表される。その先頭位置の最小予測ブロックから、ハッチングで示される予測ブロック内の最小予測ブロックに対応する符号化情報格納メモリ114、210内の記憶領域に予測ブロックの符号化情報を記録していく。このようにして、予測ブロックの中の最小予測ブロックに対応する符号化情報格納メモリ114、210の記録領域に、同じ符号化情報を記録する。
次に、本発明の実施例における、参照隣接ブロックの選出方法を備える動画像符号化装置により符号化される動画像のビットストリームのシンタックスについて説明する。
(シンタックスの定義)
上述した図3(a)は予測モードにより符号化を大別したものである。画像間予測(Interモード)の場合、まずマージ手法を使用するか否かでマージモードと非マージモードに分けられる。非マージモードはブロックマッチング等の動きベクトルの検出を実際に行うモードであり、動き検出モードと言い換えることが出来る。マージモードは更にskipモードと非skipモードに分けられる。skipモードは参照隣接ブロックの符号化情報により予測された予測画像信号を復号画像とするので、画像残差信号は0となる。従って、skipモードは符号化伝送を必要とせず、符号化情報の参照先を表すインデックスのみを符号化伝送するモードである。skipモードの符号化情報はマージモードと同様であり、ここでは画像残差信号を符号化伝送する場合をマージモードと限定することにする。Interモードの符号化の対象となる信号を分類した表を図3(b)に示す。skipモードでは、他のモードとは異なり、画像残差信号の符号化伝送を必要としない為、図3(a)の予測モードの分岐順に判定を行うよりも、先にskipモードの判定を行う方がモード判定に使用されるフラグの符号量を抑えることが出来る。
上述した図6はスライスの中の予測ブロック単位に記述されるシンタックスパターンを示す。まず、skipモードか否かを示すフラグskip_flagが設置される。skip_flagが真(1)で、更に参照隣接ブロックの候補の総数NumMergeCandが1つを超える場合、skipモードが適用され、符号化情報を参照隣接ブロックの候補リストであるマージリストのインデックスのシンタックス要素merge_idxが設置される。NumMergeCandが1の場合は、その1つが参照隣接ブロックとなるので、merge_idxを伝送せずとも参照隣接ブロックの候補が確定する。
次に、予測ブロックの予測モードが画像間予測(Interモード)の場合、マージモードか否かを示すフラグmerge_flagが設置される。merge_flagが真(1)で、更に参照隣接ブロックの候補の総数NumMergeCandが1つを超える場合、マージモードが適用され、符号化情報を参照隣接ブロックの候補リストであるマージリストのインデックスのシンタックス要素merge_idxが設置される。NumMergeCandが1の場合は、その1つが参照隣接ブロックとなるので、merge_idxを伝送せずとも参照隣接ブロックの候補が確定する。
merge_flagが偽(0)の場合、マージモードを適用せず、通常の動きベクトル検出を行い、動きベクトルや参照ピクチャ番号等の符号化情報を伝送する(動き検出モードに該当する)。予測ブロック毎に、予測ブロックの属するスライスのスライスタイプにより、符号化及び復号の際に使用する参照リストを選択する。スライスタイプslice_typeが"B"の場合、片方向予測或いは双予測を示すフラグinter_pred_flagを設定する。
inter_pred_flagはPred_L0(L0予測)、Pred_L1(L1予測)或いはPred_BI(双予測)に設定する。inter_pred_flagに基づいて、参照リストLX(X=0或いは1)を設定する。設定された参照リストごとに動きベクトル検出にて求められた、参照ピクチャ番号を表すシンタックス要素ref_idx_lX、及び動きベクトルと予測ブロックの周囲の隣接ブロックの予測動きベクトルとの差分動きベクトルのシンタックス要素mvd_lX[i]が設置される。ここで、Xは0或いは1で参照リストを示し、iは差分動きベクトルの成分を表し、i=0はx成分を、i=1はy成分を表す。
次に、予測動きベクトルの候補の総数NumMvpCand(LX)が1つを超える場合に、参照する予測動きベクトルの候補リストであるMVPリストのインデックスのシンタックス要素mvp_idx_lXが設置される。NumMvpCand(LX)は、参照リストLX(Xは0或いは1)で予測ブロックの予測動きベクトルの候補の総数を算出する関数を表す。また、動きベクトルの予測方法により予測動きベクトルの候補の総数NumMvpCand(LX)が1つの場合に、インデックスmvp_idx_lXは設置されす、符号化されない。予測動きベクトルの候補の総数が1つであれば、その1つが予測動きベクトルとなるので、mvp_idx_lXを伝送せずとも参照する予測動きベクトルの候補が確定する為である。以上のシンタックスに基づいて、動画像のビットストリームの符号化及び復号が可能となる。
次に、動き検出モードにおける参照する予測動きベクトルを備える周囲の隣接ブロック、或いはマージモードにおける符号化情報の参照先となる周囲の隣接ブロックの配置の一例を図9(a)、(b)に示す。図9(a)、(b)では、処理対象となる予測ブロックに対して、隣接するブロックを最小予測ブロックで表している。
この構成は、符号化情報格納メモリ114、210に記録された既に符号化済みの符号化情報に対して、処理対象の予測ブロックの位置と大きさ(ブロックの幅及び高さ)に基づいてアクセスする場合に都合が良い。図9(a)、(b)で示される周囲の隣接ブロックについて、処理対象の予測ブロックの左側に隣接するブロックを記号"A"で表し、上側に隣接するブロックを"B"で表す。添え字の数字は位置を表す。
ブロック"T"は時間が異なる別のピクチャの同一位置に隣接するブロックの一例である。本発明の実施例では処理対象の予測ブロックに対して別ピクチャの右下に設定することとする。尚、処理対象の予測ブロックの位置によって、ブロックTがピクチャ外となる場合は、処理対象の予測ブロックに対して別ピクチャの中央付近の最小予測ブロックの位置とする。図9(a)は同一ピクチャ上の空間にある隣接ブロックで、5つの候補とし、時間が異なる別ピクチャにある候補と合わせて6つの候補から構成される。図9(b)は同一ピクチャ上の空間にある隣接ブロックで、4つの候補とし、時間が異なる別ピクチャにある候補と合わせて5つの候補から構成される。
図1のように隣接する全てのブロックを候補としてもよいが、例えば、処理対象の予測ブロックのサイズが64×64画素で、符号化情報格納メモリ114、210に符号化情報が記憶されるブロックのサイズを4×4画素とすると、処理対象の予測ブロックに隣接するブロックは左側で16個、上側で16個、更にコーナーで3個のブロックが参照先となる隣接ブロックとなる。ハードウェアで実装する場合、想定出来得る最大のメモリアクセス回数、メモリ量、及び処理量(処理時間)を考慮する必要がある。
本発明の実施例においては、図9(a)に示すように、左側に隣接するブロック、上側に隣接するブロックをそれぞれ1つに限定することにより参照する候補を絞り、左斜め下側、右斜め上側及び左斜め上側に隣接するブロックを候補として加えている。また、図9(b)では、左側に隣接するブロック、上側に隣接するブロックをそれぞれ図9(a)とは異なる1つに限定することにより参照する候補を絞り、左斜め下側及び右斜め上側に隣接するブロックを候補としている。
このように、予め候補を限定することで、本発明の実施例では符号化効率を殆ど低下させることなく、メモリアクセス回数、メモリ量、及び処理量(処理時間)を削減する効果がある。また、後述する実施例3以降ではメモリアクセス回数、メモリ量、及び処理量(処理時間)を削減することが出来る上に、マージインデックス、MVPインデックスの符号量を削減することが出来るので、発生符号量を削減する効果もある。また、本発明の実施例ではマージモードと動き検出モードでは、候補の位置を共通化することにより、更なるメモリアクセス回数、メモリ量、及び処理量(処理時間)の削減を図っている。
以下では、図9(a)の配置例を使用して説明を行うものとする。図9(b)の配置例を使用する場合は、以下の説明においてC0を省略することで、図9(a)の配置例と同様の処理を行うことができる。尚、参照隣接ブロックの配置は、動画像符号化装置100及び動画像復号装置200にて矛盾が生じない限り、どのような構成をとってもよい。また、参照隣接ブロックの符号化情報は、動画像符号化装置100で既に符号化済み、動画像復号装置200で既に復号済みの情報とし、符号化情報格納メモリ114、210に記憶出来る限り、どのような情報でも良いこととする。
図10は、動画像符号化装置100の構成を示す図2及び動画像復号装置200の構成を示す図4の中に設置される実施例1のインター予測情報検出部104、205の詳細を示すものである。図10中の太点線で囲まれる部分はインター予測情報検出部104、205を示しており、この図を用いて説明する。インター予測情報検出部104、205は、処理対象ブロック位置検出部301、隣接ブロック指定部302及び一時メモリ303を含む。マージモードと動き検出モードの両方のモードで、候補の位置を図9(a)の配置に共通化し、図9(a)の配置の隣接ブロックの符号化情報を符号化情報格納メモリ114、210から取得する手順を説明する。
最初に、処理対象の予測ブロックのピクチャ内での位置とサイズの情報が処理対象ブロック位置検出部301に入力される。処理対象の予測ブロックの位置は、ピクチャの左上の画素を原点とし、処理対象の予測ブロックの左上の画素までの水平及び垂直方向の画素単位の距離で表される。更に、処理対象の符号化ブロックの分割モードを表すPartModeと符号化ブロックが再帰的に分割された回数により、処理対象の予測ブロックの幅と高さが算出され、処理対象の予測ブロックが参照する参照隣接ブロックの位置が算出される。
算出された隣接ブロックの位置に基づいて、隣接ブロック指定部302は符号化情報格納メモリ114、210にアクセスして、その中から図9(a)に示される隣接ブロックの位置に該当する符号化情報を一時メモリ303に読み込む。一時メモリ303は、インター予測情報検出部104、205内部に設けられ、処理対象の予測ブロックが参照する参照隣接ブロックの符号化情報を記憶するメモリである。ここで、算出された隣接ブロックの位置が画面外となる場合は、当該隣接ブロックは存在しないので、"0"を一時メモリ303に記録することとする。
以上のように、マージモードと動き検出モードの両方のモードで候補の位置を共通化することで、符号化側では隣接ブロックの符号化情報の一時メモリ303への格納処理量が削減される。また、予測モード毎に予測方法を変更して、その度に必要な隣接ブロックの符号化情報を取得する為に、符号化情報格納メモリ114にアクセスする必要が無くなる。一方、復号側ではマージモードと動き検出モードの判別を行う前に、隣接ブロックの符号化情報の一時メモリ303への格納処理を開始することが可能となるので、復号処理の速度を向上することが出来る。
本発明の実施例に係る符号化情報の選出方法を備える動画像符号化装置100及び動画像復号装置200では、処理対象の予測ブロックの動きベクトルや参照ピクチャ番号等の符号化情報をそのまま符号化するのではなく、符号化情報格納メモリ114、210に格納された、既に符号化/復号済みの周囲の隣接ブロックの符号化情報を参照、利用する。そして、参照隣接ブロックの位置を示すインデックスや動きベクトルを予測する予測動きベクトルのインデックスを符号化することで、符号化情報にかかる符号量の削減が実現される。以下では、インター予測情報検出部104、205により取得された隣接ブロックの符号化情報から、符号化過程で参照隣接ブロックの位置を示すインデックスや動きベクトルを予測する予測動きベクトルのインデックスを導出する手法と、符号化過程に対応する復号過程で復号された参照隣接ブロックの位置を示すインデックスや動きベクトルを予測する予測動きベクトルのインデックスに基づいて、符号化情報を取得する手法の具体的な実施例を示すこととする。
(実施例1)
まず、動画像符号化装置100の構成を示す図2の中に設置される実施例1のマージ検出部106について説明する。図11はマージ検出部106の詳細な構成を示すものである。図11中の太点線で囲まれる部分はマージ検出部106を示しており、この図を用いて説明する。マージ検出部106は、符号化情報導出部310、参照候補リスト作成部311、同一情報検出部312、出力部313及び参照候補リスト格納メモリ314を含む。
最初に、スイッチ108に入力される動画像符号化装置100により制御される予測モードにより、インター予測情報検出部104の出力先がマージ検出部106に切り換えられる。インター予測情報検出部104の内部の一時メモリ303に記憶された処理対象の予測ブロックが参照する参照隣接ブロックの符号化情報が符号化情報導出部310に入力される。
符号化情報導出部310の動作を図12のフローチャートを用いて説明する。最初に入力された隣接ブロックの中から処理対象の予測ブロックと同じピクチャにある隣接ブロックの符号化情報が有効か否かを判定し、導出する(S100)。
図13に処理対象の予測ブロックと同じピクチャにある隣接ブロック毎の判定処理の詳細な流れを示す。まず、変数Nを初期化する(S200)。変数Nには図9(a)に示される同一のピクチャ上にある隣接ブロックA1,B1,B0,A0,C0が設定される。ここで、初期化時にはN=A1に設定することとし、変数Nの更新はB1,B0,A0,C0の順で行うこととする。
次に、以降の判定で使用する隣接ブロックの符号化情報を格納しておく変数を初期化する。ここで、変数は隣接ブロックが有効か否かを示すフラグavailableFlagN、動きベクトルmvLXN、参照ピクチャ番号refIdxLXN及び参照リストの有効性を示すフラグpredFlagLXNであり、次のように初期化される(S201)。
availableFlagN=0
mvLXN=(0,0)
refIdxLXN=0
predFlagLXN=0
ここで、添え字Xには参照リストを表す0若しくは1が設定される。変数Nの隣接ブロック(以下、隣接ブロックNとする)の位置及び符号化情報を取得する(S202)。
取得された隣接ブロックNの位置に基づいて、隣接ブロックNが有効か否かを判定する(S203)。例えば、処理対象の予測ブロックがピクチャ左端に位置する場合、処理対象の予測ブロックの左の隣接ブロックは存在しないので、符号化情報格納メモリ114の中に該当する符号化情報は無いことになり、無効と判定される。隣接ブロックNが無効の場合(S203のN)、availableFlagNを"0"に設定する(S207)。隣接ブロックNが有効の場合(S203のY)、隣接ブロックNの予測モードが画面内符号化(Intra)モードか否かを判定する(S204)。
隣接ブロックNの予測モードがIntraモードの場合(S204のY)、availableFlagNを"0"に設定する(S207)。隣接ブロックNの予測モードがIntraモードでない場合(S204のN)、availableFlagNを"1"に設定する(S205)。続いて、隣接ブロックNの符号化情報を、refIdxLXN、mvLXN及びpredFlagLXNに代入して設定する(S206)。
以上のようにして、隣接ブロックNに対する判定処理が終了すると、変数Nが隣接ブロックの最後か否かの判定を実施する(S208)。変数Nの更新はA1,B1,B0,A0,C0の順に行われるので、ここではNがC0か否かの判定を行う。NがC0であれば(S208のY)、全ての隣接ブロックに対して判定をしたことになり、処理を終了する。NがC0でない場合(S208のN)、Nの更新を行う(S209)。上述した隣接ブロックの順番にNを更新して、ステップS201以降の処理を隣接ブロックNについて繰り返す。以上のようにして、処理対象の予測ブロックと同一ピクチャ上に存在する周囲の隣接ブロックを参照ブロックとして、その符号化情報が導出される。
続いて、図12に戻り、時間が異なる別のピクチャをマージ候補とする場合の処理対象の予測ブロックの参照ピクチャ番号を決定する(S101)。この処理は、次に説明する、時間が異なる別のピクチャの同一位置に隣接するブロックの動きベクトルを参照して処理対象の予測ブロックがインター予測する際の参照ピクチャを決定する為に行われる。その際、既に符号化済みの隣接ブロックの符号化情報から処理対象の予測ブロックが参照するピクチャの参照ピクチャ番号を決定する。ここでは、前の処理(S100)にて導出された同一のピクチャ上の隣接ブロックの符号化情報に基づく手法を図14を用いて説明する。
まず、ステップS100により導出された4つの隣接ブロックを3つのグループに分類する。グループとしては、処理対象の予測ブロックの左辺に接する隣接ブロックをグループA、上辺に接する隣接ブロックをグループB、及びコーナーで接する隣接ブロックをグループCとして、それぞれのグループで判定を行う。
まず、グループAについて図14(a)を用いて説明する。グループAに属する隣接ブロックはA1であるので、ステップS100でのA1が有効か否かを示すフラグavailableFlagA1を調べる(S300)。availableFlagA1が1であれば(S300のY)、グループAの参照ピクチャ番号refIdxLXAをA1の参照ピクチャ番号に設定する。そうでなければ(S300のN)、refIdxLXAを参照ピクチャ番号が無いことを示す−1に設定する。
同様にして、グループBについて図14(b)を用いて説明する。グループBに属する隣接ブロックはB1であるので、ステップS100でのB1が有効か否かを示すフラグavailableFlagB1を調べる(S301)。availableFlagB1が1であれば(S301のY)、グループBの参照ピクチャ番号refIdxLXBをB1の参照ピクチャ番号に設定する。そうでなければ(S301のN)、refIdxLXBを−1に設定する。
グループCに属する隣接ブロックはA0、B0とC0であり、図14(c)に示されるように、B0、A0、C0の順に判定を行う。A1、B1と同様にB0のフラグavailableFlagB0を調べる(S302)。availableFlagB0が1であれば(S302のY)、グループCの参照ピクチャ番号refIdxLXCをB0の参照ピクチャ番号に設定し、そうでなければ(S302のN)、A0のフラグavailableFlagA0を調べる(S303)。availableFlagA0が1であれば(S303のY)、グループCの参照ピクチャ番号refIdxLXCをA0の参照ピクチャ番号に設定する。そうでなければ(S303のN)、C0のフラグavailableFlagC0を調べる(S304)。availableFlagC0が1であれば(S304のY)、グループCの参照ピクチャ番号refIdxLXCをC0の参照ピクチャ番号に設定する。そうでなければ(S304のN)、refIdxLXCを−1に設定する。
尚、図9(b)に示される同一のピクチャ上にある隣接ブロックのように、C0の位置のブロックが無い場合は、B0とA0の2つの隣接ブロックに対して判定を行うこととする。こうして導出された各グループの参照ピクチャ番号refIdxLXN(NはA,B或いはC)の多数決或いは最小値を選択することで時間が異なる別のピクチャの同一位置に隣接するブロックの参照ピクチャ番号を決定する。
図15に参照ピクチャ番号refIdxLXNに基づく判定を示す。図15の上から順に説明する。1〜4行目はrefIdxLXNに同じ値が存在する場合であり、多数決により選択する。1行目はrefIdxLXNが全て同じ場合であり、−1であれば0を、そうでなければrefIdxLXAの値とする。2〜4行目は3つのrefIdxLXNのうち2つが同じ場合であり、2つが同じ場合の値が−1なら残りの1つのrefIdxLXNの値を、そうでなければ2つが同じ場合の値とする。
5〜8行目はrefIdxLXNに同じ値が存在しない場合であり、その中から最小値を選択する。3つの中から−1となっているrefIdxLXNを除き、最小の参照ピクチャ番号の値を選択する。以上のようにして、処理対象の予測ブロックの参照ピクチャ番号が決定されるが、この手法以外の手法を用いても構わない。
図12に戻り、次に、時間が異なる別のピクチャの同一位置に隣接するブロックの符号化情報が有効か否かを判定し、導出する(S102)。図16に処理対象の予測ブロックと別のピクチャにある隣接ブロックの判定処理の詳細な流れを示す。最初に処理対象の予測ブロックを含むピクチャとは時間が異なる別のピクチャを指定する(S400)。処理対象の予測ブロックを含むスライスがPスライスの場合、L0予測のみ使用出来るので、L0の参照リストの中の参照ピクチャ番号0で示されるピクチャを指定する。Bスライスの場合、L0予測、L1予測の一方及びL0,L1の双予測が使用可能であるが、L0或いはL1のどちらか一方の参照リストの参照ピクチャ番号0で示されるピクチャを指定する。ここでは、Bスライスの場合の時間が異なる別のピクチャの指定について言及しないが、例えばスライスヘッダー内に、Bスライスの場合にどちらの参照リストを参照するかを予め決めておくパラメータを挿入する等の手法も考えられる。
続いて、参照する時間が異なる別のピクチャの同一位置に隣接するブロックの位置を指定する(S401)。実施例1では、図9(a)で示される参照隣接ブロック"T"を時間が異なる別のピクチャの同一位置に隣接するブロックとしているので、処理対象の予測ブロックの位置と分割モードを表すPartModeと分割回数により、処理対象の予測ブロックの幅と高さが算出され、隣接ブロック"T"の位置が算出される。算出された隣接ブロックの位置がピクチャ外となる場合は、時間が異なる別のピクチャにおいて、処理対象の予測ブロックと同一位置の中央付近の位置とする。以下の説明では、時間が異なる別のピクチャをcolピクチャ、そのピクチャの処理対象のブロックの同一位置に隣接するブロックをcolブロックとし、その動きベクトルや参照ピクチャ番号には添え字として"Col"を付けて表すこととする。
colピクチャとその中の処理対象の予測ブロックと同一位置に隣接するブロックcolブロックの位置に基づいて、colブロックの符号化情報を符号化情報格納メモリ114にアクセスして読み込み、符号化情報が有効か否かを判定し、動きベクトルを導出する(S402)。
図17はそれらの導出の詳細な処理を示し、この図を用いて説明する。符号化情報格納メモリ114から読み込まれたcolブロックの符号化情報と位置からcolブロックが有効か否かを判定する(S500)。colブロックが存在しない、或いはcolブロックの予測モードがIntraの場合(S500のY)、colブロックの基準動きベクトルmvColを(0,0)、基準有効フラグavailableFlagColを0に設定し(S501)、ステップS509に進む。そうでない場合(S500のN)、colブロックのL0参照リストの有効性を示すフラグpredFlagL0の判定に進む(S502)。
predFlagL0が0の場合(S502のY)、L0予測が無効なので、L1予測の符号化情報を選択し、mvColをmvL1、基準参照ピクチャ番号refIdxColをrefIdxL1に設定し(S503)、ステップS507に進む。そうでない場合(S502のN)、即ちL0予測が有効な場合、colブロックのL1参照リストの有効性を示すフラグpredFlagL1の判定に進む(S504)。
predFlagL1が0の場合(S504のY)、L1予測が無効なので、L0予測の符号化情報を選択し、mvColをmvL0、refIdxColをrefIdxL0に設定し(S505)、ステップS507に進む。そうでない場合(S504のN)、即ちL0及びL1予測とも有効な場合、Pred_BIモードの場合の導出に進む(S506)。Pred_BIモードの場合の導出では、L0予測或いはL1予測のどちらか一方を選択する。
選択方法は、例えばステップS500にて選択したcolピクチャと同じ参照リストを選択する、colブロックのL0予測、L1予測のそれぞれの参照ピクチャでcolピクチャとの画像間距離が近い方を選択する、或いはcolブロックのL0予測、L1予測のそれぞれの動きベクトルが処理対象のピクチャと交差する方を選択する等が挙げられる。
3つ目の判定基準の一例を図18に示す。この例では、処理対象のピクチャがcolブロックの動きベクトルと交差する場合、即ち、colピクチャの参照ピクチャ、処理対象のピクチャ、colピクチャの時間順に表示され、colブロックに相当するブロックは必ず処理対象のピクチャ内部に存在することになり、微小時間内で周辺領域の動きを評価する上では、交差する側の予測を選択する方が動きベクトル予測において近い値が得られる信頼性が高いことになる。その為、処理対象のピクチャと交差する動きベクトルの参照リスト側を選択し、mvCol及びrefIdxColを設定する。
図17に戻り、次に、動きベクトルが存在することから、基準有効フラグavailableFlagColを1に設定する(S507)。参照リストを示す変数Xを0に設定して(S508)、colブロックのL0及びL1予測の動きベクトルを導出する。上述の過程で求められた基準動きベクトルmvColと基準参照ピクチャ番号refIdxColから参照ピクチャの位置を指定し、colピクチャとの画像間距離colDistを算出する。
一方、ステップS401にて決定された処理対象の予測ブロックの参照ピクチャ番号refIdxLXから参照ピクチャの位置を指定し、処理対象のピクチャとの画像間距離currDistを算出する。currDistとcolDistの比較を行う(S509)。currDistとcolDistが同じ場合(S509のOK)、基準動きベクトルmvColをそのままmvLXColとする(S510)。
currDistとcolDistが異なる場合(S509のNG)、スケーリングによる距離換算を施す。スケーリングは隣接ブロックの参照するピクチャの画像間距離を、処理対象の予測ブロックが参照するピクチャとの画像間距離に合わせて、隣接ブロックの動きベクトルを距離換算して、処理対象の予測ブロックの動きベクトルとする処理である。図18にスケーリングの一例を示す。colピクチャ上のcolブロックと処理対象の予測ブロックのそれぞれ参照するピクチャとの画像間距離がcolDist、currDistであることから、colブロックの動きベクトルmvColを次式により処理対象の予測ブロックの画像間距離に合わせて、動きベクトルが算出される(S511)。
・・・(式1)
Xが1か否かを判定する(S512)。Xが1でない、即ち0の場合(S512のN)、L1予測の方向についても同様の手順で算出する。その為、Xを1に更新して(S513)、ステップS509以降を繰り返す。Xが1の場合(S512のY)、処理を終了する。
こうして得られた隣接ブロックの符号化情報は参照候補リスト作成部311に入力される。実施例1では、参照候補リスト格納メモリ314に参照隣接ブロックの符号化情報の候補を登録する記憶領域として参照候補リストを設ける。そして、当該参照隣接ブロックの符号化情報の候補に優先順位をつけて、優先順位の高いものから参照候補リストに、当該参照隣接ブロックの符号化情報の候補を登録する。これにより、参照候補リストのインデックスmerge_idxの符号量を削減することが可能となる。
参照候補リスト中の各要素の位置の高い要素を参照候補リストの前方に配置することで、符号量を削減する。優先順位を示すインデックスmerge_idxは0から昇順に割り当てる。例えば、参照候補リストの要素が3個の場合、参照候補リストのインデックス0を"0"(2進数表記)、インデックス1を"10"(2進数表記)、インデックス2を"11"(2進数表記)とすることで、インデックス0を表す符号量が1ビットとなり、インデックス0に発生頻度が高いと考えられる要素を登録することで、符号量を削減する。
参照候補リスト格納メモリ314に設けられる参照候補リストは、リスト構造を成し、参照候補リスト内部の所在を示すインデックスと、インデックスに対応する参照隣接ブロックの符号化情報の候補を要素として格納する配列領域が設けられる。この配列領域はcandListで表される。インデックスの数字は0から開始され、参照候補リストcandListの記憶領域に、参照隣接ブロックの符号化情報の候補が格納される。以降の処理では、参照候補リストcandListに登録されたインデックスiの符号化情報は、candList[i]で表すこととし、参照候補リストcandListとは配列表記をすることで区別することとする。尚、参照候補リストの記憶領域に格納される符号化情報は、特に断らない限り、参照隣接ブロックの位置名(A0,A1,B0,B1,C0,T)で表すこととする。
参照候補リスト作成部311の動作を図19のフローチャートを用いて説明する。まず、変数Nと参照候補リストのインデックスkを初期化する(S600)。変数Nには図9(a)に示される隣接ブロックA1が初期設定され、kは0に設定される。インデックスkは参照候補リストの記憶領域に設定される符号化情報の候補の格納領域の優先順位を示す。
次に、参照隣接ブロックNの有効フラグavailableFlagNの判定が行われる(S601)。availableFlagNが1の場合(S601のY)、隣接ブロックNの符号化情報を参照候補リストcandList[k]に登録し(S602)、kを更新する(S603)。availableFlagNが0の場合(S601のN)、参照候補リストには登録せず、次に進む。
隣接ブロックNが最後の参照ブロックか否かを判定する(S604)。最後のブロックである場合(S604のY)、インデックスの値を候補リスト総数NumListCandに設定した後(S605)、処理を終了する。最後のブロックで無い場合(S604のN)、変数Nを更新して(S606)、ステップS601以降の処理を繰り返す。
ここで、変数Nを更新する隣接ブロックの順番が参照候補リストに格納する優先順位となっており、実施例1では、マージモードの場合、順番(A1,B1,B0,A0,C0,T)を設定することとする。優先順位の上位にあるものほど参照候補リストの前方に録し、参照候補リスト中のマージ候補を特定するマージインデックスに短い符号長の符号が割り当てられる。
マージモードの場合は、処理対象の予測ブロックの辺と、符号化情報が最も等しい可能性が高いと考えられる処理対象の予測ブロックの辺とが接している隣接ブロックA1及びB1を優先して参照候補リストの前方に登録する。これにより、マージインデックスの符号量を削減し、符号化効率を向上させる。
以上の処理により、参照候補リストに登録された、参照隣接ブロックが全て有効であれば、図20に示される順番で参照候補リストが作成される。優先順位をインデックスとして、各符号語は参照候補リストの右列で表され、最大符号語長はNumListCand−1となる。図20の場合、NumListCandは6であり、符号語は最大5ビットで表される。参照隣接ブロックが1つだけ有効となる場合、最大符号語長は0となるので、インデックスは必要とせず、1つだけ有効と判定された隣接ブロックの符号化情報の候補が参照先として一意に決定されることになる。
作成された参照候補リストは同一情報検出部312に入力される。同一情報検出部312では、参照候補リストの中に格納された符号化情報の候補を比較して、同じ符号化情報の候補が存在する場合、最も小さい参照候補リストのインデックスを持つ符号化情報の候補を除いて全て削除される。図21で示されるフローチャートを用いて動作を説明する。
まず、参照候補リストのインデックスを表す変数nとmをそれぞれ0と1に設定する(S700)。参照候補リストに格納されているインデックスnとmの符号化情報を比較する(S701)。ここで、比較する符号化情報は、予測モード、使用されている参照リスト、使用されている参照リスト毎の参照ピクチャ番号、及び使用されている参照リスト毎の動きベクトルである。不一致と判定された場合(S701のN)、ステップS704に進む。一致と判定された場合(S701のY)、nとmでインデックスの大きい方、即ちmが既に削除リストに記録されているか判定する(S702)。
mが削除リストに既に記録されている場合(S702のY)、ステップS704に進む。未だ記録されていない場合(S702のN)、mを削除リストに記録する(S703)。削除リストは、同一情報検出部312内に設けられた一時記憶用のメモリである。
次に、mに1を加算して、更新する(S704)。mと候補リスト総数NumListCandの比較を行う(S705)。mがNumListCandでない場合(S705のN)、ステップS701以降のインデックスnの符号化情報との比較を繰り返す。mがNumListCandになった場合(S705のY)はnに1を加算して、更新する(S706)。
次に、nと(NumListCand−1)との比較を行う(S707)。nが(NumListCand−1)でない場合(S707のN)、mを(n+1)に設定して(S709)、ステップS701以降の符号化情報の比較を繰り返す。nが(NumListCand−1)になった場合(S707のY)、削除リストに記録されたインデックスに該当するリストの格納領域の符号化情報を削除して、インデックス0を基準に、インデックスが小さい候補の順で詰めていき、符号語と参照候補リストの総数NumListCandを更新して(S708)、終了する。
最後に、出力部313が作成された参照候補リストの中のインデックスと符号化情報を出力する。参照候補リストは、参照候補リストをマージリストとして、リストの中のインデックスをマージインデックスとして出力する。動画像符号化装置100では、動き補償予測部105と予測方法決定部107に出力される。
上述した動画像符号化装置100の中に設置される実施例1のマージ検出部106に対応する、動画像復号装置200の中に設置される実施例1のマージ判定部206について説明する。図22はマージ判定部206の詳細な構成を示すものである。図22中の太点線で囲まれる部分はマージ判定部206を示している。マージ判定部206は、符号化情報導出部310、参照候補リスト作成部311、同一情報検出部312、参照候補リスト格納メモリ314及び選択部を含む。
マージ判定部206は動画像符号化装置100のマージ検出部106と対応しており、内部の構成は選択部315と出力部313が異なるだけで、それ以外の符号化情報導出部310、参照候補リスト作成部311、同一情報検出部312及び参照候補リスト格納メモリ314は同一の機能を備える。従って、同一情報検出部312までの処理で符号化過程と同一の参照候補リストが作成されることになる。
以下では、作成された参照候補リストから、マージモードにおける参照隣接ブロックの符号化情報を取得する選択部315について説明する。選択部315は、作成された参照候補リストの中から、第1の符号化ビット列復号部202で復号された参照隣接ブロックを特定するインデックスで指定される参照候補リストの隣接ブロックを選択する。選択された符号化情報を動き補償予測部207に供給するとともに、符号化情報格納メモリ210に供給する。
次に、動画像符号化装置100の構成を示す図2の中に設置される実施例1の動きベクトル予測部103について説明する。図23は動きベクトル予測部103の詳細な構成を示すものである。図23中の太点線で囲まれる部分は動きベクトル予測部103を示しており、この図を用いて説明する。動きベクトル予測部103は、符号化情報導出部320、参照候補リスト作成部321、同一情報検出部322、出力部323、参照候補リスト格納メモリ324及び差分動きベクトル算出部326を含む。
インター予測情報検出部104の内部の一時メモリ303に記憶された処理対象の予測ブロックが参照する参照隣接ブロックの符号化情報が符号化情報導出部320に入力される。符号化情報導出部320の動作を図24のフローチャートを用いて説明する。
最初に入力された隣接ブロックの中から処理対象の予測ブロックと同じピクチャにある隣接ブロックの符号化情報が有効か否かを判定し、導出する(S800)。図25に処理対象の予測ブロックと同じピクチャにある隣接ブロック毎の判定処理の詳細な流れを示す。尚、図25の判定処理はL0,L1のリスト毎に独立して行う。
処理対象の予測ブロックの予測モードに応じて、片方向予測でL0予測の場合は参照リストL0に登録されている符号化情報だけを、片方向予測でL1予測の場合は参照リストL1に登録されている符号化情報だけを、双予測の場合は参照リストL0,L1に登録されているそれぞれの符号化情報の判定処理を行う。本明細書では、特に注釈をしない限り、動き検出モード時の判定処理は参照候補リストの一方をLXとして説明することとし、図で示す参照候補リストも1つだけ挙げることにする。
まず、変数Nを初期化する(S900)。変数Nには図9(a)に示される同一のピクチャ上にある隣接ブロックA1,B1,B0,A0,C0が設定される。ここで、初期化時にはN=A1に設定することとし、変数Nの更新はB1,B0,A0,C0の順で行うこととする。
次に、以降の判定で使用する隣接ブロックの符号化情報を格納しておく変数を初期化する。ここで、変数は隣接ブロックが有効か否かを示すフラグavailableFlagLXN、動きベクトルmvLXN、参照ピクチャ番号refIdxLXN及び参照リストの有効性を示すフラグpredFlagLXNであり、次のように初期化される(S901)。
availableFlagLXN=0
mvLXN=(0,0)
refIdxLXN=0
predFlagLXN=0
ここで、添え字Xには参照リストを表す0若しくは1が設定される。変数Nの隣接ブロック(以下、隣接ブロックNとする)の位置及び符号化情報を取得する(S902)。
取得された隣接ブロックNの位置に基づいて、隣接ブロックNが有効か否かを判定する(S903)。例えば、処理対象の予測ブロックがピクチャ左端に位置する場合、処理対象の予測ブロックの左の隣接ブロックは存在しないので、符号化情報格納メモリ114の中に該当する符号化情報は無いことになり、無効と判定される。
隣接ブロックNが無効の場合(S903のN)、availableFlagLXNを"0"に設定する(S908)。隣接ブロックNが有効の場合(S903のY)、隣接ブロックNの予測モードが画面内符号化(Intra)モードか否かを判定する(S904)。
隣接ブロックNの予測モードがIntraモードの場合(S904のY)、availableFlagLXNを"0"に設定する(S908)。隣接ブロックNの予測モードがIntraモードでない場合(S904のN)、処理対象の予測ブロックの算出対象の予測と同じ参照リストで同じ参照ピクチャ番号を用いた予測が隣接ブロックNでも行われているかどうかを判定する(S905)。
行われていない場合(S905のN)、availableFlagLXNを"0"に設定する(S908)。行われている場合(S905のY)、availableFlagLXNを"1"に設定する(S906)。続いて、隣接ブロックNの動きベクトルの値をmvLXNに代入して設定する(S907)。
以上のようにして、隣接ブロックNに対する判定処理が終了すると、変数Nが隣接ブロックの最後か否かの判定を実施する(S909)。変数Nの更新はA1,B1,B0,A0,C0の順に行われるので、ここではNがC0か否かの判定を行う。NがC0であれば(S909のY)、全ての隣接ブロックに対して判定をしたことになり、処理を終了する。NがC0でない場合(S909のN)、Nの更新を行う(S910)。上述した隣接ブロックの順番にNを更新して、ステップS901以降の処理を隣接ブロックNについて繰り返す。
尚、実施例1では、ステップS905にて処理対象の予測ブロックの算出対象の予測と同じ参照リストで同じ参照ピクチャ番号を用いた予測が隣接ブロックNでも行われているかどうかの判定を行った。これは、同一の参照ピクチャ番号及び参照リストの条件であれば、近接している処理対象の予測ブロックと隣接ブロックNの動きベクトルが同一または近い値になる確率が高いので、動きベクトルの差分値が小さくなり、符号化効率を向上させることになる。
しかしながら、必ずしも同一ピクチャ上に同じ参照ピクチャ番号及び参照リストを用いた予測を行う隣接ブロックが存在するとは限らず、存在しない場合は、動きベクトルの差分値を算出することができず、符号化効率を低下させることになる。そこで、ステップS905の同一の参照リスト及び参照ピクチャ番号の条件で判定を狭めずに、隣接ブロックで行われている予測が、次の条件を満たす場合においても、隣接ブロックが有効か否かを示すフラグavailableFlagLXNを1(有効)とし、参照隣接ブロックの候補として、その符号化情報を導出する。
条件1:同じ参照リストで、同じ参照ピクチャ番号
条件2:異なる参照リストで、同じ参照ピクチャ番号
条件3:同じ参照リストで、異なる参照ピクチャ番号
条件4:異なる参照リストで、異なる参照ピクチャ番号
この場合の処理の流れを図26に示す。図26が図25と異なるのは、図25のステップS905の条件1のみの条件判定を削除した点、ステップS911の条件1から4の条件判定を行い、条件1または2を満たさない場合は動きベクトルのスケーリング処理(S912)を追加した点である。それ以外のステップS900からステップS910は図25の説明と同等であるので、以下では、変更・追加された箇所について説明する。
隣接ブロックNの予測モードがIntraモードでない場合(S904のN)、availableFlagLXNを"1"に設定する(S906)。続いて、処理対象の予測ブロックの算出対象の予測の符号化情報と隣接ブロックNの符号化情報を比較することで条件1から4を判定する(S911)。条件1または条件2を満たす場合には、隣接ブロックNの同じ参照リスト(条件1に合致した場合)あるいは異なる参照リスト(条件2に合致した場合)の動きベクトルの値をmvLXNに代入して設定する(S907)。
条件3または条件4を満たす場合、同じ参照リスト(条件3に合致した場合)あるいは異なる参照リスト(条件4に合致した場合)の隣接ブロックNの動きベクトルのスケーリング処理が実施される(S912)。動き検出モードでは、処理対象の予測ブロックの動きベクトルをより少ない符号量で伝送する為に、動きベクトル予測が行われる。動きベクトル予測は、処理対象の予測ブロックの動きベクトルと隣接ブロックの動きベクトルとの差分をとり、その差分値を符号化する処理である。その際、それぞれ参照するピクチャが異なると動きベクトルの大きさに影響を及ぼし、差分値が実際の処理対象の予測ブロックの動きベクトルよりも大きくなってしまうことがある。
そこで、隣接ブロックの参照するピクチャの画像間距離を、処理対象の予測ブロックが参照するピクチャとの画像間距離に合わせて、隣接ブロックの動きベクトルを距離換算するスケーリングが実施される。図27にスケーリングの一例を示す。処理対象の予測ブロックに対して、動きベクトル検出部102で動きベクトル検出が行われ、処理対象の予測ブロックの動きベクトル、参照ピクチャ番号及び参照リストが検出される。
一方、処理対象のピクチャ上の隣接ブロックは自身の符号化情報が既知であるので、それぞれの参照ピクチャ番号から参照するピクチャを選出する。処理対象のピクチャ上の隣接ブロックと処理対象の予測ブロックのそれぞれ参照するピクチャとの画像間距離td、tbが算出され、隣接ブロックNの同じ参照リストLXの動きベクトルmvLX(条件3に合致した場合)、または異なる参照リストLY(X=0のときY=1、X=1のときY=0)の動きベクトルmvLY(条件4に合致した場合)を次式により処理対象の予測ブロックの画像間距離に合わせるべく距離換算される。
・・・(式2)
図26に戻り、こうして、換算された動きベクトルmvLXまたはmvLYをmvLXNに代入して設定する(S907)。このスケーリング処理を実施することで、処理対象の予測ブロックに対して、より近い予測動きベクトルを導出して精度向上を図ることが出来る。以上のようにして、処理対象の予測ブロックと同一ピクチャ上に存在する周囲の隣接ブロックを参照ブロックとして、その符号化情報が導出される。
図24に戻り、次に、時間が異なる別のピクチャの同一位置に隣接するブロックの符号化情報が有効か否かを判定し、導出する(S801)。この処理は、マージ検出部106における符号化情報導出部310のステップS103の処理と基本的に同等である。マージモードの場合、マージ検出部106における符号化情報導出部310では、ステップS103の処理を行う前に、処理対象の予測ブロックの参照ピクチャ番号の導出(S102)を行っていた。
これに対して、動き検出モードの場合、処理対象の予測ブロックに対して、動きベクトル検出部102で動きベクトル検出が行われ、処理対象の予測ブロックの動きベクトル、参照ピクチャ番号及び参照リストが検出される。これら検出された処理対象の予測ブロックの符号化情報と既知である時間が異なる別のピクチャの同一位置に隣接するブロックの符号化情報から、それぞれの参照ピクチャ番号から参照するピクチャを選出し、処理対象の予測ブロックとその参照ピクチャとの画像間距離に、時間が異なる別のピクチャの同一位置に隣接するブロックの動きベクトルを換算して算出する。
こうして得られた隣接ブロックの符号化情報は参照候補リスト作成部321に入力される。参照候補リスト作成部321で作成される参照候補リストは、処理対象の予測ブロックのInterモードに応じて、L0予測及びL1予測の2つの参照リストに対してそれぞれ参照候補リストが作成される。Interモードでは片方向予測としてL0予測とL1予測、双予測としてBi−pred予測が定義されており、Bi−pred予測ではL0予測及びL1予測の2つの参照リストを使用する。従って、符号化時の予測モードに応じて、参照候補リスト格納メモリ314に1つないし2つの参照候補リストを設けるようにしてもよいし、予めL0予測とL1予測2つ分の参照候補リストを設けておいてもよい。本明細書では、特に注釈をしない限り、動き検出モード時の参照候補リストは説明の都合上1つだけを挙げて説明することとし、図で示す参照候補リストも1つだけ挙げることにする。
実施例1では、参照候補リスト格納メモリ324に、参照隣接ブロックの符号化情報の候補を登録する記憶領域として参照候補リストを設ける。当該参照隣接ブロックの符号化情報の候補に優先順位をつけて、優先順位の高いものから参照候補リスト格納メモリ324に、当該参照隣接ブロックの符号化情報の候補を登録する。これにより、参照候補リストのインデックスmvp_idx_l0及びmvp_idx_l1の符号量を削減することが可能となる。
優先順位の高い要素を参照候補リストの前方に配置することで、符号量を削減する。参照候補リスト中の各要素の位置を示すインデックスは0から昇順に割り当てる。参照候補リスト格納メモリ324に設けられる参照候補リストは、リスト構造を成し、参照候補リスト内部の所在を示すインデックスと、インデックスに対応する参照隣接ブロックの符号化情報の候補を要素として格納する配列領域が設けられる。
この配列領域はcandListLXで表される。インデックスの数字は0から開始され、参照候補リストcandListLXの記憶領域に、参照隣接ブロックの符号化情報の候補が格納される。以降の処理では、参照候補リストcandListLXに登録されたインデックスiの符号化情報は、candListLX[i]で表すこととし、参照候補リストcandListLXとは配列表記をすることで区別することとする。尚、参照候補リストの記憶領域に格納される符号化情報は、特に断らない限り、参照隣接ブロックの位置名(A0,A1,B0,B1,C0,T)で表すこととする。
参照候補リスト作成部321の動作は、マージ検出部106の参照候補リスト作成部311と同等であり、符号化情報導出部320にて得られた隣接ブロックが有効か否かを示すフラグavailableFlagLXNを、動き検出モードで定義された順番A1,B1,A0,B0,C0,Tに判定し、1(有効)である場合、参照候補リスト格納メモリ324に設けた参照候補リストに登録する。
以上の処理により、参照候補リストに登録され、参照隣接ブロックが全て有効であれば、図20に示される順番で参照候補リストが作成される。優先順位をインデックスとして、各符号語は参照候補リストの右列で表され、最大符号語長はNumListCand−1となる。図20の場合、NumListCandは6であり、符号語は最大5ビットで表される。参照隣接ブロックが1つだけ有効となる場合、最大符号語長は0となるので、符号語は必要とせず、1つだけ有効と判定された隣接ブロックの符号化情報の候補が参照先として一意に決定されることになる。
作成された参照候補リストは同一情報検出部322に入力される。同一情報検出部322では、参照候補リストの中に格納された動きベクトルを比較して、同じ動きベクトルを備える候補が存在する場合、最も小さい参照候補リストのインデックスを持つ候補を除いて全て削除される。図29で示されるフローチャートを用いて動作を説明する。
まず、参照候補リストのインデックスを表す変数nとmをそれぞれ0と1に設定する(S1000)。参照候補リストに格納されているインデックスnとmの動きベクトルを比較する(S1001)。不一致と判定された場合(S1001のN)、ステップS1004に進む。一致と判定された場合(S1001のY)、nとmでインデックスの大きい方、即ちmが既に削除リストに記録されているか判定する(S1002)。
mが削除リストに既に記録されている場合(S1002のY)、ステップS1004に進む。未だ記録されていない場合(S1002のN)、mを削除リストに記録する(S1003)。削除リストは、同一情報検出部322内に設けられた一時記憶用のメモリである。
次に、mに1を加算して、更新する(S1004)。mと候補リスト総数NumListCandの比較を行う(S1005)。mがNumListCandでない場合(S1005のN)、ステップS1001以降のインデックスnの動きベクトルとの比較を繰り返す。mがNumListCandになった場合(S1005のY)、nに1を加算して、更新する(S1006)。
次にnと(NumListCand−1)との比較を行う(S1007)。nが(NumListCand−1)でない場合(S1007のN)、mを(n+1)に設定して(S1009)、ステップS1001以降の動きベクトルの比較を繰り返す。nが(NumListCand−1)になった場合(S1007のY)、削除リストに記録されたインデックスに該当するリストの格納領域の符号化情報を削除して、インデックス0を基準に、インデックスが小さい候補の順で詰めていき、符号語と参照候補リストの総数NumListCandを更新して(S1008)、終了する。
差分動きベクトル算出部326は、こうして作成された参照候補リストの中の符号化情報の動きベクトルを予測動きベクトルとして、動きベクトル検出部102が検出した動きベクトルと予測動きベクトルから差分動きベクトルを算出し、算出された差分動きベクトルを出力部323に供給する。
最後に、出力部323が、作成された参照候補リストの中のインデックスと差分動きベクトルを出力する。参照候補リストは、参照候補リストをMVPリストとして、リストの中のインデックスをMVPインデックスとして出力する。動画像符号化装置100では、予測方法決定部107に出力される。
上述した動画像符号化装置100の中に設置される実施例1の動きベクトル予測部103に対応する、動画像復号装置200の中に設置される実施例1の動きベクトル算出部204について説明する。図30は動きベクトル算出部204の詳細な構成を示すものである。図30中の太点線で囲まれる部分は動きベクトル算出部204を示している。動きベクトル算出部204は、符号化情報導出部320、参照候補リスト作成部321、同一情報検出部322、参照候補リスト格納メモリ324、選択部325及び動きベクトル加算部327を含む。
動きベクトル算出部204は、動画像符号化装置100の動きベクトル予測部103と対応しており、内部の構成は選択部325と出力部323及び動きベクトル加算部327が異なるだけで、それ以外の符号化情報導出部320、参照候補リスト作成部321、同一情報検出部322及び参照候補リスト格納メモリ324は同一の機能を備える。従って、同一情報検出部322までの処理で符号化過程と同一の参照候補リストが作成されることになる。
以下では、作成された参照候補リストから、動き検出モードにおける参照隣接ブロックの符号化情報を取得する選択部325について説明する。選択部325は、作成された参照候補リストの中から、第1の符号化ビット列復号部202で復号された参照隣接ブロックを特定するインデックスで指定される参照候補リストの隣接ブロックを選択する。選択されたリストの隣接ブロックの符号化情報から動きベクトルを予測動きベクトルとして出力し、動きベクトル加算部327にて予測動きベクトルと第1の符号化ビット列復号部202で復号された差分動きベクトルとを加算して動きベクトルを算出する。当該動きベクトルを動き補償予測部207に供給するとともに、選択された参照候補リストの隣接ブロックの符号化情報を符号化情報格納メモリ210に供給する。
(実施例2)
図31(a)、(b)に実施例2における処理対象の予測ブロックに対する参照隣接ブロックの配置を示す。各隣接ブロックの記号は、図9(a)、(b)と同様であり、ここでは図31(a)の配置例を使用して説明を行うものとする。実施例2は、処理対象の予測ブロックと同一のピクチャ上にある隣接ブロックを、左側に隣接するブロック群(図31(a)ではA0とA1)、上側に隣接するブロック群(図31(a)ではB0、B1とC0)にグループ化して、それぞれのブロック群の中から、ブロック群の代表値として参照隣接ブロックを1つ選択する。
選択の方法として、隣接ブロックの符号化情報の予測モード及び位置に基づいて、隣接ブロックが有効か否かを判定することは実施例1、2で同様であるが、ブロック群単位に1つずつ代表する隣接ブロックを選出する点が異なる。このように、複数の隣接ブロックから成るブロック群の中から、そのブロック群を代表する隣接ブロックを選出する方法をスキャンと呼ぶ。このスキャンにより、左側に隣接するブロック群を代表する隣接ブロック、上側に隣接するブロック群を代表する隣接ブロック及び時間が異なる別のピクチャの同一位置に隣接するブロックの3つの隣接ブロックが参照候補リストに登録されることになる。
従って、参照候補リストに登録する隣接ブロックの総数を実施例1に比べて削減することが出来、同一情報検出部312での符号化情報の比較回数、及び同一情報検出部322での動きベクトルの比較回数を削減することができる。更に、参照候補リストのインデックスに割り当てる符号語長が短くなり、参照候補リストのインデックスの符号量を削減することが出来る。更に、左側及び上側に隣接するブロック群の中の隣接ブロックの処理順番を予測モードに応じて変更することで、予測モードに適した隣接ブロックの選択が可能となり、符号化効率の改善が期待出来る。
処理順番は予測モードがマージモードの場合、マージ検出部106及びマージ判定部206は図31(a)、(b)中の細点線矢印の如く左側に隣接するブロック群は上から下に、上側に隣接するブロック群は左上の隣接ブロックC0を最後の順としてB1,B0,C0の順で処理を行う。動き検出モードの場合、動きベクトル予測部103及び動きベクトル算出部204は図31(a)、(b)中の細実線矢印の如く左側に隣接するブロック群は下から上に、上側に隣接するブロック群は右から左の順で処理を行う。
マージモードでは、処理対象の予測ブロックと符号化情報が最も等しい可能性が高いと考えられる隣接ブロックA1,B1を優先して判定処理して選択することで、符号化効率を向上させる。一方、動き検出モードでは、予測動きベクトルの選択の幅を広げるために、左側と上側の隣接ブロックの候補間で符号化情報の差が出やすくなるように、左側と上側の候補間の距離が離れた隣接ブロックA0,B0を優先して判定処理して選択する。これにより、差分動きベクトルの符号量を削減し、符号化効率を向上させる。
以下では、実施例1とは異なる実施例2の動作についてのみ詳細に説明する。まず、動画像符号化装置100の中のマージ検出部106の動作について説明する。マージ検出部106は実施例1で説明した図11と同じ構成をなすが、符号化情報導出部310の処理が実施例1とは異なるので、実施例2における符号化情報導出部310の動作について説明する。図32は実施例2における符号化情報導出部310の動作を示すフローチャートである。
最初に、スイッチ108に入力される動画像符号化装置100により制御される予測モードにより、インター予測情報検出部104の出力先がマージ検出部106に切り換えられ、インター予測情報検出部104の内部の一時メモリ303に記憶された、処理対象の予測ブロックが参照する参照隣接ブロックの符号化情報が符号化情報導出部310に入力される。
入力された隣接ブロックの中から処理対象の予測ブロックと同じピクチャにある隣接ブロックの符号化情報が有効か否かを判定し、導出する(S103)。図33に処理対象の予測ブロックと同じピクチャにある隣接ブロック毎の判定処理の詳細な流れを示す。実施例1の図13で示されるフローチャートに対して、ステップS210、ステップS211、ステップS212、ステップS213及びステップS214が新たに追加された処理であり、それ以外は実施例1と同等であるので、ここでは追加された処理のみの詳細を説明する。
まず、ブロック群Mを初期化する(S210)。ここでは、左側に隣接するブロック群に設定することとし、Mには左側のブロック群を示す値であるAが設定される。次に、ブロック群の中の変数Nを初期化する(S200)。変数Nは上述したブロック群内の処理順に応じて設定され、Nの更新時には左側のブロック群でA1,A0、上側でB1,B0,C0の順に更新されることとする。
図33中のステップS201からステップS209までの処理は基本的に実施例1の図13と同様であるが、隣接ブロックNの予測モードが画面内符号化(Intra)モードか否かを判定し(S204)、隣接ブロックNの予測モードがIntraモードでない場合(S204のN)以降の処理が実施例1と異なる。
隣接ブロックNの予測モードが画面内符号化(Intra)モードか否かを判定し(S204)、隣接ブロックNの予測モードがIntraモードでない場合(S204のN)、Mが左側のブロック群か否かの判定に進み(S211)、Mが左側のブロック群である場合(S211のY)、availableFlagMを"1"に設定し(S205)、隣接ブロックNの符号化情報をrefIdxLXM、mvLXM及びpredFlagLXMに代入して設定する(S206)。Mが上側のブロック群である場合にのみ(S211のN)、左側のブロック群で選択された隣接ブロックの符号化情報と隣接ブロックNの符号化情報が同じであるか否かを判定する(S212)。
最初に左側のブロック群を代表する隣接ブロックを選択しているので、その符号化情報を保持しておき、上側のブロック群の判定に使用する。この処理により、左側のブロック群を代表する隣接ブロックの符号化情報と重複することが無くなるので、参照先として選択肢の幅が広がる。尚、処理量の削減のために、ステップS211及びステップS212の処理を省略して、直接ステップS205に進むことも出来る。
左側のブロック群で選択された隣接ブロックの符号化情報と隣接ブロックNの符号化情報が異なるか左側のブロック群で選択された隣接ブロックの符号化情報が存在しない場合(S212のN)、availableFlagMを"1"に設定し(S205)、隣接ブロックNの符号化情報をrefIdxLXM、mvLXM及びpredFlagLXMに代入して設定する(S206)。
次に、ブロック群Mの符号化情報が設定された後、次のブロック群、即ち上側に隣接するブロック群について処理を行う為に、変数Mが上側のブロック群を示す値であるBか否か判定する(S213)。MがB(上側)でなければ(S213のN)、MをB(上側)に更新して(S214)、ステップS200以降の処理を繰り返す。Mが上側であれば(S213のY)、処理を終了する。
隣接ブロックNが有効でない場合(S203のN)、隣接ブロックNの予測モードが画面内符号化(Intra)モードでない場合(S204のY)、左側のブロック群で選択された隣接ブロックの符号化情報と隣接ブロックNの符号化情報が同じ場合(S212のY)、availableFlagMを"0"に設定し(S207)、隣接ブロックNがブロック群M内の隣接ブロックの最後か否かの判定を実施する(S208)。
変数Nの更新は上述したブロック群内の処理順に応じて設定され、ここではNがA0(左側のブロック群の場合)或いはC0(上側のブロック群の場合)か否かの判定を行う。隣接ブロックNが最後のブロックであれば(S208のY)、ブロック群Mの判定に進み(S213)、そうでなければ(S208のN)、変数Nをブロック群内の処理順に応じて更新し(S209)、ステップS201以降の処理を繰り返す。以上のようにして、処理対象の予測ブロックと同一ピクチャ上に存在するブロック群の隣接ブロックを代表する参照ブロックとして、その符号化情報が導出される。
図32に戻り、続いて、時間が異なる別のピクチャをマージ候補とする場合の処理対象の予測ブロックの参照ピクチャ番号を決定する(S104)。実施例1におけるステップS101の処理をそのまま利用しても構わないが、ここでは、前の処理(S103)にて導出された同一のピクチャ上の左側及び上側に隣接するブロック群の符号化情報に基づく手法を図34(a)、(b)を用いて説明する。
まず、ステップS103にて導出された左側に隣接するブロック群A及び上側に隣接するブロック群Bそれぞれのブロック群の隣接ブロックが有効か否かを示すフラグavailableFlagM、参照ピクチャ番号refIdxLXMが入力される。ここでMはA及びBである。
まず、左側の隣接ブロック群Aについて図34(a)を用いて説明する。左側の隣接ブロック群の隣接ブロックが有効か否かを示すフラグavailableFlagAを調べる(S1100)。availableFlagAが1であれば(S1100のY)、左側の隣接ブロック群の隣接ブロックの参照ピクチャ番号refIdxLXAを設定し、そうでなければ(S1100のN)、refIdxLXAを−1に設定する。
同様にして、上側の隣接ブロック群Bについて図34(b)を用いて説明する。上側の隣接ブロック群の隣接ブロックが有効か否かを示すフラグavailableFlagBを調べる(S1101)。availableFlagBが1であれば(S1101のY)、上側の隣接ブロック群の隣接ブロックの参照ピクチャ番号refIdxLXBを設定し、そうでなければ(S1101のN)、refIdxLXBを−1に設定する。
こうして導出された各ブロック群の参照ピクチャ番号refIdxLXM(MはA,B)の条件に基づいて、時間が異なる別のピクチャの同一位置に隣接するブロックの参照ピクチャ番号refIdxLXColを決定する。図35に参照ピクチャ番号refIdxLXMに基づく判定を示す。図35の1行目はrefIdxLXAとrefIdxLXBが同じ値であり、−1でない場合であり、refIdxLXAを選択する。2行目はrefIdxLXAとrefIdxLXBが異なる値であり、共に−1でない場合であり、最小の参照ピクチャ番号の値を選択する。3行目と4行目はどちらか一方が−1の場合であり、−1でない方を選択する。5行目は両方が−1の場合であり、この時は"0"を設定する。以上のようにして、処理対象の予測ブロックの参照ピクチャ番号が決定されるが、この手法以外の手法を用いても構わない。
図32に戻り、次に、時間が異なる別のピクチャの同一位置に隣接するブロックの符号化情報が有効か否かを判定し、導出する(S102)。実施例1のステップS102と同様であるので説明を割愛する。こうして得られた隣接ブロックの符号化情報は参照候補リスト作成部311に入力される。
実施例2でも実施例1と同様に、参照候補リスト格納メモリ314に、参照隣接ブロックの符号化情報の候補を登録する記憶領域として参照候補リストを設け、参照隣接ブロックの符号化情報の候補に優先順位をつけて、優先順位の高いものから参照候補リストに、参照隣接ブロックの符号化情報の候補を登録する。これにより、参照候補リストのインデックスmerge_idxの符号量を削減する。
参照候補リスト作成部311は実施例1と同様の動作を行い、参照する左側及び上側の隣接ブロック群、時間が異なる別のピクチャの同一位置に隣接するブロックの有効フラグavailableFlagM(ここでMはA,B,T)の判定を行い、隣接ブロックの符号化情報を参照候補リストcandListに登録する。ここで、変数Nを更新する隣接ブロックの順番が参照候補リストに格納する優先順位となっており、実施例2では、左側、上側、異なる時間の同じ順番(A,B,T)を設定することとする。
以上の処理により、参照候補リストに登録された、参照隣接ブロックが全て有効であれば、図36に示される順番で参照候補リストが作成される。優先順位をインデックスとして、各符号語は参照候補リストの右列で表され、最大符号語長は2となる。ここで、参照候補リスト内部の括弧は、左側或いは上側の隣接ブロック群の中から、符号化情報導出部310で括弧内の左から右の順に処理され、選択される1つの隣接ブロックを表す。
作成された参照候補リストは、同一情報検出部312にて同一の符号化情報となる参照候補リストに格納された符号化情報を削除し、参照候補リスト作成部311にて作成された参照候補リストの中のインデックスと符号化情報を出力する。参照候補リストは、参照候補リストをマージリストとして、当該リストの中のインデックスをマージインデックスとして出力される。動画像符号化装置100では、動き補償予測部105と予測方法決定部107に出力される。
上述した動画像符号化装置100の中に設置される実施例2のマージ検出部106に対応する、動画像復号装置200の中に設置される実施例2のマージ判定部206について説明する。マージ判定部206は実施例1で説明した図22と同じ構成をなし、符号化情報導出部310の処理が実施例1と異なる。それ以外の参照候補リスト作成部311、同一情報検出部312、参照候補リスト格納メモリ314及び選択部315は実施例1と同一の機能を備える。
また、実施例2におけるマージ判定部206の符号化情報導出部310は上述した実施例2におけるマージ検出部106の符号化情報導出部310と同一の機能を備えているので、実施例2におけるマージ判定部206のマージ判定部206の同一情報検出部312までの処理で、実施例2のマージ検出部106と同一の参照候補リストが作成されることになる。作成された参照候補リストから、マージモードにおいて参照隣接ブロックの符号化情報を取得する選択部315について説明する。選択部315は、作成された参照候補リストの中から、第1の符号化ビット列復号部202で復号された、参照隣接ブロックを特定するインデックスで指定される参照候補リストの隣接ブロックを選択する。選択された符号化情報を動き補償予測部207に供給するとともに、符号化情報格納メモリ210に供給する。
次に、動画像符号化装置100の構成を示す図2の中に設置される実施例2の動きベクトル予測部103について説明する。実施例2の動きベクトル予測部103は実施例1で説明した図23と同じ構成をなすが、符号化情報導出部320の処理が実施例1とは異なるので、実施例2では符号化情報導出部320の動作について説明する。図37は実施例2における符号化情報導出部320の動作を示すフローチャートである。
最初に、スイッチ108に入力される動画像符号化装置100により制御される予測モードにより、インター予測情報検出部104の出力先が動きベクトル予測部103に切り換えられる。インター予測情報検出部104の内部の一時メモリ303に記憶された処理対象の予測ブロックが参照隣接ブロックの符号化情報が、符号化情報導出部320に入力される。入力された隣接ブロックの中から処理対象の予測ブロックと同じピクチャにある隣接ブロックの符号化情報が有効か否かを判定し、導出する(S802)。図38に処理対象の予測ブロックと同じピクチャにある隣接ブロック毎の判定処理の詳細な流れを示す。
実施例1の図25で示されるフローチャートに対して、ステップS913、ステップS914、ステップS915、ステップS916及びステップS917が新たに追加された処理であり、それ以外は実施例1と同等であるので、ここでは追加された処理のみの詳細を説明する。
まず、ブロック群の変数Mを初期化する(S913)。ここでは、左側に隣接するブロック群に設定することとし、Mには左側のブロック群を示す値であるAが設定される。次に、ブロック群の中の変数Nを初期化する(S900)。変数Nは上述したブロック群内の処理順に応じて設定され、Nの更新時には左側のブロック群でA0,A1、上側でB0,B1,C0の順に更新されることとする。以降のステップS901からステップS910までの処理は基本的に実施例1と同様であるが、隣接ブロックNの予測モードが画面内符号化(Intra)モードか否かを判定し(S904)、隣接ブロックNの予測モードがIntraモードでない場合(S904のN)以降の処理が実施例1と異なる。
隣接ブロックNの予測モードが画面内符号化(Intra)モードか否かを判定し(S904)、隣接ブロックNの予測モードがIntraモードでない場合(S904のN)、Mが左側のブロック群か否かの判定に進み(S914)、Mが左側のブロック群である場合(S914のY)、ステップS905の処理に進む。Mが上側のブロック群である場合にのみ(S914のN)、左側のブロック群で選択された隣接ブロックの動きベクトルmvLXAと隣接ブロックNの動きベクトルが同じであるか否かを判定する(S915)。
最初に左側のブロック群を代表する隣接ブロックを選択しているので、その動きベクトルを保持しておき、上側のブロック群の判定に使用する。この処理により、左側のブロック群を代表する隣接ブロックの動きベクトルと重複することが無くなるので、参照先として選択肢の幅が広がる。尚、処理量の削減のために、ステップS914及びステップS915の処理を省略して、直接ステップS905に進むことも出来る。
左側のブロック群で選択された隣接ブロックの動きベクトルmvLXAと隣接ブロックNの動きベクトルが同じ場合(S915のY)、ステップS908に進む。異なる場合(S915のN)、処理対象の予測ブロックの算出対象の予測と同じ参照リストで同じ参照ピクチャ番号を用いた予測が隣接ブロックNでも行われているかどうかを判定する(S905)。
処理対象の予測ブロックの算出対象の動きベクトルを用いた予測と同じ参照リストで同じ参照ピクチャ番号を用いた予測が隣接ブロックNでも行われている場合(S905のY)、availableFlagLXNを"1"に設定し(S906)、隣接ブロックNの動きベクトルをmvLXMに代入して設定する(S907)。ブロック群Mの動きベクトルが設定された後、次のブロック群、即ち上側に隣接するブロック群について処理を行う為に、変数Mが上側のブロック群を示す値であるBか否か判定する(S916)。MがB(上側)でなければ(S916のN)、MをB(上側)に更新して(S917)、ステップS900以降の処理を繰り返す。MがB(上側)であれば(S916のY)、処理を終了する。
隣接ブロックNが有効でない場合(S903のN)、隣接ブロックNの予測モードが画面内符号化(Intra)モードでない場合(S904のY)、左側のブロック群で選択された隣接ブロックの動きベクトルmvLXAと上側のブロック群の隣接ブロックNの動きベクトルが同じ場合(S915のY)、同じ参照リストで同じ参照ピクチャ番号を用いた予測が行われていない場合(S905のN)、availableFlagLXMを"0"に設定し(S908)、隣接ブロックNがブロック群M内の隣接ブロックの最後か否かの判定を実施する(S909)。変数Nの更新は上述したブロック群内の処理順に応じて設定され、ここではNがA1(左側のブロック群の場合)或いはC0(上側のブロック群の場合)か否かの判定を行う。
隣接ブロックNが最後のブロックであれば(S909のY)、ブロック群Mの判定に進む(S916)。そうでなければ(S909のN)、変数Nをブロック群内の処理順に応じて更新し(S910)、ステップS901以降の処理を繰り返す。以上のようにして、処理対象の予測ブロックと同一ピクチャ上に存在するブロック群の隣接ブロックを代表する参照ブロックとして、その符号化情報が導出される。
実施例2でも実施例1と同様に、隣接ブロックで行われている予測が、次の条件を満たす場合においても、隣接ブロックが有効か否かを示すフラグavailableFlagLXMを1(有効)とし、参照隣接ブロックの候補として、その符号化情報を導出することが可能である。
条件1:同じ参照リストで、同じ参照ピクチャ番号
条件2:異なる参照リストで、同じ参照ピクチャ番号
条件3:同じ参照リストで、異なる参照ピクチャ番号
条件4:異なる参照リストで、異なる参照ピクチャ番号
この場合の処理の流れを図39に示す。上述した図38と異なるのは、ステップS905の条件1のみの条件判定を削除した点、ステップS911の条件1から4の条件判定を行い、条件1または2を満たさない場合は動きベクトルのスケーリング処理(S912)を追加した点である。
まず、ブロック群の変数Mを初期化する(S913)。ここでは、左側に隣接するブロック群に設定することとし、MにはAが設定される。次に、ブロック群の中の変数Nを初期化する(S900)。変数Nは上述したブロック群内の処理順に応じて設定され、Nの更新時には左側のブロック群でA0,A1、上側でB0,B1,C0の順に更新されることとする。以降のステップS901からステップS910までの処理は基本的に実施例1の図26と同様である。隣接ブロックNの予測モードが画面内符号化(Intra)モードか否かを判定し(S904)、隣接ブロックNの予測モードがIntraモードでない場合(S904のN)以降の処理が実施例2の図38と異なる。
隣接ブロックNの予測モードがIntraモードでない場合(S904のN)、即ちInterモードの場合は、処理対象の予測ブロックの算出対象の予測の符号化情報と隣接ブロックNの符号化情報を比較することで条件1から4の判定処理を行う(S911)。条件1または条件2を満たす場合、Mが左のブロック群か否かの判定処理に進む(S914)。一方、条件3または条件4を満たす場合、実施例1の図26のS912と同様に隣接ブロックNの動きベクトルのスケーリング処理が実施され(S912)、Mが左のブロック群か否かの判定処理に進む(S914)。
Mが左側のブロック群である場合(S914のY)、availableFlagLXMを"1"に設定される(S906)。Mが上側のブロック群である場合(S914のN)、左側のブロック群で選択された隣接ブロックの動きベクトルmvLXAと隣接ブロックNの動きベクトルが同じであるか否かを判定する(S915)。尚、処理量の削減の為に、ステップS914及びステップS915の処理を省略して、直接ステップS906に進むことも出来る。
左側のブロック群で選択された隣接ブロックの動きベクトルmvLXAと隣接ブロックNの符号化情報が同じ場合(S915のY)、availableFlagLXNを"0"に設定し(S908)、異なる場合(S915のN)、availableFlagLXMを"1"に設定する(S906)。
実施例1の図26のステップS907と同様に隣接ブロックNの同じ参照リスト(条件1に合致した場合)の動きベクトルmvLXあるいは異なる参照リスト(条件2に合致した場合)の動きベクトルmvLY、または同じ参照リスト(条件3に合致した場合)のスケーリングにより換算された動きベクトルmvLXあるいは異なる参照リスト(条件4に合致した場合)のスケーリングにより換算された動きベクトルmvLYをmvLXMに代入して設定される(S907)。
ブロック群Mの動きベクトルが設定された後、次のブロック群、即ち上側に隣接するブロック群について処理を行う為に、変数Mが上側か否か判定する(S916)。Mが上側でなければ(S916のN)、MをB(上側)に更新して(S917)、ステップS900以降の処理を繰り返す。Mが上側であれば(S916のY)、処理を終了する。
availableFlagLXMを"0"に設定した場合(S908)、隣接ブロックNがブロック群M内の隣接ブロックの最後か否かの判定を実施する(S909)。変数Nの更新は上述したブロック群内の処理順に応じて設定され、ここではNがA1(左側のブロック群の場合)或いはC0(上側のブロック群の場合)か否かの判定を行う。隣接ブロックNが最後のブロックであれば(S909のY)、ブロック群Mの判定に進み(S916)、そうでなければ(S909のY)、変数Nをブロック群内の処理順に応じて更新し(S910)、ステップS901以降の処理を繰り返す。以上のようにして、処理対象の予測ブロックと同一ピクチャ上に存在するブロック群の隣接ブロックを代表する参照ブロックとして、その動きベクトルが導出される。
図37に戻り、次に、時間が異なる別のピクチャの同一位置に隣接するブロックの符号化情報が有効か否かを判定し、導出する(S801)。これは実施例1のステップS801と同様なので説明を割愛する。こうして得られた隣接ブロックの符号化情報は参照候補リスト作成部321に入力される。参照候補リスト作成部321で作成される参照候補リストは、L0予測及びL1予測の2つの参照リストに対してそれぞれ参照候補リストが作成される。本明細書では、特に注釈をしない限り、動き検出モード時の参照候補リストは説明の都合上1つだけを挙げて説明することとし、図で示す参照候補リストも1つだけ挙げることにする。
実施例2では、参照候補リスト格納メモリ324に、参照隣接ブロックの符号化情報の候補を登録する記憶領域として参照候補リストを設ける。参照隣接ブロックの符号化情報の候補に優先順位をつけて、優先順位の高いものから参照候補リスト格納メモリ324に、参照隣接ブロックの符号化情報の候補を登録する。これにより、参照候補リストのインデックスmvp_idx_l0及びmvp_idx_l1の符号量を削減することが可能となる。
優先順位の高い要素を参照候補リストの前方に配置することで、符号量を削減する。優先順位を示すインデックスは0から昇順に割り当てる。参照候補リスト格納メモリ324に設けられる参照候補リストは、リスト構造を成し、参照候補リスト内部の所在を示すインデックスと、インデックスに対応する参照隣接ブロックの符号化情報の候補を要素として格納する配列領域が設けられる。この配列領域はcandListLXで表される。インデックスの数字は0から開始され、参照候補リストcandListLXの記憶領域に、参照隣接ブロックの符号化情報の候補が格納される。以降の処理では、参照候補リストcandListLXに登録されたインデックスiの符号化情報は、candListLX[i]で表すこととし、参照候補リストcandListLXとは配列表記をすることで区別することとする。尚、参照候補リストの記憶領域に格納される符号化情報は、特に断らない限り、参照隣接ブロックの位置名(A0,A1,B0,B1,C0,T)で表すこととする。
参照候補リスト作成部321は実施例1と同様の動作を行い、参照する左側及び上側の隣接ブロック群、時間が異なる別のピクチャの同一位置に隣接するブロックの有効フラグavailableFlagLXM(ここでMはA,B,T)の判定を行い、隣接ブロックの符号化情報を参照候補リストcandListLXに登録する。ここで、変数Nを更新する隣接ブロックの順番が参照候補リストに格納する優先順位となっており、実施例2では、左側、上側、異なる時間の同じ順番(A,B,T)を設定することとする。以上の処理により、参照候補リストに登録された、参照隣接ブロックが全て有効であれば、図40に示される順番で参照候補リストが作成される。
優先順位をインデックスとして、各符号語は参照候補リストの右列で表され、最大符号語長は2となる。ここで、参照候補リスト内部の括弧は、左側或いは上側の隣接ブロック群の中から、符号化情報導出部320で括弧内の左から右の順に処理され、選択される1つの隣接ブロックを表す。参照隣接ブロックが1つだけ有効となる場合、最大符号語長は0となるので、符号語は必要とせず、1つだけ有効と判定された隣接ブロックの符号化情報の候補が参照先として一意に決定されることになる。
作成された参照候補リストは、同一情報検出部322にて同一の符号化情報となる参照候補リストに格納された符号化情報を削除し、差分動きベクトル算出部326にて作成された参照候補リストの中の符号化情報の動きベクトルを予測動きベクトルとして、動きベクトル検出部102が検出した動きベクトルと予測動きベクトルから差分動きベクトルを算出し、算出された差分動きベクトルを出力部323に供給する。
最後に、出力部323が、作成された参照候補リストの中のインデックスと差分動きベクトルを出力する。参照候補リストは、参照候補リストをMVPリストとして、リストの中のインデックスをMVPインデックスとして出力する。動画像符号化装置100では、予測方法決定部107に出力される。
上述した動画像符号化装置100の中に設置される実施例2の動きベクトル予測部103に対応する、動画像復号装置200の中に設置される実施例2の動きベクトル算出部204について説明する。動きベクトル算出部204は図30と同じ構成をなし、符号化情報導出部320の処理が実施例1と異なる。それ以外の参照候補リスト作成部321、同一情報検出部322、参照候補リスト格納メモリ324、選択部325及び動きベクトル加算部327は実施例1と同一の機能を備える。
また、符号化情報導出部320は上述した実施例2における動きベクトル予測部103の符号化情報導出部320と同一の機能を備えているので、動きベクトル算出部204の同一情報検出部322までの処理で、実施例2の動きベクトル予測部103と同一の参照候補リストが作成されることになる。作成された参照候補リストから、動き検出モードにおいて参照隣接ブロックの符号化情報を取得する選択部325について説明する。選択部325は、作成された参照候補リストの中から、第1の符号化ビット列復号部202で復号された参照隣接ブロックを特定するインデックスで指定される参照候補リストの隣接ブロックを選択する。選択された参照候補リストの隣接ブロックの符号化情報から動きベクトルを予測動きベクトルとして出力し、動きベクトル加算部327にて予測動きベクトルと第1の符号化ビット列復号部202で復号された差分動きベクトルとを加算して動きベクトルを算出し、動き補償予測部207に供給するとともに、選択されたリストの隣接ブロックの符号化情報を符号化情報格納メモリ210に供給する。
尚、実施例2では、各ブロック群から1つの隣接ブロックを、参照隣接ブロックの代表として選出したが、複数個の隣接ブロックを選出しても構わない。但し、ブロック群の中のブロック数を超えない範囲で設定する。
(実施例3)
実施例3では、予測モードに応じて参照隣接ブロックの選択方法を変える。図31(a)の隣接ブロックの配置を用いて説明する。マージモードでは6つの隣接ブロックA0,A1,B0,B1,C0,Tの中から1つの隣接ブロックの符号化情報を参照先として選択する。動き検出モードでは6つの隣接ブロックA0,A1,B0,B1,C0,Tのうち、A0とA1を左側に隣接するブロック群、B0、B1とC0を上側に隣接するブロック群に分類し、各ブロック群の中から1つを代表する隣接ブロックとして選択する。左側及び上側に隣接するブロック群の各代表ブロックとTの3つの隣接ブロックから1つの隣接ブロックの符号化情報を参照先として選択する。即ち、マージモードは実施例1の手法を、動き検出モードは実施例2の手法をそれぞれに適用する混合手法である。
マージモードでは、参照隣接ブロックの候補の符号化情報をそのまま用いて、画像間予測を行うので、選択の余地を残す為に、動き検出モードよりも多くの候補をリストに登録する。これは、マージモードは動き検出モードと比較して、多くの情報(動きベクトル、参照インデックス、参照リスト)をわずかな符号量で伝送出来る為であり、マージインデックスの符号量を削減するよりも、隣接ブロックの候補を残して選択の幅を広げた方が符号化効率が向上するからである。一方、動き検出モードでは、参照隣接ブロックの候補の符号化情報をそのまま用いるのではなく、差分動きベクトルをはじめとする符号化情報を符号化するので、スキャンを行い候補を絞ってリストに登録する。これは、候補を絞ることにより、MVPインデックスの符号量を削減した方が符号化効率が向上するからである。
実施例3で作成される候補リストは、参照隣接ブロックが全て有効であった場合、予測モード別に図41のように表される。マージ検出部106及び動きベクトル予測部103でそれぞれ参照候補リストが作成され、候補リスト総数も異なるので符号語も3項目以降で異なるが、それぞれ最適な符号語として作成されているので、符号化効率の改善が期待出来る。また、符号語長が長くなるが、動き検出モードの符号語"11"(2進数表記)を同じ行のマージモードの"110"(2進数表記)に合わせて、出現する符号語の種類を共通化しても良い。
(実施例4)
実施例4は、処理対象の予測ブロックと同じピクチャ上にある隣接ブロック(以下、空間の隣接ブロックとする)から2つのブロックを代表する隣接ブロックとして選択する方法である。この点は実施例2と同様であるが、実施例2では空間の隣接ブロックを2つのブロック群に分けて定義し、ブロック群単位に1つずつ代表する隣接ブロックを選出した。実施例4では空間の隣接ブロック全体を1つのブロック群とし、この中から2つの代表する隣接するブロックを選出する点が異なる。
実施例2と同様に処理対象の予測ブロックと同じピクチャ上にある隣接ブロックを代表する2つの隣接ブロック及び時間が異なる別のピクチャの同一位置に隣接するブロックの3つの隣接ブロックが参照候補リストに登録されることになる。参照候補リストに登録する隣接ブロックの総数を実施例1に比べて削減することが出来るので、同一情報検出部312での符号化情報の比較回数、同一情報検出部322での動きベクトルの比較回数を削減することができる。更に、参照候補リストのインデックスに割り当てる符号語長が短くなり、参照候補リストのインデックスの符号量を削減することが出来る。更に、隣接ブロックの選出処理順番を予測モードに応じて変更することで、予測モードに適した隣接ブロックの選択が可能となり、符号化効率の改善が期待出来る。
処理順番は予測モードがマージモードの場合、マージ検出部106及びマージ判定部206は図9(a)のA1,B1,B0,A0,C0(またはB1,A1,A0,B0,C0)の順序で処理を行う。動き検出モードの場合、動きベクトル予測部103及び動きベクトル算出部204は図9(a)のB0,A0,A1,B1,C0(またはA0,B0,B1,A1,C0)の順序で処理を行う。
マージモードでは、隣接ブロックA1,B1を優先して選択し、候補リストに登録する。これは、隣接ブロックA1,B1は、処理対象の予測ブロックと辺が接しているため、他の隣接ブロック(A0,B0,C)よりも、処理対象の予測ブロックと符号化情報が等しい可能性が高く、可能性の高い候補を登録することが、マージモードでの符号化効率向上に寄与する。一方、動き検出モードでは、隣接ブロックA0,B0を優先して選択し、候補リストに登録する。隣接ブロックA0,B0は、隣接ブロックの中で候補間の距離が最も離れており、異なる性質の動きベクトルを登録できる可能性が高く、予測動きベクトルの選択の幅を広げることが可能である。これにより、差分動きベクトルを伝送する際に大きな符号量が発生しにくくなり、動き検出モードでの符号化効率向上に寄与する。
実施例4の動画像符号化装置100及び動画像復号装置200の構成は実施例1、2と同じである。また、実施例4の動作は図11及び図22の符号化情報導出部310、図23及び図30の符号化情報導出部320の動作を除き実施例2と同一である。以下では、実施例2とは異なる実施例4の動作についてのみ詳細な説明をする。
まず、動画像符号化装置の中のマージ検出部106の動作について説明する。マージ検出部106は実施例2の図11と同じ構成をなすが、符号化情報導出部310の処理が実施例2とは異なるので、実施例4における符号化情報導出部310の動作について説明する。図42は実施例4における符号化情報導出部310の動作を示すフローチャートである。
最初に、スイッチ108に入力される動画像符号化装置100により制御される予測モードにより、インター予測情報検出部104の出力先がマージ検出部106に切り換えられ、インター予測情報検出部104の内部の一時メモリ303に記憶された、処理対象の予測ブロックが参照隣接ブロックの符号化情報が符号化情報導出部310に入力される。
入力された隣接ブロックの中から処理対象の予測ブロックと同じピクチャにある隣接ブロックの符号化情報が有効か否かを判定し、2つの隣接ブロックを導出する(S105)。図43に処理対象の予測ブロックと同じピクチャにある隣接ブロック毎の判定処理の詳細な流れを示す。
まず、選択された隣接ブロックを示す変数FをS0に設定し、カウンタkを0に設定する(S1600)。選択された隣接ブロックを示す変数FのS0は最初に選出される第1候補の隣接ブロックを示し、S1は2番目に選出される第2候補の隣接ブロックを示す。
次に、処理中の隣接ブロックを示す変数NをA1に初期化する(S1601)。処理中の隣接ブロックを示す変数NはA1,B1,B0,A0,C0の処理順に応じて設定され、Nの更新時にはこの順に更新されることとする。
次に、以降の判定で使用する隣接ブロックの符号化情報を格納しておく変数を初期化する(S1602)。ここで、変数は隣接ブロックが有効か否かを示すフラグavailableFlagF、動きベクトルmvLXF、参照ピクチャ番号refIdxLXF及び予測方向の有効性を示すフラグpredFlagLXFであり、次のように初期化される。
availableFlagF=0
mvLXF=(0,0)
refIdxLXF=0
predFlagLXF=0
ここで、添え字Xには予測方向を表す0若しくは1が設定される。処理中の隣接ブロックを示す変数Nの隣接ブロック(以下、隣接ブロックNとする)の位置及び符号化情報を取得する(S1603)。
取得された隣接ブロックNの位置に基づいて、隣接ブロックNが有効か否かを判定する(S1604)。例えば、処理対象の予測ブロックがピクチャ左端に位置する場合、処理対象の予測ブロックの左の隣接ブロックは存在しないので、符号化情報格納メモリ114の中に該当する符号化情報は無いことになり、無効と判定される。
隣接ブロックNが無効の場合(S1604のN)、availableFlagFを"0"に設定する(S1613)。隣接ブロックNが有効の場合(S1604のY)、隣接ブロックNの予測モードが画面内符号化(Intra)モードか否かを判定し(S1605)、隣接ブロックNの予測モードがIntraモードの場合(S1605のY)、availableFlagFを"0"に設定する(S1613)。
隣接ブロックNの予測モードがIntraモードでない場合(S1605のN)、即ちInterモードの場合は、FがS0か否かの判定(S1606)に進み、FがS0の場合(S1606のY)、availableFlagF(availableFlagS0)を1に設定する(S1608)。
FがS0でない場合(S1606のN)、既に選択された隣接ブロックの符号化情報と隣接ブロックNの符号化情報が同じであるか否かを判定する(S1607)。既に選択された隣接ブロックの符号化情報と隣接ブロックNの符号化情報が同じ場合(S1607のY)、availableFlagFを"0"に設定する(S1613)。
具体的には、空間の隣接ブロックの最大数を2とした場合、最初に第1候補として選択された符号化情報を保持しておき、第2候補の選出の際の比較判定に使用する。この処理により、第2候補の隣接ブロックの符号化情報が代表する第1候補の隣接ブロックの符号化情報と重複することが無くなるので、より多くの候補を参照先として選択可能になる。尚、処理量の削減のために、ステップS1606及びステップS1607の処理を省略して、直接ステップS1608に進むことも出来る。
第1候補として選択された隣接ブロックの符号化情報と隣接ブロックNの符号化情報が異なる場合(S1607のN)、availableFlagF(availableFlagS1)を"1"に設定する(S1608)。続いて、隣接ブロックNの符号化情報をrefIdxLXF、mvLXF及びpredFlagLXFに代入して設定する(S1609)。
次に、カウンタkに1を加算することで更新し(S1610)、カウンタkが空間の候補の最大候補数である2より小さいか判定する(S1611)。カウンタkが空間の候補の最大候補数である2の場合(S1611のY)、選択された空間の隣接ブロックの候補数を示す変数NumListCandをkに設定し(S1616)、処理を終了する。
availableFlagFを"0"に設定した場合(S1613)、隣接ブロックNが隣接ブロックの最後か否かの判定を実施する(S1614)。また、kが空間の候補の最大候補数である2より小さい場合(S1611のN)、FをS1に更新し(S1612)、隣接ブロックNが隣接ブロックの最後か否かの判定を実施する(S1614)。変数Nの更新は上述したA1,B1,B0,A0,C0の処理順に応じて設定され、ここではNがC0か否かの判定を行う。
隣接ブロックNが最後のブロックであれば(S1614のY)、選択された空間の隣接ブロックの候補数を示す変数NumListCandをkに設定し(S1616)、処理を終了する。隣接ブロックNが最後のブロックでなければ(S1614のN)、変数NをA1,B1,B0,A0,C0の処理順に応じて更新し(S1615)、ステップS1602以降の処理を繰り返す。以上のようにして、処理対象の予測ブロックと同一ピクチャ上に存在するブロック群の隣接ブロックを代表する2つの参照ブロックとして、それぞれの符号化情報が導出される。
図42に戻り、ステップS105に続いて、時間が異なる別のピクチャの同一位置に隣接するブロックの符号化情報を候補とする場合の、処理対象の予測ブロックの参照ピクチャ番号を決定する(S104)。このステップS104の処理は実施例1、2のステップS104と同様である。次に、時間が異なる別のピクチャの同一位置に隣接するブロックの符号化情報が有効か否かを判定し、導出する(S102)。この実施例4のステップS102の処理も実施例1、2のステップS102と同様である。
こうして得られた隣接ブロックの符号化情報は参照候補リスト作成部311に入力される。実施例4でも実施例2と同様に、参照候補リスト格納メモリ314に、参照隣接ブロックの符号化情報の候補を登録する記憶領域として参照候補リストを設ける。参照隣接ブロックの符号化情報の候補に優先順位をつけて、優先順位の高いものから参照候補リストに、参照隣接ブロックの符号化情報の候補を登録する。これにより、参照候補リストのインデックスmerge_idxの符号量を削減する。
参照候補リスト作成部311は図19のフローチャートに示す実施例1、2と同様の動作を行う。但し、実施例4の変数Fの値を図19の変数Nの値として設定して動作させる。空間の第1候補の隣接ブロックS0、空間の第2候補の隣接ブロックS1、及び時間が異なる別のピクチャの同一位置に隣接するブロックTの有効フラグavailableFlagN(ここでNはS0,S1,T)の判定が行われ、隣接ブロックの符号化情報を参照候補リストcandListに登録する。ここで、変数Nを更新する隣接ブロックの順番が参照候補リストに格納する優先順位となっており、実施例4では、同じ時間の第1候補、同じ時間の第2候補、異なる時間の同じ順番(S0,S1,T)の順序で設定することとする。
実施例1、2と同様に、作成された参照候補リストは、同一情報検出部312にて同一の符号化情報となる参照候補リストに格納された符号化情報を削除し、出力部313にて作成された参照候補リストの中のインデックスと符号化情報を出力する。参照候補リストは、参照候補リストをマージリストとして、リストの中のインデックスをマージインデックスとして出力する。動画像符号化装置100では、動き補償予測部105と予測方法決定部107に出力される。
上述した動画像符号化装置100の中に設置される実施例4のマージ検出部106に対応する、動画像復号装置200の中に設置される実施例4のマージ判定部206について説明する。マージ判定部206は実施例2の図22と同じ構成をなし、符号化情報導出部310の処理が実施例2と異なる。それ以外の参照候補リスト作成部311、同一情報検出部312、参照候補リスト格納メモリ314及び選択部315は実施例2と同一の機能を備える。
また、マージ判定部206の符号化情報導出部310は上述した実施例4におけるマージ検出部106の符号化情報導出部310と同一の機能を備えており、マージ判定部206の参照候補リスト作成部311は上述した実施例4におけるマージ検出部106の参照候補リスト作成部311と同一の機能を備えており、マージ判定部206の同一情報検出部312は上述した実施例4におけるマージ検出部106の同一情報検出部312と同一の機能を備えているので、マージ判定部206の同一情報検出部312までの処理で、実施例4のマージ検出部106と同一の参照候補リストが作成される。
実施例2と同様に選択部315では、作成された参照候補リストの中から、第1の符号化ビット列復号部202で復号された、参照隣接ブロックを特定するインデックスで指定される参照候補リストの隣接ブロックを選択する。選択された符号化情報を動き補償予測部207に供給するとともに、符号化情報格納メモリ210に供給する。
次に、動画像符号化装置100の構成を示す図2の中に設置される実施例4の動きベクトル予測部103について説明する。動きベクトル予測部103は実施例2の図23と同じ構成をなすが、符号化情報導出部320の処理が実施例2とは異なるので、実施例4における符号化情報導出部320の動作について説明する。図44は実施例4における符号化情報導出部320の動作を示すフローチャートである。
最初に、スイッチ108に入力される動画像符号化装置100により制御される予測モードにより、インター予測情報検出部104の出力先が動きベクトル予測部103に切り換えられる。インター予測情報検出部104の内部の一時メモリ303に記憶された、処理対象の予測ブロックが参照隣接ブロックの符号化情報が符号化情報導出部320に入力される。
入力された隣接ブロックの中から処理対象の予測ブロックと同じピクチャにある隣接ブロックの符号化情報が有効か否かを判定し、2つの隣接ブロックを導出する(S803)。図45に処理対象の予測ブロックと同じピクチャにある隣接ブロック毎の判定処理の詳細な流れを示す。図45に示す処理を処理対象のブロックの予測モードに応じて、L0予測の場合について行い、L1予測の場合について行い、L0予測とL1予測の両予測の場合それぞれについて行う。
まず、空間候補インデックスFをS0に設定し、カウンタkを0に設定する(S1700)。空間候補インデックスFのS0は最初に選出される第1候補の隣接ブロックを示し、S1は2番目に選出される第2候補の隣接ブロックを示す。
次に、ブロック群の中の変数NをA1に初期化する(S1701)。処理中の隣接ブロックを示す変数NはB0,A0,A1,B1,C0の処理順に応じて設定され、Nの更新時にはこの順に更新されることとする。
次に、以降の判定で使用する隣接ブロックの符号化情報を格納しておく変数を初期化する(S1702)。ここで、変数は隣接ブロックが有効か否かを示すフラグavailableFlagF、動きベクトルmvLXF、参照ピクチャ番号refIdxLXF及び予測方向の有効性を示すフラグpredFlagLXFであり、次のように初期化される。
availableFlagLXF=0
mvLXF=(0,0)
refIdxLXF=0
predFlagLXF=0
ここで、添え字Xには予測方向を表す0若しくは1が設定される。処理中の隣接ブロックを示す変数Nの隣接ブロック(以下、隣接ブロックNとする)の位置及び符号化情報を取得する(S1703)。
取得された隣接ブロックNの位置に基づいて、隣接ブロックNが有効か否かを判定する(S1704)。例えば、処理対象の予測ブロックがピクチャ左端に位置する場合、処理対象の予測ブロックの左の隣接ブロックは存在しないので、符号化情報格納メモリ114の中に該当する符号化情報は無いことになり、無効と判定される。
隣接ブロックNが無効の場合(S1704のN)、availableFlagLXFを"0"に設定する(S1715)。隣接ブロックNが有効の場合(S1704のY)、隣接ブロックNの予測モードが画面内符号化(Intra)モードか否かを判定し(S1705)、隣接ブロックNの予測モードがIntraモードの場合(S1705のY)、availableFlagLXFを"0"に設定する(S1715)。
隣接ブロックNの予測モードがIntraモードでない場合(S1705のN)、即ちInterモードの場合は、処理対象の予測ブロックの算出対象の予測と隣接ブロックNの符号化情報を比較することで条件1から4の判定処理を行う(S1709)。条件1または条件2を満たす場合、FがS0か否かの判定処理に進む(S1706)。一方、条件3または条件4を満たす場合、実施例2の図39のS912と同様に隣接ブロックNの動きベクトルのスケーリング処理が実施され(S1710)、FがS0か否かの判定処理に進む(S1706)。
FがS0の場合(S1706のY)、availableFlagLXF(availableFlagLXS0)を1に設定する(S1708)。FがS0でない場合(S1706のN)、既に選択された隣接ブロックの動きベクトルと、隣接ブロックNの動きベクトルまたは隣接ブロックNの動きベクトルがスケーリングされた動きベクトルmvLXNが同じであるか否かを判定する(S1707)。
既に選択された隣接ブロックの動きベクトルと隣接ブロックNの動きベクトルが同じ場合(S1707のY)、availableFlagLXFを"0"に設定する(S1715)。具体的には、空間の隣接ブロックの最大数を2とした場合、最初に第1候補として選択された動きベクトルを保持しておき、第2候補の選出の際の比較判定に使用する。この処理により、第2候補の隣接ブロックの符号化情報が代表する第1候補の隣接ブロックの動きベクトルと重複することが無くなるので、参照先として選択肢の幅が広がる。尚、処理量の削減のために、ステップS1706及びステップS1707の処理を省略して、直接ステップS1708に進み、availableFlagLXF(availableFlagLXS1)を"1"に設定することも出来る(S1708)。
第1候補として選択された隣接ブロックの動きベクトルmvLXS0と隣接ブロックNの動きベクトルmvLXNが異なる場合(S1707のN)、availableFlagLXF(availableFlagLXS1)を"1"に設定する(S1708)。隣接ブロックNの同じ参照リスト(条件1に合致した場合)の動きベクトルmvLXあるいは異なる参照リスト(条件2に合致した場合)の動きベクトルmvLY、または同じ参照リスト(条件3に合致した場合)のスケーリングにより換算された動きベクトルmvLXあるいは異なる参照リスト(条件4に合致した場合)のスケーリングにより換算された動きベクトルmvLYをmvLXMに代入して設定される(S1711)。
カウンタkに1を加算することで更新し(S1712)、カウンタkが空間の候補の最大候補数である2より小さいか判定する(S1713)。カウンタkが空間の候補の最大候補数である2の場合(S1713のN)、選択された空間の隣接ブロックの候補数を示す変数NumListCandをkに設定し(S1718)、処理を終了する。
availableFlagFを"0"に設定した場合(S1715)、隣接ブロックNが隣接ブロックの最後か否かの判定を実施する(S1716)。また、kが空間の候補の最大候補数である2より小さい場合(S1713のY)、FをS1に更新し(S1714)、隣接ブロックNが隣接ブロックの最後か否かの判定を実施する(S1716)。
変数Nの更新は上述したB0,A0,A1,B1,C0の処理順に応じて設定され、ここではNがC0か否かの判定を行う。隣接ブロックNが最後のブロックであれば(S1716のY)、選択された空間の隣接ブロックの候補数を示す変数NumListCandをkに設定し(S1718)、処理を終了する。隣接ブロックNが最後のブロックでなければ(S1716のN)、変数NをB0,A0,A1,B1,C0の処理順に応じて更新し(S1717)、ステップS1702以降の処理を繰り返す。以上のようにして、処理対象の予測ブロックと同一ピクチャ上に存在するブロック群の隣接ブロックを代表する参照ブロックとして、その符号化情報が導出される。
図44に戻り、次に、時間が異なる別のピクチャの同一位置に隣接するブロックの符号化情報が有効か否かを判定し、導出する(S801)。この実施例4のS801の処理は実施例1のS801と同様なので説明を割愛する。
こうして得られた隣接ブロックの符号化情報は、参照候補リスト作成部321に入力される。参照候補リスト作成部321で作成される参照候補リストとして、予測モード(L0予測、L1予測、両予測)に応じて、L0予測及びL1予測の2つの予測方向に対していずれか一方、または両方のそれぞれの参照候補リストが作成される。本明細書では、特に注釈をしない限り、動き検出モード時の参照候補リストは説明の都合上1つだけを挙げて説明することとし、図で示す参照候補リストも1つだけ挙げることにする。
実施例4では、参照候補リスト格納メモリ324に、参照隣接ブロックの符号化情報の候補を登録する記憶領域として参照候補リストを設ける。参照隣接ブロックの符号化情報の候補に優先順位をつけて、優先順位の高いものから参照候補リスト格納メモリ324に、参照隣接ブロックの符号化情報の候補を登録する。これにより、参照候補リストのインデックスmvp_idx_l0及びmvp_idx_l1の符号量を削減することが可能となる。
優先順位の高い要素を参照候補リストの前方に配置することで、符号量を削減する。優先順位を示すインデックスは0から昇順に割り当てる。参照候補リスト格納メモリ324に設けられる参照候補リストは、リスト構造を成し、参照候補リスト内部の所在を示すインデックスと、インデックスに対応する参照隣接ブロックの符号化情報の候補を要素として格納する配列領域が設けられる。この配列領域はcandListLXで表される。インデックスの数字は0から開始され、参照候補リストcandListLXの記憶領域に、参照隣接ブロックの符号化情報の候補が格納される。
以降の処理では、参照候補リストcandListLXに登録されたインデックスiの符号化情報は、candListLX[i]で表すこととし、参照候補リストcandListLXとは配列表記をすることで区別することとする。尚、参照候補リストの記憶領域に格納される符号化情報は、特に断らない限り、参照隣接ブロックの位置名(A0,A1,B0,B1,C0,T)で表すこととする。
参照候補リスト作成部321は図19のフローチャートに示す実施例1、2と同様の動作を行う。但し、実施例4の変数Fの値を図19の変数Nの値として設定して動作させる。空間の第1候補の隣接ブロックS0、空間の第2候補の隣接ブロックS1、及び時間が異なる別のピクチャの同一位置に隣接するブロックの有効フラグavailableFlagLXN(ここでNはS0,S1,T)の判定が行われ、隣接ブロックの符号化情報を参照候補リストcandListLXに登録する。ここで、変数Nを更新する隣接ブロックの順番が参照候補リストに格納する優先順位となっており、実施例4では、同じ時間の第1候補、同じ時間の第2候補、異なる時間の同じ順番(S0,S1,T)を設定することとする。
実施例1、2と同様に、作成された参照候補リストは、同一情報検出部322にて同一の符号化情報となる参照候補リストに格納された符号化情報を削除し、差分動きベクトル算出部326にて作成された参照候補リストの中の符号化情報の動きベクトルを予測動きベクトルとする。動きベクトル検出部102が検出した動きベクトルと予測動きベクトルから差分動きベクトルを算出し、算出された差分動きベクトルを出力部323に供給する。
最後に、出力部323が、作成された参照候補リストの中のインデックスと差分動きベクトルを出力する。参照候補リストは、参照候補リストをMVPリストとして、リストの中のインデックスをMVPインデックスとして出力する。動画像符号化装置100では、予測方法決定部107に出力される。
上述した動画像符号化装置100の中に設置される実施例4の動きベクトル予測部103に対応する、動画像復号装置200の中に設置される実施例4の動きベクトル算出部204について説明する。動きベクトル算出部204は実施例2の図30と同じ構成をなし、符号化情報導出部320の処理が実施例2と異なる。それ以外の参照候補リスト作成部321、同一情報検出部322、参照候補リスト格納メモリ324、選択部325及び動きベクトル加算部327は実施例2と同一の機能を備える。
また、符号化情報導出部320は上述した実施例2における動きベクトル予測部103の符号化情報導出部320と同一の機能を備えており、マージ判定部206の参照候補リスト作成部311は上述した実施例4におけるマージ検出部106の参照候補リスト作成部311と同一の機能を備えており、マージ判定部206の同一情報検出部312は上述した実施例4におけるマージ検出部106の同一情報検出部312と同一の機能を備えているので、動きベクトル算出部204の同一情報検出部322までの処理で、実施例4の動きベクトル予測部103と同一の参照候補リストが作成される。
実施例2と同様に選択部325は、作成された参照候補リストの中から、第1の符号化ビット列復号部202で復号された、参照隣接ブロックを特定するインデックスで指定される参照候補リストの隣接ブロックを選択する。選択された参照候補リストの隣接ブロックの符号化情報から動きベクトルを予測動きベクトルとして出力し、動きベクトル加算部327にて予測動きベクトルと第1の符号化ビット列復号部202で復号された差分動きベクトルとを加算して動きベクトルを算出し、動き補償予測部207に供給するとともに、選択されたリストの隣接ブロックの符号化情報を符号化情報格納メモリ210に供給する。
尚、実施例4では、2つの隣接ブロックを、参照隣接ブロックの代表として選出したが、マージモード、動き検出モードそれぞれ別々に1個または3個以上の隣接ブロックを代表として選出することにしても構わない。但し、ブロック群の中のブロック数を超えない範囲で設定する。尚、本発明の説明に使用している図9の配置では、代表の数は6個が最大数となる。マージモードの場合、代表の数を6個に設定すると、実施例1と等価となる。動き検出モードでは2個の空間の隣接ブロックを代表とし、マージモードでは3個以上の空間の隣接ブロックを代表とするなど、動き検出モードよりもマージモードで多くの空間の隣接ブロックを代表とすることにより、以下のような効果を得ることができる。
即ち、マージモードでは、参照隣接ブロックの候補の符号化情報をそのまま用いて、画像間予測を行うので、選択の余地を残す為に、動き検出モードよりも多くの候補をリストに登録する。これは、マージモードは動き検出モードと比較して、多くの情報(動きベクトル、参照インデックス、予測方向)をわずかな符号量で伝送出来る為であり、マージインデックスの符号量を削減するよりも、隣接ブロックの候補を残して選択の幅を広げた方が符号化効率が向上するからである。
一方、動き検出モードでは、参照隣接ブロックの候補の符号化情報をそのまま用いるのではなく、差分動きベクトルをはじめとする符号化情報を符号化するので、マージモードよりも候補を絞ってリストに登録する。これは、候補を絞ることにより、MVPインデックスの符号量を削減した方が符号化効率が向上するからである。
マージモードで、3個以上の空間の隣接ブロックを代表として選出するとした場合、図43のステップS1607では、すべての既に選択されたそれぞれの隣接ブロックの符号化情報と、隣接ブロックNの符号化情報が同じであるか否かを判定する。動き検出モードで、3個以上の空間の隣接ブロックを代表として選出するとした場合、図45のステップS1707では、すべての既に選択されたそれぞれの隣接ブロックの動きベクトルと隣接ブロックNの動きベクトルまたは隣接ブロックNの動きベクトルがスケーリングされた動きベクトルmvLXNが同じであるか否かを判定する。
マージモードの場合は実施例4の手法を用いて、動き検出モードの場合は他の実施例の手法を用いることも可能である。同様に、動き検出モードの場合は実施例4の手法を用いて、マージモードの場合は他の実施例の手法を用いることも可能である。特に、マージモードの場合は実施例1の手法を用いて、動き検出モードの場合は実施例4の手法を用いた場合、実施例3と同様の効果を得ることができる。
即ち、マージモードでは、参照隣接ブロックの候補の符号化情報をそのまま用いて、画像間予測を行うので、選択の余地を残す為に、動き検出モードよりも多くの候補をリストに登録する。これは、マージモードは動き検出モードと比較して、多くの情報(動きベクトル、参照インデックス、予測方向)をわずかな符号量で伝送出来る為であり、マージインデックスの符号量を削減するよりも、隣接ブロックの候補をできるだけ残して、できる動き情報の候補を増やすことが符号化効率向上に寄与する為である。
一方、動き検出モードでは、参照隣接ブロックの候補の符号化情報をそのまま用いるのではなく、差分動きベクトルをはじめとする符号化情報を符号化するので、スキャンを行い候補を絞ってリストに登録する。これは、動き検出モードでの候補は予測ベクトルに使用されるだけである為、隣接ブロックの候補を多く残しても、候補間で近い動きベクトルを登録しても差分動きベクトルの符号量を減らすことが出来ず、MVPインデックスの符号量が増加するだけである。その為、リストに登録する候補を絞ることにより、MVPインデックスの符号量を削減することが符号化効率向上に寄与する為である。
マージモード、動き検出モードともに、隣接ブロックが参照先候補として利用可能であるかどうかの情報のみを用いてリストに登録する候補を決定することが出来る為、複雑な判定を行う必要がなく、マージモード、動き検出モードそれぞれについて、適切な候補をリストに登録することが可能である。
更に、実施例4は、時間が異なる別のピクチャの同一位置に隣接するブロックのみを別扱いとして参照候補リストの最後に登録する。同じピクチャ上にある隣接ブロック同士は同じ符号化情報を持つ可能性が高く、時間が異なる別のピクチャの同一位置に隣接するブロックはそれらと異なる符号化情報を持つ可能性が高いので、別途候補として登録する効果が高いといえる。例えば、同じピクチャ上にある隣接ブロックがすべて、イントラの場合でも、時間が異なる別のピクチャの同一位置に隣接するブロックはインター予測の符号化情報を持つ可能性が高い。ただし、時間が異なる別のピクチャの同一位置に隣接するブロックは、処理対象の予測ブロックと同じピクチャ上にある隣接ブロックに比べて、処理対象の予測ブロックと符号化情報が等しい或いは近い可能性が低いので、優先順位を下げている。
(実施例5)
動画像符号化装置100の構成を示す図2の中に設置される実施例5のマージ検出部106について説明する。マージ検出部106は実施例1で説明した図11と同じ構成をなすが、参照候補リスト作成部311の処理が実施例1とは異なるので、実施例5におけるマージ検出部106の参照候補リスト作成部311の動作について説明する。参照候補リスト作成部311は、参照候補リスト格納メモリ314に、参照隣接ブロックの符号化情報の候補を登録する記憶領域として参照候補リストを設け、参照隣接ブロックの符号化情報の候補に優先順位をつけて、優先順位の高いものから参照候補リストに、参照隣接ブロックの符号化情報の候補を登録する。これにより、参照候補リストのインデックスmerge_idxの符号量を削減する。
優先順位の高い要素を参照候補リストの前方に配置することで、符号量を削減する。優先順位を示すインデックスは0から昇順に割り当てる。ここで、マージモードの場合、順番(A1,B1,B0,A0,C0,T)を設定することとする。マージモードの場合は、処理対象の予測ブロックの辺と、符号化情報が最も等しい可能性が高いと考えられる処理対象の予測ブロックと辺とが接している隣接ブロックA1及びB1を優先してリストの前方に登録することで、マージインデックスの符号量を削減し、符号化効率を向上させる。
参照候補リスト格納メモリ314に設けられる参照候補リストは、リスト構造を成し、参照候補リスト内部の所在を示すインデックスと、インデックスに対応する参照隣接ブロックの符号化情報の候補を要素として格納する配列領域が設けられる。この配列領域はcandListで表される。インデックスの数字は0から開始され、参照候補リストcandListの記憶領域に、参照隣接ブロックの符号化情報の候補が格納される。以降の処理では、参照候補リストcandListに登録されたインデックスiの符号化情報は、candList[i]で表すこととし、参照候補リストcandListとは配列表記をすることで区別することとする。尚、参照候補リストの記憶領域に格納される符号化情報は、特に断らない限り、参照隣接ブロックの位置名(A0,A1,B0,B1,C0,T)で表すこととする。
図46は実施例5における参照候補リスト作成部311の動作を示すフローチャートである。実施例5では、参照候補リスト作成前に、図31(a)で示される隣接ブロックの中から左側及び上側のブロック群に分類し、それぞれのブロック群の参照隣接ブロックの個数NA及びNBを設定する。ここで、左側のブロック群の隣接ブロックはA0,A1、上側のブロック群の隣接ブロックはB0,B1,C0であり、NA及びNBをともに1に設定する。即ち、それぞれのブロック群から1つの隣接ブロックを選択することを意味する。尚、NA及びNBはそれぞれのブロック群の中の隣接ブロック総数を超えないこととする。
まず、変数Nと参照候補リストのインデックスkを初期化する(S1200)。変数Nには予測モードに対応した最も優先順位の高い隣接ブロックが初期設定される。マージモードではA1、動き検出モードではA0である。kは0に設定される。インデックスkは参照候補リストの記憶領域に設定される符号化情報の候補の格納領域の優先順位を示す。
次に、左側及び上側のブロック群のカウンタna及びnbを0に初期化する(S1201)。最初に、隣接ブロックNが左側或いは上側のブロック群に属する隣接ブロックか否かの判定が行われる(S1202)。属しない場合(S1202のN)、ステップS1206に進み、属する場合(S1202のY)、左側或いは上側のどちらのブロック群に属するかを判定する(S1203)。
左側の場合、カウンタnaとNAの比較に進み(S1204)、naがNAより小さい場合(S1204のY)、ステップS1206に、そうでない場合(S1204のN)、ステップS1210に進む。上側の場合、カウンタnbとNBの比較に進み(S1205)、nbがNBより小さい場合(S1205のY)、ステップS1206に、そうでない場合(S1205のN)、ステップS1210に進む。
na及びnbがNA及びNB以上の場合は、各ブロック群で参照候補リストに選出される隣接ブロック数を超えたことを示し、この場合、参照候補リストに登録するか否かの判定はせず、登録されない。
隣接ブロックNの有効フラグavailableFlagNの判定が行われる(S1206)。availableFlagNが1の場合(S1206のY)、隣接ブロックNの符号化情報を参照候補リストcandListLX[k]に登録し(S1207)、kを更新する(S1208)。更に、隣接ブロックNが左側或いは上側のブロック群に属する場合はカウンタna或いはnbを更新する(S1209)。availableFlagNが0の場合(S1206のN)、参照候補リストには登録せず、ステップS1210に進む。
隣接ブロックNが最後の参照ブロックか否かを判定する(S1210)。最後のブロックである場合(S1210のY)、インデックスの値を候補リスト総数NumListCandに設定した後(S1211)、処理を終了する。最後のブロックで無い場合(S1210のY)、変数Nを更新して(S1212)、ステップS1202以降の処理を繰り返す。
以上の処理により、参照候補リストに登録される。ここでは、参照候補リストに登録される最大数はNA+NB+1で表される。最初に設定したNAとNBに異なる時間の候補が1つ加算されることになり、ここではNA,NBともに1としたので、最大3となる。参照隣接ブロックが1つだけ有効となる場合、最大符号語長は0となるので、符号語は必要とせず、1つだけ有効と判定された隣接ブロックの符号化情報の候補が参照先として一意に決定される。
上記の処理において、例えば隣接ブロックA1の有効フラグavailableFlagA1が0の場合、優先順位はA1,B1,B0,A0,C0,Tなので、参照候補リストには優先順にB1,A0,Tが登録される。実施例2で同じ条件で処理を行うとA0,B1,Tとなる。実施例5の方が元の優先順位を保ちつつ、処理対象の予測ブロックと符号化情報が最も等しい可能性が高いと考えられる隣接ブロックを優先して参照候補リストの前方に登録することで、インデックスの符号量を削減し、符号化効率を向上させる。
また、この場合、左側及び上側に隣接するブロック群を代表する隣接ブロック及び時間が異なる別のピクチャの同一位置に隣接するブロックの3つの隣接ブロックが参照候補リストに登録されることになり、参照隣接ブロックの総数を実施例1に比べて削減することが出来るので、割り当てる符号語長が短くなり、符号化効率を改善することが出来る。
上述した動画像符号化装置100の中に設置される実施例5のマージ検出部106に対応する、動画像復号装置200の中に設置される実施例5のマージ判定部206について説明する。マージ判定部206は実施例1で説明した図22と同じ構成をなし、参照候補リスト作成部311の処理が実施例1と異なる。それ以外の符号化情報導出部310、同一情報検出部312、参照候補リスト格納メモリ314及び選択部315は実施例1と同一の機能を備える。
また、参照候補リスト作成部311は上述した実施例5におけるマージ検出部106の参照候補リスト作成部311と同一の機能を備えているので、マージ判定部206の同一情報検出部312までの処理で、実施例5のマージ検出部106と同一の参照候補リストが作成されることになる。
作成された参照候補リストから、マージモードでの参照隣接ブロックの符号化情報を取得する選択部315について説明する。選択部315は、作成された参照候補リストの中から、第1の符号化ビット列復号部202で復号された、参照隣接ブロックを特定するインデックスで指定される参照候補リストの隣接ブロックを選択する。選択された符号化情報を動き補償予測部207に供給するとともに、符号化情報格納メモリ210に供給する。
次に、本発明の動画像符号化装置100の構成を示す図2の中に設置される実施例5の動きベクトル予測部103について説明する。動きベクトル予測部103は実施例1で説明した図23と同じ構成をなすが、参照候補リスト作成部321の処理が実施例1とは異なる。参照候補リスト作成部321はマージ検出部106の参照候補リスト作成部311と基本的に同一の機能を備えているので、参照隣接ブロックの符号化情報の候補が有効か否か判定し、参照候補リストに登録する動作は同様であるので、説明を割愛する。
参照候補リスト作成部321がマージ検出部106の参照候補リスト作成部311と異なるのは、参照候補リスト格納メモリ324に設けられた参照候補リストに、参照隣接ブロックの符号化情報の候補を登録する場合の優先順位である。動き検出モードの場合、参照候補リスト作成部321では、A0,B0,A1,B1,C0,Tの順番に設定される。
動き検出モードは、差分動きベクトルを伝送する為のモードであり、予測動きベクトルの選択の幅を広げる為に、左側と上側の隣接ブロックの候補の動きベクトルの差が大きくなるように、左側と上側の候補間の距離を離して登録することで、差分動きベクトルの符号量を削減し、符号化効率を向上させる。この動き検出モードでの優先順位の決定方法は、出来るだけ同一の符号化情報である確率の高い隣接ブロックを優先候補として登録するマージモードとは目的が異なる。以上のように、優先順位をつけて、優先順位の高いものから参照候補リストに、参照隣接ブロックの符号化情報の候補を登録することで、参照候補リストのインデックスmvp_idx_l0及びmvp_idx_l1の符号量を削減する。
上述した動画像符号化装置100の中に設置される実施例5の動きベクトル予測部103に対応する、動画像復号装置200の中に設置される実施例5の動きベクトル算出部204についても、動きベクトル算出部204の参照候補リスト作成部321は、対応する動きベクトル予測部103の参照候補リスト作成部321と同一の機能を備えているので、動きベクトル予測部103と同一の参照候補リストが作成されることになる。
作成された参照候補リストから、動き検出モードにおいて参照隣接ブロックの符号化情報を取得する選択部325について説明する。選択部325は、作成された参照候補リストの中から、第1の符号化ビット列復号部202で復号された、参照隣接ブロックを特定するインデックスで指定されるリストの隣接ブロックを選択する。選択されたリストの隣接ブロックの符号化情報から動きベクトルを予測動きベクトルとして出力し、動きベクトル加算部327にて予測動きベクトルと第1の符号化ビット列復号部202で復号された差分動きベクトルとを加算して動きベクトルを算出し、動き補償予測部207に供給するとともに、選択されたリストの隣接ブロックの符号化情報を符号化情報格納メモリ210に供給する。
尚、実施例5では、NA及びNBをともに1に設定したが、それぞれのブロック群の隣接ブロック総数を超えない数を設定してもよく、更に、予測モードでそれぞれ設定を変更してもよい。
(実施例6)
実施例6では、実施例2とは異なる参照隣接ブロックのブロック群を定義し、その中からそれぞれ1つを代表する隣接ブロックとして選択する方法を変えるものである。図31(a)の隣接ブロックの配置を用いて説明する。図31(a)で配置される6つの隣接ブロックA0,A1,B0,B1,C0,Tを、A1を左側に隣接する代表ブロック、B1を上側に隣接する代表ブロック、時間が異なる別のピクチャの同一位置に隣接するブロックT、処理対象の予測ブロックのコーナーに位置する隣接ブロックA0,B0とC0をコーナーに隣接するブロック群とする。そのブロック群の中から1つを代表する隣接ブロックとして選択する。左側、上側、異なる時間及びコーナーの4つの隣接ブロックから1つの隣接ブロックの符号化情報を参照先として選択する。
処理対象の予測ブロックの辺と、符号化情報が最も等しい可能性が高いと考えられる処理対象の予測ブロックの辺とが接している隣接ブロックA1及びB1を優先して参照候補リストの前方に登録し、相対的に可能性が低いコーナーの3つの隣接ブロックをグループ化して、インデックスの符号量を削減し、符号化効率を向上させるので、特にマージモードの場合に有効な手法である。
動画像符号化装置100の中に設置される実施例6のマージ検出部106と、対応する動画像復号装置200の中に設置される実施例6のマージ判定部206の参照候補リスト作成部311、及び動画像符号化装置100の中に設置される実施例6の動きベクトル予測部103と、対応する動画像復号装置200の中に設置される実施例6の動きベクトル算出部204の参照候補リスト作成部321の中で、処理対象の予測ブロックのコーナーに位置する隣接ブロックA0,B0とC0をコーナーに隣接するブロック群と定義する。A1,B1,(B0,A0,C0),Tの順に優先順位を設定し、優先順位の高いものから参照候補リストに参照隣接ブロックの符号化情報の候補を登録することで、参照候補リストのインデックスの符号量を削減する。ここで、参照候補リスト内部の括弧は、左側或いは上側の隣接ブロック群の中から、括弧内の左から右の順に処理され、選択される1つの隣接ブロックを表す。
参照候補リスト作成部311及び321では、コーナーに隣接するブロック群から代表する隣接ブロックの選択として、例えば、実施例2で説明したように、ブロック群の中の隣接ブロックを予め決められた処理順にスキャンする。隣接ブロックが有効であり、且つIntraモードでない条件を満足するか判定し、この条件を満足する最初の隣接ブロックを選択してもよい。ここでは、処理順をB0,A0,C0とするが、必ずしもこの順番である必要はない。また、コーナーに隣接するブロック群の中の隣接ブロックB0,A0,C0の符号化情報の比較を行い、同一の符号化情報を備える隣接ブロックを選択してもよい。即ち、ブロック群の中で多数決を行い、同一の符号化情報を備える隣接ブロックのうち、処理順B0,A0,C0で先になる方を隣接ブロックとして選択する。実施例6で作成される参照候補リストは、参照隣接ブロックが全て有効であった場合、図47のように表される。
(実施例7)
実施例7は、参照候補リストに登録された、参照隣接ブロックの数を制限するものである。実施例1、3(実施例はマージモードの場合)の参照候補リストに登録される、参照隣接ブロック数は、図9(a)或いは図31(a)の隣接ブロックの配置の場合、最大6個存在する。この中から隣接ブロックを選択すると、インデックスで最大で5ビットの符号量を必要とする為、符号化効率が向上するとは言えない。そこで、実施例2、4等と同様に作成された参照候補リストの中の上位の隣接ブロックの符号化情報のみ使用するように限定する。
最初に、動画像符号化装置100の構成を示す図2の中に設置される実施例7のマージ検出部106について説明する。図48は図11で示される実施例1の動画像符号化装置100のマージ検出部106に参照候補制限部318を追加したマージ検出部106の構成を示す。図48で示される各部は図11で示される各部と同じ機能を備えているので、ここでは参照候補制限部318の機能についてのみ説明する。
参照候補制限部318は、同一情報検出部312にて参照候補リストの中から同一の符号化情報を備える参照隣接ブロックを削除した参照候補リストが入力される。参照候補制限部318は、参照候補リストの中から、設定された制限数分のインデックス上位の隣接ブロックを残し、それ以外を削除するか、或いは選択外として判定する。例えば、実施例1で同一の符号化情報が存在しない場合の参照候補リストの一例を示す図20に対し、マージモードの場合で3個に制限すると、インデックス0から2までの上位3個の隣接ブロックを参照候補とし、残りは使用しないので参照候補の対象から外す。
以上のようにして、参照候補として隣接ブロックが参照候補リストに制限されて登録されることになり、参照隣接ブロックの総数を実施例1に比べて削減することが出来るので、割り当てる符号語長が短くなり、符号化効率を改善することが出来る。また、参照候補リストの優先順位の高い隣接ブロックに絞り込んで制限するので、符号化効率の低下を抑えることが出来る。参照候補リストの制限数は、例えばSPS(Sequence Parameter Set)やSlice Headerといったヘッダー情報に制限数を設定してもよい。また、符号化側と復号側で暗黙的な条件として設定してもよく、符号化側と復号側で矛盾が生じないよう設定されれば方法を制限するものではない。また、予測モードに従ってそれぞれ制限数を設定してもよい。更に、処理対象の予測ブロックが参照する符号化済み或いは復号済みの隣接ブロックの符号化情報に基づいて、参照候補リストの制限数を適応的に変更してもよい。
以上のように、同一情報検出部312の直後に参照候補制限部318を設けることで、参照候補を制限する手法を説明したが、参照候補制限部318をマージ検出部106の中に設けずに、同一情報検出部312の中に参照候補制限部318の機能を備えるようにしても同等の効果が得られる。この場合、同一情報検出部312では、参照候補リストの中に格納された符号化情報の候補を比較して、同じ符号化情報の候補が存在する場合、最も小さい参照候補リストのインデックスを持つ符号化情報の候補を除いて全て削除されるとともに、最も小さい参照候補リストのインデックスを持つ符号化情報の候補を参照候補リストに再登録し、その登録数が制限数に達した場合に処理が終了する。
図49は実施例7における同一情報検出部312の動作を示すフローチャートであり、実施例1の図21に示す動作を行う同一情報検出部312に対して、実施例7の参照候補の制限する機能を追加したものである。図21のフローチャートに対して、新たにステップS710からステップS712の処理ステップが追加され、これら追加された処理について説明する。
参照候補リストのインデックスを表す変数nとmの設定後に、削除リストに記録される参照候補リストの候補数を表すカウンタsを0に設定する(S710)。次に、ステップS702にて、mが既に削除リストに記録されているか判定し、mが未だ削除リストに記録されていない場合(S702のN)、mを削除リストに記録するとともに、カウンタsに1加算して更新する(S711)。
次にsが閾値THと等しいか否かを判定する(S712)。ここで、閾値THは候補リスト総数NumListCandから制限数を引いた数を表す。即ち、参照候補リストに制限数の候補を残し、削除リストに記録された候補数の最大数を表す。sがTHと等しくなった場合(S712のY)、参照候補リストに制限数分の候補が残ることになるので、同一情報判定の処理を終了して、ステップS708に進み、削除リストに記録されたインデックスに該当するリストの格納領域の符号化情報を削除して、インデックス0を基準に、インデックスが小さい候補の順で詰めて、符号語を更新して終了する。尚、参照候補リストの総数NumListCandは制限数に更新される。
また、参照候補制限部318を同一情報検出部312の直前に設けてもよい。この場合、参照候補リスト作成部311にて作成された参照候補リストの中の参照候補を制限して候補数を絞り込むので、同一情報検出部312で同一情報を検出する最大回数が削減される為、処理量が削減される効果がある。
図50は図11で示される実施例1の動画像符号化装置100のマージ検出部106を基に、実施例7の参照候補制限部318を追加したマージ検出部106の構成を示す。図50で示される各部は図11で示される各部と同じ機能を備えている。上述した図48の構成と参照候補制限部318の位置が異なるだけであり、参照候補制限部318の動作も同様である。参照候補制限部318は参照候補リスト作成部311にて作成された参照候補リストの中から、設定された制限数分のインデックス上位の隣接ブロックを残し、それ以外を削除するか、或いは選択外として判定する。
以上のように、同一情報検出部312の直前に参照候補制限部318を設けることで、参照候補の制限する手法を説明したが、参照候補制限部318をマージ検出部106の中に設けずに、参照候補リスト作成部311の中に参照候補制限部318の機能を備えるようにしても同等の効果が得られる。この場合、参照候補リスト作成部311では、符号化情報導出部310にて導出された、参照隣接ブロックの符号化情報を、参照候補リストに登録するとともに、参照候補リストに登録された、参照隣接ブロックの数をカウントし、その数が制限数に達した場合に処理を終了する。
図51は実施例7における参照候補リスト作成部311の動作を示すフローチャートであり、実施例1の図19に示す動作を行う参照候補リスト作成部311に対して、実施例7の参照候補の制限する機能を追加したものである。図19のフローチャートに対して、新たにステップS607の処理ステップが追加され、この追加された処理について説明する。
まず、変数Nと参照候補リストのインデックスkを初期化する(S600)。インデックスkは参照候補リストの記憶領域に設定される符号化情報の候補の格納領域の優先順位を示す。
次に、参照隣接ブロックNの有効フラグavailableFlagNの判定が行われ(S601)、availableFlagNが1の場合(S601のY)、隣接ブロックNの符号化情報を参照候補リストに登録し(S602)、kを更新する(S603)。
次に、kが制限数に達したか否かの判定が行われる(S607)。kが制限数未満であれば(S607のN)、まだ参照候補リストに制限数分の符号化情報が登録されていないので、ステップS604に進む。kが制限数に達した場合(S607のY)、参照候補リストに制限数分の符号化情報が登録されたので、インデックスの値を候補リスト総数NumListCandに設定した後(S605)、処理を終了する。
尚、実施例1のマージ検出部106に対して参照候補制限部318を追加した例で説明したが、他の実施例においても、参照候補制限部318を追加することは可能である。また、マージ検出部106に対応する動画像復号装置200の中に設置される実施例7のマージ判定部206に参照候補制限部318を追加することも可能であり、マージ判定部206の中に参照候補制限部318を設けず、マージ判定部206の参照候補リスト作成部311或いは同一情報検出部312の中に、参照候補制限部318の機能を備えるようにしても同等の効果が得られる。但し、符号化側と復号側で参照候補制限部318を設置する位置或いは参照候補制限部318の機能を備える処理部は同じにする必要がある。
次に、動画像符号化装置100の構成を示す図2の中に設置される実施例7の動きベクトル予測部103について説明する。図52は図23で示される実施例1の動画像符号化装置の動きベクトル予測部103を基に、実施例7の参照候補制限部328を追加した動きベクトル予測部103の構成を示す。図52で示される各部は、基本的には図23で示される各部と同じ機能を備えているが、符号化情報導出部320及び参照候補リスト作成部321の処理は実施例1とは異なる。実施例7における符号化情報導出部320及び参照候補リスト作成部321と新たに追加した参照候補制限部328の機能について説明する。
図53は実施例7における符号化情報導出部320の動作を示すフローチャートである。実施例1における符号化情報導出部320では、処理対象の予測ブロックの予測モードに応じて、片方向予測でL0予測の場合は参照リストL0に登録されている符号化情報だけを、片方向予測でL1予測の場合は参照リストL1に登録されている符号化情報だけを、双予測の場合は参照リストL0,L1に登録されているそれぞれの符号化情報の判定を、L0とL1のリスト毎に独立して行っていた。
実施例7では、まず、リストに関わらず隣接ブロックの有効性を判定し、その後に処理対象の予測ブロックの予測モードに応じて、符号化情報を検出して取得する。この処理により、隣接ブロックの有効性判定をリスト毎に行う必要が無くなり、処理工数を削減することが可能となる。
まず、変数Nを初期化する(S900)。変数Nには図9(a)に示される同一のピクチャ上にある隣接ブロックB0,A0,A1,B1,C0が設定される。ここで、初期化時にはN=B0に設定することとし、変数Nの更新はA0,A1,B1,C0の順で行うこととする。
動き検出モードは、差分動きベクトルを伝送する為のモードであり、予測動きベクトルの選択の幅を広げる為に、左側と上側の隣接ブロックの候補の動きベクトルの差が大きくなるように、左側と上側の候補間の距離を離して登録することで、差分動きベクトルの符号量を削減し、符号化効率を向上させる。この動き検出モードでの優先順位の決定方法は、出来るだけ同一の符号化情報である確率の高い隣接ブロックを優先候補として登録するマージモードとは目的が異なる。
次に、変数Nの隣接ブロック(以下、隣接ブロックNとする)の位置及び符号化情報を取得する(S902)。取得された隣接ブロックNの位置に基づいて、隣接ブロックNが有効か否かを判定する(S903)。例えば、処理対象の予測ブロックがピクチャ左端に位置する場合、処理対象の予測ブロックの左の隣接ブロックは存在しないので、符号化情報格納メモリ114の中に該当する符号化情報は無いことになり、無効と判定される。
隣接ブロックNが無効の場合(S903のN)、availableFlagNを"0"に設定する(S908)。隣接ブロックNが有効の場合(S903のY)、隣接ブロックNの予測モードが画面内符号化(Intra)モードか否かを判定する(S904)。隣接ブロックNの予測モードがIntraモードでない場合(S904のY)、即ち、Interモードの場合、availableFlagNを"1"に設定する(S906)。続いて、動きベクトルの算出が行われる(S916)。動きベクトルの算出後、隣接ブロックNの符号化情報をrefIdxLXN、mvLXN及びpredFlagLXNに代入して設定する(S907)。
以上のようにして、隣接ブロックNに対する判定処理が終了すると、変数Nが隣接ブロックの最後か否かの判定を実施する(S909)。変数Nの更新はB0,A0,A1,B1,C0の順番に行われるので、ここではNがC0か否かの判定を行う。NがC0であれば(S909のY)、全ての隣接ブロックに対して判定をしたことになり、処理を終了する。NがC0でない場合(S909のN)、Nの更新を行う(S910)。上述した隣接ブロックの順番にNを更新して、ステップS902以降の処理を隣接ブロックNについて繰り返す。
ここで、動きベクトルの算出過程について図54のフローチャートを用いて説明する。まず、L0予測の隣接ブロックNの符号化情報を格納しておく変数を初期化する。ここで、変数は隣接ブロックNの動きベクトルmvL0N、参照ピクチャ番号refIdxL0N及び参照リストの有効性を示すフラグpredFlagL0Nであり、次のように初期化される(S920)。
mvL0N=(0,0)
refIdxL0N=0
predFlagL0N=0)
次に、処理対象の予測ブロックのInterモードが片方向のL0予測或いはBi−pred予測(双予測)か否か判定される(S921)。Bi−pred予測ではL0予測及びL1予測の2つの参照リストを使用するので、片方向のL0予測或いはBi−pred予測の場合(S921のY)、隣接ブロックNの動きベクトルmvL0Nの算出に進む(S922)。
処理対象の予測ブロックと隣接ブロックNの参照ピクチャ番号及び参照リストが同一である場合には、隣接ブロックNのL0予測の動きベクトルをmvL0Nに代入して設定する。処理対象の予測ブロックと隣接ブロックNの参照ピクチャ番号及び参照リストが同一でない場合、隣接ブロックNの動きベクトルのスケーリング処理が実施される。スケーリング処理については実施例1で説明したので、ここでは割愛する。スケーリング処理を実施することで、処理対象の予測ブロックに対して、より近い動きベクトルを導出して精度向上を図ることが出来る。以上のようにして、スケーリング処理された動きベクトルをmvL0Nに、隣接ブロックNのL0予測の符号化情報をrefIdxL0N及びpredFlagL0Nに代入して設定する。
片方向のL0予測でもBi−pred予測でもない場合(S921のN)、L1予測の動きベクトル判定に進む。続いて、L1予測の隣接ブロックNの符号化情報を格納しておく変数を初期化する。ここで、変数は隣接ブロックNの動きベクトルmvL1N、参照ピクチャ番号refIdxL1N及び参照リストの有効性を示すフラグpredFlagL1Nであり、次のように初期化される(S923)。
mvL1N=(0,0)
refIdxL1N=0
predFlagL1N=0
次に、処理対象の予測ブロックのInterモードが片方向のL1予測或いはBi−pred予測(双予測)か否か判定される(S924)。Bi−pred予測ではL0予測及びL1予測の2つの参照リストを使用するので、片方向のL1予測或いはBi−pred予測の場合(S924のY)、隣接ブロックNの動きベクトルmvL1Nの算出に進む(S925)。
処理対象の予測ブロックと隣接ブロックNの参照ピクチャ番号及び参照リストが同一である場合には、隣接ブロックNのL1予測の動きベクトルをmvL0Nに代入して設定する。処理対象の予測ブロックと隣接ブロックNの参照ピクチャ番号及び参照リストが同一でない場合、隣接ブロックNの動きベクトルのスケーリング処理が実施される。スケーリング処理については実施例1で説明したので、ここでは割愛する。以上のようにして、スケーリング処理された動きベクトルをmvL1Nに、隣接ブロックNのL1予測の符号化情報をrefIdxL1N及びpredFlagL1Nに代入して設定する。片方向のL1予測でもBi−pred予測でもない場合(S924のN)、処理を終了する。
以上のようにして、処理対象の予測ブロックと同一ピクチャ上に存在する周囲の隣接ブロックを参照ブロックとして、その符号化情報が導出される。時間が異なる別のピクチャの同一位置に隣接するブロックの符号化情報の導出は実施例1と同様であるので、ここでは説明を割愛する。
こうして得られた隣接ブロックの符号化情報は、参照候補リスト作成部321に入力される。参照候補リスト作成部321で作成される参照候補リストとして、処理対象の予測ブロックのInterモードに応じて、L0及びL1予測の2つの参照リストに対してそれぞれ参照候補リストが作成される。実施例1では参照候補リストを参照リスト毎に作成したが、実施例7では以降の判定に使用する隣接ブロックの有効性を示すフラグを参照リストに関わらず1つのフラグavailableFlagNで表すので、L0,L1両予測の参照候補リストを一度に作成することが可能となり、処理工数を削減することが出来る。
参照候補リスト作成部321の動作を図55のフローチャートを用いて説明する。まず、変数Nと参照候補リストのインデックスkを初期化する(S600)。変数Nには図9(a)に示される隣接ブロックB0が初期設定され、kは0に設定される。変数Nは参照候補リストに格納する優先順位を表し、隣接ブロックB0,A0,A1,B1,C0の順番に行われる。インデックスkは参照候補リストの記憶領域に設定される符号化情報の候補の格納領域の番号を表し、優先順位と対応している。
次に、参照隣接ブロックNの有効フラグavailableFlagNの判定が行われる(S601)。availableFlagNが1の場合(S601のY)、隣接ブロックNの符号化情報をL0及びL1予測の2つの参照候補リストcandListLX[k]に同時に登録し(S602)、kを更新する(S603)。ここで、添え字Xは0或いは1を表す。availableFlagNが0の場合(S601のN)、参照候補リストには登録せず、次に進む。隣接ブロックNが最後の参照ブロックか否かを判定する(S604)。最後のブロックである場合(S604のY)、インデックスの値を候補リスト総数NumListCandに設定した後(S605)、処理を終了する。最後のブロックで無い場合(S604のN)、変数Nを更新して(S606)、ステップS601以降の処理を繰り返す。
参照候補制限部328には、同一情報検出部322にて参照候補リストの中から同一の動きベクトルを備える参照隣接ブロックを削除した参照候補リストが入力される。参照候補制限部328は、参照候補リストの中から、設定された制限数分のインデックス上位の隣接ブロックを残し、それ以外を削除するか、或いは選択外として判定する。例えば、実施例1で同一の動きベクトルが存在しない場合の参照候補リストの一例を示す図28において、動き検出モードの場合に3個に制限すると、インデックス0から2までの上位3個の隣接ブロックを参照候補とし、残りは使用しないので参照候補の対象から外す。
以上のようにして、参照候補として隣接ブロックが参照候補リストに制限されて登録されることになり、参照隣接ブロックの総数を実施例1に比べて削減することが出来るので、割り当てる符号語長が短くなり、符号化効率を改善することが出来る。また、参照候補リストの優先順位の高い隣接ブロックに絞り込んで制限するので、符号化効率の低減を抑えることが出来る。参照候補リストの制限数は、例えばSPS(Sequence Parameter Set)やSlice Headerといったヘッダー情報に制限数を設定してもよい。
また、符号化側と復号側で暗黙的な条件として設定してもよく、符号化側と復号側で矛盾が生じないよう設定されれば方法を制限するものではない。また、予測モードに従ってそれぞれ制限数を設定してもよい。更に、処理対象の予測ブロックが参照する符号化済み或いは復号済みの隣接ブロックの符号化情報に基づいて、参照候補リストの制限数を適応的に変更してもよい。
以上のように、同一情報検出部322の直後に参照候補制限部328を設けることで、参照候補を制限する手法を説明したが、参照候補制限部328を動きベクトル予測部103の中に設けずに、同一情報検出部322の中に参照候補制限部328の機能を備えるようにしても同等の効果が得られる。この場合、同一情報検出部322では、参照候補リストの中に格納された符号化情報の候補を比較して、同じ動きベクトルを備える候補が存在する場合、最も小さい参照候補リストのインデックスを持つ符号化情報の候補を除いて全て削除するとともに、最も小さい参照候補リストのインデックスを持つ符号化情報の候補を参照候補リストに再登録し、その登録数が制限数に達した場合に処理を終了する。
図56は実施例7における同一情報検出部322の動作を示すフローチャートであり、実施例1の図29に示す動作を行う同一情報検出部322に対して、実施例7の参照候補を制限する機能を追加したものである。図29のフローチャートに対して、新たにステップS1010からステップS1012の処理ステップが追加され、これら追加された処理について説明する。
参照候補リストのインデックスを表す変数nとmの設定後に、削除リストに記録される参照候補リストの候補数を表すカウンタsを0に設定する(S1010)。次に、ステップS1002にて、mが既に削除リストに記録されているか判定し、mが未だ削除リストに記録されていない場合(S1002のN)、mを削除リストに記録するとともに(S1003)、カウンタsを1加算して更新する(S1011)。
次にsが閾値THと等しいか否かを判定する(S1012)。ここで、閾値THは候補リスト総数NumListCandから制限数を引いた数を表す。即ち、参照候補リストに制限数の候補を残し、削除リストに記録された候補数の最大数を表す。sがTHと等しくなった場合(S1012のY)、参照候補リストに制限数分の候補が残ることになるので、同一情報判定の処理を終了して、ステップS1008に進み、削除リストに記録されたインデックスに該当するリストの格納領域の符号化情報を削除して、インデックス0を基準に、インデックスが小さい候補の順で詰めて、符号語を更新して終了する。尚、参照候補リストの総数NumListCandは制限数に更新される。
また、参照候補制限部328を同一情報検出部322の直前に設けてもよい。この場合、参照候補リスト作成部321にて作成された参照候補リストの中の参照候補を制限して候補数を絞り込むので、同一情報検出部322で同一情報を検出する最大回数が削減される為、処理量が削減される効果がある。
図57は図23で示される実施例1の動画像符号化装置の動きベクトル予測部103を基に、実施例7の参照候補制限部328を追加した動きベクトル予測部103の構成を示す。図57で示される各部は図23で示される各部と同じ機能を備えている。上述した図52の構成と参照候補制限部328の位置が異なるだけであり、参照候補制限部328の動作は同様である。参照候補制限部328は参照候補リスト作成部321にて作成された参照候補リストの中から、設定された制限数分のインデックス上位の隣接ブロックを残し、それ以外を削除するか、或いは選択外として判定する。
以上のように、同一情報検出部322の直前に参照候補制限部328を設けることで、参照候補を制限する手法を説明したが、参照候補制限部328を動きベクトル予測部103の中に設けずに、参照候補リスト作成部321の中に参照候補制限部328の機能を備えるようにしても同等の効果が得られる。この場合、参照候補リスト作成部321では、符号化情報導出部320にて導出された参照隣接ブロックの符号化情報を、参照候補リストに登録するとともに、参照候補リストに登録された参照隣接ブロックの数をカウントし、その数が制限数に達した場合に処理を終了する。参照候補リスト作成部321は、処理対象の予測ブロックの予測モードに応じて、L0及びL1予測の参照候補リストを同時に作成することが出来ることを除けば、実施例7における参照候補リスト作成部311の動作を示す図51のフローチャートと同じ動作を行うので、ここでは説明を割愛する。
(実施例8)
実施例8では、実施例2、5とは異なる、参照隣接ブロックのブロック群を定義し、その中からK個の代表する隣接ブロックを選択するものである。図31(a)の隣接ブロックの配置を用いて説明する。実施例4と同様に、図31(a)で配置される6つの隣接ブロックA0,A1,B0,B1,C0,Tから、処理対象の予測ブロックと同じピクチャ上にある隣接ブロックA0,A1,B0,B1,C0を1つのブロック群とし、そのブロック群の中からK個の代表する隣接ブロックを選択する。
選択された同じピクチャ上の代表するK個の隣接ブロックと、時間が異なる別のピクチャの同一位置に隣接するブロックTのK+1個の隣接ブロックの符号化情報を参照候補として参照候補リストに登録する。実施例4では符号化情報導出部310、符号化情報導出部320でK個(2個)の代表する隣接ブロックを選択しているのに対し、実施例8では実施例1と同様に、符号化情報導出部310及び符号化情報導出部320はすべての隣接ブロックを選択し、参照候補リスト作成時以降の処理で、K個(2個)の代表する隣接ブロックを選択している点が異なる。
実施例8は、参照候補として選出する隣接ブロックの数に制限をかける実施例7を、処理対象の予測ブロックと同一ピクチャ上のブロック群に適用した場合と等価であるが、時間が異なる別のピクチャの同一位置に隣接するブロックのみを別扱いとして参照候補リストの最後に登録する点が異なる。同じピクチャ上にある隣接ブロック同士は同じ符号化情報を持つ可能性が高く、時間が異なる別のピクチャの同一位置に隣接するブロックはそれらと異なる符号化情報を持つ可能性が高いので、別途候補として登録する効果が高いといえる。例えば、同じピクチャ上にある隣接ブロックがすべて、イントラの場合でも、時間が異なる別のピクチャの同一位置に隣接するブロックはインター予測の符号化情報を持つ可能性が高い。ただし、時間が異なる別のピクチャの同一位置に隣接するブロックは、処理対象の予測ブロックと同じピクチャ上にある隣接ブロックに比べて、処理対象の予測ブロックと符号化情報が等しい或いは近い可能性が低いので、優先順位を下げている。
その為、同一ピクチャ上のブロック群から選択される隣接ブロックよりも優先順位を低く設定し、参照候補リストの下位の位置に登録する。以下では、実施例8は、実施例7で説明された動画像符号化装置100及び動画像復号装置200と同様の構成をなすものとして説明する。但し、実施例7の参照候補制限部318及び328は設置せず、参照候補制限部の機能を参照候補リスト作成部311、321、或いは同一情報検出部312、322の中に設け、処理対象の予測ブロックと同じピクチャ上にある隣接ブロックのブロック群に適用することとする。
動画像符号化装置100の中に設置されるマージ検出部106と、対応する動画像復号装置200の中に設置されるマージ判定部206の参照候補リスト作成部311、及び動画像符号化装置の100中に設置される動きベクトル予測部103と、対応する動画像復号装置200の中に設置される動きベクトル算出部204の参照候補リスト作成部321の中で、処理対象の予測ブロックと同じピクチャ上にある隣接ブロックA0,A1,B0,B1,C0を同一ピクチャ上のブロック群と定義する。同一ピクチャ上のブロック群を代表する隣接ブロック、Tの順に優先順位を設定し、優先順位の高いものから参照候補リストに参照隣接ブロックの符号化情報の候補を登録することで、参照候補リストのインデックスの符号量を削減する。
まず、動画像符号化装置100の構成を示す図2の中に設置される実施例8のマージ検出部106について説明する。マージ検出部106は実施例1で説明した図11と同じ構成をなすが、参照候補リスト作成部311の処理が実施例1とは異なる。実施例8におけるマージ検出部106の参照候補リスト作成部311の動作について説明する。
図58は実施例8における参照候補リスト作成部311の動作を示すフローチャートである。実施例8では、参照候補リスト作成前に、同一ピクチャ上のブロック群の、参照隣接ブロックの参照候補リストに登録する数Kを設定する。ここで、Kは2に設定する。尚、Kは同一ピクチャ上のブロック群の中の隣接ブロック総数を超えないこととする。
まず、変数Nと参照候補リストのインデックスkを初期化する(S1300)。変数Nには予測モードに対応した最も優先順位の高い隣接ブロックが初期設定される。マージモードにおける優先順位はA1,B1,B0,A0,C0としているので、A1が設定され、Nの更新はこの順番で行われる。kは0に設定される。インデックスkは参照候補リストの記憶領域に設定される符号化情報の候補の格納領域の優先順位を示す。
最初に、隣接ブロックNの有効フラグavailableFlagNの判定が行われる(S1301)。availableFlagNが0の場合(S1301のN)、参照候補リストには登録せず、ステップS1305に進む。availableFlagNが1の場合(S1301のY)、隣接ブロックNの符号化情報を参照候補リストに登録し(S1302)、kを更新する(S1303)。
kの更新後、kとKの比較に進む(S1304)。kがK未満(S1304のY)、即ち参照候補リストに登録される隣接ブロックの数が設定数Kに達していない場合はステップS1305に進む。kがK以上の場合(S1304のN)、参照候補リストに登録される隣接ブロックの数が設定数Kに達した場合なので、参照候補リストに登録するか否かの判定から抜け、ステップS1307に進む。
次に、隣接ブロックNが最後の参照ブロックか否かを判定する(S1305)。隣接ブロックNが最後のブロックで無い場合(S1305のN)、変数Nを更新して(S1306)、ステップS1301以降の処理を繰り返す。隣接ブロックNが最後のブロックである場合(S1305のY)、ステップS1307に進む。
同一ピクチャ上のブロック群の登録判定終了後に、時間が異なる別のピクチャの同一位置に隣接するブロックTの有効フラグavailableFlagTの判定が行われる(S1307)。availableFlagTが1の場合(S1307のY)、隣接ブロックTの符号化情報を参照候補リストに登録し(S1308)、kを更新する(S1309)。availableFlagTが0の場合(S1307のN)、参照候補リストに登録せず、ステップS1310に進む。参照候補リストに登録した数を候補リスト総数NumListCandに設定した後(S1310)、処理を終了する。
以上の処理により、参照候補リストに登録される。ここでは、参照候補リストに登録される最大数はK+1で表される。参照隣接ブロックが1つだけ有効となる場合、最大符号語長は0となるので、符号語は必要とせず、1つだけ有効と判定された隣接ブロックの符号化情報の候補を参照先として一意に決定される。
上述した動画像符号化装置100の中に設置されるマージ検出部106に対応する、動画像復号装置200の中に設置される実施例8のマージ判定部206について説明する。マージ判定部206は実施例1で説明した図22と同じ構成をなし、参照候補リスト作成部311の処理が実施例1と異なる。それ以外の符号化情報導出部310、同一情報検出部312、参照候補リスト格納メモリ314及び選択部315は実施例1と同一の機能を備える。
また、参照候補リスト作成部311は上述した実施例8におけるマージ検出部106の参照候補リスト作成部311と同一の機能を備えているので、マージ判定部206の同一情報検出部312までの処理で、実施例8のマージ検出部106と同一の参照候補リストが作成されることになる。作成された参照候補リストから、マージモードにおける参照隣接ブロックの符号化情報を取得する選択部315について説明する。選択部315は、作成された参照候補リストの中から、第1の符号化ビット列復号部202で復号された参照隣接ブロックを特定するインデックスで指定される参照候補リストの隣接ブロックを選択する。選択された符号化情報を動き補償予測部207に供給するとともに、符号化情報格納メモリ210に供給する。
次に、動画像符号化装置100の構成を示す図2の中に設置される実施例8の動きベクトル予測部103について説明する。動きベクトル予測部103は実施例1で説明した図23と同じ構成をなすが、参照候補リスト作成部321の処理が実施例1とは異なる。実施例8における参照候補リスト作成部321の動作について説明する。
参照候補リスト作成部321は上述したマージ検出部106の参照候補リスト作成部311と同様に、処理対象の予測ブロックと同じピクチャ上にある隣接ブロックA0,A1,B0,B1,C0を1つのブロック群とし、そのブロック群の中からK個の代表する隣接ブロックを選択する。マージ検出部106の参照候補リスト作成部311と比較して、L0及びL1予測それぞれの参照候補リストを同時に作成する点が異なっているが、処理の流れに大差はないので、ここでは説明を割愛する。尚、動き検出モードでの優先順位はB0,A0,A1,B1,C0としている。
上述した動画像符号化装置100の中に設置される動きベクトル予測部103に対応する、動画像復号装置200の中に設置される実施例8の動きベクトル算出部204についても、動きベクトル算出部204の参照候補リスト作成部321は、対応する動きベクトル予測部103の参照候補リスト作成部321と同一の機能を備えており、動きベクトル予測部103と同一の参照候補リストが作成されることになるので、ここでの説明は割愛する。
以上の処理により、実施例8で作成される候補リストは、参照隣接ブロックが全て有効であった場合、予測モード別に図59ように表される。マージモード、動き検出モードともに同一ピクチャ上のブロック群の参照隣接ブロックの個数を2とした場合の一例であり、それぞれの予測モードの優先順位の高い有効な隣接ブロックが参照候補リストに登録される。
実施例8では、優先順位をマージモードの場合はA1,B1,B0,A0,C0、動き検出モードの場合はB0,A0,A1,B1,C0の順番としたが、必ずしもこの順番である必要はない。但し、マージモードの場合は、処理対象の予測ブロックの辺と、符号化情報が最も等しい可能性が高いと考えられる処理対象の予測ブロックの辺とが接している隣接ブロックA1及びB1を優先して参照候補リストの前方に登録することで、マージインデックスの符号量を削減し、符号化効率を向上させることができる。
動き検出モードは、差分動きベクトルを伝送する為のモードであり、予測動きベクトルの選択の幅を広げる為に、左側と上側の隣接ブロックの候補の動きベクトルの差が大きくなるように、左側と上側の候補間の距離を離して登録することで、差分動きベクトルの符号量を削減し、符号化効率を向上させることができる。この動き検出モードでの優先順位の決定方法は、出来るだけ同一の符号化情報である確率の高い隣接ブロックを優先候補として登録するマージモードとは目的が異なる。尚、実施例3で説明したように、マージモードの場合は実施例8を用いて、動き検出モードの場合は実施例2或いは他の実施例を用いる等、予測モードに応じて組み合わせを変えることも可能である。
(実施例9)
実施例9では、実施例1と同様に、処理対象の予測ブロックと同じピクチャ上にある隣接ブロック及び時間が異なる別のピクチャの同一位置に隣接するブロックに対して、隣接ブロックが有効であれば参照候補リストに登録し、参照候補リストの中から最適な隣接ブロックの符号化情報を選択し、隣接ブロックを表す参照候補リストのインデックスを符号化、伝送するものである。
図9(a)の隣接ブロックの配置を用いて説明する。実施例1では、参照候補リストを作成する場合に、隣接ブロックの位置に対して予め決められた優先順位が対応付けられ、優先順位の順番で隣接ブロックが所定の条件を満たすか否かを判定し、条件を満たす場合に参照候補リストの前方に登録して、参照候補リストを作成していた。つまり、隣接ブロックの位置に対応付けられた優先順位がそのまま参照候補リストのインデックスに反映され、優先順位が高い程、小さいインデックスとなる参照候補リストの記憶領域に格納されていた。
一般に、処理対象の予測ブロックの周囲の隣接ブロックは、処理対象の予測ブロックに接している領域が大きい程、処理対象の予測ブロックと符号化情報が最も等しい可能性が高いと考えられるので、そのような隣接ブロックを優先して参照候補リストの前方に登録することで、インデックスの符号量を削減し、符号化効率を向上させる。
以上の点から、実施例9では、動き検出モードの場合に、動きベクトル予測の参照候補リスト作成時に隣接ブロックの有効性を判定する順番と、参照隣接ブロックに対して割り当てる符号語の順番を別々に定義する。参照候補リスト作成時に隣接ブロックの有効性を判定する順番は、予測動きベクトルの選択の幅を広げる為に、左側と上側の隣接ブロックの候補の動きベクトルの差が大きくなるように、隣接ブロック間の距離を離した順位にする。
ここでは、動きベクトル予測の参照候補リスト作成時に隣接ブロックの有効性を判定する順番をB0,A0,A1,B1,C0,Tとする。一方、参照隣接ブロックに対して割り当てる符号語は、処理対象の予測ブロックに接している領域が大きい隣接ブロックを優先してA1,B1,B0,A0,C0,Tの順番に少ない符号語を割り当てることとする。
動画像符号化装置100の構成を示す図2の中に設置される実施例9の動きベクトル予測部103について説明する。実施例9の動きベクトル予測部103は実施例1で説明した図23と同じ構成をなすが、参照候補リスト作成部321の動作が異なる。実施例9における参照候補リスト作成部321の動作について説明する。図60は、実施例9の動き検出モードにおける参照候補リスト作成部321の動作を示すフローチャートであり、この図を用いて説明する。
参照候補リスト作成部321は基本的に動きベクトル予測部103の中の参照候補リスト作成部321と同様の動作を実施する。動き検出モードでは参照リストによりL0予測とL1予測それぞれの参照候補リストを作成する必要があるので、動き検出モードでの参照候補リスト作成は、L0予測とL1予測を別個に2回実施する。その為、隣接ブロックの有効性を判定するステップS601において、隣接ブロックの有効性を示すフラグavailableFlagLXN(Xは0或いは1、Nは隣接ブロックを示す記号が記述される)に参照リストを示すLXの添字が付加されるが、判定動作はマージモードの場合と同様である。
図60では、動きベクトル予測部103の中の参照候補リスト作成部321の動作を示
す図19のフローチャートに対して、新たに変換テーブルの作成・更新(S608)が追
加されており、この判定部を含め、参照候補リスト作成部321の動作を説明する。但し
、ここでは参照リストの一方のみを説明することし、もう一方の参照リストについては判
定動作は同様であるので説明を割愛する。
まず、変数Nと参照候補リストのインデックスkを初期化する(S600)。変数Nには図9(a)に示される隣接ブロックB0が初期設定され、kは0に設定される。インデックスkは参照候補リスト格納メモリ324に設けられる参照候補リストの記憶領域に設定される符号化情報の候補の格納領域の優先順位を示す。この格納領域は配列構造を成し、candListで表される。インデックスの数字は0から開始され、参照候補リストcandListの記憶領域に、参照隣接ブロックの符号化情報の候補が格納される。以降の処理では、参照候補リストcandListに登録されたインデックスiの符号化情報は、candList[i]で表すこととする。
次に、参照隣接ブロックNの有効フラグavailableFlagLXNの判定が行われる(S601)。ここで、Xは0或いは1が入る。availableFlagLXNが0の場合(S601のN)、参照候補リストには登録せず、次に進む。隣接ブロックNが最後の参照ブロックか否かを判定する(S604)。最後のブロックである場合(S604のY)、インデックスkの値を候補リスト総数NumListCandに設定した後(S605)、処理を終了する。最後のブロックで無い場合(S604のN)、変数Nを更新して(S606)、ステップS601以降の処理を繰り返す。ここで、変数Nを更新する隣接ブロックの順番が参照候補リストに格納する優先順位となっており、実施例9では、順番(B0,A0,A1,B1,C0,T)を設定することとする。
一方、availableFlagLXNが1の場合(S601のY)、隣接ブロックNの符号化情報を参照候補リストcandList[k]に登録し(S602)、変換テーブルの作成・更新(S608)を実施し、kを更新する(S603)。
ここで、変換テーブルの作成・更新(S608)の詳細について説明する。変換テーブルの作成・更新では、動きベクトル予測の参照候補リスト作成時に隣接ブロックの有効性を判定する順番と、参照隣接ブロックに対して割り当てる符号語の順番とを対応させる変換テーブルを作成する。変換テーブルは参照候補リスト格納メモリ324に設けられる配列構造をなす記憶領域であり、参照候補リストのインデックスに対応する符号語を表す変換テーブルのインデックスを記憶する。
図61を用いて説明する。変数Nと参照候補リストのインデックスkが入力され、変換テーブルの作成・更新が開始する。最初に、変数Mと変換テーブルのインデックスjを初期化する(S1400)。変数Mには図9(a)に示される隣接ブロックA1が初期設定され、jは0に設定される。変数MはA1,B1,B0,A0,C0,Tの順番で更新される。次に、MとNの同一判定が行われる(S1401)。MがNと異なる場合(S1401のN)、変換テーブルには登録せず、jを更新する(S1403)。
次に、変数Mが最後の隣接ブロックか否かを判定する(S1404)。最後の隣接ブロックはTであり、MがTである場合(S1404のY)、処理を終了する。最後のブロックで無い場合(S1404のN)、変数Mを更新して(S1405)、ステップS1401以降の処理を繰り返す。
MがNの場合(S1401のY)、参照候補リストのインデックスkを変換テーブルの先頭からj番目の記憶領域に登録される(S1402)。インデックスkの登録されると処理を終了し、図60のkの更新(S603)に戻る。以上の処理により、参照候補リストのインデックスkは変換テーブルに登録され、参照隣接ブロックが全て有効であれば、図62で示される変換テーブルのインデックスで表される符号語に対応付けられる。
この変換テーブルを使って、登録された参照候補リストは、参照隣接ブロックが全て有効であれば、図63に示される順番で参照候補リストが作成されて、符号語が割り当てられる。参照隣接ブロックが1つだけ有効となる場合、符号語は必要とせず、1つだけ有効と判定された隣接ブロックの符号化情報の候補が参照先として一意に決定されることになる。
ここでは、参照候補リスト作成部321にて作成された直後の参照候補リストのインデックスに対して説明したが、本来は同一情報検出部322にて同一の符号化情報を備える参照候補の隣接ブロックを参照候補リストから削除した後に、参照候補リストのインデックスと変換テーブルのインデックスとを対応付けることが望ましい。同一情報検出部322にて削除された参照候補の隣接ブロックの参照候補リストのインデックスに該当する変換テーブルの記憶領域も削除されて、変換テーブルの先頭方向に詰められる。
例えば、図62において、参照候補リストのインデックス1に該当する隣接ブロックが削除された場合、参照候補リストのインデックス1に該当する変換テーブルのインデックス3の箇所が削除される。変換テーブルのインデックス4及び5がそれぞれ3及び4となり、それぞれに対応付けられる符号語も1110及び1111に更新される。
以上のようにして、作成された参照候補リストの動きベクトルを予測動きベクトルとして、差分動きベクトル算出部326では、動きベクトル検出部102が検出した動きベクトルと予測動きベクトルから差分動きベクトルを算出し、算出された差分動きベクトルを出力部323に供給する。出力部323が、作成された参照候補リストの中のインデックスと差分動きベクトルを出力する。参照候補リストは、参照候補リストをMVPリストとして、リストの中のインデックスをMVPインデックスとして出力する。
上述した動画像符号化装置100の中に設置される動きベクトル予測部103に対応する、動画像復号装置200の中に設置される動きベクトル算出部204の中も動きベクトル予測部103と同様の機能をなす実施例9の参照候補リスト作成部321或いは同一情報検出部322が備えられているので、動きベクトル予測部103と同一の参照候補リストが作成される。作成された参照候補リストは選択部325に出力する。
選択部325は、作成された参照候補リストの中から、第1の符号化ビット列復号部202で復号された参照隣接ブロックを特定するインデックスで指定される参照候補リストの隣接ブロックを選択する。選択されたリストの隣接ブロックの符号化情報から動きベクトルを予測動きベクトルとして出力し、差分動きベクトル算出部326にて予測動きベクトルと第1の符号化ビット列復号部202で復号された差分動きベクトルとを加算して動きベクトルを算出し、動き補償予測部207に供給するとともに、選択された参照候補リストの隣接ブロックの符号化情報を符号化情報格納メモリ210に供給する。
(実施例10)
実施例10は、動き検出モードの場合に、参照候補リストの作成時に隣接ブロックの有効性を判定する順番を、最初の隣接ブロックが有効か否かでその後の隣接ブロックの判定する順番を変更するものである。図9(a)の隣接ブロックの配置を用いて説明する。実施例9の参照候補リスト作成時に隣接ブロックの有効性を判定する順番B0,A0,A1,C0,B1,Tを一例として説明する。
最初に判定する隣接ブロックはB0であり、B0が有効である場合、その後の隣接ブロックの順番は変更されない。B0が無効である場合、その後の隣接ブロックの順番はA0,B1,C0,A1の順番に変更される。B0が無効となる場合、A0が最初に判定する隣接ブロックとなり、その次の隣接ブロックがA1である。A1はA0と近い位置にあるので、A0に近い値の動きベクトルとなる可能性が高く、A1が予測動きベクトルとして選択される可能性が低くなる。
動き検出モードは、差分動きベクトルを伝送する為のモードであり、参照隣接ブロックの備えるブロックが近い値であると、予測動きベクトルの選択の幅が狭くなり、適切な予測動きベクトルが検出されなくなる。その為、B0が無効となる場合、A0の次に判定する隣接ブロックは、予測動きベクトルの選択の幅を広げる為に、A0と動きベクトルの差が大きくなるように、A0と距離の離れた隣接ブロックB1を選択する。このようにして、出来るだけ予測動きベクトルの候補となる隣接ブロックの距離が離れるように、判定する順番を変更する。
(実施例11)
実施例11では、動き検出モードの場合、処理対象の予測ブロックと同じピクチャ上にある隣接ブロックを同一ピクチャ上のブロック群と定義し、その中からブロック群を代表する2つの隣接ブロックを選択する一手法を示す。図9(a)の隣接ブロックの配置を用いて説明する。参照候補リストの作成時に隣接ブロックの有効性を判定する順番をB0,B1,C0,A1,A0とする。
最初に、列記した左から右の順番B0,B1,C0,A1,A0(順方向)で隣接ブロックの有効性を判定し、最初に有効と判定された隣接ブロックをまず1つ目のブロック群を代表する隣接ブロックとして参照候補リストに登録する。次に、列記した順番の逆順、つまり右から左の順番A0,A1,C0,B1,B0(逆方向)で隣接ブロックの有効性を判定し、もう1つのブロック群を代表する隣接ブロックとして参照候補リストに登録する。
隣接ブロックの有効性を判定する順番が、処理対象の予測ブロックの右上コーナーから左下コーナーにかけて、隣接ブロックの候補の動きベクトルの差が大きくなるように、有効性の判定順を逆にして、候補間の距離を離して登録することで、予測動きベクトルの選択の幅が広がり、差分動きベクトルの符号量を削減し、符号化効率を向上させる。
尚、順方向、逆方向で隣接ブロックの有効性を判定する場合、順方向ではA0、逆方向ではB0のそれぞれ最後の順番に当たる隣接ブロックの判定を省略してもよい。順方向からの判定で最後のA0が選択される場合は、逆方向からの最初の判定で有効となる隣接ブロックであるので、順方向からの判定で選択された隣接ブロックとして適切でない為である。
また、各方向からの判定でC0までの3つの隣接ブロックのみ判定するように制限してもよい。例えば、順方向からの判定でA0が選択され、逆方向からの判定でA1が選択された場合、同じ動きベクトルを備える隣接ブロックである可能性が高く、動きベクトル予測の選択幅が狭くなり、効果的な予測動きベクトルを導出出来なくなってしまう。このような近接した隣接ブロックの選択を避ける為に、中間位置にあるC0までで有効性の判定を行う。以上のような有効性判定の制限は、判定する隣接ブロックの数が少なくなるので、処理工数の削減に繋がる。
(実施例12)
実施例12は、動き検出モードの場合に、実施例9に対して、処理対象の予測ブロックと同じピクチャ上にある隣接ブロックを同一ピクチャ上のブロック群と定義し、その中からブロック群を代表する隣接ブロックとして選択するようにしたものである。実施例12では、実施例9と同様に、動きベクトル予測の参照候補リスト作成時に隣接ブロックの有効性を判定する順番と、参照隣接ブロックに対して割り当てる符号語の順番を別々に定義する。
参照候補リスト作成時には、予測動きベクトルの選択の幅を広げる為に、左側と上側の隣接ブロックの候補の動きベクトルの差が大きくなるように、隣接ブロック間の距離を離した順位とし、符号語割り当てでは、処理対象の予測ブロックと符号化情報が最も等しい可能性が高いと考えられる処理対象の予測ブロックに接している領域が大きい隣接ブロックを優先して小さい符号語を割り当てるようにする。
ここでは、動きベクトル予測の参照候補リスト作成時に隣接ブロックの有効性を判定する順番をB0,A0,A1,C0,B1,Tとする。一方、参照隣接ブロックに対して割り当てる符号語は、処理対象の予測ブロックに接している領域が大きい隣接ブロックを優先してA1,B1,B0,A0,C0,Tの順番に少ない符号語を割り当てることとする。
まず、動画像符号化装置100の構成を示す図2の中に設置される実施例12の特徴となる動きベクトル予測部103について説明する。動きベクトル予測部103は図64で示される構成をなし、実施例9で説明した図23に対して、参照候補リスト作成部321の直後に参照候補制御部329が追加された点が異なる。
また、実施例12では、処理対象の予測ブロックと同一ピクチャ上にあるブロック群を代表する隣接ブロックを選択するので、参照候補リスト作成部321は実施例8で説明した処理対象の予測ブロックと同一ピクチャ上にあるブロック群からの選択方法と同様の動作を行う。ここでは、同一ピクチャ上のブロック群からK個の代表する隣接ブロックを選択する。選択された同一ピクチャ上のブロック群を代表するK個の隣接ブロックと、時間が異なる別のピクチャの同一位置に隣接するブロックTのK+1個の隣接ブロックの符号化情報を参照候補として参照候補リストに登録する。
ここでKは2として、参照候補リスト作成部321では、参照候補リストの先頭から同一ピクチャ上のブロック群を代表する2個の隣接ブロック、及び時間が異なる別のピクチャの同一位置に隣接するブロックの計3個の符号化情報が参照候補リストに登録されたこととして、以下説明する。
図65は参照候補制御部329の動作を示すフローチャートである。参照候補リスト作成部321で作成された参照候補リストと参照候補リストに登録された参照候補数NumListCandが入力される。まず、NumListCandの判定が行われる(S1500)。NumListCandが2未満の場合(S1500のY)、即ち参照候補リストに登録された参照候補が1であれば、その1つの候補が参照先として一意に決定されるので、処理を終了する。
NumListCandが2より大きい場合(S1500のN)、参照候補リストの先頭から2番目に登録された符号化情報CandListLX[1]を備える隣接ブロックをNとする。ここで、参照候補リストの配列CandListLXは0を参照候補リストの先頭インデックスとして開始するので、CandListLX[1]が参照候補リストの先頭から登録された2番目の符号化情報が格納される記憶領域となり、添え字Xには参照リストの参照リストを示す0(L0予測)或いは1(L1予測)が入る。
次に、Nが隣接ブロックA1或いはB1であるか否かを判定する(S1502)。NがA1でもB1でない場合(S1502のN)、処理を終了する。NがA1或いはB1の場合(S1502のY)、参照候補リストの中の符号化情報の入れ換えを実施する(S1503)。参照候補リストの先頭の符号化情報CandListLX[0]と2番目の符号化情報CandListLX[1]の入れ換えを行う。
参照候補リストの作成する順番はB0,A0,A1,C0,B1であるので、A1或いはB1が参照候補リストの2番目にある場合、先頭となる隣接ブロックはA1或いはB1よりも符号語長が長くなる。これは、隣接ブロックを特定するインデックスの符号語割り当て順番がA1,B1,B0,A0,C0,Tと定義されているので、符号語長がA1<B1<B0<A0<C0<Tとなる為である。そこで、A1或いはB1を参照候補リストの先頭に入れ換えて、符号語長の短いインデックスの隣接ブロックの参照候補リストの中での優先を高くし、インデックスの符号量を削減する。
尚、入れ換え前の参照候補リストの中の順番としてA1,B1となる場合にも入れ換えを実施することになり、符号語の長いB1が参照候補リストの先頭となるが、他の隣接ブロックが参照候補リストの先頭となる場合と比べて符号化効率の損失を抑えることが出来る。以上のようにして、参照候補リストの中の入れ換えが実施され、参照候補リストの上位に少ない符号語で隣接ブロックを特定する隣接ブロックを割り当てることが可能となり、符号化効率を向上させることが可能となる。
以上のようにして、同一情報検出部322の後に、作成された参照候補リストの動きベクトルを予測動きベクトルとして、差分動きベクトル算出部326は、動きベクトル検出部102が検出した動きベクトルと予測動きベクトルから差分動きベクトルを算出し、算出された差分動きベクトルを出力部323に供給する。出力部323が、作成された参照候補リストの中のインデックスと差分動きベクトルを出力する。参照候補リストは、参照候補リストをMVPリストとして、リストの中のインデックスをMVPインデックスとして出力する。
上述した動画像符号化装置100の中に設置される動きベクトル予測部103に対応する、動画像復号装置200の中に設置される動きベクトル算出部204の中も動きベクトル予測部103と同様の機能をなす実施例12の参照候補制御部329が設置されるので、動きベクトル予測部103と同一の参照候補リストが作成される。作成された参照候補リストは選択部325に出力される。選択部325は、作成された参照候補リストの中から、第1の符号化ビット列復号部202で復号された参照隣接ブロックを特定するインデックスで指定される参照候補リストの隣接ブロックを選択する。選択されたリストの隣接ブロックの符号化情報から動きベクトルを予測動きベクトルとして出力し、差分動きベクトル算出部326にて予測動きベクトルと第1の符号化ビット列復号部202で復号された差分動きベクトルとを加算して動きベクトルを算出し、動き補償予測部207に供給するとともに、選択された参照候補リストの隣接ブロックの符号化情報を符号化情報格納メモリ210に供給する。
以上説明したように本発明の実施例において、動きベクトルの予測方法とマージ手法でそれぞれ参照する周辺の隣接ブロックの配置を統合することで、隣接ブロックの情報を記憶する一時メモリを削減し、共通化した参照隣接ブロックから各予測手法毎に候補の優先順位を決定することで、画像間予測における動きベクトルの予測方法とマージ手法の符号化効率の冗長度を削減すると共に復号時の処理効率を高めることが出来る。また、動き補償を行う前に、参照する周囲の隣接ブロックの予測モードや位置情報等から、そのブロックを参照する有効性を判定することで、動き補償の処理回数を削減することが出来る。
以下、より具体的に説明する。想定出来得る最大のメモリアクセス回数、メモリ量、処理量(処理時間)を削減するために、図9(a)に示すように、左側に隣接するブロック、上側に隣接するブロックをそれぞれ1つに限定することにより候補を絞る。このように予め候補を限定することで、符号化効率を殆ど低下させることなく、メモリアクセス回数、メモリ量、処理量(処理時間)を削減する効果がある。
また、メモリアクセス回数、メモリ量、処理量(処理時間)を削減することが出来る上に、マージインデックス、MVPインデックスの符号量を削減することが出来るので、符号量も削減する効果がある。また、マージモードと動き検出モードにおいて候補の位置を共通化することにより、更なるメモリアクセス回数、メモリ量、処理量(処理時間)の削減を図っている。更に、マージモード及び動き検出モードのそれぞれの特性に応じた配置で候補リストに候補を格納することで、マージモードではマージインデックスの符号量を削減し、動き検出モードではMVPインデックス、及び差分動きベクトルの符号量を削減することで、符号化効率を改善している。
尚、本発明は以上の実施例に限定されるものではなく、例えば上記の動画像符号化/復号装置の機能をコンピュータに実現させるための動画像符号化/復号プログラムも含むものである。この動画像符号化/復号プログラムは、記録媒体から読み取られてコンピュータに取り込まれてもよいし、通信ネットワークを介して伝送されてコンピュータに取り込まれてもよい。
以上述べた実施例の動画像符号化装置が出力する動画像の符号化ビットストリームは、実施例で用いられた符号化方法に応じて復号することができるように特定のデータフォーマットを有しており、動画像符号化装置に対応する動画像復号装置がこの特定のデータフォーマットの符号化ビットストリームを復号することができる。
動画像符号化装置と動画像復号装置の間で符号化ビットストリームをやりとりするために、有線または無線のネットワークが用いられる場合、符号化ビットストリームを通信路の伝送形態に適したデータ形式に変換して伝送してもよい。その場合、動画像符号化装置が出力する符号化ビットストリームを通信路の伝送形態に適したデータ形式の符号化データに変換してネットワークに送信する動画像送信装置と、ネットワークから符号化データを受信して符号化ビットストリームに復元して動画像復号装置に供給する動画像受信装置とが設けられる。
動画像送信装置は、動画像符号化装置が出力する符号化ビットストリームをバッファするメモリと、符号化ビットストリームをパケット化するパケット処理部と、パケット化された符号化データをネットワークを介して送信する送信部とを含む。動画像受信装置は、パケット化された符号化データをネットワークを介して受信する受信部と、受信された符号化データをバッファするメモリと、符号化データをパケット処理して符号化ストリームを生成し、動画像復号装置に提供するパケット処理部とを含む。
以上、本発明をいくつかの実施例をもとに説明した。それらの実施例は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。