(58)【調査した分野】(Int.Cl.,DB名)
それぞれが複数のブロックを含む複数のスライスに分割された符号化対象ピクチャ内の第1のスライスと第2のスライスとの境界に接する、前記第2のスライス内のブロックラインに符号化対象ブロックが含まれている場合、前記第1のスライス内のブロックを含む領域の動きを表す領域動きベクトルを求め、前記領域動きベクトルを第1の予測ベクトルとして出力する予測ベクトル生成部と、
前記第1の予測ベクトルを前記符号化対象ブロックの予測ベクトルとして用いて、前記符号化対象ブロックの動きベクトルを求める動きベクトル探索部と、
前記符号化対象ブロックの周辺の1つ以上の符号化済みブロックの動きベクトルから第2の予測ベクトルを求め、前記符号化対象ブロックの動きベクトルと前記第2の予測ベクトルとの差分ベクトルを符号化し、前記符号化対象ブロックの画素値と前記符号化対象ブロックの動きベクトルが示す参照ピクチャ内のブロックの画素値との差分を符号化して、符号化結果を出力する符号化部と、
を備えることを特徴とする動画像符号化装置。
前記予測ベクトル生成部は、前記第1のスライス内のブロックと前記符号化対象ブロックとを含む前記領域の動きを表す前記領域動きベクトルを求めることを特徴とする請求項1又は2記載の動画像符号化装置。
前記符号化対象ピクチャを前記ブロックより大きなサイズの複数の領域に分割し、各領域の動きを表す動きベクトルを求めるピクチャ処理部をさらに備え、前記予測ベクトル生成部は、前記ピクチャ処理部により求められた前記複数の領域の動きベクトルのうち、前記符号化対象ブロックを含む領域の動きを表す動きベクトルを前記領域動きベクトルとして求めることを特徴とする請求項3記載の動画像符号化装置。
前記予測ベクトル生成部は、前記符号化対象ピクチャ全体の平均的な動きを表す動きベクトルを前記領域動きベクトルとして求めることを特徴とする請求項3記載の動画像符号化装置。
前記予測ベクトル生成部は、前記符号化対象ブロックの周辺の1つ以上の符号化済みブロックの動きベクトルに基づく平均的な動きベクトルを、前記領域動きベクトルとして求めることを特徴とする請求項1又は2記載の動画像符号化装置。
前記符号化対象ブロックが前記第2のスライス内の前記境界に接するブロックライン以外のブロックラインに含まれている場合、前記予測ベクトル生成部は、前記符号化対象ブロックの周辺の1つ以上の符号化済みブロックの動きベクトルから前記第2の予測ベクトルを求め、前記動きベクトル探索部は、前記第2の予測ベクトルを前記符号化対象ブロックの予測ベクトルとして用いて、前記符号化対象ブロックの動きベクトルを求めることを特徴とする請求項1乃至6のいずれか1項に記載の動画像符号化装置。
前記予測ベクトル生成部は、前記符号化対象ブロックが前記第2のスライス内の前記境界に接するブロックラインに含まれている場合、前記符号化対象ブロックの特徴量を求め、前記特徴量が閾値より小さい場合、前記領域動きベクトルを求めることを特徴とする請求項1乃至7のいずれか1項に記載の動画像符号化装置。
それぞれが複数のブロックを含む複数のスライスに分割された符号化対象ピクチャ内の第1のスライスと第2のスライスとの境界に接する、前記第2のスライス内のブロックラインに符号化対象ブロックが含まれている場合、前記第1のスライス内のブロックを含む領域の動きを表す領域動きベクトルを求め、
前記領域動きベクトルを前記符号化対象ブロックの第1の予測ベクトルとして用いて、前記符号化対象ブロックの動きベクトルを求め、
前記符号化対象ブロックの周辺の1つ以上の符号化済みブロックの動きベクトルから第2の予測ベクトルを求め、
前記符号化対象ブロックの動きベクトルと前記第2の予測ベクトルとの差分ベクトルを符号化し、前記符号化対象ブロックの画素値と前記符号化対象ブロックの動きベクトルが示す参照ピクチャ内のブロックの画素値との差分を符号化して、符号化結果を求める、
ことを特徴とする動画像符号化方法。
それぞれが複数のブロックを含む複数のスライスに分割された符号化対象ピクチャ内の第1のスライスと第2のスライスとの境界に接する、前記第2のスライス内のブロックラインに符号化対象ブロックが含まれている場合、前記第1のスライス内のブロックを含む領域の動きを表す領域動きベクトルを求め、
前記領域動きベクトルを前記符号化対象ブロックの第1の予測ベクトルとして用いて、前記符号化対象ブロックの動きベクトルを求め、
前記符号化対象ブロックの周辺の1つ以上の符号化済みブロックの動きベクトルから第2の予測ベクトルを求め、
前記符号化対象ブロックの動きベクトルと前記第2の予測ベクトルとの差分ベクトルを符号化し、前記符号化対象ブロックの画素値と前記符号化対象ブロックの動きベクトルが示す参照ピクチャ内のブロックの画素値との差分を符号化して、符号化結果を出力する、
処理をコンピュータに実行させるプログラム。
【背景技術】
【0002】
画像データはデータ量が多いため、送信装置から受信装置へ伝送される際や、記憶装置に格納される際等において、画像データの高能率符号化が行われる。ここで、「高能率符号化」とは、あるデータ列を他のデータ列に変換する符号化処理であって、そのデータ量を圧縮する処理をいう。特に、動画像データは高能率符号化されることが多い。
【0003】
代表的な動画像符号化アルゴリズムとしては、例えば、H.264/AVC規格が知られている。H.264/AVC規格は、International Telecommunication Union Telecommunication Standardization Sector(ITU−T)のH.264で規定されている符号化アルゴリズムである。H.264/AVC規格は、International Organization for Standardization(ISO)/International Electrotechnical Commission(IEC)のMoving Picture Experts Group phase 4 Advanced Video Coding(MPEG−4 AVC)でも規定されている。
【0004】
動画像データには、主にフレームのみを構成単位とするデータと、フィールドを構成単位とするデータがある。動画像データの構成単位は、ピクチャと呼ばれる。動画像符号化においては、1つのピクチャを複数のブロックに分割し、複数のブロックを含むスライスが形成される場合がある。1つのブロックはn×m個の画素により形成され、1つのピクチャは1つ以上のスライスに分割される。n及びmは4以上の整数であり、16×16画素のブロックがよく用いられている。H.264/AVC規格では、このブロックをマクロブロックと呼んでいる。
【0005】
動画像符号化アルゴリズムとして、予測符号化が知られている。代表的な予測符号化には、ピクチャ内予測(イントラ予測)符号化がある。イントラ予測符号化では、動画像データが空間方向に相関性が高いことを利用するため、符号化済みの他のピクチャのデータは用いられない。したがって、イントラ予測符号化されたピクチャについては、そのピクチャ内の情報のみで原画像を復元することができる。
【0006】
また、ピクチャ間予測(インター予測)符号化では、動画像データが時間方向に相関性が高いことを利用して予測が行われる。動画像データでは、あるタイミングのピクチャデータと次のタイミングのピクチャデータとの類似度が高いことが多いので、インター予測符号化ではその性質が利用される。
【0007】
インター予測符号化では、原画像である符号化対象ピクチャが複数のブロックに分割され、ブロック単位に符号化済みの参照ピクチャの復号画像を参照して、ブロックマッチングにより符号化対象ブロックと類似している領域が選択される。次に、類似領域と符号化対象ブロックとの画素値の差分(画素差分)を求め、冗長性が取り除かれる。そして、類似領域を示す動きベクトルの情報と、冗長性が取り除かれた画素差分とを符号化することにより、高い圧縮率の高能率符号化が実現される。
【0008】
例えば、インター予測符号化を用いたデータ伝送システムでは、送信装置において、前ピクチャから符号化対象ピクチャへの「動き」を表す動きベクトルの情報が符号化される。さらに、その前ピクチャからその動きベクトルを用いて生成された符号化対象ピクチャの予測画像と、その符号化対象ピクチャの原画像との画素差分も符号化される。次に、送信装置は、符号化された動きベクトルの情報と符号化された画素差分とを受信装置に送信する。一方、受信装置は、受信した動きベクトルの情報と画素差分から符号化対象ピクチャの原画像を復元する。
【0009】
このような送信装置等で用いられる動画像符号化装置は、Group of pictures(GOP)構造を用いて、一定周期でイントラ予測符号化されたピクチャを送信し、残りのピクチャをインター予測符号化して送信する。GOP構造においては、予測アルゴリズムに対応したIピクチャ、Pピクチャ、及びBピクチャの3種類のピクチャが規定されている。Iピクチャは、他のピクチャを参照せずに、ピクチャ内の情報のみで原画像を復元できるイントラ予測符号化により符号化されたピクチャである。Pピクチャ及びBピクチャは、主にインター予測符号化により符号化されたピクチャである。
【0010】
Pピクチャは、過去の参照ピクチャから順方向のピクチャ間予測を行い、画素差分(予測誤差)を符号化したピクチャである。Bピクチャは、過去と未来の参照ピクチャから双方向のピクチャ間予測を行い、予測誤差を符号化したピクチャである。Bピクチャは、未来のピクチャを予測に用いるため、そのBピクチャの符号化に先駆けて、予測に用いられる未来の参照ピクチャが符号化され、復号される。
【0011】
次に、インター予測符号化についてより詳細に説明する。H.264/AVC規格を例に取ると、マクロブロックはさらに小さな複数のサブブロックに分割され、サブブロック又はマクロブロックが符号化対象ブロックとなる。サブブロックの形状によって、様々なインター予測モードが存在する。インター予測の際に、複数存在する参照先の復号画像に参照インデックスが割り当てられ、サブブロック単位で参照インデックス、動きベクトル、及び画素差分が求められる。
【0012】
符号化される動きベクトルの情報としては、周辺のマクロブロックの動きベクトルを予測ベクトルとして用いて、予測ベクトルとブロックマッチングで得られた動きベクトルとの差分ベクトルが用いられる。この差分ベクトルをできるだけ小さくすることで、符号化効率を上げることができる。
【0013】
H.264/AVC規格では、さらに圧縮率を高めるために、暗黙的なインター予測モードであるスキップ符号化モードが存在する。スキップ符号化モードでは、参照インデックス、動きベクトル、画素差分の情報を送信することなく、原画像を復号することができる。
【0014】
例えば、Pピクチャの場合、PSKIPモードが知られている。PSKIPモードでは、参照インデックスを常に0とし、周辺のマクロブロックの動きベクトルから予測されるスキップベクトルを動きベクトルとして用い、画素差分を0として、符号化が行われる。Bピクチャの場合、PSKIPモードと同様にBSKIPモードが存在し、さらに、動きベクトルの情報を送信せずに画素差分の情報のみを送信するダイレクトモードも存在する。
【0015】
H.264/AVC規格では、定められたプロファイルに準拠するために、1つのピクチャを複数のスライスに分割する場合がある。このようなスライス分割を規定したプロファイルとしては、例えば、High10プロファイル、High422プロファイル等が挙げられる。例えば、
図1に示すスライス分割の例では、1920×1088画素のピクチャが4つのスライスに分割されている。
【0016】
16×16画素のマクロブロックを用いた場合、
図1のピクチャは水平方向の68個のブロックラインに分割され、スライス101〜スライス104は、それぞれ、17個のブロックラインを含む。スライス101〜スライス104の先頭のブロックラインは、それぞれ、ブロックライン111〜114である。なお、ピクチャ内のスライスの数は4に限られるものではなく、2以上の整数であればよく、プロファイルの制限を満たせばよい。また、スライスは、ブロックライン単位でなくともよいが、一般にブロックライン単位で分割されることが多い。
【0017】
スライス分割されたピクチャを符号化対象として予測符号化を行う場合、ピクチャ内のあるスライスにおいて、すでに符号化された領域の情報を用いて予測を行う際に、他のスライスの情報を用いることは禁止されている。
【0018】
次に、H.264/AVC規格における予測ベクトル及びスキップベクトルの計算方法について、具体例を用いて説明する。
まず、Pピクチャの予測ベクトルの計算方法について説明する。過去の参照ピクチャ候補リストはList0と呼ばれ、未来の参照ピクチャ候補リストはList1と呼ばれる。参照ピクチャ候補リストは、参照候補となる参照ピクチャを指定する1つ以上の参照インデックスを含む。Pピクチャのインター予測では、List0のみが用いられる。
【0019】
符号化対象ブロックの参照インデックスrefIdxが決定されている場合、refIdxにより指定される参照ピクチャを用いて、符号化対象ブロックの予測ベクトルmvpが求められる。サブブロックの形状によって予測方法は異なるが、ここでは16×16画素のマクロブロックで用いられるメディアン予測について記述する。
【0020】
メディアン予測では、
図2に示すように、符号化対象ブロック201の周辺のすでに符号化されたマクロブロックA、マクロブロックB、及びマクロブロックCの動きベクトルを用いて、符号化対象ブロック201の予測ベクトルが求められる。マクロブロックA、マクロブロックB、及びマクロブロックCのそれぞれの参照ピクチャを示す参照インデックスを、refIdxA、refIdxB、及びrefIdxCとする。また、マクロブロックA、マクロブロックB、及びマクロブロックCのそれぞれの動きベクトルを、mvA、mvB、及びmvCとする。このとき、符号化対象ブロックの予測ベクトルmvpは、次のようにして求められる。
【0021】
ステップ1:マクロブロックA、マクロブロックB、及びマクロブロックCがすべて利用不可の場合、mvp=0である。
【0022】
ステップ2:マクロブロックB及びマクロブロックCが利用不可であり、マクロブロックAが利用可能である場合、マクロブロックBのrefIdxB及びマクロブロックCのrefIdxCは、マクロブロックAのrefIdxAと等しいものとして扱う。また、マクロブロックBのmvB及びマクロブロックCのmvCは、マクロブロックAのmvAと等しいものとして扱う。そして、mvA、mvB、及びmvCの中央値であるmvAをmvpに割り当てる。
【0023】
ステップ3:マクロブロックAのrefIdxA、マクロブロックBのrefIdxB、又はマクロブロックCのrefIdxCのうち1つだけがrefIdexと等しい場合、その参照インデックスが示すマクロブロックの動きベクトルをmvpに割り当てる。
【0024】
ステップ4:ステップ1〜ステップ3に該当しない場合、mvA、mvB、及びmvCの中央値をmvpに割り当てる。
【0025】
スライス分割されたピクチャを符号化対象として予測符号化を行う場合、他のスライスの情報を用いることは禁止されているため、符号化対象ブロック201が属するスライスの外にあるマクロブロックは利用不可である。したがって、マクロブロックB及びマクロブロックCが他のスライスに属する場合、それらのマクロブロックは利用不可となる。
【0026】
次に、PSKIPモードにおけるスキップベクトルの計算方法について説明する。符号化対象ブロックの参照インデックスrefIdexとしては0が用いられる。そして、以下の静止判定の条件のいずれかが真であれば、符号化対象ブロックの動きベクトルであるスキップベクトルmvskipの両成分は0に設定される。
(1)マクロブロックAが利用不可である。
(2)マクロブロックBが利用不可である。
(3)マクロブロックAのrefIdxAが0であり、mvAの両成分が0である。
(4)マクロブロックBのrefIdxBが0であり、mvBの両成分が0である。
【0027】
上記(1)〜(4)のいずれにも該当しない場合、予測ベクトルがスキップベクトルmvskipに割り当てられる。したがって、周辺マクロブロックの動きベクトルがゼロベクトルでなければ、静止領域とは判定されず、スキップベクトルとして非ゼロの予測ベクトルが割り当てられる。
【0028】
スキップ符号化モードは、符号化対象ブロックが周辺のマクロブロックと同様の動きを示しているとき、符号化に要する情報量を最小にすることができる。ただし、スキップ符号化モードにおいても他のスライスの情報を用いることは禁止されているため、マクロブロックBが他のスライスに属する場合、マクロブロックBは利用不可となる。
【0029】
動画像符号化技術において、スキップモードの動きベクトルに基づいた補正値を利用して、ブロックの符号化モードとしてスキップモードが有効であるか否かを判定する方法も知られている(例えば、特許文献1を参照)。
【発明を実施するための形態】
【0040】
以下、図面を参照しながら、実施形態を詳細に説明する。
図3に示すように、符号化対象ブロック201を含むブロックラインがスライス境界301の直下にある場合、上述したステップ1〜ステップ4のメディアン予測により、Pピクチャの予測ベクトルが計算される。
【0041】
符号化対象ブロック201がそのブロックラインの左端のブロックであれば、マクロブロックAは存在しない。さらに、インター予測符号化においても、スライス境界301の上側のスライスの情報を用いることは禁止されているため、マクロブロックB及びマクロブロックCは利用不可である。この場合、上述したステップ1に該当し、予測ベクトルはゼロベクトルとなる(mvp=0)。
【0042】
符号化対象ブロック201が左端のブロックでなければ、マクロブロックAが存在し、マクロブロックB及びマクロブロックCは利用不可であるため、予測ベクトルはマクロブロックAの動きベクトルと等しくなる(mvp=mvA)。
【0043】
図4は、あるブロックラインの左端のマクロブロックにおいて、周辺のマクロブロックとは異なる動きが発生した場合の各マクロブロックの動き傾向を示している。ブロックライン401のそれぞれのマクロブロックの動きは類似しており、ブロックライン402の左端以外のマクロブロックの動きもブロックライン401と類似している。しかし、ブロックライン402の左端のマクロブロックの動きは、ブロックライン401とは異なっている。
【0044】
図5は、
図4のブロックライン401とブロックライン402の間にスライス境界501が存在する場合の各マクロブロックの予測ベクトルを示している。この場合、ブロックライン401の各予測ベクトルは、実際の動き傾向を反映した動きを表している。
【0045】
しかし、ブロックライン402では、異なるスライスに属するブロックライン401の動きベクトルを用いることができないため、上述したステップ2に該当し、左隣のマクロブロックの動きベクトルが予測ベクトルとして採用される。その結果、左端のマクロブロックの予測ベクトル502が右側のマクロブロックへ順番に伝播していき、実際の動き傾向とは異なる動きが符号化されることになる。
【0046】
また、PSKIPモードにおいては、上述した(1)〜(4)の静止判定に基づいてスキップベクトルが計算される。符号化対象ブロックがスライス境界の直下にある場合、上記(2)の「マクロブロックBが利用不可である。」という条件に該当し、スキップベクトルはゼロベクトルになる。その結果、スライス境界501の直下のブロックライン402では、すべてのマクロブロックのスキップベクトルがゼロベクトルになり、実際の動き傾向とは異なる動きが符号化されることになる。
【0047】
このように、予測ベクトルと動きベクトルとの差分ベクトルを小さくしたり、スキップ符号化モードを選択したりすることで符号化効率を上げることが可能だが、スライス境界直下では実際の動き傾向とは異なる動きが符号化される可能性がある。この場合、スライス境界の上側と下側とで符号化誤差の傾向が異なるため、主観画質が劣化し、スライス境界が明確に視認されてしまう。そこで、スライス境界が視認され難い動画像符号化アルゴリズムが望まれる。
【0048】
図6は、実施形態の動画像符号化装置の構成例を示している。
図7は、
図6の動画像符号化装置が行う動画像符号化処理の例を示すフローチャートである。
図6の動画像符号化装置601は、予測ベクトル生成部611、動きベクトル探索部612、及び符号化部613を含む。符号化対象ピクチャは、それぞれが複数のブロックを含む複数のスライスに分割され、第1のスライスと第2のスライスとを含む。
【0049】
予測ベクトル生成部611は、第1のスライスと第2のスライスとの境界に接する、第2のスライス内のブロックラインに符号化対象ブロックが含まれている場合、第1のスライス内のブロックを含む領域の動きを表す領域動きベクトルを求める(ステップ701)。そして、予測ベクトル生成部611は、領域動きベクトルを第1の予測ベクトルとして出力する。
【0050】
動きベクトル探索部612は、第1の予測ベクトルを符号化対象ブロックの予測ベクトルとして用いて、符号化対象ブロックの動きベクトルを求める(ステップ702)。
【0051】
符号化部613は、符号化対象ブロックの周辺の1つ以上の符号化済みブロックの動きベクトルから第2の予測ベクトルを求める(ステップ703)。次に、符号化部613は、符号化対象ブロックの動きベクトルと第2の予測ベクトルとの差分ベクトルを符号化し、符号化対象ブロックの画素値と符号化対象ブロックの動きベクトルが示す参照ピクチャ内のブロックの画素値との差分を符号化する。そして、符号化部613は、符号化結果を出力する。
【0052】
図6の動画像符号化装置によれば、スライス分割されたピクチャを符号化対象として、スライス境界が視認され難い動画像符号化を行うことができる。
【0053】
次に、
図8から
図20までを参照しながら、
図6の動画像符号化装置の構成及び動作の具体例について説明する。以下では、簡単のため、H.264/AVC規格の動画像符号化において符号化対象ピクチャがPピクチャである場合を例として取り上げている。しかしながら、H.264/AVC規格以外の動画像符号化や、符号化対象ピクチャがBピクチャである場合においても、同様の構成が適用可能である。
【0054】
図8は、
図6の動画像符号化装置のより詳細な構成例を示している。
図8の動画像符号化装置は、例えば、ハードウェア回路として実装することができ、予測誤差生成部801、直交変換部802、量子化部803、エントロピー符号化部804、逆量子化部805、逆直交変換部806、及び復号画像生成部807を含む。
図8の動画像符号化装置は、さらに記憶部808、動き補償部809、及びモード決定部810を含む。
【0055】
予測誤差生成部801は、入力される符号化対象ピクチャの画像データを複数のブロックに分割し、符号化対象ブロックのブロックデータと、動き補償部809から出力される予測画像のブロックデータ(予測信号)との差分を示す予測誤差信号を生成する。そして、予測誤差生成部801は、生成した予測誤差信号を直交変換部802に出力する。
【0056】
直交変換部802は、入力される予測誤差信号を直交変換し、水平方向及び垂直方向の周波数成分に分離された、周波数領域の信号を量子化部803に出力する。量子化部803は、入力される周波数領域の信号を量子化することでその情報量を削減し、量子化結果をエントロピー符号化部804及び逆量子化部805に出力する。
【0057】
逆量子化部805は、量子化結果を逆量子化し、逆量子化結果を逆直交変換部806に出力する。逆直交変換部806は、逆量子化結果を逆直交変換し、時間領域の信号を復号画像生成部807に出力する。逆量子化部805及び逆直交変換部806により復号処理が行われることで、符号化前の予測誤差信号に対応する信号が得られる。
【0058】
復号画像生成部807は、動き補償部809から出力される予測画像のブロックデータと、逆直交変換部806から出力される信号とを加算することで、符号化対象ブロックのブロックデータを再生し、記憶部808に出力する。記憶部808は、入力される再生ブロックデータを新たな参照ピクチャのブロックデータとして記憶する。この参照ピクチャのブロックデータは、動き補償部809及びモード決定部810により参照される。
【0059】
モード決定部810は、符号化対象ピクチャの画像データと、符号化対象ピクチャのスライス構成を示すスライス情報と、符号化対象ブロックの位置を示すブロック位置情報とに基づいて、符号化に必要となる符号化情報を決定する。スライス情報は、あらかじめ指定された情報であってもよく、スライス構成の変更に応じて指定される情報であってもよい。スライス情報及びブロック位置情報は、例えば、予測誤差生成部801又は不図示の符号化制御部からモード決定部810に出力される。
【0060】
符号化情報には、符号化モード、参照インデックス、動きベクトル等の情報が含まれる。動きベクトルは、ブロック単位で空間的なずれを示すベクトルの情報であり、符号化対象ピクチャと参照ピクチャとのブロックマッチングにより、参照ピクチャ内で符号化対象ブロックに最も類似している領域を探索することで求められる。
【0061】
動き補償部809は、モード決定部810により決定された符号化情報に従って、記憶部808に記憶された参照ピクチャのブロックデータを、動きベクトルで動き補償する。そして、動き補償部809は、動き補償された参照ピクチャのブロックデータを用いて、符号化対象ブロックの予測信号を生成し、予測誤差生成部801及び復号画像生成部807に出力する。
【0062】
エントロピー符号化部804は、符号化対象ブロックの周辺の1つ以上の符号化済みブロックの動きベクトルから予測ベクトルを求める。
【0063】
例えば、上述したPピクチャの予測ベクトルの場合、
図2に示したブロックA、ブロックB、及びブロックCの動きベクトルを用いて、次のようにして符号化対象ブロック201の予測ベクトルmvpが求められる。
【0064】
ステップ1:ブロックA、ブロックB、及びブロックCがすべて利用不可の場合、mvp=0である。
【0065】
ステップ2:ブロックB及びブロックCが利用不可であり、ブロックAが利用可能である場合、ブロックBのrefIdxB及びブロックCのrefIdxCは、ブロックAのrefIdxAと等しいものとして扱う。また、ブロックBのmvB及びブロックCのmvCは、ブロックAのmvAと等しいものとして扱う。そして、mvA、mvB、及びmvCの中央値であるmvAをmvpに割り当てる。
【0066】
ステップ3:ブロックAのrefIdxA、ブロックBのrefIdxB、又はブロックCのrefIdxCのうち1つだけがrefIdexと等しい場合、その参照インデックスが示すブロックの動きベクトルをmvpに割り当てる。
【0067】
ステップ4:ステップ1〜ステップ3に該当しない場合、mvA、mvB、及びmvCの中央値をmvpに割り当てる。
【0068】
次に、エントロピー符号化部804は、モード決定部810により決定された動きベクトルと予測ベクトルとの差分ベクトルを求め、その差分ベクトルと量子化部803から出力される量子化結果とをエントロピー符号化する。エントロピー符号化は、シンボルの出現頻度に応じて可変長符号を割り当てる可変長符号化の1つである。そして、エントロピー符号化部804は、符号化結果をビットストリームとして出力する。
【0069】
図8に示した構成図は一例に過ぎず、動画像符号化装置が行う処理に応じて一部の構成要素を省略又は変更してもよい。
【0070】
図9は、
図8のモード決定部810の構成例を示している。
図9のモード決定部810は、予測ベクトル生成部901、動きベクトル探索部902、動きベクトル生成部903、コスト計算部904、及び選択部905を含む。
【0071】
予測ベクトル生成部901は、ブロック位置情報及びスライス情報に基づいて、ブロック位置情報により指定される符号化対象ブロックの動きベクトル探索において用いられる予測ベクトルを求め、動きベクトル探索部902に出力する。動きベクトル探索部902は、符号化対象ピクチャと参照ピクチャとのブロックマッチングを行い、予測ベクトルに基づいて符号化対象ブロックの符号化コストを計算して、動きベクトルを決定する。
【0072】
動きベクトル生成部903は、ブロック位置情報及びスライス情報に基づいて、スキップ符号化モードにおける符号化対象ブロックの動きベクトルであるスキップベクトルを求める。コスト計算部904は、スキップベクトルに基づいて、スキップ符号化モードにおける符号化対象ブロックの符号化コストを計算する。
【0073】
動きベクトル探索部902により計算される符号化コストは、差分ベクトルを符号化する動き探索(ME)符号化モードにおける符号化コストに対応する。以下では、この符号化コストをMEコストと記すことにする。一方、コスト計算部904により計算される符号化コストは、差分ベクトルを符号化しないスキップ符号化モードにおける符号化コストに対応する。以下では、この符号化コストをスキップコストと記すことにする。
【0074】
選択部905は、MEコストとスキップコストを比較して、符号化コストが小さい方の符号化モードを選択し、その符号化モードの符号化情報を出力する。ME符号化モードが選択された場合は、動きベクトル探索部902により決定された動きベクトルを含む符号化情報が出力され、スキップ符号化モードが選択された場合は、動きベクトル生成部903により求められたスキップベクトルを含む符号化情報が出力される。
【0075】
図10は、スライス境界と符号化対象ブロックの位置関係の例を示している。符号化対象ピクチャが水平方向の境界線により複数のスライスに分割されている場合、上側のスライスと下側のスライスの間に水平方向のスライス境界1001が存在する。
【0076】
ここで、符号化対象ブロック1002がスライス境界1001の直下の水平方向のブロックライン1003に属する場合、上述したように、ME符号化モードの予測ベクトルは左側の符号化済みブロックの動きベクトルと等しくなる。したがって、左側の符号化済みブロックの動きベクトルが符号化対象ブロック1002の周辺と同様の動きベクトルでなければ、有効な予測ベクトルとはいえない。
【0077】
また、符号化対象ブロック1002がブロックライン1003に属する場合、スキップ符号化モードのスキップベクトルは強制的にゼロベクトルに設定される。したがって、符号化対象ブロック1002の周辺のブロックの動きベクトルがゼロベクトルでなければ、スキップ符号化モードは有効な符号化モードとはいえない。
【0078】
そこで、符号化対象ブロックがスライス境界直下のブロックラインに属する場合、予測ベクトル生成部901が有効な予測ベクトルを求めて動きベクトル探索部902に出力することで、適切なMEコストを求めることが可能になる。有効な予測ベクトルは、スライス境界を越えた広い領域の動きを探索することで求めることができ、選択部905は、適切なMEコストに基づいて適切な符号化モードを選択することができる。
【0079】
図11は、
図9の予測ベクトル生成部901の構成例を示している。
図9の予測ベクトル生成部901は、ブロック判定部1101、特徴量計算部1102、特徴量判定部1103、参照ピクチャ決定部1104、領域動きベクトル探索部1105、及び予測ベクトル決定部1106を含む。
【0080】
ブロック判定部1101は、スライス情報に基づいて、符号化対象ピクチャに含まれる複数のブロックラインのどの位置にスライス境界があるかを判別する。そして、ブロック判定部1101は、ブロック位置情報が示す位置にある符号化対象ブロックが、いずれかのスライス境界の直下のブロックラインに属するか否かを判定し、判定結果を特徴量計算部1102及び予測ベクトル決定部1106に出力する。
【0081】
なお、スライス情報は、スライス構成を示す代わりに、符号化対象ピクチャ内の各ブロックがスライス境界直下のブロックラインに属するか否かを示すフラグ情報であってもよい。
【0082】
特徴量計算部1102は、符号化対象ブロックがスライス境界直下のブロックラインに属する場合、符号化対象ブロックの特徴量を求める。そして、特徴量判定部1103は、特徴量を閾値と比較することで、符号化対象ブロックのテクスチャが存在するか否かを判定し、判定結果を参照ピクチャ決定部1104及び予測ベクトル決定部1106に出力する。
【0083】
符号化対象ブロックの特徴量としては、例えば、符号化対象ブロック内に存在するテクスチャが濃いか薄いかを示す値が用いられる。例えば、芝生の画像のように、テクスチャが薄いブロックでは、符号化対象ブロックと参照ピクチャの間で画素差分に依存するコストがほとんど発生しない。このため、動きベクトルの符号化に要するコストのみに基づいて符号化モードが決定される傾向が強くなり、誤判定が起き易い。
【0084】
一方、テクスチャが濃いブロックでは、画素差分に依存する適度なコストが発生するため、誤判定が起き難い。符号化対象ブロックの周辺だけが動いており、符号化対象ブロックが静止している場合もあるため、誤判定が起き難い符号化対象ブロックについてまで、スライス境界を越えた広い領域の動きを探索する必要はないと考えられる。そこで、符号化対象ブロックのテクスチャが濃い場合は、スライス内の情報のみに基づいて予測ベクトルが求められる。
【0085】
符号化対象ブロックの特徴量ACTは、例えば、次式により計算することができる。
ACT=Σ|Pixel−AvePixel| (1)
【0086】
式(1)のPixelは、符号化対象ブロック内の各画素の画素値を表し、AvePixelは、符号化対象ブロック内の全画素の画素値の平均値を表し、Σは、符号化対象ブロック内の全画素についての総和を表す。したがって、式(1)のACTは、符号化対象ブロック内の各画素の画素値と平均値の差分絶対値和を表し、符号化対象ブロック内の画素値の分散を示す指標として用いることができる。
【0087】
また、特徴量ACTとして、符号化対象ブロック内のエッジの強度を用いてもよい。例えば、符号化対象ブロックに対してソーベル(Sobel)フィルタ等のエッジ検出フィルタを適用することで、エッジを検出することができる。
【0088】
3×3画素のソーベルフィルタを用いた場合、3×3画素のフィルタ適用領域の画素値Pと、垂直エッジ抽出フィルタのフィルタ係数Yと、水平エッジ抽出フィルタのフィルタ係数Xは、次式のように表される。
【数1】
【0089】
フィルタ係数Yを用いた水平方向のフィルタリング結果dyは、次式のようになる。
dy=P*Y=−a−2d−g+c+2f+i (3)
【0090】
また、フィルタ係数Xを用いた垂直方向のフィルタリング結果dxは、次式のようになる。
dx=P*X=−a−2b−c+g+2h+i (4)
【0091】
式(3)及び式(4)のフィルタリング結果を用いて、次式によりエッジの強度Ampを計算することができる。
【数2】
【0092】
そして、特徴量ACTは、次式により計算される。
ACT=ΣAmp (6)
式(6)のΣは、符号化対象ブロック内の全画素位置についての総和を表す。
【0093】
特徴量判定部1103は、特徴量ACTを閾値THと比較し、ACTがTH以上であれば、符号化対象ブロックにテクスチャが存在すると判定し、ACTがTHより小さい場合、符号化対象ブロックにテクスチャが存在しないと判定する。
【0094】
符号化対象ブロックにテクスチャが存在しないと判定された場合、参照ピクチャ決定部1104及び領域動きベクトル探索部1105により、スライス境界を越えた広い領域の動きを示す領域動きベクトルが、予測ベクトルとして求められる。一方、符号化対象ブロックがスライス境界直下のブロックラインに属さない場合、又は符号化対象ブロックにテクスチャが存在すると判定された場合は、予測ベクトル決定部1106により、スライス内の情報のみに基づいて予測ベクトルが求められる。
【0095】
複数の参照ピクチャの候補が存在する場合、領域動きベクトルを求める際にすべての候補に対する領域動きベクトルを求めてもよい。この場合、参照ピクチャ決定部1104は省略することができる。しかし、領域動きベクトルをブロック単位で求める場合、すでに符号化されている周辺のブロックの情報を利用して、参照ピクチャを選択することが可能である。
【0096】
そこで、参照ピクチャ決定部1104は、符号化対象ブロックにテクスチャが存在しないと判定された場合、領域動きベクトルの探索に使用する適切な参照ピクチャを決定し、領域動きベクトル探索部1105に出力する。
【0097】
例えば、
図3に示した符号化対象ブロック201においては、その周辺のブロックA、ブロックB、及びブロックCで選択された参照ピクチャのうち、最も多く選択された参照ピクチャを選択することが有効である。符号化対象ブロックの符号化の際には、周辺ブロックで選択された参照ピクチャが選択される傾向が強いため、同じ参照ピクチャを用いることで、動きベクトル探索部902による参照インデックスと動きベクトルの決定を誘導することができる。これにより、スライス境界周辺での動き傾向が揃い、画質劣化を抑えることができる。
【0098】
参照ピクチャ決定部1104は、符号化対象ピクチャに時間的に最も近い参照ピクチャを選択してもよい。
【0099】
領域動きベクトル探索部1105は、決定された参照ピクチャを用いて領域動きベクトルを探索する。このとき、領域動きベクトル探索部1105は、符号化対象ブロックの周辺のスライス境界を越えた広い領域を1つの探索ブロック(動き傾向ブロック)とみなして、動き傾向ブロックの動きを示す動きベクトルを領域動きベクトルとして求める。そして、領域動きベクトル探索部1105は、求めた領域動きベクトルを予測ベクトルとして動きベクトル探索部902に出力する。
【0100】
動き傾向ブロックには、スライス境界の上側にある他のスライス内の1つ以上のブロックと符号化対象ブロックが含まれる。動き傾向ブロックには、符号化対象ブロックと同じスライス内の符号化対象ブロック以外のブロックが含まれていてもよい。
【0101】
図12は、符号化対象ピクチャ内の動き傾向ブロックの例を示している。符号化対象ピクチャ1202内のスライス境界1001の直下に符号化対象ブロック1002がある場合、その符号化対象ブロック1002を中心とする動き傾向ブロック1221が設けられる。動き傾向ブロック1221は、符号化対象ブロック1002とその周囲の8個のブロックとを含む。
【0102】
領域動きベクトル探索では、ブロックマッチングにより、参照ピクチャ1201内で動き傾向MEコストが最も小さくなる領域1211の探索点1212が求められる。そして、動き傾向ブロック1221から探索点1212までの領域動きベクトル1231が求められる。
【0103】
このとき、動き傾向MEコストTrendCostは、例えば、次式により計算することができる。
TrendCost=Σ|TrendPixel−RefPixel| (7)
【0104】
式(7)のTrendPixelは、動き傾向ブロック1221内の各画素の画素値を表し、RefPixelは、参照ピクチャ1201内の同じサイズの領域に含まれる各画素の画素値を表し、Σは、動き傾向ブロック1221内の全画素についての総和を表す。したがって、式(7)のTrendCostは、動き傾向ブロック1221と参照ピクチャ1201内の領域との間における画素差分絶対値和を表す。
【0105】
スライス境界を越えた広い領域の動きベクトルを求めることで、スライス境界周辺の実際の動き傾向を抽出することが可能になる。
【0106】
ところで、領域動きベクトル探索において、必ずしも整数画素精度でブロックマッチングを行う必要はなく、演算量を抑えるために、縮小サイズの画像を用いて荒い精度でブロックマッチングを行ってもよい。例えば、
図12の動き傾向ブロック1221を垂直方向に1/3のサイズに縮小し、水平方向にも1/3のサイズに縮小すれば、符号化対象ブロック1002のサイズと同等になる。この場合、参照ピクチャ1201も垂直方向及び水平方向に1/3のサイズに縮小することで、演算すべき画素の数が減少するため、領域動きベクトル探索の演算量を削減することが可能になる。
【0107】
符号化対象ブロック内に存在するテクスチャが濃いか薄いかにかかわらずに領域動きベクトルを求める場合は、特徴量計算部1102及び特徴量判定部1103を省略することができる。
【0108】
予測ベクトル決定部1106は、符号化対象ブロックがスライス境界直下のブロックラインに属さない場合、又は符号化対象ブロックにテクスチャが存在すると判定された場合に、符号化対象ブロックの周辺の1つ以上の符号化済みブロックの動きベクトルから予測ベクトルを求める。そして、予測ベクトル決定部1106は、求めた予測ベクトルを動きベクトル探索部902に出力する。
【0109】
例えば、Pピクチャの予測ベクトルの計算方法と同様のメディアン予測を用いた場合、
図2に示したブロックA、ブロックB、及びブロックCの動きベクトルを用いて、次のようにして符号化対象ブロック201の予測ベクトルmvpが求められる。
【0110】
ステップ1:ブロックA、ブロックB、及びブロックCがすべて利用不可の場合、mvp=0である。
【0111】
ステップ2:ブロックB及びブロックCが利用不可であり、ブロックAが利用可能である場合、ブロックBのrefIdxB及びブロックCのrefIdxCは、ブロックAのrefIdxAと等しいものとして扱う。また、ブロックBのmvB及びブロックCのmvCは、ブロックAのmvAと等しいものとして扱う。そして、mvA、mvB、及びmvCの中央値であるmvAをmvpに割り当てる。
【0112】
ステップ3:ブロックAのrefIdxA、ブロックBのrefIdxB、又はブロックCのrefIdxCのうち1つだけがrefIdexと等しい場合、その参照インデックスが示すブロックの動きベクトルをmvpに割り当てる。
【0113】
ステップ4:ステップ1〜ステップ3に該当しない場合、mvA、mvB、及びmvCの中央値をmvpに割り当てる。
【0114】
動きベクトル探索部902は、ブロックマッチングにより、参照ピクチャ内でMEコストが最も小さくなるブロックの探索点を求め、符号化対象ブロックからその探索点までの動きベクトルを求める。そして、動きベクトル探索部902は、そのMEコストと動きベクトルを選択部905に出力する。
【0115】
MEコストは、画素差分に依存するコストと差分ベクトルに依存するコストとを含む。画素差分に依存するコストとしては、例えば、次式の画素差分絶対値和SADが用いられる。
SAD=Σ|Pixel−RefPixel| (8)
【0116】
式(8)のPixelは、符号化対象ブロック内の各画素の画素値を表し、RefPixelは、参照ピクチャ内のブロックに含まれる各画素の画素値を表し、Σは、符号化対象ブロック内の全画素についての総和を表す。したがって、式(8)のSADは、符号化対象ブロックと、動きベクトルが示す参照ピクチャ内のブロックとの間における画素差分絶対値和を表す。
【0117】
このとき、MEコストは、例えば、次式により計算することができる。
MVD=MV−PMV (9)
MEコスト=SAD+λ・MVCost(MVD) (10)
【0118】
式(9)のMVは、符号化対象ブロックから探索点までの動きベクトルを表し、PMVは、予測ベクトル生成部901から出力される予測ベクトルを表し、MVDは、動きベクトルMVと予測ベクトルPMVとの差分ベクトルを表す。式(10)のλはスケールパラメータであり、関数MVCost(MVD)は、差分ベクトルMVDが入力されると、その推定ビット量に基づく値を返す関数である。
【0119】
予測ベクトル生成部901の領域動きベクトル探索部1105から出力される予測ベクトルをPMV1とし、予測ベクトル決定部1106から出力される予測ベクトルをPMV2とする。このとき、動きベクトル探索部902は、予測ベクトルPMV1又は予測ベクトルPMV2を式(9)のPMVとして用いて、MEコストが最も小さくなる動きベクトルを求める。
【0120】
図13は、
図11の予測ベクトル生成部901及び動きベクトル探索部902が行う動き探索処理の例を示すフローチャートである。
まず、予測ベクトル生成部901のブロック判定部1101は、ブロック位置情報及びスライス情報に基づいて、符号化対象ブロックがスライス境界直下のブロックラインに属するか否かを判定する(ステップ1301)。
【0121】
符号化対象ブロックがスライス境界直下のブロックラインに属する場合(ステップ1301,YES)、特徴量計算部1102は、符号化対象ブロックの特徴量を求める(ステップ1302)。そして、特徴量判定部1103は、特徴量を閾値THと比較する(ステップ1303)。
【0122】
特徴量がTHより小さい場合(ステップ1303,YES)、参照ピクチャ決定部1104は、領域動きベクトルの探索に使用する参照ピクチャを決定する(ステップ1304)。そして、領域動きベクトル探索部1105は、その参照ピクチャを用いて領域動きベクトルを探索する(ステップ1305)。
【0123】
一方、符号化対象ブロックがスライス境界直下のブロックラインに属さない場合(ステップ1301,NO)、予測ベクトル決定部1106は、符号化対象ブロックの周辺の符号化済みブロックの動きベクトルから予測ベクトルを求める(ステップ1306)。特徴量がTH以上である場合(ステップ1303,NO)にも、予測ベクトル決定部1106は、ステップ1306の処理を行う。
【0124】
次に、動きベクトル探索部902は、探索点ループの処理を繰り返すことで、最小のMEコストに対応する動きベクトルを求める。探索点ループの処理において、まず、動きベクトル探索部902は、参照ピクチャ内の探索点を決定し、符号化対象ブロックからその探索点までの動きベクトル(探索ベクトル)を求める(ステップ1307)。次に、動きベクトル探索部902は、符号化対象ブロックと、探索ベクトルが示す参照ピクチャ内のブロックとの間における画素差分絶対値和(SAD)を計算する(ステップ1308)。
【0125】
次に、動きベクトル探索部902は、探索ベクトルと予測ベクトルとの差分ベクトルに依存するコストMVCost(MVD)を計算し(ステップ1309)、SADとMVCost(MVD)からMEコストを計算する(ステップ1310)。そして、動きベクトル探索部902は、それまでに求めた探索ベクトルの中で最小のMEコストに対応する探索ベクトルを、動きベクトルに決定する(ステップ1311)。
【0126】
参照ピクチャ内の複数の探索点についてステップ1307〜ステップ1311の処理を繰り返すことで、最終的にMEコストが最小となる動きベクトルが求められる。
【0127】
このように、スライス境界を越えた広い領域の領域動きベクトルを予測ベクトルとして動き探索を行うことで、スライス境界周辺の実際の動き傾向を反映した動きベクトルを求めることが可能になる。この動きベクトルを用いて符号化処理を行えば、実際とは異なる動きが符号化される可能性が低下するため、主観画質の劣化を抑えることができ、スライス境界が視認され難くなる。
【0128】
動きベクトル生成部903は、ブロック位置情報及びスライス情報に基づいて、スキップ符号化モードにおけるスキップベクトルを求め、コスト計算部904に出力する。
図2を参照して説明したように、以下の静止判定の条件のいずれかが真であれば、PSKIPモードにおけるスキップベクトルはゼロベクトルに設定される。
(1)ブロックAが利用不可である。
(2)ブロックBが利用不可である。
(3)ブロックAのrefIdxAが0であり、mvAの両成分が0である。
(4)ブロックBのrefIdxBが0であり、mvBの両成分が0である。
【0129】
上記(1)〜(4)のいずれにも該当しない場合、予測ベクトルがスキップベクトルに割り当てられる。
【0130】
コスト計算部904は、スキップベクトルに基づいて、スキップ符号化モードにおける符号化コストであるスキップコストを計算し、そのスキップコストとスキップベクトルを選択部905に出力する。
【0131】
スキップコストの計算方法はMEコストの場合と同様であるが、スキップベクトルは符号化されないため、差分ベクトルに依存するコストは0である。しかしながら、スキップ符号化モードが選択されることにより符号化効率が上がることから、式(10)のMVCost(MVD)の代わりに負のコストが設定される。このとき、スキップコストは、例えば、次式により計算することができる。
スキップコスト=SAD−λ・k (11)
【0132】
式(11)のSADは、符号化対象ブロックと、スキップベクトルが示す参照ピクチャ内のブロックとの間における画素差分絶対値和を表す。そして、kは、正の定数である。
【0133】
選択部905は、動きベクトル探索部902から出力されるMEコストとコスト計算部904から出力されるスキップコストを比較し、コストが小さい方の符号化モードを、符号化対象ブロックを符号化するための符号化モードとして選択する。したがって、MEコストの方が小さい場合はME符号化モードが選択され、スキップコストの方が小さい場合はスキップ符号化モードが選択される。
【0134】
そして、選択部905は、選択した符号化対象ブロックの符号化コストであるブロックコストを、次式により求める。
ブロックコスト=Min(MEコスト,スキップコスト) (12)
式(12)のMin(x,y)は、xとyのうち最小値を返す関数である。
【0135】
図14は、選択部905が行う選択処理の例を示すフローチャートである。まず、選択部905は、MEコストとスキップコストを比較する(ステップ1401)。選択部905は、MEコストがスキップコストより小さい場合は、ME符号化モードを選択し(ステップ1402)、MEコストがスキップコスト以上である場合は、スキップ符号化モードを選択する(ステップ1404)。そして、選択部905は、選択した符号化モードと、その符号化モードにおける参照インデックス及び動きベクトルとを含む符号化情報を、動き補償部809に出力する(ステップ1403)。
【0136】
符号化対象ブロックがスライス境界直下のブロックラインに属する場合、上記(2)の「マクロブロックBが利用不可である。」という条件に該当し、スキップベクトルはゼロベクトルになる。その結果、式(11)のSADがかなり大きな値になり、スキップコストが増大すると考えられる。
【0137】
一方、式(9)のMVは、スライス境界周辺の実際の動き傾向を反映した動きベクトルであるため、式(10)のSADは比較的小さな値になる。したがって、MVCost(MVD)を考慮したとしても、MEコストはスキップコストより小さくなる可能性が高いと考えられる。
【0138】
こうして、符号化対象ブロックがスライス境界直下のブロックラインに属する場合は、スキップ符号化モードよりME符号化モードが選択される可能性が高くなる。したがって、スライス境界直下の動きベクトルが強制的にゼロベクトルに設定されることが抑止され、スライス境界が視認され難くなる。
【0139】
ところで、選択部905から出力される符号化モードと動きベクトルCMVは、実際の符号化処理で用いられる。動きベクトルCMVが、動きベクトル探索部902により求められた動きベクトルである場合、動きベクトル探索部902で用いた予測ベクトルPMV1は、符号化処理で用いられる予測ベクトルPMVとは異なっている。このため、動きベクトルの符号化に必要なビット数が増加すると考えられるが、動きベクトルCMVが示す動き傾向は正しくなっている。
【0140】
また、動きベクトルCMVは、次に実行される右隣のブロックの符号化処理で予測ベクトルPMVとして用いられる。動きベクトルCMVと予測ベクトルPMV1の動き傾向が類似しているため、右隣のブロックの予測ベクトルPMVと予測ベクトルPMV1の動き傾向も類似することになる。したがって、右隣以降のブロックにおいては、予測ベクトルPMVと予測ベクトルPMV1との誤差が小さくなり、動きベクトルの符号化に必要なビット数の増加は最小限となる。
【0141】
以上の実施形態では、主として符号化対象ピクチャがPピクチャである場合の処理について説明したが、符号化対象ピクチャがBピクチャである場合においても、同様にして符号化モードを決定することができる。また、
図8に示した構成をスライス毎に設けることで、複数のスライスの符号化処理を並列に実行することも可能である。
【0142】
図11の領域動きベクトル探索部1105は、符号化対象ブロック毎に動き傾向ブロックを設け、その動き傾向ブロックの動きを表す領域動きベクトルを求めている。しかし、スライス境界を越えた領域を1つの探索ブロックとすればよいため、複数の符号化対象ブロックに共通の領域動きベクトルを用いることも可能である。また、符号化対象ピクチャ全体の平均的な動きを表す動きベクトルを、領域動きベクトルとしてもよい。
【0143】
図15は、このような動きベクトルを求めるピクチャ処理部の構成例を示している。
図15のピクチャ処理部1501は、
図9のモード決定部810の内部に設けられ、参照ピクチャ決定部1511、探索サイズ決定部1512、動きベクトル探索部1513、及び記憶部1514を含む。
【0144】
参照ピクチャ決定部1511は、複数の参照ピクチャの候補の中から1つの参照ピクチャを選択し、探索サイズ決定部1512に出力する。符号化対象ピクチャが入力された時点では、その符号化対象ピクチャ内の各ブロックはまだ符号化されていない。このため、
図11の参照ピクチャ決定部1104のように、各ブロックの周辺のブロックにおける参照ピクチャの中から1つの参照ピクチャを選択することはできない。そこで、参照ピクチャ決定部1511は、あらかじめ決められた参照ピクチャを選択する。
【0145】
選択部905から出力される参照インデックスは、結果的に符号化対象ピクチャに最も類似している参照ピクチャを示す傾向が強い。このため、領域動きベクトルを求める際には、符号化対象ピクチャに最も類似している参照ピクチャを用いることが望ましい。そこで、参照ピクチャ決定部1511は、例えば、符号化対象ピクチャに時間的に最も近い参照ピクチャを選択する。
【0146】
図16は、このような参照ピクチャ決定方法を示している。参照ピクチャ1601〜参照ピクチャ1603が符号化対象ピクチャ1604に対する参照ピクチャの候補であり、そのうち参照ピクチャ1601が時間的に最も遠く、参照ピクチャ1603が最も近い場合、参照ピクチャ1603が選択される。
【0147】
探索サイズ決定部1512は、符号化対象ピクチャをブロックより大きなサイズの複数の領域に分割する。リアルタイム系の動画像符号化装置では、ブロック単位の符号化処理の演算量を削減することが望まれるため、ブロックより大きなサイズの領域を用いることが望ましい。
【0148】
動きベクトル探索部1513は、分割された領域毎に、その領域の動きを表す動きベクトルを求め、記憶部1514に格納する。動きベクトル探索部1513は、符号化対象ピクチャ内の全領域の動きベクトルの平均を表す平均動きベクトルを求めて、記憶部1514に格納してもよい。記憶部1514に格納された動きベクトルは、
図11の領域動きベクトル探索部1105により取得され、領域動きベクトルとして用いられる。
【0149】
なお、ピクチャ処理部1501を設けた場合、
図11の予測ベクトル生成部1801において、参照ピクチャ決定部1104を省略することができる。
【0150】
図17は、ピクチャ処理部1501を利用する動き探索処理の例を示すフローチャートである。
図17のステップ1701〜ステップ1703、ステップ1707、及びステップ1708〜ステップ1712の処理は、
図13のステップ1301〜ステップ1303、ステップ1306、及びステップ1307〜ステップ1311の処理と同様である。
【0151】
特徴量がTHより小さい場合(ステップ1703,YES)、領域動きベクトル探索部1105は、符号化対象ブロックの位置が、探索サイズ決定部1512により分割された領域のどれに含まれるかを判定する(ステップ1704)。そして、領域動きベクトル探索部1105は、その位置を含む領域の動きベクトルを記憶部1514から取得し(ステップ1705)、その動きベクトルを領域動きベクトル(予測ベクトル)として出力する(ステップ1706)。
【0152】
なお、符号化対象ブロックを含む領域の動きベクトルの代わりに平均動きベクトルが記憶部1514に格納されている場合、領域動きベクトル探索部1105は、その平均動きベクトルを領域動きベクトル(予測ベクトル)として出力する。
【0153】
以上説明した実施形態では、領域動きベクトルを求めるために動きベクトル探索を行っているが、動きベクトル探索で用いるブロックマッチングは演算量が多いため、動きベクトル探索を行わずに領域動きベクトルを求める方法が望まれる。
【0154】
例えば、符号化対象ブロックの周辺の符号化済みブロックの動きベクトルに基づいて、符号化済みブロックの平均的な動きを表す平均動きベクトルを求め、それを領域動きベクトルとして利用すれば、領域動きベクトル探索が不要になる。ただし、符号化対象ブロックの周辺ブロックが他のスライスに属する場合は、そのスライスの符号化処理が終了していることが前提となる。
【0155】
図18は、このような平均動きベクトルを求めるモード決定部の構成例を示している。
図18のモード決定部810は、
図9のモード決定部810において、予測ベクトル生成部901を予測ベクトル生成部1801に置き換え、動きベクトル記憶部1802を追加した構成を有する。
【0156】
動きベクトル探索部902は、各ブロックの動きベクトルを求めて動きベクトル記憶部1802に格納する。これにより、動きベクトル記憶部1802には、符号化対象ブロックの周辺の符号化済みブロックの動きベクトルが格納される。
【0157】
図19は、
図18の予測ベクトル生成部1801の構成例を示している。
図19の予測ベクトル生成部1801は、
図11の予測ベクトル生成部901において、参照ピクチャ決定部1104及び領域動きベクトル探索部1105をそれぞれ周辺ブロック決定部1901及び領域動きベクトル計算部1902に置き換えた構成を有する。
【0158】
周辺ブロック決定部1901は、符号化対象ブロックの周辺ブロックの範囲を決定する。例えば、
図3に示したブロックA、ブロックB、及びブロックCを周辺ブロックとして設定することができる。
【0159】
領域動きベクトル計算部1902は、動きベクトル記憶部1802から周辺ブロックの動きベクトルを取得し、それらの平均ベクトルを領域動きベクトルとして求める。例えば、
図3のブロックA、ブロックB、及びブロックCの動きベクトルをそれぞれmvA、mvB、及びmvCとすると、平均ベクトルは次式により計算される。
平均ベクトル=(mvA+mvB+mvC)/3 (13)
【0160】
図20は、
図18の予測ベクトル生成部1801及び動きベクトル探索部902が行う動き探索処理の例を示すフローチャートである。
図20のステップ2001〜ステップ2003、ステップ2007、及びステップ2008〜ステップ2012の処理は、
図13のステップ1301〜ステップ1303、ステップ1306、及びステップ1307〜ステップ1311の処理と同様である。
【0161】
特徴量がTHより小さい場合(ステップ2003,YES)、周辺ブロック決定部1901は、符号化対象ブロックの周辺ブロックの範囲を決定する(ステップ2004)。そして、領域動きベクトル計算部1902は、それらの周辺ブロックの動きベクトルを動きベクトル記憶部1802から取得し(ステップ2005)、それらの動きベクトルの平均ベクトルを領域動きベクトルとして求める(ステップ2006)。
【0162】
なお、符号化対象ブロックの周辺ブロックが1つのみである場合は、領域動きベクトル計算部1902は、平均ベクトルの代わりに、その周辺ブロックの動きベクトルを領域動きベクトルとして用いる。
【0163】
図13、
図14、
図17、及び
図20に示したフローチャートは一例に過ぎず、動画像符号化装置の構成や条件に応じて一部の処理を省略又は変更してもよい。例えば、符号化対象ブロック内に存在するテクスチャが濃いか薄いかにかかわらずに領域動きベクトルを求める場合、
図13のステップ1302及びステップ1303の処理を省略することが可能である。この場合、
図17のステップ1702及びステップ1703の処理と、
図20のステップ2002及びステップ2003の処理も省略することが可能である。
【0164】
また、予測符号化で用いられる周辺ブロックは、
図2及び
図3に示したブロックA、ブロックB、及びブロックCに限られるものではなく、符号化対象ブロックの周辺に存在する他の符号化済みブロックを周辺ブロックとして用いてもよい。この場合、複数の周辺ブロックの動きベクトルに基づいて、多数決で予測ベクトルを決定することができる。
【0165】
さらに、
図1のスライス分割では、ピクチャが水平方向の境界線により4つのスライスに分割されているが、垂直方向の境界線により複数のスライスに分割しても構わない。この場合、スライス境界直下のブロックラインを、スライス境界の右隣又は左隣にある垂直方向のブロックラインに置き換えて、動画像符号化処理が行われる。
【0166】
図6及び
図8の動画像符号化装置は、ハードウェア回路として実装することもでき、
図21に示すような情報処理装置(コンピュータ)を用いて実現することもできる。
【0167】
図21の情報処理装置は、Central Processing Unit (CPU)2101、メモリ2102、入力装置2103、出力装置2104、動画像入力装置2105、補助記憶装置2106、媒体駆動装置2107、及びネットワーク接続装置2108を備える。これらはバス2109により互いに接続されている。
【0168】
メモリ2102は、例えば、Read Only Memory(ROM)、Random Access Memory(RAM)、フラッシュメモリ等の半導体メモリであり、処理に用いられるプログラム及びデータを格納する。メモリ2102は、
図8の記憶部808、
図15の記憶部1514、又は
図18の動きベクトル記憶部1802としても使用できる。CPU(プロセッサ)2101は、例えば、メモリ2102を利用してプログラムを実行することにより、動画像符号化処理を行う。
【0169】
入力装置2103は、例えば、キーボード、ポインティングデバイス等であり、ユーザ又はオペレータからの指示や情報の入力に用いられる。出力装置2104は、例えば、表示装置、プリンタ、スピーカ等であり、ユーザ又はオペレータへの問い合わせや処理結果の出力に用いられる。動画像入力装置2105には、符号化対象のピクチャ列が入力される。
【0170】
補助記憶装置2106は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク装置、テープ装置等である。この補助記憶装置2106には、ハードディスクドライブも含まれる。情報処理装置は、補助記憶装置2106にプログラム及びデータを格納しておき、それらをメモリ2102にロードして使用することができる。
【0171】
媒体駆動装置2107は、可搬型記録媒体2110を駆動し、その記録内容にアクセスする。可搬型記録媒体2110は、メモリデバイス、フレキシブルディスク、光ディスク、光磁気ディスク等である。この可搬型記録媒体2110には、Compact Disk Read Only Memory (CD−ROM)、Digital Versatile Disk(DVD)、Universal Serial Bus(USB)メモリ等も含まれる。ユーザ又はオペレータは、この可搬型記録媒体2110にプログラム及びデータを格納しておき、それらをメモリ2102にロードして使用することができる。
【0172】
このように、各種処理に用いられるプログラム及びデータを格納するコンピュータ読み取り可能な記録媒体には、メモリ2102、補助記憶装置2106、及び可搬型記録媒体2110のような、物理的な(非一時的な)記録媒体が含まれる。
【0173】
ネットワーク接続装置2108は、Local Area Network(LAN)、インターネット等の通信ネットワークに接続され、通信に伴うデータ変換を行う通信インタフェースである。符号化結果のビットストリームは、ネットワーク接続装置2108を介して受信機又は動画像復号装置へ送信される。情報処理装置は、プログラム及びデータを外部の装置からネットワーク接続装置2108を介して受け取り、それらをメモリ2102にロードして使用することもできる。
【0174】
なお、情報処理装置が
図21のすべての構成要素を含む必要はなく、用途や条件に応じて一部の構成要素を省略することも可能である。例えば、ユーザ又はオペレータとのインタフェースが不要の場合は、入力装置2103及び出力装置2104を省略してもよい。
【0175】
開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができるであろう。
【0176】
図3から
図21までを参照しながら説明した実施形態に関し、さらに以下の付記を開示する。
(付記1)それぞれが複数のブロックを含む複数のスライスに分割された符号化対象ピクチャ内の第1のスライスと第2のスライスとの境界に接する、前記第2のスライス内のブロックラインに符号化対象ブロックが含まれている場合、前記第1のスライス内のブロックを含む領域の動きを表す領域動きベクトルを求め、前記領域動きベクトルを第1の予測ベクトルとして出力する予測ベクトル生成部と、
前記第1の予測ベクトルを前記符号化対象ブロックの予測ベクトルとして用いて、前記符号化対象ブロックの動きベクトルを求める動きベクトル探索部と、
前記符号化対象ブロックの周辺の1つ以上の符号化済みブロックの動きベクトルから第2の予測ベクトルを求め、前記符号化対象ブロックの動きベクトルと前記第2の予測ベクトルとの差分ベクトルを符号化し、前記符号化対象ブロックの画素値と前記符号化対象ブロックの動きベクトルが示す参照ピクチャ内のブロックの画素値との差分を符号化して、符号化結果を出力する符号化部と、
を備えることを特徴とする動画像符号化装置。
(付記2)前記差分ベクトルを符号化しないスキップ符号化モードにおける前記符号化対象ブロックの動きベクトルを求める動きベクトル生成部と、
前記スキップ符号化モードにおける前記符号化対象ブロックの動きベクトルに基づいて、前記スキップ符号化モードにおける前記符号化対象ブロックの符号化コストを計算するコスト計算部と、
前記差分ベクトルを符号化する符号化モードと前記スキップ符号化モードのうちいずれか一方の符号化モードを選択する選択部とをさらに備え、
前記動きベクトル探索部は、前記第1の予測ベクトルを前記符号化対象ブロックの予測ベクトルとして用いて、前記差分ベクトルを符号化する符号化モードにおける前記符号化対象ブロックの符号化コストを計算し、前記選択部は、前記符号化対象ブロックの符号化コストが小さい方の符号化モードを選択し、前記符号化部は、選択された符号化モードに従って前記符号化対象ブロックを符号化することを特徴とする付記1記載の動画像符号化装置。
(付記3)前記予測ベクトル生成部は、前記第1のスライス内のブロックと前記符号化対象ブロックとを含む前記領域の動きを表す前記領域動きベクトルを求めることを特徴とする付記1又は2記載の動画像符号化装置。
(付記4)前記符号化対象ピクチャを前記ブロックより大きなサイズの複数の領域に分割し、各領域の動きを表す動きベクトルを求めるピクチャ処理部をさらに備え、前記予測ベクトル生成部は、前記ピクチャ処理部により求められた前記複数の領域の動きベクトルのうち、前記符号化対象ブロックを含む領域の動きを表す動きベクトルを前記領域動きベクトルとして求めることを特徴とする付記3記載の動画像符号化装置。
(付記5)前記予測ベクトル生成部は、前記符号化対象ピクチャ全体の平均的な動きを表す動きベクトルを前記領域動きベクトルとして求めることを特徴とする付記3記載の動画像符号化装置。
(付記6)前記予測ベクトル生成部は、前記符号化対象ブロックの周辺の1つ以上の符号化済みブロックの動きベクトルに基づく平均的な動きベクトルを、前記領域動きベクトルとして求めることを特徴とする付記1又は2記載の動画像符号化装置。
(付記7)前記符号化対象ブロックが前記第2のスライス内の前記境界に接するブロックライン以外のブロックラインに含まれている場合、前記予測ベクトル生成部は、前記符号化対象ブロックの周辺の1つ以上の符号化済みブロックの動きベクトルから前記第2の予測ベクトルを求め、前記動きベクトル探索部は、前記第2の予測ベクトルを前記符号化対象ブロックの予測ベクトルとして用いて、前記符号化対象ブロックの動きベクトルを求めることを特徴とする付記1乃至6のいずれか1つに記載の動画像符号化装置。
(付記8)前記予測ベクトル生成部は、前記符号化対象ブロックが前記第2のスライス内の前記境界に接するブロックラインに含まれている場合、前記符号化対象ブロックの特徴量を求め、前記特徴量が閾値より小さい場合、前記領域動きベクトルを求めることを特徴とする付記1乃至7のいずれか1つに記載の動画像符号化装置。
(付記9)前記予測ベクトル生成部は、複数の参照ピクチャのうち、前記符号化対象ブロックの周辺の複数の符号化済みブロックにおいて最も多く選択された参照ピクチャに対する前記領域の動きを表す前記領域動きベクトルを求めることを特徴とする付記1乃至8のいずれか1つに記載の動画像符号化装置。
(付記10)前記予測ベクトル生成部は、複数の参照ピクチャのうち、時間的に前記符号化対象ピクチャに最も近い参照ピクチャに対する前記領域の動きを表す前記領域動きベクトルを求めることを特徴とする付記1乃至8のいずれか1つに記載の動画像符号化装置。
(付記11)それぞれが複数のブロックを含む複数のスライスに分割された符号化対象ピクチャ内の第1のスライスと第2のスライスとの境界に接する、前記第2のスライス内のブロックラインに符号化対象ブロックが含まれている場合、前記第1のスライス内のブロックを含む領域の動きを表す領域動きベクトルを求め、
前記領域動きベクトルを前記符号化対象ブロックの第1の予測ベクトルとして用いて、前記符号化対象ブロックの動きベクトルを求め、
前記符号化対象ブロックの周辺の1つ以上の符号化済みブロックの動きベクトルから第2の予測ベクトルを求め、
前記符号化対象ブロックの動きベクトルと前記第2の予測ベクトルとの差分ベクトルを符号化し、前記符号化対象ブロックの画素値と前記符号化対象ブロックの動きベクトルが示す参照ピクチャ内のブロックの画素値との差分を符号化して、符号化結果を求める、
ことを特徴とする動画像符号化方法。
(付記12)それぞれが複数のブロックを含む複数のスライスに分割された符号化対象ピクチャ内の第1のスライスと第2のスライスとの境界に接する、前記第2のスライス内のブロックラインに符号化対象ブロックが含まれている場合、前記第1のスライス内のブロックを含む領域の動きを表す領域動きベクトルを求め、
前記領域動きベクトルを前記符号化対象ブロックの第1の予測ベクトルとして用いて、前記符号化対象ブロックの動きベクトルを求め、
前記符号化対象ブロックの周辺の1つ以上の符号化済みブロックの動きベクトルから第2の予測ベクトルを求め、
前記符号化対象ブロックの動きベクトルと前記第2の予測ベクトルとの差分ベクトルを符号化し、前記符号化対象ブロックの画素値と前記符号化対象ブロックの動きベクトルが示す参照ピクチャ内のブロックの画素値との差分を符号化して、符号化結果を出力する、
処理をコンピュータに実行させるプログラム。