以下、本発明を実施するための最良の形態について図面を用いて説明する。
図1は、本発明の実施の形態の画像符号化装置の機能的な構成概要を示す機能ブロック図である。まず、図1および図2を用いて本発明の実施の形態の画像符号化装置の構成および動作の概要を説明し、その後に、図3以降を用いて具体的な構成および動作を説明する。
図1に示す画像符号化装置1は、画像データを符号化しビットストリームとして出力する装置である。
図1に示すように、画像符号化装置1は、画像符号化部10と、I_PCMデータバッファ4と、出力選択部8と、出力部9と、符号量予測部20と、I_PCM判定部30と、エントロピー符号化部40とを備える。
画像符号化部10は、入力される画像データを符号化する処理部であり、動き予測部2と、面内予測部3と、入力選択部5と、直交変換部6と、量子化部7とを有している。
また、エントロピー符号化部40は、画像符号化部10によって得られた符号化データに対しCABAC符号化処理を行なう処理部であり、2値化器41と、CABAC符号化器42とを有している。
なお、逆量子化および逆直交変換を行なう構成部等、画像符号化装置が本来有する構成部の図示については図の簡略化のために省略している。
画像符号化装置1に符号化対象の画像のデータが入力されると、動き予測部2と面内予測部3とI_PCMデータバッファ4とに入力される。つまり、I_PCMデータバッファ4には原画データがI_PCMデータとして格納される。動き予測部2または面内予測部3から出力されたデータは、入力選択部5に選択されることにより、離散コサイン変換(DCT)を行なう直交変換部6に入力される。直交変換部6はDCTによって得られるDCT係数を量子化部7に出力し、量子化部7によって量子化される。
以上の動作の流れは、従来の画像符号化装置と同様である。しかし、本発明の実施の形態の画像符号化装置1は、符号量予測部20が、量子化部7から出力される量子化後のDCT係数(以下、「量子化後係数」という。)等の符号化データのマクロブロック毎の値から、マクロブロック毎のCABAC符号化後の符号量の予測値を求めることができる。
また、符号量予測部20へ入力されるデータは、量子化部の出力に限らず、符号量が予測可能である符号化データであれば何でもよい。
図2は、図1に示す画像符号化装置の機能的な構成概要の別の一例を示す機能ブロック図である。
例えば、図2に示す画像符号化装置のように、入力選択部5により選択されたデータを、符号量予測部20の入力データとすることもできる。入力選択部5の出力は、直交変換部、量子化部によって、ほぼ一意のデータに変換されるので、符号量予測部20に、入力選択部5の出力を入力しても、同じ結果を得ることが可能である。ただし、符号量予測部20に、入力選択部5の出力を入力する場合と、量子化部7の出力を入力する場合とでは、符号量予測部20の内部は変える必要がある。
なお、入力選択部5から出力されるデータも、本発明の画像符号化装置における符号化データの一例である。
更に、I_PCM判定部30は、符号量についての設定された閾値を有しており、予測値と閾値との比較を行なうことができる。
I_PCM判定部30は、比較の結果に基づき出力選択部8に指示を行なう。具体的には、予測値が閾値より大きい場合、I_PCMデータを選択する指示を行なう。また、予測値が閾値以下である場合、画像符号化部10から出力される符号化データを選択する指示を行なう。
また、I_PCM判定部30は、動き予測部2に対してもI_PCM判定の結果を通知する。この通知を受けた動き予測部の動作については、後述する具体例10および具体例11において説明する。
出力選択部8は、I_PCMデータを選択する指示を受けると、I_PCMデータバッファ4からI_PCMデータを取得し、出力部9に出力する。また、“mb_type=I_PCM”とした制御情報をエントロピー符号化部40に出力する。
エントロピー符号化部40は、入力された制御情報のみを2値化器41とCABAC符号化器42により符号化し、出力部9に出力する。
出力部9は、出力選択部8が出力するI_PCMデータと、エントロピー符号化部40が出力する符号化された制御情報とをビットストリームとして外部に出力する。
また、出力選択部8は、符号化データを選択する指示を受けると、量子化部7から量子化後係数データを取得し、エントロピー符号化部40に出力する。
エントロピー符号化部40は、2値化器41とCABAC符号化器42とにより、入力された量子化後係数データを符号化し、出力部9に出力する。出力部9は、エントロピー符号化部40が出力する符号化されたデータをビットストリームとして外部に出力する。つまり、出力選択部8と出力部9とにより、本発明の画像符号化装置における出力手段が有する、I_PCM判定に基づきデータを出力する機能が発揮される。
このように、本発明の画像符号化装置1は、エントロピー符号化のための処理の前に、出力するビットストリームをI_PCMデータとするか、エントロピー符号化処理を行なった符号化データとするかを決定することができる。
つまり、I_PCMデータをビットストリームとして出力するか否かの判定(以下、「I_PCM判定」という。)をマクロブロック毎に行なうが、この判定のタイミングをより早く行なうことができる。また、最終的に、原画データであるI_PCMデータがビットストリームとして出力される場合、エントロピー符号化のための処理を行なう必要がない。つまり、必要な動作の決定をより早いタイミングで行なうことにより、処理速度が向上する。
以下、画像符号化装置1について、符号量予測部20およびI_PCM判定部30の具体的な構成および動作を中心に、その動作と構成の具体例を説明する。
(具体例1)
図3は、画像符号化装置1の機能的な構成の具体例1を示す機能ブロック図である。
図3に示すように、I_PCM判定部30は、符号量比較部31と閾値記憶部32とを有している。その他の構成部は、図1に示す画像符号化装置と同じである。
閾値記憶部32は、I_PCM判定のための基準値となる、符号量の閾値を記憶する記憶部である。
符号量比較部31は、符号量予測部20から出力されるマクロブロック毎の符号量の予測値と閾値記憶部32に記憶されている閾値とを比較する処理部である。比較の結果、予測値が閾値より大きい場合、出力選択部8に、I_PCMデータを選択する指示を行なう。また、予測値が閾値以下である場合、出力選択部8に、画像符号化部10から出力される量子化後係数と符号化情報とを選択する指示を行なう。その後のデータの流れは、図1を用いて説明した通りである。
ここで、閾値記憶部32に記憶されている閾値は、例えば、AVC/H.264に規定されるマクロブロックの最大符号量である3200ビットである。つまり、画像符号化装置1において、符号量が3200ビットを越えると予測されたマクロブロックについては、I_PCMデータがビットストリームとして出力される。
なお、閾値記憶部32に記憶されている閾値は、AVC/H.264に規定されるマクロブロックの最大符号量と同一の値ではなく、より安全に判定を行なうために、最大符号量から一定のマージン値を引いた値でもよい。また、一定のマージン値を引いた値を閾値として閾値記憶部32に記憶しておくのではなく、符号量比較部31が、最大符号量である閾値から所定のマージン値を引いて、予測値との比較を行なってもよい。
また、I_PCM判定をマクロブロックの単位で行わなくてもよく、より大きな単位でもよく、また、より小さな単位でもよい。例えば、エントロピー符号化の規格等に応じて変更してもよい。
(具体例2)
図4は、画像符号化装置1の機能的な構成の具体例2を示す機能ブロック図である。
図4に示すように、符号量予測部20は係数ビット数変換部21と加算部25とを有している。また、画像符号化装置1において、動き予測部2と面内予測部3と、入力選択部5とにより符号化方式演算部10aが構成されている。更に、マージ部11を備えている。
符号化方式演算部10aは、入力された画像データから得られる符号化情報と、画素の差分データとを分けて出力する。画素の差分データは直交変換部6と量子化部7とを経て、マージ部11に入力される。マージ部11は、符号化方式演算部10aから出力される符号化情報と、量子化部7から得られる量子化後係数データとをマージする。
符号化情報とは、符号化対象のマクロブロックの動きベクトル、mb_type、イントラ予測方向等の情報であり。マクロブロックの符号化に関する情報である。
その他の構成部は、図3に示す画像符号化装置1と同じであり、I_PCM判定部30は、符号量比較部31と閾値記憶部32とを有している。
係数ビット数変換部21は、本発明の画像符号化装置における係数変換手段の一例であり、量子化部7から出力される量子化後係数の値を、その量子化後係数が2値化器41で2値化された場合の2値データのビット数に変換する処理部である。
具体的には、係数ビット数変換部21は、図5に示す変換テーブルを有しており、その変換テーブルを用い量子化後係数の値をビット数に変換する。
図5は、量子化後係数の値をビット数に変換するための変換テーブルの一例である。図5に示すように、量子化後係数の値が分かれば2値データのビット数は決定される。
係数ビット数変換部21から出力されるビット数は、加算部25においてマクロブロック毎に加算され、I_PCM判定部30に出力される。この加算部25においてマクロブロック毎に加算され出力されるビット数を、以下、「係数ビット数」という。つまり、係数ビット数は、予測値としてI_PCM判定部30に出力される。
I_PCM判定部30において、閾値記憶部32には、符号量予測部20から出力される係数ビット数を用いて、I_PCM判定を行なうための閾値が記憶されている。つまり、符号量予測部20から出力される予測値は、マクロブロック毎のCABAC符号化後の符号量の予測値ではなく、マクロブロック毎の算術符号化前の段階の2値データのビット数である。そのため、そのビット数に対応する閾値を有している。
符号量比較部31は、符号量予測部20から受け取った係数ビット数である予測値と、閾値記憶部32に記憶されている閾値とを比較し、予測値が閾値より大きい場合、出力選択部8に、I_PCMデータを選択する指示を行なう。また、予測値が閾値以下である場合、出力選択部8に、画像符号化部10から出力される符号化データを選択する指示を行なう。その後のデータの流れは、図1を用いて説明した通りである。
このように、図4に示す画像符号化装置1は、1つの符号化対象のマクロブロックに含まれる全ての量子化後係数を2値データにした場合のビット数を予測値として求めることができる。更に、その予測値と閾値とを比較することにより、マクロブロック毎のI_PCM判定を行なうことができる。
なお、係数ビット数変換部21は、図5に示す変換テーブルを用い量子化後係数の値をビット数に変換するとした。しかしながら変換テーブル以外の手段で変換してもよく、例えば同じ変換結果が得られる関数を用いて変換してもよい。以下の説明において、変換テーブルを用いて変換する場合も同様である。
(具体例3)
図6は、画像符号化装置1の機能的な構成の具体例3を示す機能ブロック図である。
図6に示す画像符号化装置1の機能的な構成は、図4に示す画像符号化装置1が有する構成部に加え、動きベクトルビット数変換部22と加算部27とを符号量予測部20に有する構成である。
動きベクトルビット数変換部22は、本発明の画像符号化装置における動き変換手段の一例であり、符号化方式演算部10aから出力される符号化情報の中から動きベクトルを取得し、動きベクトルが2値化器41で2値化された場合の2値データのビット数に変換する処理部である。この変換には、図5に示す変換テーブル同様の変換テーブルが用いられる。つまり、動きベクトルビット数変換部22は、1つの動きベクトルから1つの2値データのビット数が得られる変換テーブルを有しており、この変換テーブルを用いて、動きベクトルが2値化器41で2値化された場合の2値データのビット数に変換する。
動きベクトルビット数変換部22から出力されるビット数は、加算部27においてマクロブロック毎に加算される。この図6に示す加算部27においてマクロブロック毎に加算され出力されるビット数を、以下、「動きベクトルビット数」という。また、係数ビット数変換部21から出力されるビット数も加算部25においてマクロブロック毎に加算される。更に、加算部25と加算部27とから出力される係数ビット数と動きベクトルビット数との和が、I_PCM判定部30に出力される。つまり、係数ビット数と動きベクトルビット数との和は、予測値としてI_PCM判定部30に出力される。
I_PCM判定部30において、閾値記憶部32には、係数ビット数と動きベクトルビット数との和を用いて、I_PCM判定を行なうための閾値が記憶されている。つまり、予測値として符号量予測部20から出力される係数ビット数と動きベクトルビット数との和に対応する閾値を有している。
符号量比較部31は、符号量予測部20から受け取った係数ビット数と動きベクトルビット数との和である予測値と、閾値記憶部32に記憶されている閾値とを比較し、予測値が閾値より大きい場合、出力選択部8に、I_PCMデータを選択する指示を行なう。また、予測値が閾値以下である場合、出力選択部8に、画像符号化部10から出力される符号化データを選択する指示を行なう。その後のデータの流れは、図1を用いて説明した通りである。
このように、図6に示す画像符号化装置1は、1つの符号化対象のマクロブロックに含まれる全ての量子化後係数を2値データにした場合のビット数と、そのマクロブロックの全ての動きベクトルを2値データにした場合のビット数とを加算し、加算した値を予測値とする。これにより、図4に示す画像符号化装置1と比べて、実際に符号化対象のマクロブロックを2値化した際のビット数により近い値を予測値とすることができる。更に、その予測値と閾値とを比較することにより、マクロブロック毎のI_PCM判定を行なうことができる。
(具体例4)
図7は、画像符号化装置1の機能的な構成の具体例4を示す機能ブロック図である。
図7に示す画像符号化装置1の機能的な構成は、図6に示す画像符号化装置1の構成において、動きベクトルビット数変換部22に換えて符号化情報ビット数変換部23を符号量予測部20に有する構成である。
符号化情報ビット数変換部23は、符号化方式演算部10aから出力される符号化情報を取得し、動きベクトルを含む符号化情報が2値化器41で2値化された場合の2値データのビット数に変換する処理部である。つまり、動きベクトルが2値化された場合のビット数と、動きベクトル以外の符号化情報が2値化された場合のビット数とを出力する処理部である。従って、図6に示す、動きベクトルビット数変換部22の役割も兼ねている処理部である。
なお、符号化情報ビット数変換部23により、本発明の画像符号化装置における動き変換手段と符号化情報変換手段とがそれぞれ有する、対象となるデータから2値化後のビット数を得る機能が実現される。
この符号化情報の変換には、図5に示す変換テーブルと同様の変換テーブルが用いられる。つまり、符号化情報ビット数変換部23は、符号化情報に含まれる1つの動きベクトルや1つのmb_type等の情報のそれぞれから1つの2値データのビット数がそれぞれ得られる1つ以上の変換テーブルを有しており、この変換テーブルを用いて、符号化情報が2値化器41で2値化された場合の2値データのビット数に変換する。
符号化情報ビット数変換部23から出力されるビット数は、加算部27においてマクロブロック毎に加算される。この図7に示す加算部27においてマクロブロック毎に加算され出力されるビット数を、以下、「符号化情報ビット数」という。また、係数ビット数変換部21から出力されるビット数も加算部25においてマクロブロック毎に加算される。
更に、加算部25と加算部27とから出力される係数ビット数と符号化情報ビット数との和が、I_PCM判定部30に出力される。つまり、係数ビット数と符号化情報ビット数との和は、予測値としてI_PCM判定部30に出力される。
つまり、図6に示す画像符号化装置1では、量子化後係数および動きベクトルのマクロブロック毎の2値化後の2値データのビット数の和を予測値としているが、図7に示す画像符号化装置1では、更に、動きベクトル以外のmb_type等の符号化情報も2値化後の2値データのビット数に変換し、マクロブロック毎に予測値に加えている。
I_PCM判定部30において、閾値記憶部32には、係数ビット数と符号化情報ビット数との和を用いて、I_PCM判定を行なうための閾値が記憶されている。つまり、予測値として符号量予測部20から出力される係数ビット数と符号化情報ビット数との和に対応する閾値を有している。
符号量比較部31は、符号量予測部20から受け取った係数ビット数と符号化情報ビット数との和である予測値と、閾値記憶部32に記憶されている閾値とを比較し、予測値が閾値より大きい場合、出力選択部8に、I_PCMデータを選択する指示を行なう。また、予測値が閾値以下である場合、出力選択部8に、画像符号化部10から出力される符号化データを選択する指示を行なう。その後のデータの流れは、図1を用いて説明した通りである。
このように、図7に示す画像符号化装置1は、1つの符号化対象のマクロブロックに含まれる全ての量子化後係数を2値データにした場合のビット数と、そのマクロブロックの全ての動きベクトルを2値データにした場合のビット数と、そのマクロブロックの動きベクトル以外の全ての符号化情報を2値データにした場合のビット数とを加算し、加算した値を予測値とする。これにより、図6に示す画像符号化装置1と比べて、実際に符号化対象のマクロブロックを2値化した際のビット数により近い値を予測値とすることができる。更に、その予測値と閾値とを比較することにより、マクロブロック毎のI_PCM判定を行なうことができる。
(具体例5)
図8は、画像符号化装置1の機能的な構成の具体例5を示す機能ブロック図である。
図8に示す画像符号化装置1の機能的な構成は、図4に示す画像符号化装置1の構成において、係数ビット数変換部21に換えて係数符号量変換部24を符号量予測部20に有する構成である。
係数符号量変換部24は、本発明の画像符号化装置における係数変換手段の別の一例であり、量子化部7から出力される量子化後係数の値を、その量子化後係数が2値化された後にCABAC符号化器42で符号化された場合の符号量に変換し、予測値として出力する処理部である。
つまり、符号量予測部20は、上述の図4、図6および図7に示す各画像符号化装置1における符号量予測部20とは異なり、マクロブロック毎の量子化後係数を2値データにした場合のビット数を予測値として出力するのではなく、そのマクロブロック毎の2値データをCABAC符号化した場合の符号量を予測値として出力する。
係数符号量変換部24は、1つの量子化後係数の値を符号化後の1つの符号量に変換するための変換テーブル、または、関数等を有している。これら変換テーブルおよび関数等は、実験値または理論値から求められる。図9および図10を用いて後述する動きベクトル符号量変換部26および符号化情報符号量変換部28も同様の変換テーブルまたは関数を用い、それぞれに入力される情報を符号量に変換する。
係数符号量変換部24から出力された符号量は、加算部25においてマクロブロック毎に加算される。この図8に示す加算部25においてマクロブロック毎に加算され出力される符号量を、以下、「係数符号量」という。つまり、係数符号量は、予測値としてI_PCM判定部30に出力される。
I_PCM判定部30において、閾値記憶部32には、符号量予測部20から出力される係数符号量を用いて、I_PCM判定を行なうための閾値が記憶されている。符号量予測部20から出力される予測値は、量子化後係数のマクロブロック毎のCABAC符号化後の符号量の予測値であり、閾値記憶部32には、その予測値に対応する閾値が記憶されている。例えば、上述の、AVC/H.264で規定されるマクロブロックの最大の符号量である3200ビット以下の値が閾値として記憶されている。
符号量比較部31は、符号量予測部20から受け取った係数符号量である予測値と、閾値記憶部32に記憶されている閾値とを比較し、予測値が閾値より大きい場合、出力選択部8に、I_PCMデータを選択する指示を行なう。また、予測値が閾値以下である場合、出力選択部8に、画像符号化部10から出力される符号化データを選択する指示を行なう。その後のデータの流れは、図1を用いて説明した通りである。
このように、図8に示す画像符号化装置1は、1つの符号化対象のマクロブロックに含まれる全ての量子化後係数をCABAC符号化した場合の符号量を予測値として求めることができる。更に、その予測値と閾値とを比較することにより、マクロブロック毎のI_PCM判定を行なうことができる。
(具体例6)
図9は、画像符号化装置1の機能的な構成の具体例6を示す機能ブロック図である。
図9に示す画像符号化装置1の機能的な構成は、図8に示す画像符号化装置1が有する構成部に加え、動きベクトル符号量変換部26と加算部27とを符号量予測部20に有する構成である。
動きベクトル符号量変換部26は、本発明の画像符号化装置における動き変換手段の別の一例であり、符号化方式演算部10aから出力される符号化情報の中から動きベクトルを取得し、動きベクトルが2値化され更にCABAC符号化器42で符号化された場合の符号量に変換する処理部である。この変換には上述のように変換テーブルまたは関数等が用いられる。
動きベクトル符号量変換部26から出力される符号量は、加算部27においてマクロブロック毎に加算される。この図9に示す加算部27においてマクロブロック毎に加算され出力される符号量を、以下、「動きベクトル符号量」という。また、係数符号量変換部24から出力される符号量も加算部25においてマクロブロック毎に加算される。更に、加算部25と加算部27とから出力される係数符号量と動きベクトル符号量との和が、I_PCM判定部30に出力される。つまり、係数符号量と動きベクトル符号量との和は、予測値としてI_PCM判定部30に出力される。
I_PCM判定部30において、閾値記憶部32には、係数符号量と動きベクトル符号量との和を用いて、I_PCM判定を行なうための閾値が記憶されている。つまり、予測値として符号量予測部20から出力される係数符号量と動きベクトル符号量との和に対応する閾値を有している。例えば、上述の、AVC/H.264で規定されるマクロブロックの最大の符号量である3200ビット以下の値が閾値として記憶されている。
符号量比較部31は、符号量予測部20から受け取った係数符号量と動きベクトル符号量との和である予測値と、閾値記憶部32に記憶されている閾値とを比較し、予測値が閾値より大きい場合、出力選択部8に、I_PCMデータを選択する指示を行なう。また、予測値が閾値以下である場合、出力選択部8に、画像符号化部10から出力される符号化データを選択する指示を行なう。その後のデータの流れは、図1を用いて説明した通りである。
このように、図9に示す画像符号化装置1は、1つの符号化対象のマクロブロックに含まれる全ての量子化後係数をCABAC符号化した場合の符号量と、そのマクロブロックの全ての動きベクトルをCABAC符号化した場合の符号量とを加算し、加算した値を予測値とする。これにより、図8に示す画像符号化装置1と比べて、実際に符号化対象のマクロブロックをCABAC符号化した際の符号量により近い値を予測値とすることができる。更に、その予測値と閾値とを比較することにより、マクロブロック毎のI_PCM判定を行なうことができる。
(具体例7)
図10は、画像符号化装置1の機能的な構成の具体例7を示す機能ブロック図である。
図10に示す画像符号化装置1の機能的な構成は、図9に示す画像符号化装置1の構成において、動きベクトル符号量変換部26に換えて符号化情報符号量変換部28を符号量予測部20に有する構成である。
符号化情報符号量変換部28は、符号化方式演算部10aから出力される符号化情報を取得し、動きベクトルを含む符号化情報が2値化され更にCABAC符号化器42で符号化された場合の符号量に変換する処理部である。つまり、動きベクトルがCABAC符号化された場合の符号量と、動きベクトル以外の符号化情報がCABAC符号化された場合の符号量とを出力する処理部である。従って、図9に示す、動きベクトル符号量変換部26の役割も兼ねている処理部である。
なお、符号化情報符号量変換部28により、本発明の画像符号化装置における動き変換手段と符号化情報変換手段とがそれぞれ有する、対象となるデータからエントロピー符号化後の符号量を得る機能が実現される。
この符号化情報の変換には上述のように変換テーブルまたは関数等が用いられる。
符号化情報符号量変換部28から出力される符号量は、加算部27においてマクロブロック毎に加算される。この図10に示す加算部27においてマクロブロック毎に加算され出力される符号量を、以下、「符号化情報符号量」という。また、係数符号量変換部24から出力される符号量も加算部25においてマクロブロック毎に加算される。更に、加算部25と加算部27とから出力される符号化情報符号量と動きベクトル符号量との和が、I_PCM判定部30に出力される。つまり、係数符号量と符号化情報符号量との和は、予測値としてI_PCM判定部30に出力される。
つまり、図9に示す画像符号化装置1では、量子化後係数および動きベクトルのマクロブロック毎のCABAC符号化後の符号量の和を予測値としているが、図10に示す画像符号化装置1では、更に、動きベクトル以外のmb_type等の符号化情報もCABAC符号化後の符号量に変換し、マクロブロック毎に予測値に加えている。
I_PCM判定部30において、閾値記憶部32には、係数符号量と符号化情報符号量との和を用いて、I_PCM判定を行なうための閾値が記憶されている。つまり、予測値として符号量予測部20から出力される符号化情報符号量と動きベクトル符号量との和に対応する閾値を有している。
符号量比較部31は、符号量予測部20から受け取った係数符号量と符号化情報符号量との和である予測値と、閾値記憶部32に記憶されている閾値とを比較し、予測値が閾値より大きい場合、出力選択部8に、I_PCMデータを選択する指示を行なう。また、予測値が閾値以下である場合、出力選択部8に、画像符号化部10から出力される符号化データを選択する指示を行なう。その後のデータの流れは、図1を用いて説明した通りである。
このように、図10に示す画像符号化装置1は、1つの符号化対象のマクロブロックに含まれる全ての量子化後係数をCABAC符号化した場合の符号量と、そのマクロブロックの全ての動きベクトルを2CABAC符号化した場合の符号量と、そのマクロブロックの動きベクトル以外の全ての符号化情報をCABAC符号化した場合の符号量とを加算し、加算した値を予測値とする。これにより、図9に示す画像符号化装置1と比べて、実際に符号化対象のマクロブロックをCABAC符号化した際の符号量により近い値を予測値とすることができる。更に、その予測値と閾値とを比較することにより、マクロブロック毎のI_PCM判定を行なうことができる。
(具体例8)
図11は、画像符号化装置1の機能的な構成の具体例8を示す機能ブロック図である。
図11に示す画像符号化装置1の機能的な構成は、図10に示す画像符号化装置1の構成に加えて、値補正部29を符号量予測部20に有する構成である。
値補正部29は、符号化対象のマクロブロックのエントロピー符号化する際の条件となる符号化条件を取得し、その符号化条件に応じて符号量予測部20において求められる予測値の補正を行なう処理部である。
マクロブロックの符号化条件とは、例えば、マクロブロックが含まれるピクチャの種類(I/P/B)、mb_type、残差ブロック(residual_block)の種類、量子化パラメータ、および、ターゲットとする出力レートなどである。これら符号化条件により、CABAC符号化後の符号量が変動するため、値補正部29は、その変動に応じて予測値を補正する。
具体的には、係数符号量変換部24および符号化情報符号量変換部28のそれぞれが有する、入力された情報から符号量に変換するための変換テーブルまたは関数を、これら符号化条件に応じて書き換える。これにより、予測値が補正される。
これら符号化条件は、例えば、ピクチャ情報やスライス情報から得ることができ、ピクチャ情報およびスライス情報は、スライスヘッダ、SPS、PPSから取得することができる。ピクチャ情報およびスライス情報は、所定の手段により値補正部29に取得される。また、ターゲットの出力レートは、画像符号化装置1のユーザが所定の手段により画像符号化装置1に入力し、その出力レートの値は値補正部29に取得される。
従って、係数符号量変換部24および符号化情報符号量変換部28のそれぞれから出力される符号量は、符号化対象のマクロブロックの符号化条件に応じて補正されたものとなる。この2つの符号量はそれ加算部25および加算部27において加算され係数符号量および符号化情報符号量として出力される。更に、係数符号量と符号化情報符号量との和は、予測値としてI_PCM判定部30に出力される。
I_PCM判定部30において、閾値記憶部32には、符号量予測部20から出力される係数符号量と符号化情報符号量との和を用いて、I_PCM判定を行なうための閾値が記憶されている。例えば、上述の、AVC/H.264で規定されるマクロブロックの最大の符号量である3200ビットが閾値として記憶されている。
符号量比較部31は、符号量予測部20から受け取った係数ビット数と、閾値記憶部32に記憶されている閾値とを比較し、予測値が閾値より大きい場合、出力選択部8に、I_PCMデータを選択する指示を行なう。また、予測値が閾値以下である場合、出力選択部8に、画像符号化部10から出力される符号化データを選択する指示を行なう。その後のデータの流れは、図1を用いて説明した通りである。
このように、図11に示す画像符号化装置1は、図10に示す画像符号化装置1と同じく、1つの符号化対象のマクロブロックに含まれる全ての量子化後係数をCABAC符号化した場合の符号量と、そのマクロブロックの全ての動きベクトルを2CABAC符号化した場合の符号量と、そのマクロブロックの動きベクトル以外の全ての符号化情報をCABAC符号化した場合の符号量とを加算し、加算した値を予測値とする。
図11に示す画像符号化装置1は、更に、符号量予測部20において予測値を求める際に、マクロブロックの符号化条件に応じた補正を行なった上で予測値を求めることができる。つまり、符号量予測部20は、より正確なマクロブロック毎の符号量の予測値を出力することができる。更に、その予測値と閾値とを比較することにより、マクロブロック毎のI_PCM判定を行なうことができる。
(具体例9)
図12は、画像符号化装置1の機能的な構成の具体例9を示す機能ブロック図である。
図12に示す画像符号化装置1は、上述の各画像符号化装置1が備えるI_PCMデータバッファ4に換えて、ローカルデコード画バッファ12を備えている。また、画像符号化部10には逆量子化部17と逆直交変換部16とが加えられている。なお、逆量子化部17と逆直交変換部16とは図1〜図4および図6〜図11に図示していないが、上述のように画像符号化装置1が本来備える構成部である。
図12に示す画像符号化装置1において、量子化部7から出力される量子化後係数データは、逆量子化部17にも入力され、逆量子化される。更に、逆量子化されたデータは逆直交変換部16に入力され、逆直交変換されることでローカルデコード画となる。このローカルデコード画はローカルデコード画バッファ12に格納される。また、このローカルデコード画は面内予測部3によって取得され、次のマクロブロックの画面内予測で参照される。
また、図12に示す画像符号化装置1において、符号量予測部20およびI_PCM判定部30の機能的な構成は、図1〜図4および図6〜図11に示す各画像符号化装置における、いずれかの符号量予測部20およびI_PCM判定部30と同じ機能的な構成である。つまり、マクロブロック毎の2値化後の2値データの予測値、または、CABAC符号化後の符号量を符号量予測部20が出力し、その予測値と閾値記憶部32に記憶されている閾値とを比較することで、マクロブロック毎のI_PCM判定を行なう。
しかし、図12の画像符号化装置1は、上述の各画像符号化装置1とは異なり、予測値が閾値より大きい場合、動画像の原画データではなく、上述のローカルデコード画をI_PCMデータとして出力する。
I_PCMデータとして原画データを使用する場合、次のマクロブロックの画面内予測に使用される参照画像がローカルデコード画像から原画データに変更されるため、判定前に次のマクロブロックの画面内予測が開始されている場合、次のマクロブロックの画面内予測処理を再度実行しなければならない。
しかし、図12に示すような構成の画像符号化装置1は、ローカルデコード画像をI_PCMデータに使用するため、次のマクロブロックの画面内予測で参照される画素が変更されずに済み、次のマクロブロックの画面内予測の再実行処理が行われず、処理の速度が向上する。
以上のように、本発明の実施の形態の画像符号化装置1は、符号化対象のデータが2値化される前に、マクロブロック毎のI_PCM判定を行なうことができる。また、その判定は、複数種の情報を利用することや、マクロブロックの符号化条件を用いることにより、より確度の高い判定を行なうことができる。
このように、従来の画像符号化装置1より早いタイミングでI_PCM判定を行なうため、処理速度が向上する。また、結局はビットストリームとして出力されないデータを2値化するなどの無駄な処理を行なうことがなく、処理の効率を向上させることも可能である。
また、本発明の実施の形態の画像符号化装置1は、従来より早いタイミングで行なう上記判定の結果を利用し、符号化対象のマクロブロックの動き予測に係る処理をより効率的に行なうことができる。このことによっても、画像符号化装置1全体としての処理速度を向上させることができる。
以下、具体例10および具体例11として符号化対象のマクロブロックの動き予測の効率化について説明する。
(具体例10)
図13は、符号化対象のマクロブロックの動き予測に係る処理の効率化の一例を説明するための図である。
図13(A)は、予測動きベクトルの算出において参照されるマクロブロックを説明するための図である。図13(A)において1つの升目は1つのマクロブロックを表している。
図13(A)に示す符号化対象マクロブロックに対し、左隣接マクロブロックの動きベクトルはmvLXA、上隣接マクロブロックの動きベクトルはmvLXB、右上隣接マクロブロックの動きベクトルはmvLXCという。
符号化対象のマクロブロックの予測動きベクトルmvpLXは、mvLXA、mvLXBおよびmvLXCの3つの動きベクトルの中央値等を用いて求められる。
図13(B)は、図13(A)に示す複数のマクロブロックに記号を付与した図である。以下、[iv]とはローマ数字ivが付されたマクロブロックのことを指し、[v]とはローマ数vが付されたマクロブロックのことを指す。また、以下の処理は、例えば、図1に示す画像符号化装置1において行なわれる。また、他の図に示す各画像符号化装置1のいずれにおいてもI_PCM判定部30が動き予測部2に対し指示を与えるパスを有することで実現される。
まず、[iv]が動き予測によって符号化処理が行なわれた場合を考える。
動き予測によって、[iv]のmvLXが得られる。[iv]のmvLXは、[v]のmvLXAであるので、[v]は左隣接マクロブロックである[iv]のmvLXをmvLXAとして用いてmvpLXの算出、動き予測の処理を開始する。
次に、I_PCM判定部30により、[iv]について、I_PCMをビットストリームとして出力すると判定された場合、[iv]のmvLXは変更になる。つまり、これは[v]のmvLXAが変更されたことを意味するので、[v]のmvpLXの算出処理を再度実行しなければならない。
図13(C)は、動き予測に係る処理のタイムチャートを示す図である。図においてT0、T1、・・・のそれぞれは、所定の連続する期間を示す記号である。以下に各期間に行われる処理の概要を説明する。なお、予測動きベクトルmvpLXを、以下、単に「mvp」と記す。また、以下の処理において動き予測に係る処理は動き予測部2が行ない、DCT係数の算出は直交変換部6が行ない、量子化後係数の算出は量子化部7が行ない、I_PCM判定はI_PCM判定部30が行なう。
T0:[iv]の処理が開始され、[iv]のmvp算出と動き予測とが行なわれる。
T1:[iv]のDCT係数および量子化後係数の算出が行われる。また、[v]のmvp算出と動き予測とが行なわれる。
T2:[iv]のI_PCM判定が行なわれる。また、[v]のDCT係数および量子化後係数の算出が行なわれる。
ここで、[iv]のI_PCM判定の結果、[iv]についてI_PCMデータをビットストリームとして出力すると判定された場合、今までの[v]の処理をキャンセルし、[v]について再度mvpの算出を行なう旨の指示がI_PCM判定部30から動き予測部2に対してなされる。
T3:[v]のmvp算出と動き予測が行われる。また、[iv]のエントロピー符号化のための処理が行われる。
ここで、従来の画像符号化装置であれば、上述の例でいうと、[iv]のエントロピー符号化のための処理が開始された後に、I_PCM判定が行われる。そのためI_PCM判定の結果に基づく[v]の再度の動き予測は、早くてもT4に開始されることとなる。
しかしながら、本発明の実施の形態の画像符号化装置1においては、[iv]のエントロピー符号化のための処理が開始される前、具体的には2値化処理の開始前に、I_PCM判定が行われる。そのため、I_PCM判定の結果に基づく[v]の再度の動き予測に係る処理はT3に開始することができる。また、動き予測に係る処理に含まれるmvpの算出には、変更になる[iv]の動きベクトルは用いずに、[v]の上隣接と右上隣接のマクロブロックである[ii]および[iii]の動きベクトルが用いられる。
つまり、動き予測部2は、カレントマクロブロックと、符号化順で次に符号化される、次のマクロブロックとが隣接しているとき、カレントマクロブロックについての予測値が閾値より大きい場合、次のマクロブロックの隣接マクロブロックの情報を修正して、次のマクロブロックのmvpの算出を行なう。なお、カレントマクロブロックとは、例えば上述の[iv]であり、この場合、次のマクロブロックは上述の[v]である。
このように、従来より早いタイミングでI_PCM判定が行われることにより、あるマクロブロックについてI_PCMデータをビットストリームとして出力すると判定された場合、従来より早いタイミングで、動き予測に係る処理のやり直しを開始することができる。つまり、動き予測に係る処理を効率よく進めることができる。
結果として、画像符号化装置1全体としての処理速度を向上させることができる。
(具体例11)
上述の具体例10では、従来より早いタイミングで行われるI_PCM判定の結果を利用し、動き予測に係る処理のやり直しを従来より早いタイミングで開始する処理の流れを説明した。
ここで、図13(c)のタイムチャートに示すように動き予測に係る処理は、具体的には、予測動きベクトルであるmvpの算出と、そのmvpと参照するピクチャとから実際の動きベクトル(mv)を求める動き予測の処理と、mvpとmvの差分(mvd)を算出する処理とで構成される。具体的には、mvdの算出は、AVC/H.264に規格される以下の式に基づいて行われる。
mvLX[0]=mvpLX[0]+mvd_lX[mbPartIdx][subMbPartIdx][0] (式1)
mvLX[1]=mvpLX[1]+mvd_lX[mbPartIdx][subMbPartIdx][1] (式2)
である。式を変形して、差分を示すmvd_lXは以下の式で求められる。
mvd_lX[mbPartIdx][subMbPartIdx][0]=mvLX[0]−mvpLX[0] (式3)
mvd_lX[mbPartIdx][subMbPartIdx][1]=mvLX[1]−mvpLX[1] (式4)
なお、(式1)〜(式4)においてかっこ内の“0”はベクトルのx軸成分を意味し、“1”は、ベクトルのy軸成分を意味する。また“mbPartIdx”および“subMbPartIdx”は、それぞれ、マクロブロック内の位置を特定する情報である。
つまり、上述の(式3)および(式4)から、予測動きベクトル(mvp)と、そのmvpと実際の動きベクトル(mv)との差分(mvd)とは以下の数式を構成する。
mvd=mv−mvp (式5)
mvdは動きベクトルを示す情報として用いられ、小さいほうが、符号化した際の符号量が小さくなる、つまり、(式5)に示すように、mvとmvpとが近いほど、mvdの符号化後の符号量は小さくなる。従って、動き予測においては、符号化対象のマクロブロックについて、参照するピクチャ内でmvpとmvとの差分が小さな画素ブロックが優先的に探索される。
つまり、上述のように、I_PCM判定の結果に応じ、mvpの算出をやり直す場合、通常は、やり直しにより変更されたmvpに応じmvが変更されることになる。
しかしながら、本発明の実施の形態の画像符号化装置1は、mvを変更せずに、変更されたmvpと、すでに求められているmvとを用いmvdを算出する。これにより、動き予測の処理を速く完了することができる。
図14は、mvdの算出に係る処理のタイムチャートを示す図である。図においてT0、T1、・・・のそれぞれは、所定の連続する期間を示す記号である。また、図中の“iv”および“v”は、図13(B)に示す、複数のマクロブロックに付与された記号に対応する。以下に各期間に行われる処理の概要を説明する。なお、以下の処理において動き予測に係る処理は動き予測部2が行ない、DCT係数の算出は直交変換部6が行ない、量子化後係数の算出は量子化部7が行ない、I_PCM判定はI_PCM判定部30が行なう。
T0:[iv]の処理が開始され、[iv]のmvp算出と動き予測が行なわれる。
T1:[iv]のDCT係数、量子化後係数およびmvdの算出が行なわれる。また、[v]のmvp算出と動き予測とが行なわれる。
T2:[iv]のI_PCM判定が行なわれる。[v]のDCT係数および量子化後係数の算出が行なわれる。ここで、[iv]のI_PCM判定の結果、[iv]についてI_PCMデータをビットストリームとして出力すると判定された場合、次の期間T3で[v]のmvd再計算を行なう旨の指示がI_PCM判定部30から動き予測部2に対してなされる。
T3:[v]のI_PCM判定と、mvdの再計算が行われる。このmvdの再計算は、具体的には予測動きベクトルであるmvpが算出され、このmvpと、すでにT2において求められているmvとの差分を求めることにより、mvdが算出される。また、[iv]のエントロピー符号化のための処理が行なわれる。
T4:[v]のエントロピー符号化のための処理が行なわれる。
このように、従来より早いタイミングでI_PCM判定が行われることにより、あるマクロブロックについてI_PCMデータをビットストリームとして出力すると判定された場合、従来より早いタイミングで、動き予測のやり直しを開始することができる。
また、動き予測部2は、カレントマクロブロックと次のマクロブロックとが隣接しているとき、次のマクロブロックに対してmvp、mv、mvdの算出を行い、カレントマクロブロックについての予測値が閾値より大きい場合、次のマクロブロックの隣接マクロブロックの情報を修正してmvpを再度算出し、そのmvpと既に求められているmvとを用いて、次のマクロブロックのmvdを再度算出する。
つまり、動き予測の中でmvdを算出する際に、新たなmvを求めることなく、すでに求められているmvと変更されたmvpとでmvdを求める。これにより、やり直しの動き予測を早く完了させることができる。結果として、画像符号化装置1全体としての処理速度を向上させることができる。
なお、mvdの最初の算出を、直前のマクロブロックのI_PCM判定の前ではなく、I_PCM判定の後に行ってもよい。例えば、図14に示すタイムチャートを用いると、[v]のmvd算出を、T2において、[iv]のI_PCM判定の後に行なってもよい。
この場合、図14に示すタイムチャートでは、[iv]についてI_PCMデータをビットストリームとして出力すると判定されているため、[v]のmvdの算出はT2で行なわれ、更にT3で再度行なわれている。しかし、上述のように、[iv]のI_PCM判定の後に、mvdの最初の算出を行なう場合、[iv]のI_PCM判定によりmvpが変更されたか否かに関わらず、その時点のmvpを用いてmvdの算出を行えばよい。
つまり、動き予測部2は、カレントマクロブロックと次のマクロブロックとが隣接しているとき、次のマクロブロックに対してmvpおよびmvの算出を行う。また、mvdが算出される前にカレントマクロブロックについての予測値と閾値との比較が行われ、その比較の結果、予測値が閾値より大きい場合、動き予測部2は、次のマクロブロックの隣接マクロブロックの情報を修正して、mvpを再度算出し、そのmvpとすでに求められているmvとを用いて次のマクロブロックのmvdを算出する。
これにより、[iv]のI_PCM判定の結果に関わらず、mvdの算出を1回行なうだけでよいことになる。
以上のように、本発明の実施の形態の画像符号化装置1は、動き判定に係る処理、具体的にはmvpの再計算においても、具体例10の説明で述べたように、I_PCMの判定が早く行われるので、mvpの再算出からmvの再探索までを早く実行することができる。
また、具体例11の説明で述べたように、mvdの再計算を行なう動き予測において、mvpが変更になった場合であっても、既存のmvを用いてmvdを算出する。これにより、動き予測を早く完了することができる。
また、これら、mvpの再計算およびmvdの再計算のトリガは、上述のI_PCM判定の結果出力であるため、従来よりも早いタイミングでmvpの再計算およびmvdの再計算を開始することができる。
このように、本発明の実施の形態の画像符号化装置1は、2値化したデータをエントロピー符号化する画像符号化装置であって、画像データをより高速に処理することができる。