説明

動画像符号化装置、動画像符号化方法及び動画像符号化プログラム

【課題】動きベクトル予測において予測動きベクトルの候補を増やすと、その候補を表すインデックスの符号量が増える。
【解決手段】動画像の各ピクチャをブロック単位で動きベクトルを用いて符号化する動画像符号化装置において、予測動きベクトル候補生成部120は、符号化対象ブロックと同一ピクチャ内の隣接符号化済みブロック及び符号化済みの別のピクチャ内の同一位置のブロックの動きベクトルから複数の予測動きベクトルの候補を生成し、その候補を表すインデックスを付与する。予測動きベクトル候補削除部122は、予測動きベクトルの候補同士の予測動きベクトル間差分を計算し、予測動きベクトル間差分に関する評価値にもとづいて予測動きベクトルの候補を削除する。予測動きベクトル判定部123は、削除後に残存する候補の中から予測動きベクトルを選択する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、動画像の符号化技術に関し、特に動き補償予測を利用した動画像の符号化技術に関する。
【背景技術】
【0002】
MPEG(Moving Picture Experts Group)に代表される、ピクチャを矩形ブロックに分割し、ピクチャ間でブロック単位に動き推定、補償を行う動画像符号化方式では、各ブロックで生成される動きベクトルの符号量を削減する為に、動きベクトルに対して予測処理が行われる。MPEG−2では、マクロブロック単位に検出される動きベクトルは、直前に符号化されたマクロブロックの動きベクトルとの差分がとられ、その差分ベクトルを符号化することで、符号量を削減している。
【0003】
MPEG−4 AVC/H.264では、動きベクトルが周囲の隣接ブロックの動きベクトルと強い相関があることを利用して、周囲の隣接ブロックからの予測を行い、その差分ベクトルを符号化することによって符号量を削減している。具体的には、図1に示されるように、周囲の隣接ブロックの動きベクトルから中央値を算出し、その中央値との差分をとることで動きベクトルの予測を実現している。但し、図2のように符号化対象ブロックと隣接ブロックとの形状が異なる場合は、左隣に複数の隣接ブロックがある時はその中の一番上のブロックを、上に複数の隣接ブロックがある時はその中の一番左のブロックを予測ブロックとし、図3(a)、(b)のように符号化対象ブロックが2N×N画素或いはN×2N画素で分割される場合は、周囲の隣接ブロックの動きベクトルの中央値を取るのではなく、動き補償ブロックサイズに応じて図3(a)、(b)の白抜き矢印で示されるように分割された領域毎に参照先の予測ブロックを決定し、決定された予測ブロックの動きベクトルから予測を実施する。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】ISO/IEC 13818-2 Information technology -- Generic coding of moving pictures and associated audio information: Video
【非特許文献2】ISO/IEC 14496-10 Information technology -- Coding of audio-visual objects -- Part 10: Advanced Video Coding
【発明の概要】
【発明が解決しようとする課題】
【0005】
従来の動きベクトルの予測方法では、予測の為の動きベクトルが1つしかないので、予測が当たらないと、動きベクトルの差分が大きくなり、発生符号量が増加する課題があった。この課題を解決する為に、ISO/IEC及びITU−Tにおける動画像符号化の規格作業の中で新たな動きベクトルの予測手法が検討されている。この手法は、符号化済みの周囲の隣接ブロックの動きベクトルについて、それぞれを予測動きベクトルの候補として適用した場合の符号量を評価する基準とし、符号量が最も小さくなる動きベクトルを予測動きベクトルとして採用し、動きベクトルを採用した隣接ブロックに関する付加情報を符号化し伝送するものである。しかしながら、予測動きベクトルの候補を増やした結果、ブロック毎に予測動きベクトルの参照先を表すインデックスを符号化する必要があり、符号化効率を損ねることも考えられる。
【0006】
本発明はこうした状況に鑑みてなされたものであり、その目的は、予測動きベクトルの候補を減少させることにより、予測動きベクトルの参照先を表すインデックスの符号量の削減を図って符号化効率を向上させる技術を提供することにある。
【課題を解決するための手段】
【0007】
上記課題を解決するために、本発明のある態様の動画像符号化装置は、動画像の各ピクチャを分割したブロック単位で動きベクトルを用いて符号化する動画像符号化装置であって、符号化対象ブロックと同一ピクチャ内の前記符号化対象ブロックと隣接する符号化済みのブロック及び符号化済みの別のピクチャ内の前記符号化対象ブロックと同一位置のブロックの少なくとも一方の動きベクトルから複数の予測動きベクトルの候補を生成し、前記予測動きベクトルの候補を表すインデックスを付与する予測動きベクトル候補生成部(120)と、前記予測動きベクトルの候補同士の予測動きベクトル間差分を計算し、前記予測動きベクトル間差分に関する評価値にもとづいて前記予測動きベクトルの候補を削除する予測動きベクトル候補削除部(122)と、削除後に残存する予測動きベクトルの候補の中から予測動きベクトルを選択する予測動きベクトル判定部(123)とを備える。
【0008】
本発明の別の態様は、動画像符号化方法である。この方法は、動画像の各ピクチャを分割したブロック単位で動きベクトルを用いて符号化する動画像符号化方法であって、符号化対象ブロックと同一ピクチャ内の前記符号化対象ブロックと隣接する符号化済みのブロック及び符号化済みの別のピクチャ内の前記符号化対象ブロックと同一位置のブロックの少なくとも一方の動きベクトルから複数の予測動きベクトルの候補を生成し、前記予測動きベクトルの候補を表すインデックスを付与する予測動きベクトル候補生成ステップと、前記予測動きベクトルの候補同士の予測動きベクトル間差分を計算し、前記予測動きベクトル間差分に関する評価値にもとづいて前記予測動きベクトルの候補を削除する予測動きベクトル候補削除ステップと、削除後に残存する予測動きベクトルの候補の中から予測動きベクトルを選択する予測動きベクトル判定ステップとを備える。
【0009】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、記録媒体、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【0010】
本発明によれば、複数の予測動きベクトルの中から最適な動きベクトルを選択し、伝送する差分動きベクトルの発生符号量を削減させるとともに、予測動きベクトルの候補数を削減可能となる為、予測動きベクトルを表すインデックスに必要な符号量を削減させて、符号化効率を向上させることができる。
【図面の簡単な説明】
【0011】
【図1】従来の周辺の隣接ブロックから予測動きベクトルの求め方を説明する図である。
【図2】従来の隣接ブロックの形状が異なる場合の予測動きベクトルの求め方を説明する図である。
【図3】従来の符号化対象ブロックの形状が2N×N或いはN×2Nの場合の予測動きベクトルの求め方を説明する図である。
【図4】実施の形態に係る動きベクトルの予測方法を具備した動画像符号化装置の構成を示すブロック図である。
【図5】実施の形態に係る動きベクトルの予測方法を具備した動画像復号装置の構成を示すブロック図である。
【図6】実施の形態における符号化ブロックを説明する為の図である。
【図7】実施の形態における予測ブロックの形状の種類を説明する為の図である。
【図8】実施の形態における動きベクトルの予測方法をスライスレベルで実行するか否かを決定するビットストリームのシンタックスパターンを示す図である。
【図9】実施の形態における動きベクトルの予測方法を実行する場合に予測ブロックレベルで予測動きベクトルの候補を一意に決定するビットストリームのシンタックスパターンを示す図である。
【図10】図4の動画像符号化装置の予測動きベクトル選択部の第1の実施例の動作を説明する為の詳細な構成を示すブロック図である。
【図11】図4の動画像符号化装置の予測動きベクトル判定部の動作を説明する為のフローチャートである。
【図12】図5の動画像復号装置の予測動きベクトル選択部の第1の実施例の動作を説明する為の詳細な構成を示すブロック図である。
【図13】図5の動画像復号装置の予測動きベクトル判定部の動作を説明する為のフローチャートである。
【図14】実施の形態における動きベクトルの予測方法の第1の実施例の動作を説明する為のフローチャートである。
【図15】実施の形態における動きベクトルの予測方法の処理対象となるパーティションの位置を説明する為の図である。
【図16】実施の形態における動きベクトルの予測方法の処理対象となるパーティションの周辺を説明する為の図である。
【図17】実施の形態における動きベクトルの予測方法の周辺パーティションから予測動きベクトルの候補を選出する動作を説明するためのフローチャートである。
【図18】実施の形態における動きベクトルの予測方法の周辺パーティションの予測動きベクトルの候補から中央値を算出する動作を説明するためのフローチャートである。
【図19】実施の形態における動きベクトルの予測方法の予測動きベクトルの候補を格納しておくリストを説明する為の図である。
【図20】実施の形態における動きベクトルの予測方法の時間方向の予測動きベクトルの候補を算出する為に場合分けをする動作を説明するためのフローチャートである。
【図21】実施の形態における動きベクトルの予測方法の時間方向の予測動きベクトルの候補を算出するCase1の状態を説明する為の図である。
【図22】実施の形態における動きベクトルの予測方法の時間方向の予測動きベクトルの候補を算出するCase2の状態を説明する為の図である。
【図23】実施の形態における動きベクトルの予測方法の時間方向の予測動きベクトルの候補を算出するCase3の状態を説明する為の図である。
【図24】実施の形態における動きベクトルの予測方法の時間方向の予測動きベクトルの候補を算出する動作を説明するためのフローチャートである。
【図25】実施の形態における動きベクトルの予測方法の予測動きベクトルの候補の削除の推移を説明する為の図である。
【図26】実施の形態における動きベクトルの予測方法の予測動きベクトルの候補の削除を説明するためのフローチャートである。
【図27】実施の形態における動きベクトルの予測方法により算出された差分動きベクトルの符号化に用いられる符号付き指数ゴロム符号化テーブルである。
【図28】実施の形態における動きベクトルの予測方法により予測動きベクトルのインデックスを表すTruncated Unaryの符号化テーブルである。
【図29】図4の動画像符号化装置の予測動きベクトル選択部の第2の実施例の動作を説明する為の詳細な構成を示すブロック図である。
【図30】図5の動画像復号装置の予測動きベクトル選択部の第2の実施例の動作を説明する為の詳細な構成を示すブロック図である。
【図31】実施の形態における動きベクトルの予測方法の第2の実施例の動作を説明する為のフローチャートである。
【図32】実施の形態における動きベクトルの予測方法の第3の実施例の符号量の境界のオフセットを説明する概念図である。
【図33】実施の形態における動きベクトルの予測方法の第3の実施例の為に図26に追加されるフローチャートである。
【図34】実施の形態における動きベクトルの予測方法の実施例5において、予測動きベクトルの候補の削除の過程を説明する為の図である。
【図35】実施の形態における動きベクトルの予測方法の実施例5において、予測動きベクトルの候補の削除の過程を説明する為のフローチャートである。
【図36】実施の形態における動きベクトルの予測方法の実施例5において、削除する予測動きベクトルの候補を予め指定した場合の予測動きベクトルの候補の削除の過程を説明する為のフローチャートである。
【図37】実施の形態における動きベクトルの予測方法の実施例5において、予測動きベクトルの候補の別の削除の過程を説明する為の図である。
【図38】実施の形態における動きベクトルの予測方法の実施例6において、予測動きベクトルの候補の別の削除の過程を説明する為のフローチャートである。
【図39】実施の形態における動きベクトルの予測方法の実施例6において、予測動きベクトルの候補の削除の過程を説明する為のフローチャートである。
【図40】実施の形態における動きベクトルの予測方法の実施例6において、予測動きベクトルの候補の別の削除の過程を説明する為のフローチャートである。
【発明を実施するための形態】
【0012】
本発明の実施の形態に係る動画像符号化装置及び動画像復号装置について図面を参照して説明する。
【0013】
実施の形態では、動画像の符号化に関し、特にピクチャを矩形ブロックに分割し、ピクチャ間でブロック単位に動き推定、補償を行う動画像符号化における動きベクトルの符号化効率を向上させる為に、既符号化済みの周囲のブロック等の動きベクトルから予測を行い、処理対象のブロックの動きベクトルとその予測値との差分ベクトルを符号化することによって符号量を削減する動きベクトルの予測方法を用いる。
【0014】
図4は実施の形態に係る動画像符号化装置の構成を示すブロックである。実施の形態の動画像符号化装置は、動きベクトル検出部101、減算部102、直交変換・量子化部103、可変長符号化部104、逆量子化・逆直交変換部105、動き補償部106、重み付き予測部107、加算部108、デブロッキング・フィルタ部109、メモリ110、および予測動きベクトル選択部111を備える。
【0015】
動きベクトル検出部101は、ピクチャ間でブロック単位にマッチングを行い動きベクトルを検出し、検出された動きベクトルを予測動きベクトル選択部111に与える。
【0016】
予測動きベクトル選択部111は、メモリ110に記憶されている既に符号化された画像の動き情報を用いて、動きベクトル検出部101が検出した動きベクトルを予測するための最適な予測動きベクトルを選択する。予測動きベクトル選択部111の詳細な構成と動作は後述する。
【0017】
動き補償部106は、動きベクトル検出部101により検出された動きベクトルを用いて予測画像を生成する。重み付き予測部107は、動き補償部106により生成された予測画像に適応的に重み係数を掛け算して最終的な予測画像を生成し、減算部102と加算部108に与える。
【0018】
減算部102は、符号化する画像と予測画像との引き算を行い残差信号を生成し、直交変換・量子化部103に与える。直交変換・量子化部103は、残差信号に対して直交変換及び量子化を行い変換信号を生成し、可変長符号化部104と逆量子化・逆直交変換部105に与える。可変長符号化部104は、直交変換及び量子化された残差信号をエントロピー符号化する。可変長符号化部104は、予測動きベクトル選択部111によって予測された動きベクトルに関する情報も符号化し、符号化画像と符号化された動きベクトルに関する情報とを含むビットストリームを出力する。
【0019】
逆量子化・逆直交変換部105は、直交変換・量子化部103から受け取った変換信号を逆量子化及び逆直交変換して元の残差信号に戻す。加算部108は、予測画像と残差信号を加算して復号画像を生成し、デブロッキング・フィルタ部109に与える。デブロッキング・フィルタ部109は、復号画像に対して符号化によるブロック歪を減少させる処理を施し、メモリ110に格納する。メモリ110は、復号画像や既に符号化された画像の情報を記憶する。
【0020】
図5は図4の動画像符号化装置に対応した実施の形態に係る動画像復号装置の構成を示すブロックである。実施の形態の動画像復号装置は、可変長復号部201、逆量子化・逆直交変換部202、動き補償部203、重み付き予測部204、加算部205、デブロッキング・フィルタ部206、メモリ207、および予測動きベクトル選択部208を備える。
【0021】
図5の動画像復号装置の復号処理は、図4の動画像符号化装置の内部に設けられている復号処理に対応するものであるから、図5の逆量子化・逆直交変換部202、動き補償部203、重み付き予測部204、加算部205、デブロッキング・フィルタ部206、メモリ207、および予測動きベクトル選択部208の各構成は、図4の動画像符号化装置の逆量子化・逆直交変換部105、動き補償部106、重み付き予測部107、加算部108、デブロッキング・フィルタ部109、メモリ110、および予測動きベクトル選択部111の各構成とそれぞれ対応する機能を有する。
【0022】
可変長復号部201は、ビットストリームを復号して予測残差信号、動きベクトルに関する情報を出力し、予測残差信号を逆量子化・逆直交変換部202に与え、動きベクトルに関する情報を予測動きベクトル選択部208と動き補償部203に与える。
【0023】
逆量子化・逆直交変換部202は、可変長復号部201で復号された予測残差信号に対して逆直交変換及び逆量子化を行う。加算部205は、逆量子化・逆直交変換部202により逆変換された予測残差成分と、重み付き予測部204により算出された予測画像とを加算することにより、画像信号を復号し、デブロッキング・フィルタ部206に与える。デブロッキング・フィルタ部206は、復号画像に対して符号化によるブロック歪を減少させる処理を施し、メモリ207に格納する。
【0024】
予測動きベクトル選択部208は、メモリ207に記憶されている既に復号された画像の動き情報を用いて、復号対象ブロックの復号された動きベクトルを予測するための最適な予測動きベクトルを選択する。予測動きベクトル選択部208の詳細な構成と動作は後述する。
【0025】
動き補償部203は、復号対象ブロックの復号された動きベクトルを用いて予測画像を生成する。重み付き予測部204は、動き補償部203により生成された予測画像に適応的に重み係数を掛け算して最終的な予測画像を生成し、加算部205に与える。
【0026】
実施の形態に係る動きベクトルの予測方法は、図4の動画像符号化装置の予測動きベクトル選択部111及び図5の動画像復号装置の予測動きベクトル選択部208において実施される。
【0027】
[実施例1]
動きベクトルの予測方法の実施例を説明する前に、本実施例において使用する用語を説明しておく。
【0028】
(符号化ブロックについて)
実施の形態では、図6に示されるように、画面内を同一サイズの正方の矩形ブロックにて均等分割する。このブロックを符号化ブロックと呼び、符号化及び復号を行う際の処理の基本となる。符号化ブロックは画面内のテクスチャに応じて、符号化処理を最適にすべく、符号化ブロック内を4分割して、ブロックサイズの小さい符号化ブロックにすることが出来る。図6で示される画面内を均等サイズで分割される符号化ブロックを最大符号化ブロックと呼び、その内部を符号化条件に応じて4分割したものを総じて符号化ブロックとする。符号化ブロックをこれ以上4分割出来ない最小のサイズとなる符号化ブロックを最小符号化ブロックと呼ぶこととする。
【0029】
(予測ブロックについて)
画面内をブロックに分割して動き補償を行う場合、動き補償のブロックサイズをより小さくした方が、よりきめ細かい予測を行うことが出来ることから、いくつかのブロックサイズの中から最適なものを選択して、ブロック内部を分割して動き補償を行う仕組みを取り入れている。この動き補償を行うブロックを予測ブロックと呼ぶ。予測ブロックは符号化ブロックと同一のサイズで表され、動き補償に応じて、予測ブロック内部を分割せず1ブロックとみなす場合を最大とし、水平或いは垂直方向に2分割したもの、水平と垂直の均等分割により4分割したものに分けられる。分割後のサイズに応じて、分割タイプに対応したモードが定義されており、図7に示される。
【0030】
(パーティションについて)
予測ブロックを分割した個々の領域はパーティションと呼ばれる。予測ブロック内部において、パーティションを管理する為に、0から開始する番号を、予測ブロック内部に存在するパーティションに対してジグザグスキャン順に割り当てる。この番号はパーティション番号と呼ばれ、puPartIdxで表される。図7の予測ブロックのパーティションの中に記述された数字は、そのパーティションのパーティション番号を表す。
【0031】
実施形態による動きベクトルの予測方法を図面を用いて説明する。動きベクトルの予測方法は、予測ブロックを構成するパーティション単位に、符号化及び復号の処理の何れでも実施される。符号化の場合、動き補償による画像間符号化が選択された場合に、予測ブロックのパーティション毎に算出された動きベクトルを効率良く符号化する為の予測動きベクトルとして、既に符号化された周囲の予測ブロックのパーティションの動きベクトルの中から選択する際、復号の場合、ビットストリームから復号した情報を利用して、動きベクトルを算出する際、実施される。
【0032】
(シンタックスについて)
まず、本実施例に係る動きベクトルの予測方法を備える動画像符号化装置により符号化される動画像のビットストリームのシンタックスについて説明する。
【0033】
図8は動画像のビットストリームのスライスヘッダーに記述される第1のシンタックスパターンを示す。スライス単位で動き補償による画像間予測を行う場合、即ちスライスタイプがP(前方向予測)或いはB(両予測)の場合に、本発明に係る動きベクトルの予測方法を適用するかどうかを示す第1フラグmv_competition_flagが設置される。mv_competition_flagが真(1)の場合は、同一ピクチャ内で隣接する周囲のパーティションの動きベクトルだけでなく、時間方向で異なるピクチャの中の処理対象のパーティションと同一位置のパーティションの動きベクトルを利用して予測と行うかどうかを示す第2フラグmv_competition_temporal_flagが設置される。更に、スライスタイプがBで且つmv_competition_flagが真(1)の場合は、処理対象のパーティションが含まれるピクチャの参照ピクチャのリストのうちL0予測或いはL1予測のどちらを使用するかを決定する第3フラグcollocated_from_l0_flagが設置される。
【0034】
図9はスライスの中の予測ブロック単位に記述される第2のシンタックスパターンを示す。予測ブロックの予測モードが画像間予測(MODE_INTER)の場合、予測ブロック内のパーティション毎に、動きベクトル検出にて求められたパーティションの動きベクトルと予測動きベクトルとの差分動きベクトルmvd_lX[i][j]が設置される。ここで、Xは0或いは1で予測方向を示し、iは予測ブロックの中のパーティション番号、jは差分動きベクトルの成分を表し、j=0はx成分を、j=1はy成分を表す。次に、第1フラグmv_competition_flagが真(1)で且つ予測動きベクトルの候補の総数が1つを超える場合に、参照する予測動きベクトルの候補のリストのインデックスmvp_idx_lX[i]が設置される。NumMvpCand(LX,i)は、予測方向LX(Xは0或いは1)でパーティションiの予測動きベクトルの候補の総数を算出する関数を表し、後述にて説明される。このインデックスmvp_idx_lX[i]は動きベクトルの予測方法を実施しない、即ちmv_competition_flagが偽(0)の場合は符号化されず、ビットストリーム中に記述されない。mv_competition_flagが偽(0)の場合は従来通りの手法で算出されるので、インデックスmvp_idx_lX[i]により指定する必要が無い為である。また、動きベクトルの予測方法により予測動きベクトルの候補の総数NumMvpCand(LX,i)が1つの場合にも符号化されない。予測動きベクトルの候補の総数が1つであれば、その1つが予測動きベクトルとなるので、mvp_idx_lx[i]を伝送せずとも参照する予測動きベクトルの候補が確定する為である。
【0035】
(符号化における動きベクトルの予測)
上述のシンタックスに基づき、動画像のビットストリームを符号化する動画像符号化装置において、実施の形態に係る動きベクトルの予測方法の動作を説明する。動きベクトルの予測方法は、スライス単位で動き補償による画像間予測を行う場合、即ちスライスタイプがP(前方向予測)或いはB(両予測)の場合で、更に、スライスの中の予測ブロックの予測モードが画像間予測(MODE_INTER)の予測ブロックのパーティションに適用される。
【0036】
図10は、図4の動画像符号化装置の予測動きベクトル選択部111の詳細な構成を示す図である。図10の太枠線で囲まれる部分は予測動きベクトル選択部111を示している。更に、その内部の太点線で囲まれる部分は後述する動きベクトルの予測方法の動作部を示しており、実施の形態の動画像符号化装置と対応する動画像復号装置にも同様に設置され、符号化と復号で矛盾しない同一の判定結果を得られるようにしている。以下、この図を用いて、符号化における動きベクトルの予測方法を説明する。
【0037】
予測動きベクトル選択部111は、予測動きベクトル候補生成部120、予測動きベクトル候補同一判定部121、予測動きベクトル候補削除部122、予測動きベクトル判定部123、減算部124、および予測動きベクトル選択部125を含む。
【0038】
予測動きベクトル候補生成部120は、符号化後に復号してメモリ110に記録されていた、符号化対象ブロックと同一ピクチャ内の符号化対象ブロックと隣接する符号化済みのパーティション及び符号化済みの異なるピクチャ内の符号化対象ブロックと同一位置に存在するパーティション等の動きベクトルをメモリ110から読み出す。
【0039】
予測動きベクトル候補生成部120は、このようにしてメモリ110から読み出された符号化済みの他のブロックの動きベクトルから少なくとも2つ以上の予測動きベクトルの候補mvpListLX[i](iはリストmvpListLXにふられたインデックス)を生成し、予測動きベクトルの候補を格納するリストmvpListLXに格納する。
【0040】
次に、予測動きベクトル候補同一判定部121は、リストmvpListLXに格納された予測動きベクトルの候補の中から同一の動きベクトルの値をもつものを判定し、同一の動きベクトル値をもつと判定された予測動きベクトルの候補について一つを残してそれ以外をリストmvpListLXから削除して、予測動きベクトルの候補が重複しないようにし、リストmvpListLXを更新する。予測動きベクトル候補同一判定部121は、更新されたリストmvpListLXを予測動きベクトル選択部125と予測動きベクトル候補削除部122に与える。
【0041】
一方、動きベクトル検出部101にて予測ブロックのパーティション毎に動きベクトルmvが検出される。動きベクトルmvは更新されたリストmvpListLXの予測動きベクトルの候補とともに予測動きベクトル選択部125に入力される。
【0042】
予測動きベクトル選択部125は、動きベクトルmvとリストmvpListLXの中に格納された各予測動きベクトルの候補mvpListLX[i]との差分をとり、その差分を符号化したときの発生符号量が最小となる予測動きベクトルの候補mvpListLX[i]をmin_mvpとする。リストmvpListLXの中で最小の発生符号量となる予測動きベクトルの候補が複数存在する場合には、リストmvpListLXの中のインデックスiが小さい番号で表される予測動きベクトルの候補mvpListLX[i]を最適予測動きベクトルmin_mvpとする。予測動きベクトル選択部125は、選択された最適予測動きベクトルmin_mvpを記録しておく。
【0043】
予測動きベクトル選択部125は、選択された最適予測動きベクトルmin_mvpを予測動きベクトル判定部123に与える。予測動きベクトル選択部125は、選択されたmin_mvpと動きベクトルmvとの差分を算出し、差分動きベクトルmvdとして、予測動きベクトル候補削除部122に与える。
【0044】
予測動きベクトル候補削除部122は、更新されたリストmvpListLXの中の予測動きベクトルの候補と差分動きベクトルmvdを受け取り、予測動きベクトルの候補の削除処理により、リストmvpListLXから一部の予測動きベクトルの候補を削除する。
【0045】
具体的には、予測動きベクトル候補削除部122は、予測動きベクトルの候補の一つを仮の予測動きベクトルと設定し、第1の差分動きベクトルmvdと仮の予測動きベクトルとを加算して仮の動きベクトルを生成し、その仮の動きベクトルと、仮の予測動きベクトルとは異なる予測動きベクトルの候補とから第2の差分動きベクトルを計算し、第1の差分動きベクトルmvdの符号量よりも第2の差分動きベクトルの符号量が小さい場合、仮の予測動きベクトルは真の予測動きベクトルではないと判定し、仮の予測動きベクトルとして設定された予測動きベクトルの候補を削除する。第1の差分動きベクトルmvdの符号量と第2の差分動きベクトルの符号量が同じであれば、予測動きベクトルの候補のインデックスの小さい方を選択し、他方を削除する。予測動きベクトルの候補の削除処理の詳細は後述する。
【0046】
予測動きベクトル候補削除部122は、候補削除処理の後、リストmvpListLXに残った予測動きベクトルの候補を予測動きベクトル判定部123に与える。
【0047】
このようにして予測動きベクトル判定部123には、リストmvpListLXの中に残った予測動きベクトルの候補と、予測動きベクトル選択部125にて選択された、差分動きベクトルの発生符号量が最小となる最適予測動きベクトルmin_mvpとが入力される。
【0048】
図11は、予測動きベクトル判定部123の判定処理を示すフローチャートである。最初にリストmvpListLXに残った予測動きベクトルの候補が1つであるかどうかを判定する(S900)。1つの場合、リストmvpListLXに残った予測動きベクトルの候補を予測動きベクトルmvpとして出力し、終了する。リストmvpListLXの中に予測動きベクトルの候補が1つより多く残った場合には、記録しておいた最適予測動きベクトルの候補min_mvpと同じ値を持つ予測動きベクトルの候補をリストmvpListLXから検出する(S901)。検出された予測動きベクトルの候補に該当するリストmvpListLXのインデックスmvp_idxを検出し(S902)、予測動きベクトルの候補min_mvpを予測動きベクトルmvpとして、インデックスmvp_idxとともに出力する。
【0049】
最後に減算部124は、動きベクトルmvと選択された予測動きベクトルmvpとの差分を計算し、差分動きベクトルmvdを出力する。
【0050】
こうして出力された差分動きベクトルmvdと必要であれば予測動きベクトルを表すインデックスmvp_idxの符号化が行われ、差分動きベクトルmvdとインデックスmvp_idxの発生符号量とともに、動きベクトルmvにより参照される予測画像との動き補償から算出される差分画像の発生符号量とが加算された総発生符号量が算出される。また、こうした差分画像を符号化後に、画質評価の為に復号し、符号化により生じる元画像との誤差を表す比率として符号化歪が算出される。これら総発生符号量と符号化歪とを動き補償毎に比較することで、最も少ない発生符号量と符号化歪となるブロック形状が決定される。決定されたブロック形状に対する動きベクトルmvに対して、上述した動きベクトルの予測方法が行われ、予測動きベクトルを表すインデックスが、予測ブロック単位の第2のシンタックスパターンで表されるフラグmvp_idx_lX[i]として符号化される。尚、ここで算出される発生符号量は、符号化過程をシミュレートしたものであることが望ましいが、後述の説明で使用する図27、図28に示した符号量で代用し、簡便に近似したり、概算することも可能である。
【0051】
以上のようにして、パーティション毎に差分動きベクトルと必要であれば予測動きベクトルを表すインデックスを用いて動きベクトルを予測する本実施の形態の予測方法を使用する場合には、スライスヘッダーに記載される第1フラグmv_competition_flag、第2フラグmv_competition_temporal_flag及び第3フラグcollocated_from_l0_flagが設定され、符号化される。
【0052】
(復号における動きベクトルの予測)
上述のシンタックスに基づき、符号化された動画像のビットストリームを復号する動画像復号装置において、本発明に係る動きベクトルの予測方法の動作を説明する。
【0053】
最初に、可変長復号部201にて復号されるビットストリームの各フラグについて説明する。ビットストリームのスライスヘッダーの中に記述されているフラグから、スライスの中の予測ブロックに対して動きベクトルの予測方法を実施するか否かを判定する。スライスタイプがP或いはBの場合、フラグmv_competition_flagを判定し、mv_competition_flagが真(1)の場合は本発明に係る動きベクトルの予測方法が実施され、mv_competition_flagが偽(0)の場合は従来通りの手法で算出される。更にmv_competition_flagが真(1)の場合は、フラグmv_competition_temporal_flagにより、時間方向に異なるピクチャで処理対象のパーティションと同一位置のパーティションの動きベクトルの導出が実施される。スライスタイプがBで、且つmv_competition_flagが真(1)の場合は、フラグcollocated_from_l0_flagにより、処理対象のパーティションが含まれるピクチャの参照ピクチャのリストのうちL0予測或いはL1予測のどちらを使用するか選択する。
【0054】
次に予測ブロックのシンタックスの中から、予測ブロックの中のパーティション毎に、参照する予測動きベクトルの候補のリストのインデックスmvp_idx_lX[i]が読み出される。ここで、Xは0或いは1であり、iは予測ブロックの中のパーティション番号を表す。
【0055】
実施の形態に係る動きベクトルの予測方法が実施される場合、図5の動画像復号装置の予測動きベクトル選択部208にて処理が行われる。図12は、実施の形態の動画像符号化装置に対応する図5の動画像復号装置の予測動きベクトル選択部208の詳細な構成を示す図である。図12の太枠線で囲まれる部分は予測動きベクトル選択部208を示している。更に、その内部の太点線で囲まれる部分は後述する動きベクトルの予測方法の動作部を示しており、対応する動画像符号化装置にも同様に設置され、符号化と復号で矛盾しない同一の判定結果を得られるようにしている。以下、この図を用いて、復号における動きベクトルの予測方法を説明する。
【0056】
予測動きベクトル選択部208は、予測動きベクトル候補生成部220、予測動きベクトル候補同一判定部221、予測動きベクトル候補削除部222、予測動きベクトル判定部223、および加算部224を含む。
【0057】
予測動きベクトル候補生成部220は、復号してメモリ207に記録されていた、復号対象ブロックと同一ピクチャ内の復号対象ブロックと隣接する復号済みのパーティション及び復号済みの異なるピクチャ内の復号対象ブロックと同一位置に存在するパーティション等の動きベクトルをメモリ207から読み出す。
【0058】
予測動きベクトル候補生成部220は、このようにしてメモリ207から読み出された復号済みの他のブロックの動きベクトルから少なくとも2つ以上の予測動きベクトルの候補mvpListLX[i](iはリストmvpListLXにふられたインデックス)を生成し、予測動きベクトルの候補を格納するリストmvpListLXに格納する。
【0059】
次に、予測動きベクトル候補同一判定部221は、リストmvpListLXに格納された予測動きベクトルの候補の中から同一の動きベクトルの値をもつものを判定し、同一の動きベクトル値をもつと判定された予測動きベクトルの候補について一つを残してそれ以外をリストmvpListLXから削除して、予測動きベクトルの候補が重複しないようにし、リストmvpListLXを更新する。予測動きベクトル候補同一判定部221は、更新されたリストmvpListLXを予測動きベクトル候補削除部222に与える。
【0060】
可変長復号部201にて復号された差分動きベクトルmvdが予測動きベクトル候補削除部222に入力される。予測動きベクトルのインデックスを示すmvp_idxが符号化されている場合は、可変長復号部201にて復号された予測動きベクトルのインデックスmvp_idxが予測動きベクトル判定部223に入力される。
【0061】
予測動きベクトル候補削除部222は、更新されたリストmvpListLXの中の予測動きベクトルの候補と可変長復号部201にて復号された差分動きベクトルmvdを受け取り、予測動きベクトルの候補の削除処理により、リストmvpListLXから一部の予測動きベクトルの候補を削除する。
【0062】
具体的には、予測動きベクトル候補削除部222は、予測動きベクトルの候補の一つを仮の予測動きベクトルと設定し、復号された第1の差分動きベクトルmvdと仮の予測動きベクトルとを加算して仮の動きベクトルを生成し、その仮の動きベクトルと、仮の予測動きベクトルとは異なる予測動きベクトルの候補とから第2の差分動きベクトルを計算し、第1の差分動きベクトルmvdの符号量よりも第2の差分動きベクトルの符号量が小さい場合、仮の予測動きベクトルは真の予測動きベクトルではないと判定し、仮の予測動きベクトルとして設定された予測動きベクトルの候補を削除する。第1の差分動きベクトルmvdの符号量と第2の差分動きベクトルの符号量が同じであれば、予測動きベクトルの候補のインデックスの小さい方を選択し、他方を削除する。予測動きベクトルの候補の削除処理の詳細は後述する。
【0063】
予測動きベクトル候補削除部222は、候補削除処理の後、リストmvpListLXに残った予測動きベクトルの候補を予測動きベクトル判定部223に与える。
【0064】
このようにして予測動きベクトル判定部223には、リストmvpListLXの中に残った予測動きベクトルの候補が入力され、予測動きベクトルのインデックスを示すmvp_idxが符号化されていた場合は、復号された予測動きベクトルのインデックスmvp_idxも入力される。
【0065】
図13は、予測動きベクトル判定部223の判定処理を示すフローチャートである。最初にリストmvpListLXに残った予測動きベクトルの候補が1つであるかどうかを判定する(S910)。1つの場合、リストmvpListLXに残った予測動きベクトルの候補を予測動きベクトルmvpとして出力する。リストmvpListLXの中に予測動きベクトルの候補が1つより多く残った場合、可変長復号部201にて復号された予測動きベクトルのインデックスmvp_idxが読み込まれる(S911)。読み込まれたインデックスmvp_idxに該当する予測動きベクトルの候補をリストmvpListLXから検出する(S912)。検出された予測動きベクトルの候補を予測動きベクトルmvpとして出力する。
【0066】
最後に加算部224は、差分動きベクトルmvdと予測動きベクトルmvpとの加算を計算し、動きベクトルmvを出力する。
【0067】
以上のようにして、パーティション毎に動きベクトルが算出される。この動きベクトルを使用して動き補償により予測画像が生成され、ビットストリームから復号された残差信号と加算されることで復号画像が生成される。
【0068】
尚、予測動きベクトル選択部208の中の予測動きベクトル候補生成部220、予測動きベクトル候補同一判定部221及び予測動きベクトル候補削除部222は、符号化側の予測動きベクトル選択部111の中の予測動きベクトル候補生成部210、予測動きベクトル候補同一判定部211及び予測動きベクトル候補削除部212とそれぞれ同じである。
【0069】
(動きベクトルの予測方法)
実施の形態に係る動きベクトルの予測方法はパーティション単位に図14(a)、図14(b)に示される諸過程で実施される。図14(a)は動画像符号化装置の予測動きベクトル選択部111及び動画像復号装置の予測動きベクトル選択部208とで共通する機能を有する予測動きベクトル候補生成部120及び220、予測動きベクトル候補同一判定部121及び221、ならびに予測動きベクトル候補削除部122及び222の処理の流れを表すフローチャートである。図14(b)は予測動きベクトル候補生成部120及び220による予測動きベクトル候補の生成の一例を示すフローチャートであり、図14(a)の[予測動きベクトルの候補を算出(S90)]の処理の詳細な流れを示すものである。以下、諸過程を順を追って説明する。
【0070】
[隣接する周囲のパーティションから予測動きベクトルの候補を導出(S100)]
この処理における入力は、
・予測ブロックのパーティションのパーティション番号puPartIdx、および
・予測ブロックのパーティションの参照ピクチャ番号refIdxLX(Xは0或いは1)
であり、参照ピクチャ番号refIdxLXは、複数の参照ピクチャの候補からブロック単位に任意のピクチャを参照して動き補償を行うことから、参照ピクチャを指定するために各ピクチャに割り当てた識別番号である。
【0071】
参照ピクチャ番号には参照するピクチャの復号順序或いは表示順序が割り当てられ、符号化及び復号の際には参照ピクチャ番号からピクチャの順序を指定して参照する。添え字LXは動き補償を行う予測方向を表し、Xには0或いは1が入る。主としてL0予測は前方向予測に、L1予測は後方向予測として使用され、PスライスではL0予測のみ、BスライスではL0、L1の両方の予測が使用出来る。以降の処理において出力に添え字LXが付いている値に対しては、予測ごとに処理を行うことを前提とし、特に説明しないこととする。
【0072】
この処理における出力は
・周囲のパーティションの動きベクトルmvLXM、および
・周囲のパーティションが有効か否かを示すフラグavailableFlagLXM
であり、添え字Xには予測方向を表す0若しくは1、Mには隣接するパーティション群の領域を表すA,B若しくはCが入る。
【0073】
図15に示されるように、同一ピクチャ内の符号化ブロック内部を動き補償する為に定義される予測ブロックのパーティション(図15中の処理対象のパーティション)に隣接する周囲のパーティションから予測動きベクトルの候補を導出する。図15中の太点線の円内で表される領域を拡大したものが図16である。
【0074】
図16は、処理対象のパーティションとそれに隣接するパーティションを示す。予測動きベクトルの候補は、処理対象のパーティションの左側に隣接するパーティションAk(k=0,…,nA−1)から構成されるパーティション群A、真上に隣接するパーティションBk(k=0,…,nB−1)から構成されるパーティション群B、及びコーナーで隣接するパーティションC0,C1,C2から構成されるパーティション群Cの3つのパーティション群からそれぞれ予測動きベクトルの候補を選出する。ここで、nAは左に隣接するパーティション群の総数、nBは真上に隣接するパーティション群の総数を表す。
【0075】
最初に図17を用いて、左側に隣接するパーティション群Aからの予測動きベクトルの候補mvLXAの選出を説明する。
【0076】
図17の変数M=Aとして、以下の手順で処理する。
【0077】
まず、パーティション群Aの中のパーティション数nAがカウントされる(S101)。
【0078】
次に、パーティション群Aから予測動きベクトルが選出されるか否かを示すフラグavailableFlagLXAを0、パーティション群Aを代表する動きベクトルmvLXAを0、左側に隣接するパーティションを上から順にカウントするカウンタkを0に設定する(S102)。
【0079】
パーティション群Aを含む最大符号化ブロックの位置を検出する(S103)。
【0080】
最大符号化ブロックが有効でない場合、例えば処理対象のパーティションを含む最大符号化ブロックが画面左端に位置する場合、パーティション群Aを含む最大符号化ブロックは存在しないので、S102にて設定された初期状態のavailableFlagLXA、mvLXAを出力し、終了する(S104)。
【0081】
一方、有効な場合は隣接するパーティション群AのパーティションAkの情報を取得する(S105)。
【0082】
パーティションAkと処理対象のパーティションの情報を比較する(S106)。パーティションAkの符号化モードがイントラでなく、且つ処理対象のパーティションの参照ピクチャ番号が同じ場合、フラグavailableFlagLXAを1に設定する(S107)。
【0083】
フラグavailableFlagLXAの判定を行う(S108)。フラグavailableFlagLXAが1の場合、パーティションAkの動きベクトルをmvLXAに設定する(S109)。availableFlagLXAが0の場合、カウンタkを1加算して更新する(S110)。カウンタkがパーティション群Aの総数nAと同じになったら、処理を終了する。そうでない場合は、パーティション群Aの中で次のパーティションに対してS103以降の処理を継続する(S111)。
【0084】
上側に隣接するパーティション群Bから予測動きベクトルの候補mvLXBの選出する場合、パーティション群Aと同様の処理手順で選出可能である。
【0085】
S103及びS104にてパーティション群Bを含む最大符号化ブロックの位置を検出し、その最大符号化ブロックが有効か否かを判定する点、S110にてパーティション群Bは左端を0とし右に向かって順にカウンタkを更新していく点が異なっており、最終的にフラグavailableFlagLXB及びmvLXBを出力する。
【0086】
処理対象のパーティションのコーナーで隣接するパーティションC0,C1,C2から構成されるパーティション群Cから予測動きベクトルの候補mvLXCの選出も同様である。
【0087】
以上のようにして、各パーティション群A,B,Cに対するフラグavailableFlagLXMと予測動きベクトルの候補mvLXM(MはA,B,C)が出力される。
【0088】
[予測動きベクトルの候補の中央値を導出(S200)]
この処理の入力は
・周辺パーティションの動きベクトルmvLXM(MはA,B,C)、および
・フラグavailableFlagLXM(MはA,B,C)
であり、この処理の出力は予測動きベクトルの中央値mvLXMedである。
【0089】
図18を用いて処理の流れを説明する。最初に、全てのフラグavailableFlagLXM(MはA,B,C)の判定が行われ(S201)、全てのフラグavailableFlagLXMが0の場合、mvLXMedは(0,0)に設定される(S202)。
【0090】
次に、availableFlagLXM(MはA,B,C)の中で1つだけが1である場合(S203)、そのavailableFlagLXMに該当する動きベクトルmvLXMを予測動きベクトルmvLXMedとする(S204)。
【0091】
上記の条件でない場合、動きベクトルmvLXA,mvLXB及びmvLXCのx及びy成分ごとに中央値を算出し、予測動きベクトルの中央値mvLXMedとする(S205)。
【0092】
[予測動きベクトルの候補のリストを作成(S300)]
S100及びS200にて生成された予測動きベクトルの候補mvLXM(M=A,B,C)及びmvLXMedは予測動きベクトルの候補のリストmvpListLXに格納される。リストmvpListLXは、PC等の装置内部のメモリ或いはメモリの一部を記憶領域として設けられたり、プログラム実行時にメモリ上に記憶領域として割り当てられることで設定される。リストmvpListLXは図19に示されるように配列構造を成し、リスト内部の所在を示すインデックスと、インデックスに対応する予測動きベクトルの候補を格納する記憶領域が設けられている。インデックスの数字は0から開始され、リストmvpListLXの記憶領域に、mvLXMed,mvLXA,mvLXB,mvLXCの順で予測動きベクトルの候補が格納される。尚、インデックス4の記憶領域には後述する時間方向の予測動きベクトルの候補が格納される。以降の処理では、リストmvpListLXに記録されたインデックスkの予測動きベクトルの候補は、mvpListLX[k]で表すこととし、リストmvpListLXとは配列表記をすることで区別することとする。
【0093】
[時間方向の予測動きベクトルの候補を導出(S400)]
この処理における入力は
・予測ブロックのパーティションのパーティション番号puPartIdx、および
・予測ブロックのパーティションの参照ピクチャ番号refIdxLX(Xは0 或いは1)
であり、出力は
・予測ブロックのパーティションと同位置の他ピクチャのパーティションの動きベクトルmvLXCol、および
・予測ブロックのパーティションと同位置の他ピクチャのパーティションが有効か否かを示すフラグavailableFlagLXCol
である。
【0094】
まず、処理対象のパーティションが含まれるスライスのスライス・タイプ及び処理対象のパーティションが含まれるピクチャの参照ピクチャのリストのうちL0予測或いはL1予測のどちらを使用するかを決定するフラグcollocated_from_l0_flagに基づき、導出処理が場合分けされる。図20に示されるように最初にスライス・タイプについて判定される(S401)。スライス・タイプがBでない場合、即ちPである場合はCase3の処理が行われる。スライス・タイプがBである場合は、更にフラグcollocated_from_l0_flagの値について判定される(S402)。
【0095】
collocated_from_l0_flag=1の場合、L0予測が使用されるCase1の処理が実行され、collocated_from_l0_flag=0の場合、L1予測が使用されるCase2の処理が実行される。
【0096】
図21で示される一例及び図24のフローチャートを用いて、Case1について説明する。図21で示されるように、処理対象のパーティションが含まれるピクチャをcurrentPicで表し、currentPicのL0予測で最も小さい参照ピクチャ番号の参照ピクチャをColPicとする(S411)。
【0097】
通常ColPicはピクチャの表示順序でcurrentPicの前方の一番近い参照ピクチャとなり、図21で示されるようにcurrentPicよりも過去の位置に設定される。
【0098】
次に、処理対象のパーティションと同じ空間位置にある、ColPicのパーティションの位置情報を設定する。処理対象のパーティションと同じ最大符号化ブロックのアドレス、予測ブロックのインデックス及びパーティション番号がそれぞれ設定される(S412)。
【0099】
処理対象のパーティションと同じ空間位置に設定されたColPicのパーティションの符号化モードに応じて処理を場合分けする(S413)。符号化モードがイントラの場合、時間方向の動きベクトルmvLXColの各x,y成分を0、フラグavailableFlagLXColを0として出力し、処理を終了する(S414)。符号化モードがイントラでない場合、LY予測の有効フラグpredFlagLYCol、LY予測の動きベクトルmvCol及び参照ピクチャ番号refIdxColが設定される(S415)。記号Yは記号Xと同様に予測方向を表し、ここでは処理対象のパーティションと同じ空間位置に設定されたColPicのパーティションのL1予測の動き情報が設定される、即ち
predFlagL1Col=predFlagL1[puPartIdxCol]
mvCol=mvL1[puPartIdxCol]
refIdxCol=refIdxL1[puPartIdxCol]
がそれぞれ設定され、図21で示されるように、処理対象のパーティションと同じ空間位置に設定されたColPicのパーティションから参照ピクチャ番号refIdxColに該当するピクチャを参照ピクチャへの動きベクトルmvColが求められる。
【0100】
フラグpredFlagL1Colの判定を行う(S416)。predFlagL1Col=0の場合、即ちL1予測が存在しない場合、時間方向の動きベクトルmvLXColの各x,y成分を0、フラグavailableFlagLXColを0として出力し、処理を終了する(S414)。
【0101】
predFlagL1Col=1の場合、availableFlagLXColが1に設定され(S417)、mvColから時間方向の動きベクトルmvLXColが求められる。
【0102】
図21に示されるように、ColPicと参照ピクチャ番号refIdxColで示される参照ピクチャまでの距離をrdとし、一方、currentPic とcurrentPicの処理対象のパーティションの参照ピクチャ番号refIdxLXで示される参照ピクチャとの距離をrbX(Xは0或いは1)とする。ここで、距離rdとrbXとの比較を行う(S418)。rdとrbXが同じ場合、mvLXColをmvColとして出力し、終了する(S419)。rdとrbXが異なる場合、距離rdに対するrbXの倍率によって求めることが出来、次式で表される(S420)。
【0103】
mvLXCol=mvCol×rbX/rd
ここで、mvColと予測方向が同じ場合、mvLXColと正負符号は同じとなり、予測方向が逆向きの場合、mvLXColの正負符号は逆になる。
【0104】
以上のようにして、時間方向の動きベクトルmvLXColが出力される。
【0105】
次に、図22を用いてCase2について説明する。図22で示されるように、Case1との違いはcurrentPicのL1予測で最も小さい参照ピクチャ番号の参照ピクチャをColPicとする点である。その為、Case2はCase1の場合に対して、currentPicを中心にして時間軸を反転することと同等となるだけで、基本的な考え方はCase1と同じである。
【0106】
具体的には、図24に示されるフローチャートにおいて、S415において、各変数の設定先が処理対象のパーティションと同じ空間位置に設定されたColPicのパーティションのL0予測の動き情報となる点、S420におけるピクチャ間距離の換算により出力されるmvLXColの正負符号がL0予測を正とする点が異なる。
【0107】
Case3はCase1及びCase2の事例とは異なり、L0予測のみの場合であり、図23に示されるように、currentPicよりも時間的に過去のピクチャのパーティションのL0予測の動きベクトルを使用して、mvLXColを求めるものである(この場合、Xは0のみとなる)。図24のフローチャートでは、S411においてcurrentPicのL0予測で最も小さい参照ピクチャ番号の参照ピクチャをColPicとする点、S415及において各変数の設定先が処理対象のパーティションと同じ空間位置に設定されたColPicのパーティションのL0予測の動き情報となる点、S420におけるピクチャ間距離の換算により出力されるmvLXColがL0予測のみとする点が異なるだけで、基本的な処理はCase1と同様である。
【0108】
以上のようにして、時間方向の動きベクトルmvLXColが求められ、予測動きベクトルの候補のリストmvpListLXのインデックス4の記憶領域にmvLXColが格納される。
【0109】
[処理対象のパーティションのサイズに基づき、予測動きベクトルの候補を入れ換え(S500)]
次の条件のうち1つでも当てはまれば、mvLXMedはmvpListLXの順序の中でmvLXNに置き換えられる。
・処理対象のパーティションを含む予測ブロックの符号化サイズがPART_2NxN、PART_2NxnU、PART_2NxnDのうち1つである場合:
puPartIdxが0のパーティションの場合、mvLXN=mvLXBに設定される。それ以外のパーティションは、mvLXN=mvLXAに設定される。
・処理対象のパーティションを含む予測ブロックの符号化サイズがPART_Nx2N、PART_nLx2N、PART_nRx2Nのうち1つである場合:
puPartIdxが0のパーティションの場合、mvLXN=mvLXAに設定される。それ以外のパーティションは、mvLXN=mvLXBに設定される。
【0110】
[リストの中の同じの値を持つ予測動きベクトルの候補を削除(S600)]
予測動きベクトルの候補のリストmvpListLXの中で、同じ動きベクトルの値を持つ予測動きベクトルの候補が存在する場合、リストmvpListLXの中で最も小さいインデックスを持つ予測動きベクトルの候補を除いて全て削除される。削除処理の終了後、リストmvpListLXの中は、削除された予測動きベクトルの候補の格納領域が空いている為、インデックス0を基準にして、インデックスが小さい予測動きベクトルの候補の順で詰めていく。例えば、インデックス1,4の予測動きベクトルの候補が削除され、インデックス0,2及び3が残った場合、インデックス0はそのままとして、インデックス2の予測動きベクトルの候補をインデックス1の格納領域に移動し、インデックス3の予測動きベクトルの候補をインデックス2の格納領域に移動して、リストmvpListLXの中を更新する。
【0111】
[差分動きベクトルに基づき、リストの中の予測動きベクトルの候補を削除(S700)]
この処理の入力は
・予測動きベクトルの候補のリストmvpListLX、および
・差分動きベクトルmvdLX
であり、この処理の出力は修正された予測動きベクトルの候補のリストmvpListLXである。
【0112】
図25(a)〜(c)を用いて、基本的な予測動きベクトルの候補の削除方法を説明する。ここでは、予測動きベクトルの候補のリストmvpListLXの中に3つの候補が残っていることとし、説明の便宜上、mvpListLXの3つの予測動きベクトルの候補をmvp1、mvp2及びmvp3とする。図25の実線矢印で示されるように、左から順に予測動きベクトルの候補mvp1、mvp2及びmvp3とする。
【0113】
最初に仮の予測動きベクトルを決める。図25(a)〜(c)では3つの予測動きベクトルの候補を、それぞれ仮の予測動きベクトルとした場合の処理過程を示し、図25(a)はmvp1、図25(b)はmvp2、図25(c)はmvp3が最初の仮の予測動きベクトルとした場合である。
【0114】
図25(a)ではmvp1を仮の予測動きベクトルと設定する。図25(a)の中でmvp1を他の予測動きベクトルの候補と異なるように太実線矢印で表すこととし、以降も仮の予測動きベクトルとなる候補を太実線矢印で表す。仮の予測動きベクトルに差分動きベクトルmvdLX(図25(a)ではmvdと省略し、太点線矢印で表される)を加算すると、処理対象のパーティションの仮の動きベクトルが算出される。この仮の動きベクトルに対して、他の予測動きベクトルの候補mvp2及びmvp3との差分をとると、予測動きベクトルの候補mvp2及びmvp3の差分動きベクトルmvd2及びmvd3が算出される(図25では細点線矢印で表される)。
【0115】
ここで、処理対象のパーティションの差分動きベクトルmvdの符号量とmvd2及びmvd3の符号量を概算し、比較する。差分動きベクトルの符号量の概算は、差分動きベクトルの絶対値が大きい程符号量が多く発生する為、図25の中で示される差分動きベクトルの大きさを比較することで符号量の比較を行うことと同等とみなすことが出来、以下において矢印の大きさを概算符号量として説明することとする。
【0116】
仮の予測動きベクトルとして設定したmvp1が真の予測動きベクトルである場合、符号化の際に最小の符号量となる差分動きベクトルとしてmvdが選択される筈なので、mvdの符号量はmvd2及びmvd3の符号量よりも少ないことになる。即ち、mvdの符号量よりも少なくなる差分動きベクトルを発生させる予測動きベクトルの候補が1つでも存在すれば、仮の予測動きベクトルとして設定したmvp1は真の予測動きベクトルではないと判定され、リストmvpListLXから削除される。
【0117】
つまり、予測動きベクトルを選択する符号化側では、mvdの符号量が最小となるmvp候補を選択していると想定した場合の矛盾条件を利用して、mvp候補を削除する。図25(a)では、mvd2及びmvd3はmvdよりも小さくなるので、仮の予測動きベクトルとして設定したmvp1が真の予測動きベクトルではなく、リストmvpListLXから削除と判定される(図25(a)中にて削除と判定される予測動きベクトルの候補は○で表される)。mvp1は削除と判定されても、直ぐにリストmvpListLXから削除されず、他の予測動きベクトルの候補の判定の際に削除可能性を高めることができるため、リストmvpListLXに残したままにして、削除することを記憶しておき、全ての予測動きベクトルの候補の判定終了後に削除される。以降の予測動きベクトルの判定でも、この処理は適用されることとする。
【0118】
次に、仮の予測動きベクトルをmvp1以外の他のmvpListLXの予測動きベクトルの候補に設定し直す。図25(a)に示される予測動きベクトルの候補を左から優先して仮の予測動きベクトルとして設定することとし、この場合mvp2を次の仮の予測動きベクトルとして設定する。mvp2に差分動きベクトルmvdを加算して仮の動きベクトルが算出され、この仮の動きベクトルとmvp2以外の他の予測動きベクトルの候補mvp1及びmvp3との差分をとり、差分動きベクトルmvd1及びmvd3が新たに算出される。mvdをmvp1及びmvd3と比較すると、mvd1はmvdより大きいが、mvd3がmvdよりも小さいので、仮の予測動きベクトルmvp2は真の予測動きベクトルではなく、リストmvpListLXから削除と判定される。
【0119】
同様にして、mvp3を次の仮の予測動きベクトルとして設定し直し、mvp3に差分動きベクトルmvdを加算して仮の動きベクトルが算出され、この仮の動きベクトルとmvp3以外の他の予測動きベクトルの候補mvp1及びmvp2との差分をとり、差分動きベクトルmvd1及びmvd2が新たに算出される。mvdをmvp1及びmvd2と比較すると、mvdはmvd1及びmvd2よりも小さいので、仮の予測動きベクトルmvp3はリストmvpListLXから削除と判定されず、残ることとなる。結果として、リストmvpListLXの中でmvp1及びmvp2が削除と判定されているので、mvp3が予測動きベクトルとして選択される。
【0120】
図25(b)は最初の仮の予測動きベクトルをmvp2とした場合であり、差分動きベクトルmvdを加算して仮の動きベクトルが算出される。この仮の動きベクトルとmvp2以外の他の予測動きベクトルの候補mvp1及びmvp3との差分をとり、差分動きベクトルmvd1及びmvd3が算出される。mvdをmvd1及びmvd3と比較すると、mvd3がmvdより小さいので、仮の予測動きベクトルmvp2が削除と判定される。
【0121】
次に、仮の予測動きベクトルをmvp2以外の他のmvpListLXの予測動きベクトルの候補に設定し直す。この場合、mvp3を仮の予測動きベクトルとして設定する。仮の予測動きベクトルmvp3に差分動きベクトルmvdを加算して仮の動きベクトルが算出され、この仮の動きベクトルとmvp3以外の他の予測動きベクトルの候補mvp1及びmvp2との差分をとり、差分動きベクトルmvd1及びmvd2が新たに算出される。mvdをmvd1及びmvd2と比較すると、mvdがmvd1及びmvd2よりも小さいので、仮の予測動きベクトルmvp3はリストmvpListLXから削除と判定されず残る。
【0122】
同様にして、mvp1を仮の予測動きベクトルとして設定する。仮の予測動きベクトルmvp1に差分動きベクトルmvdを加算して仮の動きベクトルが算出され、この仮の動きベクトルとmvp1以外の他の予測動きベクトルの候補mvp2及びmvp3との差分をとり、差分動きベクトルmvd2及びmvd3が新たに算出される。mvdをmvd2及びmvd3と比較すると、mvd2及びmvd3がともにmvdよりも小さいので、仮の予測動きベクトルmvp1はリストmvpListLXから削除と判定される。mvp1及びmvp2は削除と判定されているので、リストmvpListLXから削除され、mvp3だけが残ることとなり、mvp3が予測動きベクトルとして選択される。
【0123】
図25(c)は最初の仮の予測動きベクトルをmvp3とした場合であり、差分動きベクトルmvdを加算して仮の動きベクトルが算出される。この仮の動きベクトルとmvp3以外の他の予測動きベクトルの候補mvp1及びmvp2との差分をとり、差分動きベクトルmvd1及びmvd2が算出される。mvdをmvd1及びmvd2と比較すると、mvd1及びmvd2はmvdよりも大きいので、仮の予測動きベクトルmvp3はリストmvpListLXから削除と判定されない。次に、仮の予測動きベクトルとしてリストmvpListLXのmvp1或いはmvp2を選択して同様な処理を行うと、図25(a)或いは図25(b)で説明した処理が行われ、結果として、mvp1及びmvp2が削除と判定され、リストmvpListLXから削除されて、mvp3だけが残り、予測動きベクトルとして選択される。
【0124】
以上のようにして、mvpListLXの中の予測動きベクトルの候補の1つを順次仮の予測動きベクトルと設定して、mvdよりも小さい差分動きベクトルを発生させる他の予測動きベクトルの候補が存在する場合に、仮の予測動きベクトルとして設定した予測動きベクトルの候補を削除と判定し、全ての予測動きベクトルの候補に対する判定終了後に削除と判定された予測動きベクトルの候補をリストmvpListLXから削除する。
【0125】
このように、符号化側で差分動きベクトルmvdの符号量が最小となる予測動きベクトルmvp候補を選択していると想定した場合の矛盾条件を利用すると、予測動きベクトルmvp候補を削減可能であり、予測動きベクトルmvpの選択情報を表すmvpインデックスの符号量を削減できる。
【0126】
図25を例にした説明では、基準としたmvdと他の予測動きベクトルの候補から算出される差分動きベクトルとの明確な大小関係に基づき判定を行ったが、等しくなる場合についてはリストmvpListLXから削除と判定せず、残すようにした。実際の動画像符号化では、予測動きベクトルの候補として使用している隣接するパーティションの動きベクトルは強い相関があり、互いに近い値を持つことが多いので、mvdと他の予測動きベクトルの候補から算出される差分動きベクトルとが等しくなる頻度が少なくない。
【0127】
このような場合、リストmvpListLXから予測動きベクトルの候補が削除と判定されず、複数の候補が残ることになるので、複数の候補から予測動きベクトルを選択する為に使用するフラグmvp_id_lxの使用頻度が多くなり、符号量が増加することになる。
【0128】
そこで、実施の形態では、このような基準としたmvdと他の予測動きベクトルの候補から算出される差分動きベクトルとが等しくなる場合に、mvd及び他の予測動きベクトルの候補から算出される差分動きベクトルに該当するリストmvpListLXの予測動きベクトルの候補のインデックスに対して、判定基準を設け、予測動きベクトルの候補の削除判定を促すようにしている。具体的には、リストmvpListLXの中のインデックスの番号が小さい方を優先してmvpListLXに残すこととした、即ち、図19で示されるリストmvpListLXの配列で下位に位置する程、削除と判定される可能性が高くなる。
【0129】
インデックスの番号が小さい方を優先するのは、インデックスの小さい方がフラグmvp_id_lxの発生符号量が少なく、符号化効率を向上させることが出来る為である。つまり、予測動きベクトルを選択する符号化側では、mvd+mvp_idxの符号量が最小となる予測動きベクトルの候補を選択していると想定した場合の矛盾条件を利用して、予測動きベクトルの候補を削除する。
【0130】
以上の削除処理のフローチャートを図26に示す。
【0131】
リストmvpListLXの中にある予測動きベクトルの候補の総数をカウントし、総数が1より多い場合は複数候補が存在するので、削除処理に進む。そうでない場合、即ち候補が1つに限定されるので、その候補を出力し終了する(S701)。
【0132】
次に、処理するパーティションの差分動きベクトルmvdLX(Xは0或いは1)の概算符号量を算出する。概算符号量は、mvdLXの絶対値をとり、その絶対値の最上位ビットの位置をmvdLXの発生符号量として算出され、mvdLXの絶対値に比例して大きくなる。つまり、図27に示す符号付きゴロム符号化の符号量を算出する。この概算符号量を以降の判定で使用する基準値mvdBitsとする(S702)。
【0133】
リストmvpListLXの中の予測動きベクトルの候補から仮の予測動きベクトルを指定する。指定方法として様々な方法があるが、ここではリストmvpListLXのインデックス順を使用することとする。インデックスをkで表すこととして、k=0に初期設定する(S703)。
【0134】
リストmvpListLXの中の予測動きベクトルの候補から、インデックスk=0に該当する候補を読み出し、仮の予測動きベクトルmvpとする。即ち、mvpは次式にて表される。
mvp=mvpListLX[k]=mvpListLX[0]
【0135】
処理するパーティションの仮の動きベクトルmvを算出する。仮の予測動きベクトルと処理するパーティションの差分動きベクトルとを加算することで算出され、次式で表される(S704)。
mv=mvp+mvdLX
【0136】
リストmvpListLXの中で、仮の予測動きベクトルとしたインデックスk以外の予測動きベクトルの候補のインデックスをl(≠k)とし、リストmvpListLXの中でkを除く最小のインデックスをlの初期値として設定する(S705)。
【0137】
インデックスlに該当する予測動きベクトルの候補をリストmvpListLXから読み出す(S706)。予測動きベクトルの候補mvpCanは次式で表される。
mvpCan=mvpListLX[l] (l≠k)
【0138】
仮の動きベクトルと予測動きベクトルの候補mvpCanとの差分を求め、その差分の概算符号量を算出する(S707)。差分mvdCanは次式で表される。
mvdCan=mv−mvpCan
【0139】
概算符号量は算出方法はS702と同様とし、差分の概算符号量mvdCanBitsを算出する。算出されたmvdCanBitsと基準値mvdBitsとの比較を行う(S708)。mvdCanBitsがmvdBitsと等しい場合はS710に進み、そうでない場合はS709に進む。
【0140】
mvdCanBitsがmvdBitsと等しい場合は、概算符号量での比較が出来ない為、リストmvpListLXの予測動きベクトルのインデックスの比較を行う(S710)。mvdBitsに対応するインデックスはkであり、mvdCanBitsに対応するインデックスはlであるので、kとlとの比較を行う。インデックスkがlより大きい場合はkに該当する仮の予測動きベクトルmvpはリストmvpListLXから削除と判定されることになるので、この時のインデックスkを記録しておく(S711)。
【0141】
削除対象のインデックスkの記録は、この削除処理の中に削除対象のインデックスkを記録しておく記憶領域を設けておいたり、リストmvpListLXの中のインデックス毎に削除するか否かを表すフラグを格納する記憶領域を追加してもよい。一方、kがlより小さい場合は仮の予測動きベクトルmvpはそのままリストに残しておき、インデックスlを更新する。現在のインデックスl及び仮の予測動きベクトルのインデックスk以外のインデックスをリストmvpListLXの中から選択し、次のlとして設定する(S712)。
【0142】
mvdCanBitsがmvdBitsと等しくない場合はmvdCanBitsとmvdBitsとの大小関係の比較を行う(S709)。mvdCanBitsがmvdBitsよりも小さい場合、上述で説明したように、符号化時の予測動きベクトルの選択と矛盾が生じる為、仮の予測動きベクトルmvpはリストmvpListLXから削除と判定されることになるので、この時のインデックスkを記録しておく(S711)。一方、mvdCanBitsがmvdBitsより大きい場合は削除と判定せず、そのままリストに残しておき、インデックスlを更新する。現在のインデックスl及び仮の予測動きベクトルのインデックスk以外のインデックスをリストmvpListLXの中から選択し、次のlとして設定する(S712)。
【0143】
リストmvpListLXの中で、l=kを除く全ての予測動きベクトルの候補、即ち仮の予測動きベクトルを除く他の予測動きベクトルの候補と仮の予測動きベクトルとの比較処理の終了を判定する(S713)。リストmvpListLXの中で仮の予測ベクトルとの比較処理が終了していない予測動きベクトルの候補が存在する場合、更新したインデックスlに該当する予測動きベクトルの候補についてS706以降の処理を継続する。l≠kのインデックスの全ての予測動きベクトルの候補との比較処理が終了した場合、仮の予測動きベクトルのインデックスkを更新する。インデックスkは、現在の仮の予測動きベクトル以外の予測動きベクトルの候補のインデックスが選択される(S714)。ここでは、現在のインデックスkに1加算することで実現される。
【0144】
更新されたインデックスkに対して、リストmvpListLXの中の全ての予測動きベクトルの候補を仮の予測動きベクトルとして比較処理を行った否かの判定する(S715)。全ての予測動きベクトルの候補に対して行っていない場合、更新したインデックスkにてS704以降の処理を継続する。
【0145】
全ての予測動きベクトルの候補に対して行った場合、リストmvpListLXの中の予測動きベクトルの候補が更新される(S716)。まず、リストmvpListLXの中で、削除と判定され記録されていたインデックスの予測動きベクトルの候補が削除される。次に、リストmvpListLXの中で、削除された予測動きベクトルの候補の空いた格納領域に、インデックス0を基準にして、インデックスが小さい予測動きベクトルの候補の順で詰めていく。例えば、インデックス0,2,3の予測動きベクトルの候補が削除され、インデックス1及び4が残った場合、まずインデックス1の予測動きベクトルの候補をインデックス0の格納領域に移動し、インデックス4の予測動きベクトルの候補をインデックス1の格納領域に移動する。以上のようにして、リストmvpListLXの中が更新される。
【0146】
[リストの中の予測動きベクトルの候補数を確認(S800)]
S700にて予測動きベクトルの候補が削除されたリストmvpListLXの中から、最適な予測動きベクトルを選択する。まず、リストmvpListLXの中に残った予測動きベクトルの候補の総数をカウントする。総数が1の場合、リストmvpListLXに残っている予測動きベクトルが候補が最適な予測動きベクトルとなり、S700にてリストmvpListLXの中で予測動きベクトルの候補の更新により、リストmvpListLXのインデックス0に予測動きベクトルが格納されている。そこで、予測動きベクトルのインデックスをmvp_idx_lxとして、mvp_idx_lx=0を設定する。インデックスmvp_idx_lxに該当するmvpListLX[mvp_idx_lx]を最適な予測動きベクトルとして出力する。
【0147】
総数が1ではない場合、リストmvpListLXの中には複数の予測動きベクトルの候補が残っていることとなり、これまでの処理では最適な予測動きベクトルとして選択出来なかったことになる。この場合、ビットストリームから復号された変数mvp_idx_lxをリストmvpListLXのインデックスとして、mvp_idx_lxに該当するリストmvpListLXのインデックスの予測動きベクトルの候補を予測動きベクトルとする。
【0148】
ここで、mvp_idx_lxのエントロピー符号化について説明する。図28にTruncated Unaryを用いたmvp_idx_lxの符号割当を示す。この例では、mvp_idx_lxの最大数が5、つまりmvp_idx_lxの値の範囲が0〜4の場合の例である。mvp_idx_lxの符号量は、値が1大きくなるほど1bitずつ増加する。但し、最大の値を持つmvp_idx_lxを伝送する場合は、最後の1bit伝送する必要がない為、1bit増加はしない。
【0149】
このように、mvp_idx_lxが増加するほど伝送する符号量が増えるため、mvdの符号量が同一の場合はmvp_idx_lxの番号が小さいmvpを選択した方が良いことが分かる。また、mvdの符号量、mvp_idx_lxの符号量共に差がつかない場合にも、mvpの候補を複数残すよりも、特定のルールにより候補を1つに絞るほうが効率が良いため、実施の形態のmvp_idx_lxの大小による候補削減は非常に有用である。
【0150】
以上の処理により、最適な予測動きベクトルが算出される。
【0151】
[実施例2]
動きベクトルの予測方法の実施例2を説明する。図29は図4で構成される動画像符号化装置の予測動きベクトル選択部111の詳細な構成を示す図であり、図30は図2で構成される動画像復号装置の予測動きベクトル選択部208の詳細な構成を示す図である。実施例1と実施例2との相違は、実施例1の予測動きベクトル選択部111及び208を構成していた予測動きベクトル候補同一判定部121及び221が実施例2には存在しないことである。
【0152】
実施例1における予測動きベクトル候補削除部122及び222では、予測動きベクトルの候補を削除判定する為に予測動きベクトルの候補を比較する場合に、予測動きベクトルの候補同士が同一の動きベクトルであると、概算符号量は同一の値となり、符号量での判定は出来ない。しかし、符号量での判定が出来ない場合、各予測動きベクトルの候補に割り当てられているリストmvpListLXのインデックスによって判定するようにしているので、比較する予測動きベクトルの候補の必ずどちらか一方が選択される。
【0153】
実施例2では、予測動きベクトルの候補同士の比較処理が、実施例1の予測動きベクトル候補同一判定部121及び221と予測動きベクトル候補削除部122及び222とで重複している点に着目し、実施例1の予測動きベクトル候補同一判定部121及び221を予測動きベクトル選択部111及び208の処理構成から外すこととで、予測動きベクトル候補を最大限に絞り込むことを維持しつつ、処理速度向上と回路規模縮小の効果が期待出来る。
【0154】
ここで、予測動きベクトル候補生成部130及び230がn個の予測動きベクトルの候補を生成したとする。実施例1の予測動きベクトル候補同一判定部121及び221では、予測動きベクトルの候補を比較する為の処理回数として、n個の中から2個の予測動きベクトルの候補を選ぶ組み合わせは=n(n−1)/2通りあるから、n(n−1)/2回を必要とする。ここで、Cは組み合わせを表す関数(combination)である。
【0155】
更に、実施例1の予測動きベクトル候補同一判定部121及び221にて削除され更新された予測動きベクトルの候補数をm(m≦n)とすると、予測動きベクトル候補削除部122及び222では、予測動きベクトルの候補を比較する為の処理回数はm(m−1)となり、処理回数の総数は
n(n−1)/2+m(m−1), 但しm≦n
で表される。
【0156】
一方、実施例2の予測動きベクトル候補削除部132及び232では、予測動きベクトルの候補を比較する為の処理回数はn(n−1)となる。
【0157】
実施例1と実施例2との処理回数が等しくなるのは、実施例1の予測動きベクトル候補同一判定部121及び221で予測動きベクトルの候補総数のうち約1/20.5≒70%が削除されずに残る場合に相当する。即ち、n個の予測動きベクトルの候補の全体で約30%が重複することになる。
【0158】
実施例2の予測動きベクトル候補生成部130及び230では、符号化・伝送する為の差分動きベクトルの値を小さくする為に、予測動きベクトルの候補としては異なる値を持つ候補を生成した方が有利であり、同一の値となる候補を生成することは確率的に少ないので、生成される予測動きベクトルの候補のうち、30%以上が重複することは静止画やパンスキャンのような特殊な場合を除いて考え難い。したがって、実施例2では、予測動きベクトルの候補の比較処理回数は、実施例1に比べて少なくなることが期待出来、処理速度を向上させることが可能となる。
【0159】
また、符号化装置や復号装置をハードウェア化する場合には、処理のワーストケースを基準に回路を設計する必要があるため、実施例1でも、予測動きベクトル候補同一判定部121及び221の有無にかかわらず、n個の動きベクトル候補が予測動きベクトル候補削除部122及び222に入力されることを想定しなくてはいけない。つまり、本実施の形態のように予測動きベクトル候補削除部122及び222で各予測動きベクトルの候補に割り当てられているリストmvpListLXのインデックスを考慮して予測動きベクトル候補を削除している場合、予測動きベクトル候補同一判定部121及び221の存在意義はない。
【0160】
もっとも、符号化装置や復号装置をハードウェア化せずに、ソフトウェアで処理する場合は、実施例1のように予測動きベクトル候補同一判定部121及び221による同一判定処理を、予測動きベクトル候補削除部122及び222による候補削除処理に先だって行っておくことは計算量の観点から有利になることもある。また、ハードウェア化した場合であっても、消費電力を考えると、計算量が少ない構成の方が有利であるから、実施例1のように予測動きベクトル候補同一判定部121及び221を設ける構成にも意味がある。したがって、実装形態の違いや、計算量、消費電力などの性能指標の観点の違いから、実施例1と実施例2はそれぞれに異なる長所を有し、どちらか一方が他方よりも優れているというものではないことに留意すべきである。
【0161】
実施例2では、実施例1から予測動きベクトル候補同一判定部121及び221を処理構成から外し、事前に予測動きベクトルの候補から同一の動きベクトルの値を持つ候補を削除する処理が無い点が異なるだけで、予測動きベクトルの候補の判定処理は実施例1と同様であるので、判定処理については説明を割愛する。
【0162】
図31(a)は実施例2の予測動きベクトル候補生成部130及び230ならびに予測動きベクトル候補削除部132及び232の処理の流れを表すフローチャートである。図31(b)は実施例2の予測動きベクトル候補生成部130及び230による予測動きベクトル候補の生成の一例を示すフローチャートであり、図31(a)の[予測動きベクトルの候補を算出(S90)]の処理の詳細な流れを示すものである。図31(a)は、図14(a)の実施例1の場合と比べて、S600のリストの中の同じ値を持つ予測動きベクトルの候補を削除する処理がない点が異なり、それ以外の処理の流れは同じであり、図31(b)は、図14(b)の実施例1の場合と同じであるから、説明を省略する。
【0163】
[実施例3]
動きベクトルの予測方法の実施例3を説明する。実施例3は、動画像符号化装置の予測動きベクトル選択部125及び135、予測動きベクトル候補削除部122と、動画像復号装置の予測動きベクトル候補削除部222での予測動きベクトルの候補の比較判定方法が実施例1及び2とは異なる。
【0164】
最初に、予測動きベクトル選択部125及び135における相違を説明する。実施例1及び2における予測動きベクトル選択部125及び135では、動きベクトルmvとリストmvpListLXの中に格納された各予測動きベクトルの候補mvpListLX[i]との差分を算出し、その差分の発生符号量のみで比較していた。実際の符号化過程では差分動きベクトルと条件付きで予測動きベクトルのインデックスmvp_idx_lxが符号化され、伝送されるので、実施例3ではインデックスmvp_idx_lxの発生符号量も考慮することで、発生符号量が最小となる予測動きベクトルの候補を判定する。即ち、動きベクトルmvとリストmvpListLXの中に格納された各予測動きベクトルの候補mvpListLX[i]との差分の発生符号量とそのインデックスiの発生符号量を加算した総符号量が最小となる予測動きベクトルの候補をmin_mvpとして記録する。
【0165】
次に、動画像符号化装置の予測動きベクトル候補削除部122及び動画像復号装置の予測動きベクトル候補削除部222における相違を説明する。具体的には、動きベクトルの予測方法における差分動きベクトルに基づき、リストの中の予測動きベクトルの候補を削除(S700)する過程内での判定が異なる。
【0166】
実施例1及び2における差分動きベクトルに基づくリストの中の予測動きベクトルの候補の削除では、予測動きベクトルの候補から任意に選択された1つの候補を仮の予測動きベクトルとして、その動きベクトルと差分動きベクトルmvdを加算することで仮の動きベクトル生成し、その仮の動きベクトルと他の予測動きベクトルの候補との差分を符号量に換算した値とmvdを符号量に換算した値で比較して、予測動きベクトルの削除を実施した。
【0167】
しかし、実際の符号化過程では差分動きベクトルと条件付きで予測動きベクトルのインデックスmvp_idx_lxが符号化され、伝送される。S700の削除処理により、予測動きベクトルの候補が1つに絞られた場合は、予測動きベクトルのインデックスmvp_idx_lxを符号化・伝送する必要がないが、2つ以上の候補が残る場合にはmvp_idx_lxが必要となる。
【0168】
その為、上述の予測動きベクトル選択部125及び135と同様に、削除処理において、差分動きベクトルの符号量概算とともに予測動きベクトルのインデックスmvp_idx_lxの符号量を考慮することで厳密な比較が可能となり、予測精度の向上が図られる。
【0169】
図32を一例として説明する。図32は予測動きベクトルの候補をmvp1とmvp2とし、配置した例である。まず、実施例1及び2での判定の一例として図32(a)を説明する。細実線はmvp1及びmvp2にそれぞれ差分動きベクトルを加算した時に同じ発生符号量になる境界を示し、境界よりも左ならmvp1、境界より右ならmvp2の方が発生符号量が少ない領域を示している。
【0170】
図32(a)に示されるように、mvp1を仮の予測動きベクトルとしてmvdを加算すると、mvdの発生符号量が境界を超えない位置に達したとする。mvp2からその位置に向けた差分動きベクトルmvp2の符号量はmvdのそれよりも多いことになり、この場合mvp1が削除されないことになる。mvp1及びmvp2のそれぞれの予測動きベクトルのリストmvpListLXのインデックスmvp1_idx及びmvp2_idxとし、次の関係mvp1_idx>mvp2_idxが成り立っている場合、予測動きベクトルの候補が複数残ることになり、mvp1を予測動きベクトルとして選択するには、インデックスの差分(mvp1_idx−mvp2_idx)相当の符号量がmvp_idx_lxとして必要となる。そこで、本実施例3では、このインデックスの差分相当の符号量を差分動きベクトルの符号量概算に考慮してより厳密な比較を行う。
【0171】
図32(b)は図32(a)においてインデックスの符号化分を考慮した場合を示す。mvp1及びmvp2のインデックスがmvp1_idx>mvp2_idxの関係にある場合、mvp1を予測動きベクトルとして選択する場合、インデックスの差分(mvp1_idx−mvp2_idx)相当の符号量が加算されるので、従来中心にあった符号量の境界がmvp1寄りにオフセットされることになる。図32(b)では、オフセットされた境界を越えてmvp1に加算されたmvdの符号量がmvp2の領域を侵すことになり、この場合、mvp1は削除されることになる。
【0172】
以上のように、予測動きベクトルのインデックスにより発生する符号量差を考慮することで、予測動きベクトルの候補の削除の精度を高めることが可能となる。
【0173】
図33は本実施例3を実現する為に、実施例1及び2における差分動きベクトルに基づき、リストの中の予測動きベクトルの候補を削除に追加するフローチャートを示す。まず、図26のフローチャートに対して、S707までの過程が同様に行われる。
【0174】
次に、図33に示されるように、仮の予測動きベクトルmvpのインデックスkとk以外の予測動きベクトルの候補のインデックスをl(≠k)との差分を求め、符号量に概算し、オフセット値を算出する(S721)。予測動きベクトルのインデックスは、ユーナリー・バイナリゼーション符号化が用いられることが多いので、ここでもこの符号化を採用することとすると、インデックスの値自身が符号量となる。次に、算出されたオフセット値を差分の概算符号量mvdCanBitsに加算する(S722)。ここで、k>lの場合、オフセット値は負となるが、そのまま加算する。予測動きベクトルのインデックスを考慮して算出されたmvdCanBitsでmvdとの比較を行い、以降の過程は実施例1及び2と同様にして予測動きベクトルの候補の削除を行う。
【0175】
[実施例4]
動きベクトルの予測方法の実施例4を説明する。実施例1〜3とは、動きベクトルの予測方法における予測動きベクトルの候補を削除(S700)する過程内で予測動きベクトルの候補のリストmvpListLXの各リストのインデックスmvp_list_lxの符号量の割り当て方が異なる。
【0176】
実施例1〜3におけるリストmvpListLXのインデックスmvp_idx_lxの符号量の割り当て方は、図28で示されるように、リストmvpListLXの総リスト数に対して固定的な符号量がTruncated Unaryによって割り当てられる。図28の場合は総リスト数5であり、インデックスmvp_idx_lxは最大で4ビットの符号量となる。
【0177】
実施例1〜3における予測動きベクトルの候補の削除過程では、予測動きベクトルの候補が削除対象と判定されても、リストmvpListLXのインデックスの割り当て符号量はそのままとして判定を続けていた。しかし、最終的に削除過程が終了し、予測動くベクトルの候補として選択されるリストmvpListLXのインデックスmvp_idx_lxは、リストmvpListLXの中から削除対象の予測動きベクトルの候補を削除し、インデックス0を基準にして、インデックスが小さい予測動きベクトルの候補の順に詰められたリストmvpListLXのインデックスとなり、削除過程におけるインデックスmvp_idx_lxの符号及び符号量とは異なる。
【0178】
そこで、実施例4では、予測動きベクトルの候補の削除過程において、リストmvpListLXの中で削除対象とされた予測動きベクトルの候補のリストを除き、リストmvpListLXに残ったリストのインデックスmvp_idx_lxに対して、新たに符号の割り当ての変更を行うこととする。
【0179】
例えば、図28のリストの中でインデックスmvp_idx_lxが2のリストにある予測動きベクトルの候補が削除対象と判定されたとする。削除対象と判定された予測動きベクトルのリストのインデックスは削除過程中に記録されているので、次の削除判定の前に、リストのインデックスに割り当てる符号を更新する。ここでは、インデックス2以外のリストmvpListLXに残ったリストのインデックスに対して符号を次のように割り当て直す。インデックスmvp_idx_lx=0,1,3,4の順に割り当て符号は”0”,”10”,”110”,”111”となり、最大でも3ビットで表されることになる。
【0180】
以上のようにして、リストmvpListLXの中にある予測動きベクトルの候補毎に削除判定を行い、その都度インデックスmvp_idx_lxに対する符号割り当ての更新を繰り返す。削除判定毎にリストmvpListLXのインデックスmvp_idx_lxに対して、予測動きベクトルの候補の削除が反映された符号量が割り当てられるので、予測動きベクトルの候補の削除判定の正確性を向上させることが可能となる。
【0181】
[実施例5]
本発明に係る実施の形態による動きベクトルの予測方法の実施例5を説明する。実施例5の動画像符号化装置の予測動きベクトル選択部111及び動画像復号装置の予測動きベクトル選択部208は実施例2と同様の構成をなすが、予測動きベクトル選択部111の中の予測動きベクトル候補削除部132及び予測動きベクトル選択部208の中の予測動きベクトル候補削除部232の判定方法が異なる。
【0182】
実施例5では、予測動きベクトル候補生成部120及び220にて作成された予測動きベクトルの候補のリストmvpListLXの中に格納された予測動きベクトルの候補mvpListLX[i]から3つの候補を選出し、3つの候補の組合せから2つの候補間の予測動きベクトル間差分を算出し、算出された3つの予測動きベクトル間差分の中で、最も大きい予測動きベクトル間差分をとる2つの候補以外のもう1つの候補を削除対象として判定する。
【0183】
このような判定を行うのは、差分動きベクトルの符号量を削減する為に、複数の予測動きベクトルの候補を設定するが、予測動きベクトルの候補同士が近い動きベクトルを持つ冗長な予測動きベクトルの候補を設定した場合、冗長な予測動きベクトルの候補を指定する為にインデックスの符号量が増加してしまい、差分動きベクトルの符号量の削減効果を打ち消してしまうからである。その為、本発明に係る実施形態による動きベクトルの予測方法では、予測動きベクトルの候補間で予測動きベクトルの差分が大きくなる候補を優先して、予測動きベクトルの選択の幅を広げるようにする。
【0184】
具体的な一例として、図34を用いて説明する。図34は、予測動きベクトル候補生成部120及び220で生成された予測動きベクトルの候補として、図19で示される候補を適用し、各候補の予測動きベクトルを二次元上に配置した例である。特に断りがない限り、符号化タイプに応じてLX方向に実施されるが、ここでは説明の都合上、L0或いはL1方向の一方を例として説明を行う。
【0185】
図34は、図19で示される5つの予測動きベクトルの候補の予測動きベクトルを配置し、最初に予測動きベクトルの候補のリストmvpListLXから上位3つの候補を選出し、3つの候補の組合せから2つの候補間の予測動きベクトル間差分を算出する。最初に選出される予測動きベクトルの候補は、予測動きベクトルの候補のリストmvpListLXからMed,A及びBの3つの候補である。予測動きベクトルの候補間の予測動きベクトル間差分は次式にて算出される。
dist(M,N)=|mvLXMx−mvLXNx|+|mvLXMy−mvLXNy|
ここで、予測動きベクトル間差分dist(M,N)のM及びNはリストに登録された予測動きベクトルの候補を表し、mvLXMx,mvLXNx及びmvLXMy,mvLXNyは候補M及びNの動きベクトルのx成分及びy成分を表す。
【0186】
予測動きベクトルの候補Med,A及びBの中から3点間の予測動きベクトル間差分を上式にて算出すると、図34(a)に示されるように3つの予測動きベクトル間差分が表される。これら3つの予測動きベクトル間差分の中で最も大きい予測動きベクトル間差分を検出する。
【0187】
図34(a)の例では、dist(A,B)>dist(Med,A)>dist(Med,B)となるので、dist(A,B)が選出される。予測動きベクトル間差分dist(A,B)に含まれる候補はA及びBであるので、Med,A及びBの3つの候補のうち、この中に無いMedを削除対象として判定する。
【0188】
次に、残ったA及びBに加え、予測動きベクトルの候補のリストmvpListLXの順番でCが選出され、A,B及びCの3つの候補について、同様に3つの候補間の予測動きベクトル間差分を算出し、削除対象の候補を判定する。
【0189】
図34(b)により、3つの予測動きベクトル間差分はdist(B,C)>dist(A,B)>dist(A,C)となるので、Aを削除対象として判定する。最後に予測動きベクトルの候補のリストmvpListLXに残った候補Colと、B及びCについても同様に行うと、図34(c)のように示され、3つの予測動きベクトル間差分はdist(B,C)>dist(B,Col)>dist(C,Col)となるので、Colを削除対象として判定する。
【0190】
以上のようにして、予測動きベクトルの候補のリストmvpListLXからMed,A及びColが削除され、B及びCが予測動きベクトルの候補として残ることになり、予測動きベクトルの候補に割り当てるインデックスの符号量を抑えることが可能となる。ここでは、予測動きベクトルdist(M,N)として、予測動きベクトルの差分の絶対値を用いたが、差分の自乗により判定してもよい。
【0191】
以上の削減処理が実施される予測動きベクトル候補削除部132及び232の判定処理のフローチャートを図35に示す。最初に、予測動きベクトル候補生成部120及び220にて作成された予測動きベクトルの候補のリストmvpListLXの中に格納された予測動きベクトルの候補mvpListLX[i]から3つの候補を選出する(S1001)。リストmvpListLXのインデックスが小さい方から順に3つの候補を選出する。例えば、図19のテーブルの例とすると、Med,A及びBが選出される。
【0192】
続いて、選出された3つの候補間の予測動きベクトル間差分を算出する(S1002)。3つの候補の中から2つの候補間の予測動きベクトル間差分を上述した式にて算出する。算出された3つの予測動きベクトル間差分の中から最も大きい予測動きベクトル間差分を判定して、削除対象とする候補を削除リストに記録する。まず、3つの予測動きベクトル間差分が全て同じになるか否かを判定する(S1003)。全て同じになった場合は、3つの候補の中で最もインデックスが大きい候補を削除対象として削除リストに記録する(S1004)。全て同じでない場合は次の判定に進む。
【0193】
次に、2つの予測動きベクトル間差分が同じであって、もう1つの予測動きベクトル間差分よりも大きい条件に抵触するか否かを判定する(S1005)。これは、最も大きい予測動きベクトル間差分が2つ存在する為、削除対象とする候補が予測動きベクトル間差分から判定出来ない場合である。この条件に抵触する場合は、もう1つの予測動きベクトル間差分をなす2つの候補の中からインデックスが大きい候補を削除対象として削除リストに記録する(S1006)。一方、この条件に抵触しない場合は、3つの予測動きベクトル間差分の中から最も大きい予測動きベクトル間差分を判定し、その予測動きベクトル間差分を構成しない候補を削除対象として削除リストに記録する(S1007)。
【0194】
続いて、リストmvpListLXの中から次に判定する候補が有無を判定する(S1008)。リストmvpListLXの中で次に判定する候補がまだ存在する場合、リストmvpListLXのインデックスの小さい順に選出して、次に判定する3つの候補を決定し(S1009)、ステップS1002以降の処理を繰り返す。リストmvpListLXの中の候補に対して、全て判定を行った場合、削除リストに記録した削除対象の候補をリストmvpListLXから削除して、インデックス0を基準に、インデックスが小さい候補の順に詰めていき、リストmvpListLXの総数NumMvpCandを更新して(S1010)、処理を終了する。このようにして、リストmvpListLXから予測動きベクトルの候補が削除され、2つの候補が残ることになる。
【0195】
尚、以上の説明では2つの候補が残ることになるが、削除する候補数を予め決めておき、それ以上の候補数を削除しないようにすることも可能である。これは、図35に対して、ステップS1011、S1012及びS1013が追加され、図36のフローチャートで表される。追加されたステップの動作について以下説明する。
【0196】
リストmvpListLXから3つの候補を選出する前に、カウンタkが0に設定される(S1011)。カウンタkは削除する候補数を表す。ここでは、削除する候補の総数をKで表すこととし、削除する候補数をKまでに留める。削除対象の候補を削除リストに記録した(S1004、S1006及びS1007)後に、カウンタkを更新する(S1012)。次に、カウンタkとKとの比較を行い、削除する候補数に達したかを判定する(S1013)。kがK未満の場合はリストmvpListLXの中から次に判定する候補が有無を判定(S1008)に進み、そうでない場合は削除リストに記録した削除対象の候補をリストmvpListLXから削除して、インデックス0を基準に、インデックスが小さい候補の順に詰めていき、リストmvpListLXの総数NumMvpCandを更新して(S1010)、処理を終了する。
【0197】
また、3つの候補から2つの予測動きベクトル間差分の大きさの大小比較を行い、3つの候補から1つの候補を削除対象とする判定も可能である。図37を用いて説明する。図37は、予測動きベクトル候補生成部120及び220で生成された予測動きベクトルの候補として、図19で示される候補を適用し、各候補の予測動きベクトルを二次元上に配置した例である。特に断りがない限り、符号化タイプに応じてLX方向に実施されるが、ここでは説明の都合上、L0或いはL1方向の一方を例として説明を行う。
【0198】
図37は、図19で示される5つの予測動きベクトルの候補の予測動きベクトルを配置し、最初に予測動きベクトルの候補のリストmvpListLXから上位3つの候補を選出し、最もインデックスが小さい候補を支点をして、他2つの候補との予測動きベクトル間差分を算出する。最初に選出される予測動きベクトルの候補は、予測動きベクトルの候補のリストmvpListLXからMed,A及びBの3つの候補である。
【0199】
予測動きベクトルの候補間の予測動きベクトル間差分は上述した式で算出される。予測動きベクトルの候補Med,A及びBの中から2点間の予測動きベクトル間差分を上式にて算出すると、図37(a)に示されるように、dist(Med,A)及びdist(Med,B)の2つの予測動きベクトル間差分が表される。これら2つの予測動きベクトル間差分の大小を比較して小さい方を判定する。図37(a)の例では、dist(Med,A)>dist(Med,B)となるので、dist(Med,B)が選出される。予測動きベクトル間差分dist(Med,B)に含まれる候補のうち、支点Medでない候補のBを削除対象として判定する。
【0200】
次に、残ったMed及びAに加え、予測動きベクトルの候補のリストmvpListLXの順番でCが選出され、Med,A及びCの3つの候補について、同様に、支点を決めて、2つの候補間の予測動きベクトル間差分を算出し、削除対象の候補を判定する。図37(b)により、2つの予測動きベクトル間差分はdist(Med,C)>dist(Med,A)となるので、Aを削除対象として判定する。
【0201】
最後に予測動きベクトルの候補のリストmvpListLXに残った候補Colと、Med及びCについても同様に行うと、図37(c)のように示され、2つの予測動きベクトル間差分はdist(Med,C)>dist(Med,Col)となるので、Colを削除対象として判定する。
【0202】
以上のようにして、予測動きベクトルの候補のリストmvpListLXから、A,B及びColが削除され、Med及びCが予測動きベクトルの候補となる。
【0203】
以上の削減処理が実施される予測動きベクトル候補削除部132及び232の判定処理のフローチャートを図38に示す。最初に、予測動きベクトルの候補リストmvpListLX[i]から3つの候補を選出する(S1021)。リストmvpListLXのインデックスが小さい方から順に3つの候補を選出する。例えば、図19のテーブルの例とすると、Med,A及びBが選出される。
【0204】
続いて、選出された3つの候補の中で最も小さいインデックスを持つ候補を支点として選択する(S1022)。ここでは、Medが支点となる。Medを支点として、他2つの候補との予測動きベクトル間差分を算出する(S1023)。予測動きベクトル間差分は上述した式にて算出する。算出された2つの予測動きベクトル間差分の大小を比較して小さい方を判定して、削除対象とする候補を削除リストに記録する。
【0205】
まず、2つの予測動きベクトル間差分が同じになるか否かを判定する(S1024)。同じになった場合は、支点として選択された候補を除く2つの候補のうち、インデックスが大きい候補を削除対象として削除リストに記録する(S1025)。同じでない場合は予測動きベクトル間差分の小さい予測動きベクトル間差分を判定し、その予測動きベクトル間差分を構成する候補のうち、支点Medでない候補を削除対象として、削除リストに記録する(S1026)。
【0206】
続いて、リストmvpListLXの中から次に判定する候補が有無を判定する(S1027)。リストmvpListLXの中で次に判定する候補がまだ存在する場合、リストmvpListLXのインデックスの小さい順に選出して、次に判定する3つの候補を決定し(S1028)、ステップS1022以降の処理を繰り返す。リストmvpListLXの中の候補に対して、全て判定を行った場合、削除リストに記録した削除対象の候補をリストmvpListLXから削除して、インデックス0を基準に、インデックスが小さい候補の順に詰めていき、リストmvpListLXの総数NumMvpCandを更新する(S1029)。このようにして、リストmvpListLXから予測動きベクトルの候補が削除され、2つの候補が残ることになる。
【0207】
尚、以上の説明では2つの候補が残ることになるが、削除する候補数を予め決めておき、それ以上の候補数を削除しないようにすることも可能である。これは、上述した図35に対して、ステップS1011、S1012及びS1013を追加した図36のフローチャートと同様のステップの追加を図38のフローチャートに行えばよい。ここでは説明を割愛する。
【0208】
以上のようにして、リストmvpListLXの中にある予測動きベクトルの候補の削除判定を行い、その都度インデックスmvp_idx_lxに対する符号割り当ての更新を繰り返す。削除判定毎にリストmvpListLXのインデックスmvp_idx_lxに対して、予測動きベクトルの候補の削除が反映された符号量が割り当てられるので、予測動きベクトルの候補の削除判定の正確性を向上させることが可能となる。
【0209】
尚、本実施例では、リストmvpListLXの中にある予測動きベクトルの候補から3つの候補を選出して削除判定を行ったが、リストmvpListLXの中に予測動きベクトルの候補が2つしかない場合は、3つの目の候補として動きベクトル(0,0)を使用して削除判定を行ってもよい。この場合、動きベクトル(0,0)は、予測動きベクトル候補生成部120及び220にて作成された予測動きベクトルの候補とみなす。この時、動きベクトル(0,0)はリストmvpListLXの中で最下位の順位にあるものとして扱うこととする。
【0210】
また、実施例では、リストmvpListLXの中にある予測動きベクトルの候補から3つの候補を選出して削除判定を行ったが、4つ以上の候補について同様の削除処理を行ってもよい。この場合、4つ以上の予測動きベクトルの候補の中から選択された任意の2つの予測動きベクトルの候補の予測動きベクトル間差分を計算し、予測動きベクトル間差分が最大となる予測動きベクトル間差分をなす2つの予測動きベクトルの候補を残し、残りの少なくとも1つの予測動きベクトルの候補を削除してもよい。また、4つ以上の予測動きベクトルの候補の中で最もインデックスが小さい予測動きベクトルの候補を支点として、少なくとも2つの他の予測動きベクトルの候補との予測動きベクトル間差分を計算し、予測動きベクトル間差分が最小となる予測動きベクトル間差分をなす、支点ではない方の予測動きベクトルの候補を削除してもよい。
【0211】
[実施例6]
本発明に係る実施の形態による動きベクトルの予測方法の実施例6を説明する。実施例6の動画像符号化装置の予測動きベクトル選択部111及び動画像復号装置の予測動きベクトル選択部208は実施例2と同様の構成をなすが、予測動きベクトル選択部111の中の予測動きベクトル候補削除部132及び予測動きベクトル選択部208の中の予測動きベクトル候補削除部232の判定方法が異なる。
【0212】
実施例1における予測動きベクトル選択部111の予測動きベクトル候補同一判定部121及び予測動きベクトル選択部208の予測動きベクトル候補同一判定部221は、予測動きベクトル候補生成部120及び220にて作成された予測動きベクトルの候補のリストmvpListLXの中で、同じ動きベクトルの値を持つ予測動きベクトルの候補が存在する場合、リストmvpListLXの中で最も小さいインデックスを持つ予測動きベクトルの候補を除いて全て削除し、候補数を削減する。
【0213】
実施例6では、予測動きベクトルが全く同じでなくとも、予測動きベクトルの比較により計算される評価値から類似である場合は、その予測動きベクトルを持つ候補をリストから削除するように判定を変更する。このような判定を行うのは、差分動きベクトルの符号量を削減する為に、複数の予測動きベクトルの候補を設定するが、予測動きベクトルの候補同士が近い値を持つ冗長な予測動きベクトル候補を設定した場合、冗長な予測動きベクトルの候補を指定する為にインデックスの符号量が増加してしまい、差分動きベクトルの符号量の削減効果を打ち消してしまうからである。
【0214】
ここでは、比較する予測動きベクトルの候補をMとNとし、LX方向の動きベクトルをそれぞれmvLXM=(mvLXMx,mvLXMy)、mvLXN=(mvLXNx,mvLXNy)で表し、MとNのリストにおけるインデックスをlistIdxLXMとlistIdxLXNとし、listIdxLXM<listIdxLXNであることとして説明する。
【0215】
実施例6では、次式から算出される予測動きベクトルの候補MとNとの予測動きベクトルのx成分及びy成分の差分絶対値が、予め設定した閾値未満になる場合に、一方の予測動きベクトルが候補として冗長であると判定して、インデックスの大きいNをリストから削除する。LX方向のx成分及びy成分の差分絶対値をadifLXx(M,N)及びadifLXy(M,N)とすると、次式となる。
adifLXx(M,N)=|mvLXMx−mvLXNx|
adifLXy(M,N)=|mvLXMy−mvLXNy|
ここで、閾値をTh(Th>0)とすると、adifLXx(M,N)<Th且つadifLXy(M,N)<Thの場合、MとNの予測動きベクトルが類似であると判定する。各成分に所定の閾値Thを設ける理由は、差分動きベクトルはx成分、y成分毎に符号化され、各成分のどちらかが離れた値を持つ予測動きベクトルの候補である場合には、予測動きベクトルの候補として有効である確率が高い為である。ここでは、各成分に共通の所定の閾値Thを設定することとしているが、x成分とy成分でそれぞれ別個の閾値を設定してもよい。
【0216】
実施例6における予測動きベクトル候補削除部132及び232の判定処理を図39のフローチャートを用いて説明する。特に断りがない限り、符号化タイプに応じてLX方向に実施されるが、ここでは説明の都合上、L0或いはL1方向の一方を例として説明を行う。
【0217】
まず、予測動きベクトルの候補のリストmvpListLXのインデックスを表すカウンタMとNをそれぞれ0と1に設定する(S1101)。
【0218】
続いて、リストmvpListLXに格納されているインデックスM及びNで示される予測動きベクトルの候補の動きベクトルからLX方向のx成分の差分絶対値adifLXx(M,N)を上式にて算出する(S1102)。算出されたLX方向のx成分の差分絶対値adifLXx(M,N)と閾値Thとを比較する(S1103)。adifLXx(M,N)がTh以上の場合、S1108 に進む。adifLXx(M,N)がTh未満の場合、LX方向のy成分の差分絶対値adifLXy(M,N)を上式にて算出する(S1104)。算出されたLX方向のy成分の差分絶対値adifLXy(M,N)と閾値Thとを比較する(S1105)。adifLXy(M,N)がTh以上の場合、S1108に進む。adifLXy(M,N)がTh未満の場合、MとNでインデックスの大きい方、即ちNが既に削除リストに記録されているか判定する(S1106)。Nが削除リストに既に記録されている場合はS1108に進み、未だ記録されていない場合はNを削除リストに記録する(S1107)。削除リストは、予測動きベクトル候補削除部132及び232内に設けられた一時記憶用のメモリである。次に、Nに1を加算して、更新する(S1108)。Nと予測動きベクトルの候補のリストmvpListLXの候補リスト総数NumMvpCandの比較を行う(S1109)。NがNumMvpCandでない場合はS1102 以降の処理を繰り返す。NがNumMvpCandに達した場合はMに1を加算して、更新する(S1110)。
【0219】
次にMと(NumMvpCand−1)との比較を行う(S1111)。Mが(NumMvpCand−1)でない場合はNを(M+1)に設定して(S1113)、S1102以降の処理を繰り返す。Mが(NumMvpCand−1)に達した場合は削除リストに記録されたインデックスに該当する予測動きベクトルの候補のリストmvpListLXに格納されている符号化情報を削除して、インデックス0を基準に、インデックスが小さい候補の順で詰めていき、リストmvpListLXの総数NumMvpCandを更新して(S1112)、終了する。
【0220】
以上のようにして、予測動きベクトルの候補のリストmvpListLXから、閾値Th未満のLX方向のx成分及びy成分の差分絶対値となる予測動きベクトルの候補が削除され、リストmvpListLXに残った予測動きベクトルの候補に割り当てるインデックスの符号量を抑えることが可能となる。
【0221】
また、予測動きベクトルの同一判定の条件として、次式から算出される予測動きベクトルの候補MとNとの予測動きベクトルの差分絶対値の和が、予め設定した閾値未満になる場合に、予測動きベクトルが同一であると判定して、インデックスの大きいNをリストから削除してもよい。この場合、LX方向の差分絶対値の和をasumLX(M,N)とすると、次式となる。
asumLX(M,N)=|mvLXMx−mvLXNx|+|mvLXMy−mvLXNy|
=adifLXx(M,N)+adifLXy(M,N)
MとNの予測動きベクトルのx及びy成分ごとの差分絶対値adifLXx(M,N)及びadifLXy(M,N)を算出し、その和を加算した値となる。ここで、閾値をTh(Th>0)とすると、asumLX(M,N)<Thの場合、MとNの予測動きベクトルが同一であると判定する。実施例1について同様に判定条件を表すと、asumLX(M,N)=Th(=0)或いは、動きベクトルの検出精度が画素精度であれば、asumLX(M,N)<Th(=1)となり、実施例6は実施例1の予測動きベクトル候補同一判定部121及び221に対して、閾値の条件を緩和したものとなる。その為、実施例1に比べて、予測動きベクトルが同じと判定されることが多くなるので、この後の予測動きベクトル判定部123及び223の処理を必要とせず、処理負荷を低減することが出来る。
【0222】
実施例6における予測動きベクトル候補削除部132及び232の判定処理を図40のフローチャートを用いて説明する。特に断りがない限り、符号化タイプに応じてLX方向に実施されるが、ここでは説明の都合上、L0或いはL1方向の一方を例として説明を行う。
【0223】
図40のフローチャートは、図39のフローチャートのステップS1102からS1105がステップS1114及びS1115に変更されており、それ以外のステップの機能は図39と同様なので、ステップS1114及びS1115についてのみ説明する。
【0224】
リストmvpListLXに格納されているインデックスM及びNで示される予測動きベクトルの候補の動きベクトルからLX方向の差分絶対値の和asumLX(M,N)を上式にて算出する(S1114)。算出されたLX方向の差分絶対値の和asumLX(M,N)と閾値Thとを比較する(S1115)。asumLX(M,N)がTh未満の場合はS1106に進み、そうでない(asumLX(M,N)がTh以上)場合はS1108に進む。以降のステップは図39の場合と同様であるので割愛する。
【0225】
尚、閾値Thは、例えばSPS(Sequence Parameter Set)、PPS(Picture Parameter Set)やSlice headerといったヘッダー情報に設定してもよい。また、符号化側と復号側で暗黙的な条件として設定してもよく、符号化側と復号側で矛盾が生じないよう設定されれば方法を制限するものではない。また、予測モードに従ってそれぞれ閾値を設定してもよい。更に、x成分とy成分とで別個の閾値を設定してもよい。この場合はx成分とy成分との閾値をそれぞれThx及びThyとして、2つの閾値が設定され、x成分、y成分の順に設定される。但し、符号化側と復号側で矛盾が生じなければ、設定の順番を変更しても構わない。
【0226】
閾値Thの値の設定は、大き過ぎると予測動きベクトルの候補のリストmvpListLXから候補が削除されやすくなる為、本来最適な符号化効率となる予測動きベクトルの候補を削除してしまうことも有り得る。一方、小さ過ぎると候補が削除されず、予測動きベクトルの候補のリストmvpListLXの中の候補のインデックスに割り当てる符号語長が長くなってしまい、符号化効率が低減してしまう恐れがある。その為、動きベクトルの差として”4”前後の値を設定することが望ましいが、コンテンツにより状況が変遷するので、その都度適切な値に変更してもよい。
【0227】
尚、実施例6では、評価値として、adifLXx(M,N)、adifLXy(M,N)及びasumLX(M,N)に予測動きベクトルの差分の絶対値を用いたが、差分の自乗値としてもよい。
【0228】
また、実施例6では、評価値として、LX方向の差分絶対値の和asumLX(M,N)を、インデックスM及びNで示される予測動きベクトルの候補の動きベクトルの各成分の絶対値総和としたが、処理対象のブロックの動きと周囲の隣接ブロックとの動きとを比較することが出来ればよく、これに限定されない。例えば、2つの候補の動きベクトルの各成分の差分絶対値を算出し、各成分の差分絶対値のうち大きい方の値を選択して評価しても良い。この場合、水平或いは垂直方向のみの動きに対して有効な判定が可能となる。
【0229】
以上のようにして、リストmvpListLXの中にある予測動きベクトルの候補の削除判定を行い、その都度インデックスmvp_idx_lxに対する符号割り当ての更新を繰り返す。削除判定毎にリストmvpListLXのインデックスmvp_idx_lxに対して、予測動きベクトルの候補の削除が反映された符号量が割り当てられるので、予測動きベクトルの候補の削除判定の正確性を向上させることが可能となる。
【0230】
以上述べたように、実施の形態の動きベクトルの予測方法によれば、ピクチャを矩形ブロックに分割し、ピクチャ間でブロック単位に動き推定、補償を行う動画像符号化における動きベクトルの符号化効率を向上させる為に、既符号化済みの周囲のブロック等の動きベクトルから予測を行い、処理対象のブロックの動きベクトルとその予測値との差分ベクトルを符号化することによって符号量を削減することができる。
【0231】
符号化対象ブロックの動きベクトルを最も効率良く予測符号化するために、予測動きベクトルの候補から最適な予測動きベクトルを判定する際、周囲の隣接ブロックの動きベクトルの中から選択する条件判定を新たに定義することで、予測動きベクトルの候補を削減する。これにより、予測動きベクトルの参照先を表すインデックスの符号量を削減することができ、符号化効率を向上させることができる。
【0232】
このように、実施の形態の動きベクトルの予測方法によれば、複数の予測動きベクトルの中から最適な動きベクトルを選択し、伝送する差分動きベクトルの発生符号量を削減させるとともに、予測動きベクトルの候補数を削減可能となる為、予測動きベクトルを表すインデックスの使用頻度を下げ、インデックスに必要な符号量を削減させて、符号化効率を向上させることができる。
【0233】
以上述べた実施の形態の動画像符号化装置が出力する動画像の符号化ストリームは、実施の形態で用いられた符号化方法に応じて復号することができるように特定のデータフォーマットを有しており、動画像符号化装置に対応する動画像復号装置がこの特定のデータフォーマットの符号化ストリームを復号することができる。
【0234】
動画像符号化装置と動画像復号装置の間で符号化ストリームをやりとりするために、有線または無線のネットワークが用いられる場合、符号化ストリームを通信路の伝送形態に適したデータ形式に変換して伝送してもよい。その場合、動画像符号化装置が出力する符号化ストリームを通信路の伝送形態に適したデータ形式の符号化データに変換してネットワークに送信する動画像送信装置と、ネットワークから符号化データを受信して符号化ストリームに復元して動画像復号装置に供給する動画像受信装置とが設けられる。
【0235】
動画像送信装置は、動画像符号化装置が出力する符号化ストリームをバッファするメモリと、符号化ストリームをパケット化するパケット処理部と、パケット化された符号化データをネットワークを介して送信する送信部とを含む。動画像受信装置は、パケット化された符号化データをネットワークを介して受信する受信部と、受信された符号化データをバッファするメモリと、符号化データをパケット処理して符号化ストリームを生成し、動画像復号装置に提供するパケット処理部とを含む。
【0236】
以上の符号化及び復号に関する処理は、ハードウェアを用いた伝送、蓄積、受信装置として実現することができるのは勿論のこと、ROM(リード・オンリ・メモリ)やフラッシュメモリ等に記憶されているファームウェアや、コンピュータ等のソフトウェアによっても実現することができる。そのファームウェアプログラム、ソフトウェアプログラムをコンピュータ等で読み取り可能な記録媒体に記録して提供することも、有線あるいは無線のネットワークを通してサーバから提供することも、地上波あるいは衛星ディジタル放送のデータ放送として提供することも可能である。
【0237】
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【符号の説明】
【0238】
101 動きベクトル検出部、 102 減算部、 103 直交変換・量子化部、 104 可変長符号化部、 105 逆量子化・逆直交変換部、 106 動き補償部、 107 重み付き予測部、 108 加算部、 109 デブロッキング・フィルタ部、 110 メモリ、 111 予測動きベクトル選択部 125、135 予測動きベクトル選択部、 120、130 予測動きベクトル候補生成部、 121 予測動きベクトル候補同一判定部、 122、132 予測動きベクトル候補削除部、 123、133 予測動きベクトル判定部、 124、134 減算部、 201 可変長復号部、 202 逆量子化・逆直交変換部、 203 動き補償部、 204 重み付き予測部、 205 加算部、 206 デブロッキング・フィルタ部、 207 メモリ、 208 予測動きベクトル選択部、 220、230 予測動きベクトル候補生成部、 221 予測動きベクトル候補同一判定部、 222、232 予測動きベクトル候補削除部、 223、233 予測動きベクトル判定部、 224、234 加算部。

