(57)【特許請求の範囲】
【請求項１】
入力画像内の符号化対象マクロブロックを、複数のサイズを有する面内予測ブロックを単位として面内予測符号化する画像符号化装置であって、
前記入力画像内の前記符号化対象マクロブロックに属する画素の画素値に基づいて、前記符号化対象マクロブロック内における４×４画素ブロックサイズの分散値を算出し、さらに前記符号化対象マクロブロック内における１６×１６画素ブロックサイズの分散値を算出する特徴量算出部と、
前記算出した１６×１６画素ブロックサイズの分散値が小さいと判断した場合であって、（１）前記算出した４×４画素ブロックサイズの分散値が前記１６×１６画素ブロックサイズの分散値よりも小さくなるブロックが所定数以上ある場合、前記面内予測ブロックのサイズを４×４画素ブロックサイズと設定し、（２）前記算出した４×４画素ブロックサイズの分散値が前記１６×１６画素ブロックサイズの分散値よりも小さくなるブロックが所定数未満である場合、前記面内予測ブロックのサイズを１６×１６画素ブロックサイズと設定するサイズ決定部と、
決定された前記サイズの面内予測ブロックを単位として、前記符号化対象マクロブロックを面内予測符号化する符号化部とを備える
画像符号化装置。
【請求項２】
入力画像内の符号化対象マクロブロックを、複数のサイズを有する面内予測ブロックを単位として面内予測符号化する画像符号化方法であって、 
前記入力画像内の前記符号化対象マクロブロックに属する画素の画素値に基づいて、前記符号化対象マクロブロック内における４×４画素ブロックサイズの分散値を算出し、さらに前記符号化対象マクロブロック内における１６×１６画素ブロックサイズの分散値を算出し、
前記算出した１６×１６画素ブロックサイズの分散値が小さいと判断した場合であって、（１）前記算出した４×４画素ブロックサイズの分散値が前記１６×１６画素ブロックサイズの分散値よりも小さくなるブロックが所定数以上ある場合、前記面内予測ブロックのサイズを４×４画素ブロックサイズと設定し、（２）前記算出した４×４画素ブロックサイズの分散値が前記１６×１６画素ブロックサイズの分散値よりも小さくなるブロックが所定数未満である場合、前記面内予測ブロックのサイズを１６×１６画素ブロックサイズと設定し、
決定された前記サイズの面内予測ブロックを単位として、前記符号化対象マクロブロックを面内予測符号化する、
画像符号化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動画像をＨ．２６４規格に従って符号化する画像符号化装置および方法に関するものである。
【背景技術】
【０００２】
近年、ＢＤ／ＤＶＤレコーダ等の録画機器やカムコーダなどの撮像機器でハイビジョン動画像を記録する際、従来のＭＰＥＧ−２よりも符号化効率が高いＨ．２６４規格を用いた記録方式が主流となりつつある。
【０００３】
Ｈ．２６４規格では、非特許文献１に記載されているように、面内予測符号化方式が採用されている。この面内予測符号化方式では、（１）予測ブロックサイズ、（２）予測方向の情報（これらをあわせて「予測モード」と記す。）、および（３）ブロック画像と予測画像との残差信号が符号化される。さらに、Ｈ．２６４規格のＢａｓｅｌｉｎｅ  ｐｒｏｆｉｌｅおよびＭａｉｎ  ｐｒｏｆｉｌｅにおいては、面内予測符号化の単位となる予測ブロックサイズは、輝度信号に対しては、符号化対象マクロブロック単位である１６×１６画素ブロック、直交変換単位である４×４画素ブロックの２種類が定められており、色差信号に関しては、８×８画素ブロックのみが定められている。図１２は、Ｈ．２６４規格のＢａｓｅｌｉｎｅ  ｐｒｏｆｉｌｅで規定されている面内予測符号化方式の予測モードを示す図である。図１２（ａ）は、４×４画素ブロックの予測モードを示す図であり、図１２（ｂ）は、１６×１６画素ブロックの予測モードを示す図である。予測方向は、図１２（ａ）に示すように、輝度信号の４×４画素ブロックの予測では平均値予測を含めて９通りの予測方向が定められている。また、図１２（ｂ）に示すように、輝度信号の１６×１６画素ブロックと色差信号の８×８画素ブロックの予測では４通りの予測方向が定められており、予測ブロック毎に１方向を選択する。１つのマクロブロックで必要な予測方向の情報量は、予測ブロックサイズに依存して増減し、予測ブロックサイズが小さくなるとマクロブロック内の予測ブロックの数が増えるために情報量が増えることになる。
【０００４】
Ｈ．２６４規格に基づいて符号化する際、システム的に設定される符号量の上限を超えないように発生符号量を制御する必要があり、種々の制御方式が提案されている。その一方式として、次のピクチャ符号量が上限を超えそうなときに面内予測の予測サイズを１６×１６画素ブロックの固定とし、かつ予測方向を周辺画素の平均値予測に固定することで発生する符号量を抑制する方式が提案されている（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８-２２４０５号公報
【非特許文献】
【０００６】
【非特許文献１】ＩＳＯ／ＩＥＣ  １４４９６−１０：２００５
【発明の概要】
【発明が解決しようとする課題】
【０００７】
画像を符号化する際、前述の通り発生符号量を制御する必要があり、通常は量子化幅を制御することで発生符号量を制御する。しかし、発生符号量を急激に抑制するためには量子化幅を大きくするだけでは不十分な場合がある。発生符号量を抑制するため、画像信号以外の情報（以下、「オーバーヘッド」と記す。）を減らす必要がある。
【０００８】
そこで、前述の特許文献１では、面内予測符号化によるオーバーヘッドを削減して符号量を抑制する方式が開示されている。しかし、例えば入力画像が画素毎に白と黒の市松模様になっている場合、斜め方向の予測ができない１６×１６画素ブロック予測モードに固定すると、オーバーヘッドは減るものの、予測が全く当たらないため残差成分が非常に大きくなってしまい、符号量を抑制することができない。或いは、符号量を抑制するために量子化幅を大きくすると、著しい画質劣化を引き起こす事になる。
【０００９】
そこで、本発明は上記の事情に鑑みてなされたものであり、入力画像のパターンにかかわらず、画質劣化を抑制し、かつ、面内予測符号化における発生符号量を抑制するのに最適な面内予測モードを選択する事が可能な画像符号化装置および方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
また、上記の課題を解決するために、本発明に係る画像符号化装置は、入力画像内の符号化対象マクロブロックを、複数のサイズを有する面内予測ブロックを単位として面内予測符号化する画像符号化装置であって、前記入力画像内の前記符号化対象マクロブロックに属する画素の画素値に基づいて、前記符号化対象マクロブロック内における４×４画素ブロックサイズの分散値を算出し、さらに前記符号化対象マクロブロック内における１６×１６画素ブロックサイズの分散値を算出する特徴量算出部と、前記算出した１６×１６画素ブロックサイズの分散値が小さいと判断した場合であって、（１）前記算出した４×４画素ブロックサイズの分散値が前記１６×１６画素ブロックサイズの分散値よりも小さくなるブロックが所定数以上ある場合、前記面内予測ブロックのサイズを４×４画素ブロックサイズと設定し、（２）前記算出した４×４画素ブロックサイズの分散値が前記１６×１６画素ブロックサイズの分散値よりも小さくなるブロックが所定数未満である場合、前記面内予測ブロックのサイズを１６×１６画素ブロックサイズと設定するサイズ決定部と、決定された前記サイズの面内予測ブロックを単位として、前記符号化対象マクロブロックを面内予測符号化する符号化部とを備える。
また、上記の課題を解決するために、本発明に係る画像符号化装置は、入力画像内の符号化対象マクロブロックを、複数のサイズを有する面内予測ブロックを単位として面内予測符号化する画像符号化装置であって、前記入力画像内の前記符号化対象マクロブロックに属する画素の画素値に基づいて、当該画素値の統計情報を算出する特徴量算出部と、算出された前記統計情報に基づいて、前記符号化対象マクロブロック内で所定の方向に対する画素値の変化の度合いが小さいほど、より大きい面内予測ブロックサイズが選択されるよう所定の基準に従って、前記面内予測ブロックサイズを決定するサイズ決定部と、決定された前記サイズの面内予測ブロックを単位として、前記符号化対象マクロブロックを面内予測符号化する符号化部とを備える。
【００１１】
なお、本発明は、画像符号化装置として実現できるだけでなく、画像符号化装置を備える携帯情報端末や放送装置、画像符号化装置を構成する処理手段をステップとする方法として実現したり、それらステップをコンピュータに実行させるプログラムとして実現したり、そのプログラムを記録したコンピュータ読み取り可能なＣＤ−ＲＯＭなどの記録媒体として実現したり、そのプログラムを示す情報、データ又は信号として実現したりすることもできる。そして、それらプログラム、情報、データ及び信号は、インターネット等の通信ネットワークを介して配信してもよい。
【発明の効果】
【００１２】
以上のように本発明によれば、入力画像の画像パターンにかかわらず、面内予測符号化における発生符号量を抑制するのに最適な面内予測モードを選択することが可能となる。
【図面の簡単な説明】
【００１３】
【図１】図１は、本実施の形態１に係る画像符号化装置の構成を示すブロック図である。
【図２】図２は、図１に示した面内予測ブロックサイズ決定部の詳細な構成を示すブロック図である。
【図３】図３は、本実施の形態１において面内予測ブロックサイズを決定する処理の一例を説明するフローチャートである。
【図４】図４は、本実施の形態１において面内予測ブロックサイズを決定する処理の他の一例を説明するフローチャートである。
【図５】図５は、エッジおよびグラデーションを表す画素値の変化を示す図である。
【図６】図６は、水平方向および垂直方向の隣接画素間の画素値の差分の算出方法を示す概念図である。
【図７】図７は、閾値０から閾値３、および量子化パラメータＱＰを用いて、輝度の分散値の閾値を算出する処理を説明するフローチャートである。
【図８】図８は、実施の形態２において、輝度の分散値が１６×１６画素マクロブロックよりも小さい４×４画素ブロックの個数が多いときに、４×４画素ブロックを単位として面内予測を行った方が発生符号量を低減できる画像の一例を示す図である。
【図９】図９は、図８に示したマクロブロック内の画像を、マクロブロックの上から１６画素の位置で水平方向にスキャンした場合の各画素の残差である輝度を示す図である。
【図１０】図１０は、本実施の形態２において面内予測ブロックサイズを決定する処理の一例を説明するフローチャートである。
【図１１】図１１は、実施の形態３のデコーダのバッファシミュレーションにおける発生符号量の制御を説明する図である。
【図１２】図１２は、Ｈ．２６４規格のＢａｓｅｌｉｎｅ  ｐｒｏｆｉｌｅで規定されている面内予測符号化方式の予測モードを示す図である。
【発明を実施するための形態】
【００１４】
以下、本発明の実施形態について、図面を用いて説明する。なお、本発明について、以下の実施の形態および添付の図面を用いて説明を行うが、これは例示を目的としており、本発明がこれらに限定されることを意図しない。また、これらの実施の形態に示される技術内容を互いに組み合わせたものも本願発明に含まれることは言うまでもない。
【００１５】
（実施の形態１）
図１は、本実施の形態１に係る画像符号化装置の構成を示すブロック図である。図１に示すように画像符号化装置１００は、ブロック特徴量算出部１０２、面内予測ブロックサイズ決定部１０３、符号化部１０５、およびレート制御部１０６を備える。さらに、符号化部１０５は、内部に、減算器１０５１、面内予測部１０５２、面内予測方向決定部１０５３、Ｔ・Ｑ（Ｔｒａｎｓｆｏｒｍａｔｉｏｎ  ａｎｄ  Ｑｕａｎｔｉｚａｔｉｏｎ）部１０５４、ＩＱ・ＩＴ（Ｉｎｖｅｒｓｅ  Ｑｕａｎｔｉｚａｔｉｏｎ  ａｎｄ  Ｉｎｖｅｒｓｅ  Ｔｒａｎｓｆｏｒｍａｔｉｏｎ）部１０５５、加算器１０５６、ＤＢＦ（Ｄｅｂｌｏｃｋｉｎｇ  Ｆｉｌｔｅｒ）部１０５７、フレームメモリ１０５８、周辺画素メモリ１０５９、およびエントロピー符号化部１０５０を備える。画像符号化装置１００は、外部から取得した入力画像１０１のブロック特徴量を算出し、算出されたブロック特徴量と、外部からの入力により外部のレジスタまたはメモリに設定された制御パラメータ１０４とを用いて、入力画像１０１をどのブロックサイズで面内予測するかを決定し、決定されたブロックサイズで入力画像１０１を面内予測し、さらに符号化して得られたストリーム１０７を出力する画像符号化装置である。ここで、ブロック特徴量は、画素値の統計情報であり、例えば、輝度値の分散値、平均値、隣接画素差分値和、隣接画素差分絶対値和、およびダイナミックレンジなどである。なお、図１では、本願発明の主眼は面内予測における処理であるので、面内予測と関係がない処理部、例えば、面間予測を行う処理部などの構成の記載を省略している。
【００１６】
本実施の形態においては、Ｈ．２６４規格のＢａｓｅｌｉｎｅ  ｐｒｏｆｉｌｅもしくはＭａｉｎ  ｐｒｏｆｉｌｅに基づいて符号化することを前提とする。Ｈ．２６４規格のＢａｓｅｌｉｎｅ  ｐｒｏｆｉｌｅもしくはＭａｉｎ  ｐｒｏｆｉｌｅの場合、輝度信号の面内予測ブロックサイズは１６×１６画素と４×４画素の何れかとなる。また、本実施の形態では、面内予測のモードを決定する方式として、ブロックサイズを決定した後に予測方向を決定する方式を前提とする。すなわち、Ｈ．２６４規格のＨｉｇｈ  ｐｒｏｆｉｌｅで用いられる輝度信号の８×８画素ブロックサイズは用いない。また、面内予測を用いた符号化処理に焦点をあてて説明するため、画面間の予測を用いた符号化処理に関する説明は省略する。
【００１７】
Ｈ．２６４規格では、１画面に相当する入力画像１０１を画像の左上から右下に向かって水平方向に順次、１６×１６画素の矩形領域（マクロブロック、以下「ＭＢ」と記す。）に分割し、分割後のＭＢを単位として符号化処理を行う。
【００１８】
ブロック特徴量算出部１０２は、符号化対象ＭＢの特徴、すなわち、ＭＢ内における画素値の変化の傾向を示すブロック特徴量を算出する。ブロック特徴量算出部１０２は、ブロック特徴量として、例えば、ＭＢ（１６×１６画素）単位や直交変換ブロック（４×４画素）単位での輝度値の平均、分散値、ダイナミックレンジ、隣接画素差分絶対値和などを算出し、ブロック特徴量として出力する。なお、本実施の形態１では、ブロック特徴量算出部１０２はブロック特徴量をＭＢ単位で算出するものとする。
【００１９】
例えば、輝度値の平均値ａ´は、次の（式１）で求められる。ただし、Ｍはブロック内の水平方向の画素数、Ｎはブロック内の垂直方向の画素数を示し、ｉは１から１ずつ増加してＮまでの値をとる整数を示し、ｊは１から１ずつ増加してＭまでの値をとる整数を示し、ａ（ｉ，ｊ）はｉ行ｊ列の画素の輝度値を示す。ここでは、Ｎ＝Ｍ＝１６である。ブロック特徴量算出部１０２は、ブロックごとに、（式１）の演算を行うことにより、各ブロックの輝度値の平均値ａ´を算出する。なお、コンピュータを用いた以下のような演算式の計算は周知技術であるので、演算の具体的処理については説明を省略する。
【００２０】
【数１】
0005470405.tif 000002
【００２１】
また、輝度の分散値Ｓ2は、次の（式２）で求められる。（式２）において、Ｍはブロック内の水平方向の画素数、Ｎはブロック内の垂直方向の画素数、ａ´は輝度値の平均値、ａ（ｉ，ｊ）はブロック内のｉ行ｊ列の画素の輝度値、ｉは１から１ずつ増加してＮまでの値をとる整数、ｊは１から１ずつ増加してＭまでの値をとる整数を示す。ブロック特徴量算出部１０２は、ブロックごとに、次式の演算を行うことにより、各ブロックの輝度値の分散値Ｓ2を算出する。
【００２２】
【数２】
0005470405.tif 000003
【００２３】
さらに、ブロック特徴量として、ダイナミックレンジは、例えば、輝度値の場合、輝度値の最小値から最大値までの幅、または輝度値の最小値と最大値との比率（ｄＢ）で求められる。
【００２４】
また、例えば、水平方向（行方向）の輝度値の隣接画素差分絶対値和ａhは、次の（式３）で求められ、垂直方向（列方向）の輝度値の隣接画素差分絶対値和ａvは、次の（式４）で求められる。なお、（式３）および（式４）において、Ｋはブロックの一辺の画素数を示し、ａ（ｉ，ｊ）はブロック内でｉ行ｊ列に位置する画素の輝度値を示している。（式３）において、ｉは１から１ずつ増加してＫまでの値をとる整数を示し、ｊは１から１ずつ増加して（Ｋ−１）までの値をとる整数を示している。また、（式４）において、ｉは１から１ずつ増加して（Ｋ−１）までの値をとる整数を示し、ｊは１から１ずつ増加してＫまでの値をとる整数を示している。
【００２５】
【数３】
0005470405.tif 000004
【００２６】
【数４】
0005470405.tif 000005
【００２７】
面内予測ブロックサイズ決定部１０３は、ブロック特徴量算出部１０２によって算出されたブロック特徴量、外部から入力される制御パラメータ１０４、および後述のレート制御部１０６によって算出されるレート制御情報を用いて、面内予測ブロックサイズを４×４と１６×１６の何れかに決定する。詳細は後述する。
【００２８】
符号化部１０５は、Ｈ．２６４規格のＢａｓｅｌｉｎｅ  ｐｒｏｆｉｌｅもしくはＭａｉｎ  ｐｒｏｆｉｌｅに従って符号化処理を行う。
【００２９】
面内予測方向決定部１０５３は、面内予測ブロックサイズが１６×１６であれば、図１２（ｂ）に示したモード０からモード３までの４つの予測方向の中から、ＭＢあたり一つの予測方向を選択する。面内予測ブロックサイズが４×４であれば、図１２（ａ）に示したモード０からモード８までの９つの予測方向の中から、４×４画素ブロック毎に一つの予測方向を選択する。ブロックサイズが４×４であれば、ＭＢあたり１６個の４×４画素ブロックが存在し、それぞれの予測方向を決定する必要がある。予測方向を決定する方式をここでは規定しないが、一般的な方式として例えば、ブロック内の画素値と予測画像の差分絶対値和が最も小さくなる予測方向を選ぶ方式がある。
【００３０】
面内予測部１０５２は、面内予測ブロックサイズ決定部１０３が決定した面内予測ブロックサイズ、および面内予測方向決定部１０５３が決定した予測方向に従って、図１２（ａ）および図１２（ｂ）に示したように、対象ブロックの周辺画素を用いて予測画像を生成する。その生成方式は非特許文献１に詳細が記述されている。
【００３１】
減算器１０５１は、符号化対象ＭＢの画像と面内予測部１０５２が生成した予測画像との差分画像を生成する。
【００３２】
Ｔ・Ｑ部１０５４は、差分画像を直交変換した後、量子化を行い、量子化係数を算出する。直交変換には、例えば、ＤＣＴ変換（Ｄｉｓｃｒｅｔｅ  Ｃｏｓｉｎｅ  Ｔｒａｎｓｆｏｒｍ）を用いる。さらに、Ｔ・Ｑ部１０５４は、直交変換によって得られた直交変換係数を量子化することによって、量子化係数を算出する。
【００３３】
エントロピー符号化部１０５０は、Ｔ・Ｑ部１０５４によって算出された量子化係数と、量子化に用いられた量子化幅（「量子化ステップ」ともいう）、面内予測のブロックサイズ、各ブロックの予測方向等のサイド情報（「付加情報」ともいう）を符号化してストリーム１０７を出力する。
【００３４】
Ｔ・Ｑ部１０５４によって算出された量子化係数から、画像を再構成するローカルデコード処理は、以下の処理を行う。
【００３５】
ＩＱ・ＩＴ部１０５５は、量子化係数を逆量子化および逆直交変換処理を行い、再構成差分画像を生成する。なお、ＩＱ・ＩＴ部１０５５では、Ｔ・Ｑ部１０５４でのＤＣＴ変換に対応して、ＤＣＴ変換の逆処理であるＩＤＣＴ変換（Ｉｎｖｅｒｓｅ  Ｄｉｓｃｒｅｔｅ  Ｃｏｓｉｎｅ  Ｔｒａｎｓｆｏｒｍ）を行う。
【００３６】
加算器１０５６は、面内予測部１０５２で生成した予測画像に、ＩＱ・ＩＴ部１０５５で生成された再構成差分画像を加算して、再構成画像を生成する。
【００３７】
ＤＢＦ部１０５７は、再構成画像に対してデブロックフィルタ処理を行い、再構成フィルタ画像を生成する。
【００３８】
ところで、Ｈ．２６４規格では面内予測を行うブロックの周辺画素を用いて面内予測を行うが、デブロックフィルタ処理を行う前の画素を用いる事が規定されている。そのため、周辺画素メモリ１０５９では、再構成画像のうち面内予測に用いることができる画素のみを保持する。
【００３９】
フレームメモリ１０５８は、画面間予測を行うときの参照画像として、ＤＢＦ部１０５７で生成された再構成フィルタ画像を保持する。
【００４０】
レート制御部１０６は、符号化部１０５の符号化結果から、レート制御情報として平均量子化幅、発生符号量の遷移、バッファの占有状況等を算出し、次の入力画像を符号化するときの目標符号量、量子化幅等を決定する。
【００４１】
ここで、面内予測モードと符号量との関係を説明する。４×４面内予測モードは４×４画素ブロック単位で面内予測を行うため、１６×１６画素ブロック単位での面内予測に比べて、よりきめ細かく面内予測を行うことができるうえ、それぞれの４×４画素ブロック毎に９つの予測方向から１つを選ぶことができるため予測性能が向上し、画素値の残差成分を少なくする事ができるというメリットがある。しかし、ＭＢあたり１６個の４×４画素ブロックがあり、それぞれのブロックに対して予測方向を示す情報をストリームに埋め込む必要があるため、オーバーヘッドが増えるというデメリットがある。一方、１６×１６面内予測モードは１６×１６画素ブロック単位での面内予測を行うため、画素値が一様なＭＢや、グラデーション、水平もしくは垂直方向にエッジがあるＭＢなどで残差成分を少なくできるが、これ以外の画像では残差成分が多くなってしまうというデメリットがある。ここで、画素値が一様であるとは、画素値のばらつきが少ない、画素値の変化幅が小さい、すなわち、画像が平坦であることを意味する。しかし、４×４面内予測と異なり、予測方向の情報はＭＢあたり１つで良いため、オーバーヘッドを削減できるというメリットがある。符号化対象ＭＢの画像の特徴に従って適切なサイズを選択することで、符号量を抑制しつつ画質を維持することができる。また、量子化幅が大きく（粗く）なるにつれて、直交変換係数の高域成分が削られるため、すなわち、差分画像の画素値が平坦化されるため、オーバーヘッドの少ない１６×１６面内予測モードを選ぶ方が符号量抑制の観点で有利となる。しかし、周辺画素との相関がほとんど無く、高域成分が十分に削られない場合や、例えばＭＢ内の画素値が白と黒の市松模様の画像のように斜め方向からの予測が有効な場合などは、４×４面内予測モードを選択する方が残差成分をより少なくできる予測モードを選択できるので、１６×１６面内予測モードを選択するよりも符号量を抑制できる点で有利となる。
【００４２】
図２は、図１に示した面内予測ブロックサイズ決定部の詳細な構成を示すブロック図である。次に図２を用いて面内予測ブロックサイズ決定部１０３の詳細を説明する。図２に示すとおり、面内予測ブロックサイズ決定部１０３は、ブロックサイズ決定部１０３１とパラメータ調整部１０３２とで構成される。ブロックサイズ決定部１０３１は、予測ブロックサイズを決定する特徴量として例えば輝度の分散値を用いて、閾値との比較を行うことでブロックサイズを決定する。図３は、本実施の形態において面内予測ブロックサイズを決定する処理の一例を説明するフローチャートである。予測ブロックサイズを決定する処理のフローチャートは図３に示すとおりである。ブロックサイズ決定部１０３１は、ブロック特徴量算出部１０２により、Ｍ＝Ｎ＝１６として（式２）を用いて算出される、ＭＢの輝度分散値と閾値とを比較して（Ｓ３０１）、ＭＢの輝度分散値が閾値以下である場合は（Ｓ３０１でＹｅｓ）、符号化対象ＭＢを輝度が一様なＭＢであると判定して予測ブロックサイズに１６×１６画素ブロックを選び（Ｓ３０２）、それ以外（Ｓ３０１でＮｏ）は４×４画素ブロックを選択する（Ｓ３０３）。
【００４３】
図３では、ＭＢの輝度が一様であるか否かを、輝度の分散値を閾値と大小比較することによって判定し、その判定結果に従って、予測ブロックサイズを決定する最も簡単な一例について説明した。しかし、さらに精度よく発生符号量を抑制するためには、入力画像のエッジの方向やグラデーションなども考慮に入れて予測ブロックサイズを決定するのが好ましい。図４は、本実施の形態において面内予測ブロックサイズを決定する処理の他の一例を説明するフローチャートである。ブロックサイズ決定部１０３１は、まず、ＭＢの輝度が一様であるか否かを判定する（Ｓ４０１）。なお、Ｓ４０１におけるブロックサイズ決定部１０３１の判定方法は、図３のＳ３０１と同じである。すなわち、ブロックサイズ決定部１０３１は、ブロック特徴量算出部１０２によって算出されたＭＢの輝度の分散値を閾値と比較して、輝度の分散値が閾値以下であれば、ＭＢの輝度が一様であると判定する。輝度の分散値が閾値を超えれば、ＭＢの輝度が一様ではないと判定する。
【００４４】
ブロックサイズ決定部１０３１は、ＭＢの輝度が一様であると判定した場合には（Ｓ４０１でＹｅｓ）、予測ブロックサイズに１６×１６画素ブロックを選び（Ｓ４０４）、それ以外の場合は（Ｓ４０１でＮｏ）、さらに、ＭＢがグラデーションであるか否かを判定する（Ｓ４０２）。グラデーションの判定については、後に、図５および図６を用いて詳しく説明する。
【００４５】
ブロックサイズ決定部１０３１は、ＭＢがグラデーションであると判定した場合には（Ｓ４０２でＹｅｓ）、予測ブロックサイズに１６×１６画素ブロックを選び（Ｓ４０４）、それ以外の場合は（Ｓ４０２でＮｏ）、さらに、ＭＢ内に水平方向または垂直方向のエッジがあるか否かを判定する（Ｓ４０３）。エッジの有無の判定については、後に、図５を用いて詳しく説明する。
【００４６】
ブロックサイズ決定部１０３１は、ＭＢ内に水平方向又は垂直方向のエッジがあると判定した場合には（Ｓ４０３でＹｅｓ）、予測ブロックサイズに１６×１６画素ブロックを選び（Ｓ４０４）、それ以外の場合は（Ｓ４０３でＮｏ）、予測ブロックサイズに４×４画素ブロックを選択する（Ｓ４０５）。
【００４７】
まず、ＭＢ内に垂直方向または水平方向のエッジがあるか否かを判定する方法について説明する。
【００４８】
図５は、エッジおよびグラデーションを表す画素値の変化を示す図である。図５（ａ）は、３×３画素のブロックを例として、エッジの一例を輝度の変化で表した図である。図５（ａ）左は、ブロック内の各画素の輝度を数値で表したものである。ここでは、ＢＴ．７０９規格の８ビット精度で１６から２３５の間の値を用いた場合を想定する。図５（ａ）右は、輝度を縦軸として、図５（ａ）左のブロックの各画素の輝度の変化を棒グラフで表したものである。ＭＢ内にエッジがある場合には、エッジの方向と垂直な方向で、隣接画素とエッジに相当する画素との間で急激に輝度値が変化する。さらに、エッジの方向で、隣接画素同士は同じような輝度値をとる。例えば、図５（ａ）右のグラフに示すように、第２列の画素では、第１列の画素と比較して、輝度値が急激に変化し、輝度値の最大値に近い値となっている。また、第２列の画素の輝度値は、列方向にほぼ同じ値をとっている。従って、第２列の画素がエッジに相当することが分かる。なお、図５（ａ）では、エッジが垂直方向に１画素の幅であるものを例としているが、第３列が第２列と同じ値をとった場合でも、第２列の画素がエッジに相当する。
【００４９】
エッジの場合、エッジの方向には隣接画素間の輝度値の差分はほぼ０となり、エッジに垂直な方向には隣接画素間の輝度値の差分は非常に大きな値となる。このようなエッジの特徴は、ブロック特徴量算出部１０２が算出した垂直方向および水平方向の隣接画素差分絶対値和を用いて検出することができる。すなわち、図５（ａ）右に示すように、垂直方向にエッジがある場合には、垂直方向（列方向）の輝度値の隣接画素差分絶対値和ａvは０に近い値となり、水平方向（行方向）の輝度値の隣接画素差分絶対値和ａhは、非常に大きい値となる傾向がある。従って、垂直方向にエッジがあるか否かは、垂直方向の隣接画素差分絶対値和ａvが、あらかじめ定めた閾値Ｔｈv（ａv）以下であり、かつ、水平方向の隣接画素差分絶対値和ａhが、あらかじめ定めた閾値Ｔｈv（ａh）を超えるか否かを判定することによって、判定することができる。逆に、水平方向にエッジがあるか否かは、水平方向の隣接画素差分絶対値和ａhが、あらかじめ定めた閾値Ｔｈh（ａh）以下であり、かつ、垂直方向の隣接画素差分絶対値和ａvが、あらかじめ定めた閾値Ｔｈh（ａv）を超えるか否かを判定することによって、判定することができる。
【００５０】
次に、ＭＢがグラデーションであるか否かを判定する方法について説明する。
【００５１】
図５（ｂ）は、３×３画素のブロックを例として、グラデーションの一例を輝度の変化で表した図である。図５（ｂ）左は、ブロック内の各画素の輝度を数値で表したものである。図５（ｂ）右は、輝度を縦軸として、図５（ｂ）左のブロックの各画素の輝度の変化を棒グラフで表したものである。ＭＢ内の画像がグラデーションである場合は、輝度値（色差でもよい）が一方向に向かって徐々に増加または徐々に低減する傾向がある。図５（ｂ）右のグラフに示すように、図５（ｂ）左のブロックの例では、各画素の輝度値が垂直方向にはほとんど変化せず、水平方向右向きに徐々に増加していることがわかる。このようなエッジおよびグラデーションの特徴は、ブロック特徴量算出部１０２が算出した垂直方向および水平方向の隣接画素差分絶対値和、またはブロック特徴量算出部１０２が各ＭＢの垂直方向および水平方向の隣接画素差分絶対値和を算出する途中の値を用いて検出することができる。
【００５２】
図６は、水平方向および垂直方向の隣接画素間の画素値の差分の算出方法を示す概念図である。図６（ａ）では、矢印で示す水平方向（行方向）の隣接画素間で画素値の差分を算出することを示し、図６（ｂ）では、矢印で示す垂直方向（列方向）の隣接画素間で画素値の差分を算出することを示している。輝度についての水平方向での隣接画素差分は、ブロック内の行ごとに計算される。式で表せば、水平方向の隣接画素間の輝度値の差分は、｛ａ（ｉ，ｊ）−ａ（ｉ，ｊ＋１）｝で表される。また、垂直方向での隣接画素差分は、ブロック内の列ごとに計算される。式で表せば、垂直方向の隣接画素間の輝度値の差分は、｛ａ（ｉ，ｊ）−ａ（ｉ＋１，ｊ）｝で表される。
【００５３】
グラデーションの場合、隣接画素間の輝度値の差分は、ある方向では一様に０に近い値となり、かつ、その方向と垂直になる方向では差分の大きさが閾値以下でほぼ一定の値となる傾向がある。従って、ブロックサイズ決定部１０３１は、ブロック特徴量算出部１０２で算出されるこれらの隣接画素間の輝度値の差分がいずれも０に近くなる方向があるか否かを検出する。すなわち、ブロックサイズ決定部１０３１は、垂直または水平方向で隣接画素間の画素値の変化の度合いが小さくなるか否かを検出する。そのような方向が検出された場合には、検出された方向に対して垂直の方向で隣接画素間の輝度値の差分の符号が一定であるか、隣接画素間の輝度値の差分があらかじめ定めておいた閾値以下の幅であるかを判定することによって、垂直方向または水平方向にグラデーションがあるか否かを判定することができる。
【００５４】
なお、図５（ｂ）では、グラデーションの例として、ブロック内の各画素の輝度値が水平方向に一次曲線的に変化する場合、すなわち、一定の傾きを持つ場合を示したが、これに限らず、二次曲線または三次曲線的に変化する場合であってもよい。また、ここでは、隣接画素間の輝度値の差分を用いて、グラデーションの判定を行ったが、ブロック内における各方向の輝度値の変化の度合いを、一次微分を用いて計算するとしてもよい。また、グラフィック処理における従来技術を用いて、グラデーションを検出するとしてもよい。
【００５５】
以上のようにして本実施の形態１によれば、ＭＢの輝度が一様であるか否か、すなわち、ＭＢの輝度値のばらつきが閾値以下であるか否かに基づいて予測ブロックサイズを決定できるだけでなく、さらに、ＭＢが水平または垂直方向にグラデーションであるか否か、ＭＢ内に水平または垂直方向のエッジがあるか否かに基づいて、予測ブロックサイズを決定することができる。これにより、予測ブロックサイズを１６×１６画素ブロックとすることが原因で、予測が全く当たらないため残差成分が非常に大きくなるという問題が生じる場合には、予測ブロックサイズとして４×４画素ブロックを選択し、このような問題を生じない場合にのみ予測ブロックサイズとして１６×１６画素ブロックを選択することができるので、より精度よく発生符号量を抑制することができるという効果がある。
【００５６】
このように、本実施の形態１の画像符号化装置１００によれば、図１に示した符号化部１０５、ブロック特徴量算出部１０２および面内予測ブロックサイズ決定部１０３だけでも、１６×１６画素ブロックを単位とした面内予測における従来の課題を十分に解決できる構成であることが明らかである。
【００５７】
これに加えて、さらに、実施の形態１では、発生符号量が多い場合には、予測ブロックサイズとして１６×１６画素ブロックがより選択されやすくするために、ＭＢの輝度が一様であるか否かを判定するための閾値を、ピクチャ単位で量子化幅に応じて設定する。
【００５８】
パラメータ調整部１０３２は、レート制御情報を用いて、図３のＳ３０１または図４のＳ４０１の判定に用いられる閾値である制御パラメータ１０４を調整し、ブロックサイズ決定部１０３１の閾値を生成する。例えば、以下のように閾値を決定する場合を説明する。量子化幅に応じた閾値のリストは制御パラメータ１０４に含まれており、ピクチャ単位で設定される。
【００５９】
この場合、パラメータ調整部１０３２が、レート制御情報の一つである量子化幅（ＱＰ）に連動して変動する、以下のような閾値のリストをあらかじめ保持しておく。
【００６０】
ＱＰ≦３３・・・閾値０
３３＜ＱＰ≦３９・・・閾値１
３９＜ＱＰ≦４５・・・閾値２
４５＜ＱＰ      ・・・閾値３
上記のように、閾値のリストを量子化幅ＱＰが大きくなるほど閾値が大きくなるように、すなわち、閾値０＜閾値１＜閾値２＜閾値３となるように、閾値０から閾値３を設定することで、ブロックサイズ決定部１０３１が１６×１６画素ブロックを選択する選択率を、増加させることが可能となる。また、ＱＰの上限が５１であるため、これに近づくにつれて閾値２から閾値３の増加量をさらに大きくすることで１６×１６画素ブロックの選択率をさらに増加させる事が可能となる。
【００６１】
図７は、閾値０から閾値３、および量子化パラメータＱＰを用いて、輝度の分散値の閾値を算出する処理を説明するフローチャートである。パラメータ調整部１０３２は、まず、外部のレジスタなどから制御パラメータ１０４を取得し、制御パラメータ１０４に含まれる閾値のリストを抽出する（Ｓ７０１）。次いで、パラメータ調整部１０３２は、レート制御部１０６から量子化パラメータＱＰを取得する（Ｓ７０２）。パラメータ調整部１０３２は、量子化パラメータＱＰの値が３３以下であるか否かを判定し（Ｓ７０３）、量子化パラメータＱＰの値が３３以下であれば（Ｓ７０３においてＹｅｓ）、閾値＝閾値０と設定する（Ｓ７０４）。すなわち、ステップＳ７０４で決定された閾値を識別するための閾値番号を保持するためのレジスタに、値「０」を格納する。
【００６２】
量子化パラメータＱＰの値が３３を超えていれば（Ｓ７０３においてＮｏ）、パラメータ調整部１０３２は、さらに、量子化パラメータＱＰの値が３９以下であるか否かを判定し（Ｓ７０５）、量子化パラメータＱＰの値が３９以下であれば（Ｓ７０５においてＹｅｓ）、閾値＝閾値１と設定する（Ｓ７０６）。
【００６３】
量子化パラメータＱＰの値が３９を超えていれば（Ｓ７０５においてＮｏ）、パラメータ調整部１０３２は、さらに、量子化パラメータＱＰの値が４５以下であるか否かを判定し（Ｓ７０７）、量子化パラメータＱＰの値が４５以下であれば（Ｓ７０７においてＹｅｓ）、閾値＝閾値２と設定する（Ｓ７０８）。
【００６４】
量子化パラメータＱＰの値が４５を超えていれば（Ｓ７０７においてＮｏ）、パラメータ調整部１０３２は、閾値＝閾値３と設定する（Ｓ７０９）。
【００６５】
なお、ここでは、量子化幅の増加に応じて大きくなる閾値のリストを制御パラメータ１０４に含めて記憶しておく例を説明したが、本発明はこれに限定されない。閾値のリストは、例えば、ルックアップテーブルなどの形式で、量子化幅の範囲とあらかじめ計算しておいた閾値とを組にして、任意のメモリ、例えば、記録媒体及び外部メモリなどに記憶しておいてもよい。また、閾値のリストを記憶しておくのではなく、量子化幅に応じた重み係数をあらかじめ定めておき、量子化幅に応じた係数を用いた１次式又は他の関数で表される演算式を用いて、閾値を算出するとしてもよい。
【００６６】
また、ここでは、量子化幅の増加に応じて閾値の大きさを大きくするよう制御したが、閾値を制御する代わりに、すなわち、閾値の値は変更しないで、量子化幅の増加に応じた重み付け係数を、輝度の分散値に対して乗じることとしてもよい。
【００６７】
さらに、上記実施の形態では、量子化幅の増加に応じて閾値と分散値との比較の基準（すなわち、閾値のリスト）を変更したが、本発明はこれに限定されず、例えば、画素値の分散値と、量子化幅の増加とに応じて、大きい予測ブロックサイズが選択される確率をあらかじめ決めておき、分散値と量子化幅との組み合わせに応じて、前記確率で大きい予測ブロックサイズを選択するとしてもよい。例えば、ＱＰが４０以上４５以下のときには大きい予測ブロックサイズを７割の確率で選択させるように設定する場合には、例えば、１から１０までの自然数をランダムに発生させ、発生されたランダム値が１以上７以下のいずれかの値であれば大きい予測ブロックサイズを選択し、８以上１０以下の値であれば小さい予測ブロックサイズを選択するというように制御してもよい。もちろん、このように制御した場合であっても、ここで例示した数値に限定されることはない。
【００６８】
また、量子化幅に応じて、輝度の分散値に対応する予測ブロックサイズが定められたテーブルを用いることによって、量子化幅が大きくなるほど、同じ分散値であっても、大きい予測ブロックサイズが選択されやすくなるように基準を定めてもよい。例えば、符号化対象マクロブロック内の輝度の分散値に対して選択すべき予測ブロックサイズが対応付けられたテーブルを、あらかじめ定められた量子化幅ごとに用意しておく。この場合、量子化幅が大きくなるほど、より小さい分散値に対して、大きい予測ブロックサイズが割り当てられるテーブルを用意する。
【００６９】
また、さらに他の例としては、閾値を量子化幅に連動して変化させる代わりに、例えば、記録モードや目標符号量に応じて閾値を変動させることとしてもよい。すなわち、符号化データを記録するビットレートが低くなる記録モードでは１６×１６画素ＭＢサイズが選択されやすくすることによってオーバーヘッドを減らして発生符号量を低減し、記録するビットレートが高くなる記録モードでは４×４画素ブロックサイズが選択されやすくすることによって符号化精度（解像度）を高めるとしてもよい。また、目標符号量が低いときには１６×１６画素ＭＢサイズが選択されやすくすることによって発生符号量を低減し、目標符号量が高いときには４×４画素ブロックサイズが選択されやすくすることによって符号化精度を高めるとしてもよい。
【００７０】
なお、上記実施の形態１の他の例では、水平または垂直方向にエッジがあるか否か、および、水平または垂直方向にグラデーションか否かの両方を検出して予測ブロックサイズを決定したが、エッジとグラデーションのいずれか一方を検出して予測ブロックサイズを決定するとしてもよい。
【００７１】
また、ブロックサイズ決定部１０３１で用いる指標として、ＭＢの輝度分散値を例としてあげたが、色差の分散値を用いてもよいし、色差の隣接画素差分絶対値和、および色差の符号を考慮した隣接画素差分等の特徴量を用いることで、図４に示すように画素値（輝度、および色差）が一様か、グラデーションであるか、エッジがあるかを判定してブロックサイズを決定することが可能である。
【００７２】
（実施の形態２）
上記実施の形態１では、ＭＢの輝度分散値と閾値とを比較することによってＭＢの輝度が一様であるか否かを判定し、判定結果に従って、予測ブロックサイズを決定する方式を例としてあげたが、本発明はこれに限定されない。例えば、ＭＢ内に、平坦な画像からなる背景の中にコントラストの高い部分画像を含んでいる場合には、１６×１６画素ＭＢサイズで面内予測符号化を行うよりも、それぞれの画像ごとに小さいブロックサイズで面内予測符号化を行った方が、発生符号量を少なくすることが可能な場合がある。本実施の形態２では、このような場合に対し、１６×１６画素ＭＢ全体の輝度分散値と、当該ＭＢ内の４×４画素ブロックごとの輝度分散値とを比較して、１６×１６画素ＭＢ全体の分散値よりも分散値が小さい４×４画素ブロックの数を計数し、計数した数が一定数よりも多い場合には、当該ＭＢを４×４画素ブロックサイズで面内予測符号化するものと決定する。
【００７３】
より具体的には、まず、前記一定数として、ブロック数に関する閾値Ｔｈ（ｎ）を制御パラメータ１０４に含めて外部メモリに格納しておく。また、ブロック特徴量算出部１０２は、ＭＢだけでなく、ＭＢ内のすべての４×４画素ブロックについてもブロック特徴量、ここでは輝度分散値を算出する。ブロックサイズ決定部１０３１は、ＭＢの輝度分散値とＭＢ内の各４×４画素ブロックの輝度分散値とを比較して、４×４画素ブロックの輝度分散値がＭＢの輝度分散値より小さい場合には、その４×４画素ブロックの数を算出する。次いで、算出した４×４画素ブロックの数と、制御パラメータ１０４から読み出したブロック数に関する閾値Ｔｈ（ｎ）とを比較し、４×４画素ブロックの数が閾値Ｔｈ（ｎ）を超えていれば予測ブロックサイズとして４×４画素ブロックを選択し、算出した４×４画素ブロックの数が閾値Ｔｈ（ｎ）以下であれば予測ブロックサイズとして１６×１６画素ブロックを選択する。
【００７４】
図８は、輝度の分散値が１６×１６画素ＭＢよりも小さい４×４画素ブロックの個数が多いときに、４×４画素ブロックを単位として面内予測を行った方が発生符号量を低減できる画像の一例を示す図である。同図に示すように、１６×１６画素ＭＢは、４×４画素ブロックに比べてかなりサイズが大きい。その結果、ＭＢ内に、例えば、空のように一様な画像を背景として、人の頭部や顔などのコントラストの高い画像を含んでしまう場合がある。このような場合、ＭＢの輝度の分散値が、内部に含まれるコントラストの高い画像の影響を受けて大きな値となりやすい。これに対し、４×４画素ブロックでは、背景においても、人の頭部の画像においても、空と頭部との画像の境界部分を含むブロック以外では輝度が一様であるので、輝度の分散が小さくなるブロックの数が多くカウントされることになる。このような場合、ＭＢを単位とするよりも、輝度の分散値が小さい４×４画素ブロックを単位として面内予測を行った方が、残差成分を精度よく低減でき、発生符号量を抑制することができる。
【００７５】
図９は、図８の画像を表す１６×１６画素ＭＢにおいて頭部の画像を横切る水平方向のライン上の各画素の輝度を表す図である。同図は、さらに、図８のようなエッジを含んだ画像を１６×１６画素ブロックサイズで水平方向に面内予測符号化した場合に、エッジ部分の量子化ノイズがＭＢの復号化画像の全体に波及する様子を点線で示している。なお、図９では、左から４×４画素ブロックごとの区切りを縦の破線で示し、各画素の水平方向の画素値である輝度の値を実線で示している。同図において、各画素の輝度は、左端から右水平方向に、１番目の画素から１１番目の画素まで一定の高い値（空の青色を表す輝度）を示している。これに対し、左から１２番目の画素では、輝度が急に低い値（頭部の黒を表す輝度）となり、そのまま１６番目の画素まで、一定の値を示している。従って、左から１番目の４×４画素ブロックと２番目の４×４画素ブロックとでは、輝度は一定なのでその分散は低い値となり、左から３番目の４×４画素ブロックでは、エッジを含むために輝度の分散が大きな値となり、次の４番目の４×４画素ブロックでは、再び輝度が一定となり、その分散は低い値となる。このような場合、空の画像と頭部の画像との境界にあたるエッジが、垂直方向だけであれば、１６×１６画素の予測ブロックサイズで面内予測を行えば、予測残差を低く抑えることができる。ところが、図８の頭部の画像に示すように、コントラストの高い頭部の画像がＭＢ内の一部の画像である場合には、図１２（ｂ）の垂直方向の予測方向を単純に適用することができない。図８に示したような画像では、例えば、左から４列目、上から２番目の４×４画素ブロックでは、水平方向のエッジが含まれているからである。
【００７６】
図８のような画像に対して、１６×１６画素ブロックサイズでの水平方向の面内予測符号化を適用した場合には、その画像を復号化しても、図９の実線で示した輝度値には復号化されず、図９に破線で示すように、左から３番目の４×４画素ブロック内のエッジに対して生じた量子化誤差が、本来、輝度が一様な平坦な画像である１番目、２番目、および４番目の４×４画素ブロックにまで波及してしまう。この結果、復号化された画像では、一面の青空のような平坦な画像の中に、量子化誤差の影響によるノイズが現れてしまうというような画像の劣化を生じてしまう。このような場合、特に、平坦な画像の中にノイズが生じるので、画像の不具合が余計に目に付くという問題がある。
【００７７】
従って、このような画像の場合には、４×４画素ブロックを予測ブロックサイズとして面内予測した方が、エッジによる量子化誤差に起因した復号化画像内のノイズを４×４画素ブロックの範囲内に留めることができ、たとえエッジによる量子化誤差を生じたとしても、そのノイズが目に付かず、きれいな復号化画像を得ることができる。
【００７８】
図１０は、本実施の形態２において予測ブロックサイズを決定する処理の一例を説明するフローチャートである。以下、図１０に示すフローチャートに従って、本実施の形態２の画像符号化装置のより詳細な動作を説明する。まず、前提として、あらかじめブロック数に関する閾値Ｔｈ（ｎ）を制御パラメータ１０４に含めて外部メモリに格納しておき、パラメータ調整部１０３２は、外部メモリから閾値Ｔｈ（ｎ）を読み出しておく。また、初期値として、ブロック数をカウントするレジスタの初期値を０としておく。
【００７９】
ブロック特徴量算出部１０２は、ＭＢの輝度の分散値を算出する（Ｓ９０１）。次いで、ブロックサイズ決定部１０３１は、ＭＢ内の１つの４×４画素ブロックの輝度の分散値を算出し（Ｓ９０２）、算出した４×４画素ブロックの輝度の分散値が、ブロック特徴量算出部１０２で算出されたＭＢの輝度の分散値よりも小さいか否かを判定する（Ｓ９０３）。４×４画素ブロックの輝度の分散値がＭＢの輝度の分散値よりも小さければ（Ｓ９０３でＹｅｓ）、ブロック数をカウントするレジスタ内の値を１だけインクリメントし（Ｓ９０４）、４×４画素ブロックの輝度の分散値がＭＢの輝度の分散値以上であれば（Ｓ９０３でＮｏ）、Ｓ９０４の処理をスキップして、次の４×４画素ブロックにつき、輝度の分散値を算出する（Ｓ９０２）。このようにして、ブロックサイズ決定部１０３１は、ＭＢ内のすべての４×４画素ブロックについて、順次、ＭＢの輝度の分散値と４×４画素ブロックの輝度の分散値とを比較して、ＭＢよりも輝度の分散値が小さい４×４画素ブロックの数をカウントする。
【００８０】
ＭＢ内のすべての４×４画素ブロックについて、ＭＢよりも輝度の分散値が小さい４×４画素ブロックの数をカウントしたら、ブロックサイズ決定部１０３１は、カウントしたブロック数が、パラメータ調整部１０３２から取得した閾値Ｔｈ（ｎ）以下であるか否かを判定する（Ｓ９０５）。カウントしたブロック数が閾値Ｔｈ（ｎ）以下であれば（Ｓ９０５でＹｅｓ）、１６×１６画素ＭＢサイズで面内予測を行うことを決定する（Ｓ９０６）。カウントしたブロック数が閾値Ｔｈ（ｎ）を超えていれば（Ｓ９０５でＮｏ）、４×４画素ブロックサイズで面内予測を行うことを決定する（Ｓ９０７）。
【００８１】
以上の処理により、１つのＭＢにつき、ＭＢ内に空などの一様な画像を背景として、人間の頭部や顔などのコントラストの高い画像が含まれる場合であっても、精度よく予測残差を低減できる予測ブロックサイズを決定することができる。
【００８２】
すなわち、本発明の画像符号化装置では、前記特徴量算出部は、前記サイズ決定部によって１６×１６画素ブロックサイズが選択されたとき、さらに、前記符号化対象マクロブロックに含まれるすべての４×４画素ブロックについて、前記４×４画素ブロックに属する画素の画素値に基づいて分散値を算出し、前記サイズ決定部は、前記１６×１６画素ブロックに対して算出した分散値と、前記各４×４画素ブロックに対して算出した分散値とを比較し、当該比較の結果に基づいて、１６×１６画素ブロックと４×４画素ブロックとを選択的に切り替える。
【００８３】
従って、ブロックサイズ決定部によって、一旦、１６×１６画素ブロックサイズが選択されたときでも、さらに、前記符号化対象マクロブロックに含まれるすべての４×４画素ブロックについて、当該符号化対象マクロブロックの画素値の分散値よりも画素値の分散値が小さいすべての前記４×４画素ブロックの数を計数し、計数した前記４×４画素ブロックの数が所定数以下の場合には１６×１６画素ブロックサイズを選択し、計数した前記４×４画素ブロックの数が前記所定数を超える場合には４×４画素ブロックサイズを選択することができる。これにより、一旦、１６×１６画素ブロックサイズが選択された場合であっても、当該符号化対象マクロブロックが４×４画素予測ブロックサイズで面内予測符号化した方が適切な画像であるか否かを判断し、４×４画素予測ブロックサイズで面内予測符号化した方が適切である場合には、４×４画素予測ブロックサイズで面内予測符号化を行うことができる。その結果、面内予測符号化による発生符号量を精度良く低減することができるとともに、符号化対象マクロブロック内にコントラストが強い画像が含まれることによって、量子化誤差によるノイズが当該符号化対象マクロブロックの復号化画像全体に波及することを防止し、入力画像により近い復号化画像を得ることができる。
【００８４】
これに加えて、さらに上述の実施の形態１で示した方式と同様に、量子化パラメータＱＰに連動して４×４画素ブロックの輝度分散値のオフセットを調整するとしてもよい。具体的には、図１０のＳ９０２で量子化パラメータＱＰに連動して調整したオフセットｏｆｆｓｅｔ(ｎ)を４×４画素ブロックの輝度分散値に加算し、Ｓ９０３でオフセットｏｆｆｓｅｔ(ｎ)を加算した４×４画素ブロックの輝度分散値と、ＭＢの輝度分散値とを比較するようにしてもよい。このように、４×４画素ブロックの輝度分散値に対するオフセットを量子化パラメータＱＰと連動させることによって、発生符号量が多いときには、１６×１６画素ＭＢサイズが選択される確率（頻度または割合）が高くなるようにすることができる。
【００８５】
また、ブロックサイズ決定部１０３１で用いる指標として、ＭＢの輝度分散値を例としてあげたが、色差の分散値を用いてもよいし、色差の隣接画素差分絶対値和、および色差の符号を考慮した隣接画素差分等の特徴量を用いることで、図４に示すように画素値（輝度、および色差）が一様か、グラデーションであるか、エッジがあるかを判定してブロックサイズを決定することが可能である。
【００８６】
（実施の形態３）
また、上述の実施の形態１では、量子化パラメータに応じて、面内予測符号化の単位となる面内予測ブロックのサイズを制御する方法を説明した。具体的には、量子化パラメータが大きくなるほど、大きいブロックサイズの面内予測ブロックが選択されやすくなるよう、量子化パラメータＱＰに連動して閾値を制御する方式を例とし、実施の形態２では４×４画素ブロックの輝度分散値に対するオフセットを制御する方式を例としたが、本発明はこれに限定されない。本実施の形態３では、デコーダモデルのバッファシミュレーションの値に基づき、デコーダ側での符号化データのバッファ占有量がアンダーフローレベルに近づくにつれて、閾値に乗算する乗数を大きくするという制御を行う。このバッファシミュレーションでは、例えば、直前に符号化されたピクチャ内で、ＣＡＶＬＣ（Ｃｏｎｔｅｘｔ−Ａｄａｐｔｉｖｅ  Ｖａｒｉａｂｌｅ  Ｌｅｎｇｔｈ  Ｃｏｄｉｎｇ）により実際に発生した符号量が用いられる。また、レート制御部１０６によるバッファへのデータ転送制御には、ＶＢＲ（Ｖａｒｉａｂｌｅ  Ｂｉｔ  Ｒａｔｅ）制御が採用される。
【００８７】
図１１は、デコーダのバッファシミュレーションにおける発生符号量の制御を説明する図である。より具体的には、図１１に示すように、縦軸はバッファの符号化データ占有量を示し、横軸は時刻を示している。デコーダ側のバッファには、外部のメディア、ネットワーク等から読み込まれた符号化データが、一定ビットレートで蓄積される。これに対してデコーダは、同図において上方向の矢印で示すように、復号化対象となる符号化データを、仮想的に１ピクチャ分ずつ瞬時に読み出して復号化する。なお、バッファからの符号化データの読み出しは、実際には同図のように瞬間的には読み出せないが、仮想的に瞬時に行われるものとしてシミュレーションしている。従って、バッファにおける符号化データの蓄積量が少ないときに、符号量の大きなピクチャが復号化対象ピクチャとなった場合、一気に大量の符号化データが読み出され、アンダーフローを生じてしまう。その結果、１ピクチャ分の符号化データを正常に読み出せなかったピクチャのデータが不足することにより、画像が崩れてしまったり、駒落ちが発生したりという不具合が生じる。また、このようなアンダーフローにより、参照画像が駒落ちした場合には、次のＩＤＲピクチャまたはＩピクチャまで復号化が停止してしまうという不都合を生じる。オーバーフローの場合に関しては、ＶＢＲ制御を採用しているＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）やＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）等では、バッファがいっぱいになったらデータ転送を止めればよいので、問題にならない。これに対し、データの伝送を途中で止められない放送などの場合には、ＣＢＲ（Ｃｏｎｓｔａｎｔ  Ｂｉｔ  Ｒａｔｅ）制御を採用しているため、オーバーフローの場合にもアンダーフローと同様の問題が発生する。従来では、アンダーフローおよびオーバーフローのいずれの場合に対しても、バッファ内の符号データ残量が上下のコントロールラインに達したとき、発生符号量を抑制したり、外部からの符号化データの読み出しを停止したりするなどの方法がとられている。
【００８８】
これに対し、このような不都合を解消するために、本実施の形態３では、アンダーフローを引き起こさないようにバッファ内の符号化データ残量がコントロールラインに達したとき、発生符号量を抑制するため、閾値の乗数を大きくし、１６×１６画素予測ブロックサイズを選択しやすくする。
【００８９】
なお、ここでは、バッファ内の符号化データ残量が少なくなるほど１６×１６画素予測ブロックサイズが選択されやすくなるよう、符号化データ残量が少なくなるほど閾値の乗数を大きくするよう制御したが、閾値の乗数を大きくするのではなく、実施の形態１で示した量子化パラメータＱＰと閾値０〜閾値３との対応関係と同様にして、コントロールラインを何段階かに分割し、アンダーフローに近づくにつれ閾値を大きくするよう制御するとしてもよい。例えば、パラメータ調整部１０３２の内部に、バッファ内の符号化データ残量と閾値との対応を示すリストを、ルックアップテーブルなどにして保持しておくとしてもよい。そして、対象ＭＢの面内予測を行う際のバッファ内の符号化データ残量に応じた閾値をテーブルから読み出して、読み出した閾値と当該対象ＭＢの輝度値の分散とを比較し、その比較結果に従って、当該対象ＭＢの予測ブロックサイズを決定するとしてもよい。また、実施の形態１と実施の形態３とを組み合わせて、バッファ内の符号化データ残量と、そのときの量子化幅とに応じた閾値をあらかじめ定めておいてもよい。このように、バッファ内の符号化データ残量が少なくなるほど、値が大きくなるように定められた閾値を用いて対象ＭＢの予測ブロックサイズを決定することによって、バッファ内の符号化データ残量が少なくなるほど、大きいブロックサイズを選択しやすくすることで、次のピクチャの発生符号量を抑制することができ、バッファ内の符号化データ残量をすみやかに適正な量に戻すことができるという効果がある。
【００９０】
或いは、これまでに符号化した全ピクチャで、ピクチャ毎に発生した符号量の平均が目標符号量に対して多くなるにつれて閾値または閾値の増加量を大きくするとしてもよい。このようにすることで、ピクチャごとの発生符号量が目標符号量を超えて増加するにつれて閾値又は閾値の増加量が大きくなるため、予測ブロックサイズとして１６×１６ＭＢブロックサイズがより選択されやすくなり、発生符号量をタイミングよく低減することができるという効果がある。
【００９１】
なお、上記実施の形態では、バッファシミュレーションにおいて、ＣＡＶＬＣによる実際の発生符号量に基づいて、面内予測におけるブロックサイズの決定を行ったが、本発明はこれに限定されず、例えば、ＣＡＢＡＣ（Ｃｏｎｔｅｘｔ−ｂａｓｅｄ  Ａｄａｐｔｉｖｅ  Ｂｉｎａｒｙ  Ａｒｉｔｈｍｅｔｉｃ  Ｃｏｄｉｎｇ）による実際の発生符号量に基づいて、上記ブロックサイズの決定を行うとしてもよい。また、本発明は実際に発生した符号量に基づいてブロックサイズを決定する必要はなく、実際の発生符号量の代わりに、例えば、算術符号化前の２値化データなど、符号化の中間段階で発生したデータの量に基づいて予測ブロックサイズを決定するとしてもよい。さらにまた、２値化データから発生符号量を推定し、その推定符号量に基づいて予測ブロックサイズを決定するとしてもよい。このように、中間段階のデータ量に基づいてレート制御を行うことにより、ＣＡＢＡＣのような計算量の多い算術符号化を経て実際の発生符号量に基づいてレート制御を行う場合よりも、よりリアルタイムに発生符号量の制御を行うことができるというメリットがある。
【００９２】
なお、上記実施の形態３では、ＶＢＲ制御でデータ転送を行うことを前提としたバッファシミュレーションの場合について説明したが、本発明は、ＣＢＲ制御でデータ転送を行う場合についても、適用可能である。ＣＢＲ制御の場合には、オーバーフローも発生させてはいけないので、オーバーフローが発生しないように予測ブロックサイズを適応的に選択する。具体的には、バッファ内の残存符号量がオーバーフローに近づくほど、例えば、閾値を小さくすることによって１６×１６画素予測ブロックサイズが選択されにくくなるよう制御する。
【００９３】
さらにまた、符号化対象ピクチャの直近、すなわち、符号化対象ピクチャが符号化される直前で符号化された符号化済みの所定枚数のピクチャにおける発生符号量が目標符号量に対して多くなるにつれて、閾値を算出するための演算式中の係数を大きくして算出するとしてもよい。また、これらを単独、或いは複合的に組み合わせて閾値を制御することも可能である。例えば、量子化パラメータＱＰに応じて設定される閾値と、バッファ内の符号化データ残量に応じて設定される閾値との平均を求め、求めた平均値を閾値としてもよい。
【００９４】
さらに、本実施の形態においても、発生符号量に基づいて閾値を制御することによって、発生符号量が大きくなるほど１６×１６画素予測ブロックサイズが選択されやすくなるように制御したが、本発明はこれに限定されない。例えば、バッファシミュレーションにおける発生符号量に応じて、当該対象ＭＢの輝度値の分散と、それに対応して選択されるべき予測ブロックサイズとの対応を示したルックアップテーブルを用意しておく。すなわち、シミュレーションにおける発生符号量が大きくなるほど、より低い輝度分散値に対して、１６×１６画素の予測ブロックサイズが選択されるように定められたテーブルを用意しておき、シミュレーションによる発生符号量ごとに、当該発生符号量に対応するルックアップテーブルを参照して、輝度値の分散に対応する予測ブロックサイズを選択するとしてもよいことは言うまでもない。
【００９５】
また、上記の実施の形態１、実施の形態２、および実施の形態３は、互いに矛盾しない限り、任意に組み合わせて実施できることはいうまでもない。すなわち、本発明は、前記実施形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内で種々の改良、変形が可能であることは勿論である。
【００９６】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて請求の範囲によって示され、請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【００９７】
なお、ブロック図（図１および図２など）の各機能ブロックは典型的には集積回路であるＬＳＩとして実現される。これらは個別に１チップ化されても良いし、一部又は全てを含むように１チップ化されても良い。例えばメモリ以外の機能ブロックが１チップ化されていても良い。
【００９８】
ここでは、ＬＳＩとしたが、集積度の違いにより、ＩＣ、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。
【００９９】
また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。
【０１００】
さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適応等が可能性としてありえる。
【０１０１】
また、各機能ブロックのうち、符号化または復号化の対象となるデータを格納する手段だけ１チップ化せずに別構成としても良い。
【産業上の利用可能性】
【０１０２】
本発明の画像符号化装置およびその方法は、動画像データをＨ．２６４規格のＭａｉｎ  ｐｒｏｆｉｌｅまたはＢａｓｅｌｉｎｅ  ｐｒｏｆｉｌｅで符号化し、符号化された符号化動画像データを放送し、ネットワーク上のサーバ装置にアップロードし、または録画する用途、放送装置、記録装置および携帯情報端末などに有用である。
【符号の説明】
【０１０３】
１００    画像符号化装置
１０１    入力画像
１０２    ブロック特徴量算出部
１０３    面内予測ブロックサイズ決定部
１０４    制御パラメータ
１０５    符号化部
１０６    レート制御部
１０７    ストリーム
１０３１    ブロックサイズ決定部
１０３２    パラメータ調整部
１０５０    エントロピー符号化部
１０５１    減算器
１０５２    面内予測部
１０５３    面内予測方向決定部
１０５４    Ｔ・Ｑ部
１０５５    ＩＱ・ＩＴ部
１０５６    加算器
１０５７    ＤＢＦ部
１０５８    フレームメモリ
１０５９    周辺画素メモリ
【図１】
0005470405.tif 000006
【図２】
0005470405.tif 000007
【図３】
0005470405.tif 000008
【図４】
0005470405.tif 000009
【図５】
0005470405.tif 000010
【図６】
0005470405.tif 000011
【図７】
0005470405.tif 000012
【図８】
0005470405.tif 000013
【図９】
0005470405.tif 000014
【図１０】
0005470405.tif 000015
【図１１】
0005470405.tif 000016
【図１２】
0005470405.tif 000017