【特許請求の範囲】
【請求項1】
動画像の各ピクチャを分割したブロック単位で動きベクトルを用いて前記動画像を符号化する動画像符号化装置であって、
符号化対象ブロックと同一ピクチャ内の前記符号化対象ブロックと隣接する符号化済みのブロック及び符号化済みの別のピクチャ内の前記符号化対象ブロックと同一位置のブロックの少なくとも一方の動きベクトルから複数の予測動きベクトルの候補を生成し、前記予測動きベクトルの候補を表すインデックスを付与する予測動きベクトル候補生成部と、
前記予測動きベクトルの候補同士の予測動きベクトル間差分を計算し、前記予測動きベクトル間差分に関する評価値にもとづいて前記予測動きベクトルの候補を削除する予測動きベクトル候補削除部と、
削除後に残存する予測動きベクトルの候補の中から予測動きベクトルを選択する予測動きベクトル判定部とを備えることを特徴とする動画像符号化装置。
【請求項2】
前記予測動きベクトル候補削除部は、前記予測動きベクトル候補生成部にて生成された前記予測動きベクトルの候補の中から少なくとも3つの候補を選出し、選出された予測動きベクトルの候補における任意の2つの前記予測動きベクトルの候補の予測動きベクトル間差分を計算し、前記予測動きベクトル間差分が最大となる2つの予測動きベクトルの候補以外の前記選出された予測動きベクトルの候補における少なくとも1つの予測動きベクトルの候補を削除することを特徴とする請求項1に記載の動画像符号化装置。
【請求項3】
前記予測動きベクトル候補削除部は、前記予測動きベクトル候補生成部にて生成された前記予測動きベクトルの候補の中から少なくとも3つの候補を選出し、選出された前記予測動きベクトルの候補の中で最もインデックスが小さい予測動きベクトルの候補に対して、少なくとも2つの他の予測動きベクトルの候補との予測動きベクトル間差分を計算し、前記予測動きベクトル間差分が最小となる予測動きベクトル間差分をなす前記他の予測動きベクトルの候補を削除することを特徴とする請求項1に記載の動画像符号化装置。
【請求項4】
前記予測動きベクトル候補削除部は、前記予測動きベクトル候補生成部にて生成された前記予測動きベクトルの候補同士の予測動きベクトル間差分を計算し、前記予測動きベクトル間差分に関する評価値と所定の閾値との大小比較により所定の閾値未満と判定された場合にインデックスが大きい方の前記予測動きベクトルの候補を削除することを特徴とする請求項1に記載の動画像符号化装置。
【請求項5】
前記予測動きベクトル候補削除部は、前記予測動きベクトル候補生成部にて生成された前記予測動きベクトルの候補同士の予測動きベクトルの水平成分及び垂直成分ごとの差分絶対値を差分評価値とし、前記水平成分及び垂直成分の差分評価値がそれぞれの所定の閾値未満と判定された場合にインデックスが大きい方の前記予測動きベクトルの候補を削除することを特徴とする請求項4に記載の動画像符号化装置。
【請求項6】
前記予測動きベクトル候補削除部は、前記予測動きベクトル候補生成部にて生成された前記予測動きベクトルの候補同士の予測動きベクトルの水平成分の差分絶対値と垂直成分の差分絶対値とを加算した値を差分評価値とし、前記差分評価値が所定の閾値未満と判定された場合にインデックスが大きい方の前記予測動きベクトルの候補を削除することを特徴とする請求項4に記載の動画像符号化装置。
【請求項7】
動画像の各ピクチャを分割したブロック単位で動きベクトルを用いて前記動画像を符号化する動画像符号化方法であって、
符号化対象ブロックと同一ピクチャ内の前記符号化対象ブロックと隣接する符号化済みのブロック及び符号化済みの別のピクチャ内の前記符号化対象ブロックと同一位置のブロックの少なくとも一方の動きベクトルから複数の予測動きベクトルの候補を生成し、前記予測動きベクトルの候補を表すインデックスを付与する予測動きベクトル候補生成ステップと、
前記予測動きベクトルの候補同士の予測動きベクトル間差分を計算し、前記予測動きベクトル間差分に関する評価値にもとづいて前記予測動きベクトルの候補を削除する予測動きベクトル候補削除ステップと、
削除後に残存する予測動きベクトルの候補の中から予測動きベクトルを選択する予測動きベクトル判定ステップとを備えることを特徴とする動画像符号化方法。
【請求項8】
コンピュータに、動画像の各ピクチャを分割したブロック単位で動きベクトルを用いて前記動画像を符号化させるための動画像符号化プログラムであって、
符号化対象ブロックと同一ピクチャ内の前記符号化対象ブロックと隣接する符号化済みのブロック及び符号化済みの別のピクチャ内の前記符号化対象ブロックと同一位置のブロックの少なくとも一方の動きベクトルから複数の予測動きベクトルの候補を生成し、前記予測動きベクトルの候補を表すインデックスを付与する予測動きベクトル候補生成ステップと、
前記予測動きベクトルの候補同士の予測動きベクトル間差分を計算し、前記予測動きベクトル間差分に関する評価値にもとづいて前記予測動きベクトルの候補を削除する予測動きベクトル候補削除ステップと、
削除後に残存する予測動きベクトルの候補の中から予測動きベクトルを選択する予測動きベクトル判定ステップとをコンピュータに実行させることを特徴とする動画像符号化プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate

【図29】
image rotate

【図30】
image rotate

【図31】
image rotate

【図32】
image rotate

【図33】
image rotate

【図34】
image rotate

【図35】
image rotate

【図36】
image rotate

【図37】
image rotate

【図38】
image rotate

【図39】
image rotate

【図40】
image rotate


【公開番号】特開2013−38747(P2013−38747A)
【公開日】平成25年2月21日(2013.2.21)
【国際特許分類】
【出願番号】特願2011−175757(P2011−175757)
【出願日】平成23年8月11日(2011.8.11)
【出願人】(308036402)株式会社JVCケンウッド (1,152)
【Fターム(参考)】