【文献】
Meng Xu, Xiang Li and Shan Liu,CE1-1.3.1: Partial CU for picture boundary handling,Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 12th Meeting: Maca,2018年 9月24日,JVET-L0310,pp.1-4
【文献】
Shih-Ta Hsiang and Shawmin Lei,CE1.2.0.10: CU partitioning along picture boundaries,Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 11th Meeting: Ljub,2018年 7月 3日,JVET-K0224-v1,pp.1-3
【文献】
Weijia Zhu, Kiran Misra and Andrew Segall,CE1: Implicit QT, BT and MTT Partitions on Picture Boundary (Test 2.0.15),Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 11th Meeting: Ljub,2018年 7月 7日,JVET-K0316-v1,pp.1-7
【文献】
Chih-Wei Hsu et al.,Description of SDR video coding technology proposal by MediaTek,Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 10th Meeting: San,2018年 4月 3日,JVET-J0018,pp.i-iii,1-4
(58)【調査した分野】(Int.Cl.,DB名)
前記2−3分割部は、前記対象ブロックをいずれかの方向に2分割したとすると、分割された前記対象ブロックがピクチャ境界の右下側を超える場合は、前記対象ブロックを2分割することを禁止する、
ことを特徴とする請求項1に記載の画像復号化装置。
前記2−3分割部は、前記対象ブロックをいずれかの方向に3分割したとすると、分割された前記対象ブロックがピクチャ境界を超える場合は、前記対象ブロックを3分割することを禁止する、
ことを特徴とする請求項1に記載の画像復号化装置。
前記2−3分割部は、前記対象ブロックをいずれかの方向に2分割したとすると、分割された前記対象ブロックがピクチャ境界の右下側を超える場合は、前記対象ブロックを2分割することを禁止する、
ことを特徴とする請求項6に記載の画像符号化装置。
前記2−3分割部は、前記対象ブロックをいずれかの方向に3分割したとすると、分割された前記対象ブロックがピクチャ境界を超える場合は、前記対象ブロックを3分割することを禁止する、
ことを特徴とする請求項6に記載の画像符号化装置。
【発明を実施するための形態】
【0010】
本発明の実施の形態は、分割されたブロック単位で画像を符号化、復号化する技術を提供する。
(第1の実施の形態)
本発明の第1の実施の形態に係る画像符号化装置100及び画像復号化装置200について説明する。第1の実施の形態では、ブロックを2分割または3分割する際に、ブロック分割を制限する。
【0011】
図1は、第1の実施の形態に係る画像符号化装置100のブロック図である。
図1は、画像信号に関するデータの流れのみを表しており、動きベクトルや予測モードなどの画像信号以外の付加情報に関するデータの流れは図示していない。画像符号化装置100には、少なくとも画面1枚分の画像信号が入力される。
【0012】
ブロック分割部101は、符号化の処理単位となる符号化対象ブロックに画像を分割し、符号化対象ブロック内の画像信号を残差信号生成部103に供給する。また、ブロック分割部101は、予測画像の一致度を評価するために、符号化対象ブロックの画像信号を予測画像生成部102に供給する。
【0013】
ブロック分割部101は、所定サイズの矩形に再帰的に画像を分割して、符号化対象ブロックを生成する。ブロック分割部101は、再帰的分割における対象ブロックを4分割して4つのブロックを生成する4分割部と、再帰的分割における対象ブロックを2分割または3分割して2つまたは3つのブロックを生成する2−3分割部とを含む。ブロック分割部101の詳細の動作については後述する。
【0014】
予測画像生成部102は、ブロック分割部101から符号化対象ブロックの画像信号と、復号画像メモリ108から復号画像信号とが供給される。予測画像生成部102は供給される信号を用いて、予測モードに基づくイントラ予測(画面内予測)やインター予測(画面間予測)を行い、予測画像信号を生成する。イントラ予測では、符号化対象ブロックと同じピクチャ(符号化ピクチャ)における、符号化対象ブロックに近接する符号化済みブロックの画像信号が、復号画像メモリ108から予測画像生成部102に供給される。そして、予測画像生成部102は、この画像信号とブロック分割部101から供給される符号化対象ブロックの画像信号とを用いて、予測画像信号を生成する。インター予測では、符号化ピクチャに対して時系列で前または後ろにある符号化済みピクチャ(参照画像)の画像信号が、復号画像メモリ108から予測画像生成部102に供給される。そして、予測画像生成部102は、この画像信号とブロック分割部101から供給される符号化対象ブロックとを用いて、ブロックマッチング等により一致度を評価して、動き量を示す動きベクトルを求める。予測画像生成部102は、この動きベクトルを基に参照画像から動き補償をして、予測画像信号を生成する。予測画像生成部102は、こうして生成された予測画像信号を残差信号生成部103に供給する。
【0015】
残差信号生成部103は、符号化する画像信号と予測画像生成部102にて生成された予測信号とを減算して残差信号を生成し、直交変換・量子化部104に供給する。
【0016】
直交変換・量子化部104は、残差信号生成部103から供給される残差信号を直交変換・量子化する。直交変換・量子化部104は、直交変換・量子化された残差信号を符号化部105及び逆量子化・逆直交変換部106に供給する。
【0017】
符号化部105は、直交変換・量子化部104から供給される直交変換・量子化された残差信号に対応する符号化ビットストリームを生成する。また、符号化部105は、各構成要素から供給された動きベクトルや予測モード、ブロック分割情報などの付加情報について、対応する符号化ビットストリームを生成する。そして、符号化部105は、符号化ビットストリームを画像符号化装置100から出力する。
【0018】
逆量子化・逆直交変換部106は、直交変換・量子化部104から供給される直交変換・量子化された残差信号を逆量子化・逆直交変換して、残差信号を得る。逆量子化・逆直交変換部106は、残差信号を復号画像信号重畳部107に供給する。
【0019】
復号画像信号重畳部107は、予測画像生成部102により生成された予測画像信号と逆量子化・逆直交変換部106で得られた残差信号とを重畳して復号画像を生成し、復号画像メモリ108に格納する。なお、復号画像信号重畳部107は、復号画像に対して符号化によるブロック歪等を減少させるフィルタリング処理を施して、復号画像メモリ108に格納してもよい。
【0020】
図2は、実施の形態1に係る画像復号化装置200のブロック図である。
図2は、画像信号に関するデータの流れのみを表しており、動きベクトルや予測モードなどの画像信号以外の付加情報に関するデータの流れは図示していない。画像復号化装置200には、符号化ビットストリームが入力される。
【0021】
復号化部201は、供給された符号化ビットストリームを復号化して、直交変換・量子化された残差信号をブロック分割部202に供給する。また、復号化部201は、動きベクトルや予測モード、ブロック分割情報などの付加情報を各構成要素に供給して、付加情報と対応する処理に用いる。
【0022】
ブロック分割部202は、復号化したブロック分割情報に基づいて復号化対象ブロックの形状を決定し、決定された復号化対象ブロックの直交変換・量子化された残差信号を逆量子化・逆直交変換部203に供給する。
【0023】
ブロック分割部202は、復号化されたブロック分割の情報に基づいて、所定サイズの矩形に再帰的に画像を分割して、復号化対象ブロックを生成する。ブロック分割部202は、再帰的分割における対象ブロックを4分割して4つのブロックを生成する4分割部と、再帰的分割における対象ブロックを2分割または3分割して2つまたは3つのブロックを生成する2−3分割部とを含む。ブロック分割部202の詳細の動作については後述する。
【0024】
逆量子化・逆直交変換部203は、供給される直交変換・量子化された残差信号を逆量子化・逆直交変換して、残差信号を得る。それを復号画像信号重畳部205に供給する。
【0025】
予測画像生成部204は、復号画像メモリ206から供給される復号画像信号から予測画像信号を生成し、復号画像信号重畳部205に供給する。
【0026】
復号画像信号重畳部205は、予測画像生成部204で生成された予測画像信号と、逆量子化・逆直交変換部203で得られた残差信号とを重畳して復号画像信号を生成する。また、復号画像信号重畳部205は、復号画像信号を復号画像メモリ206に格納する。なお、復号画像信号重畳部205は、復号画像に対して符号化によるブロック歪等を減少させるフィルタリング処理を施して、復号画像メモリ206に格納してもよい。そして、復号画像信号重畳部205は、復号画像を画像復号化装置200から出力する。
【0027】
次に、画像符号化装置100におけるブロック分割部101の動作について、
図3を用いて説明する。
図3は、ブロック分割部101が画像をツリーブロックへ分割し、その内部をブロック分割する動作を示す。
【0028】
まず、入力された画像を、所定サイズのツリーブロックに分割する(S1000)。ここで、ツリーブロックは128x128画素とする。ただし、ツリーブロックはこの大きさに限定されず、矩形であればどのような大きさや縦横比を用いてもよい。また、符号化装置と復号化装置の間で、ツリーブロックの大きさを予め定めておいてもよい。さらに、符号化装置がツリーブロックの大きさを決定して符号化ビットストリーム内に記録し、復号化装置が符号化ビットストリーム内に記録されたツリーブロックの大きさを用いる構成にしてもよい。入力された画像をツリーブロックに分割する様子を
図4に示す。ツリーブロックは、ラスタスキャン順、すなわち左から右、上から下に符号化される。
【0029】
ツリーブロックの内部をさらに矩形のブロックに分割する。ツリーブロック内部は、
図5に示すz−スキャン順に符号化する。z−スキャン順とは、左上、右上、左下、右下、の順序を示す。ツリーブロック内部の分割は、4分割、2分割または3分割が可能である。
【0030】
ブロックの4分割は、
図6(a)のように水平方向と垂直方向とを各々半分にして4分割し、4つのブロックを生成することによりなされる。
【0031】
ブロックの2分割または3分割は、水平方向または垂直方向に分割することによりなされる。水平方向にブロックを2分割する場合、
図6(b)のように半分に分割し、2つのブロックを生成する。また、水平方向にブロックを3分割する場合、
図6(c)のように1:2:1に分割し、3つのブロックを生成する。一方、垂直方向にブロックを2分割する場合、
図6(d)のように半分に分割し、2つのブロックを生成する。また、垂直方向にブロックを3分割する場合、
図6(e)のように1:2:1に分割し、3つのブロックを生成する。
【0032】
再び
図3を参照し、ブロック分割部101の動作について説明する。まず、ツリーブロック内部を水平方向と垂直方向とを各々半分に4分割するか否かを判断する(S1001)。
【0033】
ブロックを4分割するか否かの判断を含め、複数の条件から最適な場合を判断するには、R−D最適化(Rate-Distortion Optimization)と呼ばれる既存の方法がある。R−D最適化では、符号量と符号化歪から、符号化コストが算出される。そして、複数の条件で符号化した場合について、それぞれ符号化コストを算出し、符号化コストが最小となる場合を選択する。つまり、ブロックを4分割するか否かの判断は、ブロックを4分割する場合の符号化コストと、ブロックを4分割しない場合の符号化コストを算出し、符号化コストが最小となる場合を選択することによりなされる。複数の条件から最適な場合を判断するには、R−D最適化以外の方法を用いても良い。
【0034】
ツリーブロック内部を4分割すると判断した場合(S1001:YES)、ツリーブロック内部を4分割する(S1002)。4分割されたブロックの再分割処理については後述する(
図7)。
【0035】
ツリーブロック内部を4分割しないと判断した場合(S1001:NO)、ツリーブロック内部を2分割または3分割するか否かを判断する(S1003)。
【0036】
ツリーブロック内部を2分割または3分割すると判断した場合(S1003:YES)、分割する方向を垂直方向とするか否かを判断する(S1004)。
【0037】
分割する方向を垂直方向と判断した場合(S1004:YES)、ツリーブロック内部を2分割するか否かを判断する(S1005)。
【0038】
ツリーブロック内部を2分割すると判断した場合(S1005:YES)、ツリーブロック内部を垂直方向に2分割する(S1006)。一方、ツリーブロック内部を3分割すると判断した場合(S1005:NO)、ツリーブロック内部を垂直方向に3分割する(S1007)。垂直方向に2分割または3分割されたブロックの再分割処理については後述する(
図8)。
【0039】
分割する方向を水平方向と判断した場合(S1004:NO)、ツリーブロック内部を2分割するか否かを判断する(S1008)。
【0040】
ツリーブロック内部を2分割すると判断した場合(S1008:YES)、ツリーブロック内部を水平方向に2分割する(S1009)。一方、ツリーブロック内部を3分割すると判断した場合(S1008:NO)、ツリーブロック内部を水平方向に3分割する(S1010)。水平方向に2分割または3分割されたブロックの再分割処理については後述する(
図8)。
【0041】
ツリーブロック内部を2分割または3分割しないと判断した場合(S1003:NO)、ツリーブロックの内部をブロック分割せずにブロック分割処理を終了する(S1011)。
【0042】
続いて、ツリーブロックを水平方向と垂直方向とを各々半分に4分割した場合の分割された各ブロックの処理について、
図7のフローチャートを用いて説明する。
【0043】
まず、ブロック内部を再び水平方向と垂直方向とを各々半分に4分割するか否かを判断する(S1101)。
【0044】
ブロック内部を再び4分割すると判断した場合(S1101:YES)、ブロック内部を再び4分割する(S1102)。
【0045】
ブロック内部を再び4分割しないと判断した場合(S1101:NO)、ブロック内部を2分割または3分割するか否かを判断する(S1103)。
【0046】
ブロック内部を2分割または3分割すると判断した場合(S1103:YES)、分割する方向を垂直方向とするか否かを判断する(S1104)。
【0047】
分割する方向を垂直方向と判断した場合(S1104:YES)、ブロック内部を2分割するか否かを判断する(S1105)。
【0048】
ブロック内部を2分割すると判断した場合(S1105:YES)、ブロック内部を垂直方向に2分割する(S1106)。一方、ブロック内部を3分割すると判断した場合(S1105:NO)、ブロック内部を垂直方向に3分割する(S1107)。
【0049】
分割する方向を水平方向と判断した場合(S1104:NO)、ブロック内部を2分割するか否かを判断する(S1108)。
【0050】
ブロック内部を2分割すると判断した場合(S1108:YES)、ブロック内部を水平方向に2分割する(S1109)。一方、ブロック内部を3分割すると判断した場合(S1108:NO)、ブロック内部を水平方向に3分割する(S1110)。
【0051】
ブロック内部を2分割または3分割しないと判断した場合(S1103:NO)、ブロックの内部を再分割せずにブロック分割処理を終了する(S1111)。
【0052】
4分割された各ブロックについて、
図7のフローチャートに示す処理が再帰的に実行される。4分割されたブロックの内部は、z−スキャン順に符号化する。
【0053】
続いて、ツリーブロックを垂直方向に2分割または3分割した場合の分割された各ブロックの処理について
図8のフローチャートを用いて説明する。
【0054】
ツリーブロックを垂直方向に2分割または3分割した場合、分割された各ブロックについて、ブロック内部を再び2分割または3分割するか否かを判断する(S1201)。
【0055】
ブロック内部を2分割または3分割すると判断した場合(S1201:YES)、分割する方向を垂直方向とするか否かを判断する(S1202)。
【0056】
分割する方向を垂直方向と判断した場合(S1202:YES)、ブロック内部を2分割するか否かを判断する(S1203)。
【0057】
ブロック内部を2分割すると判断した場合(S1203:YES)、ブロック内部を垂直方向に2分割する(S1204)。一方、ブロック内部を3分割すると判断した場合(S1203:NO)、ブロック内部を垂直方向に3分割する(S1205)。
【0058】
分割する方向を水平方向と判断した場合(S1202:NO)、ブロック内部を2分割するか否かを判断する(S1206)。
【0059】
ブロック内部を2分割すると判断した場合(S1206:YES)、ブロック内部を水平方向に2分割する(S1207)。一方、ブロック内部を3分割すると判断した場合(S1206:NO)、ブロック内部を水平方向に3分割する(S1208)。
【0060】
ブロック内部を再び2分割または3分割しないと判断した場合(S1201:NO)、ブロックの内部を再分割せずにブロック分割処理を終了する(S1209)。
【0061】
垂直方向に2分割または3分割した場合の分割された各ブロックについて、
図8のフローチャートに示す処理が再帰的に実行される。2分割または3分割されたブロックの内部は、左から右の順に符号化する。
【0062】
同様に、水平方向に2分割または3分割した場合の分割された各ブロックについて、
図8のフローチャートに示す処理が再帰的に実行される。2分割または3分割されたブロックの内部は、上から下の順に符号化する。
【0063】
なお、ツリーブロックが分割された時の分割されたブロックの再分割について説明したが、親ブロックがツリーブロックでなくてもよい。例えば、ツリーブロック(128x128画素)を4分割し、4分割されたブロック(64x64画素)をさらに分割した場合に、再分割されたブロックの分割にも上記処理を適用する。
【0064】
再帰的なブロック分割は、分割する回数を定めて、分割する回数を制限しても良い。また、符号化装置と復号化装置の間で、分割する回数を予め定めておいても良い。さらに、符号化装置が分割する回数を決定して符号化ビットストリーム内に記録し、復号化装置が符号化ビットストリーム内に記録された分割する回数を用いる構成にしても良い。
【0065】
次に、画面端におけるブロック分割について説明する。
図9は、画像をツリーブロックに分割したときのピクチャ境界との関係を示す。この
図9に示すように、画像の大きさはツリーブロックの大きさの整数倍とは限らないので、画面端におけるツリーブロックは、ピクチャ境界を隔てて画面内と画面外の部分を含むことがある。画面端におけるツリーブロックとして、ツリーブロック1001,1002,1003を示す。この場合は
図10に示すように、ピクチャ境界を超えた画面外の部分は、画面内の最も外側の画素と同じとして扱う。画面内の最も外側の画素として、画素1011,1012,1013を示す。
【0066】
画素1011は、ツリーブロック1001内にあり、画面内での最も右上に位置する画素である。画素1011より右側の、ピクチャ境界を超えた画面外の画素は、画素1011と同じものとして扱う。
【0067】
画素1012は、ツリーブロック1002内にあり、画面内での最も左下に位置する画素である。画素1012より下側の、ピクチャ境界を超えた画面外の画素は、画素1012と同じものとして扱う。
【0068】
画素1013は、ツリーブロック1003内にあり、画面内での最も右下に位置する画素である。画素1013より右側、下側、および右下側の、ピクチャ境界を超えた画面外の画素は、画素1013と同じものとして扱う。
【0069】
そして、ブロックを2分割または3分割する際に、ブロック分割を制限する。これにより、画面端のブロックを適切な形状に分割することができ、符号化効率を向上させることができる。
【0070】
ブロック分割の制限は、画面端においてブロックを2分割または3分割する際に適用される。つまり、
図3における2分割または3分割の処理(S1004からS1010)が、以下に説明する処理に置き換わる。また、
図7における2分割または3分割の処理(S1104からS1110)が、以下に説明する処理に置き換わる。さらに、
図8における2分割または3分割の処理(S1202からS1208)が、以下に説明する処理に置き換わる。
【0071】
ブロック分割の制限について、
図11を用いて説明する。まず、ブロック分割の全ての組み合わせについて、ブロック分割を制限するか否かを決定する(S1301)。ブロック分割の全ての組み合わせとは、ブロックを水平方向に2分割した場合、ブロックを垂直方向に2分割した場合、ブロックを水平方向に3分割した場合、ブロックを垂直方向に3分割した場合の4つである。また、ブロック分割を制限するか否かは、ピクチャ境界を超えた位置の画素が分割されるか否かにより決定する。例えば、ブロックを水平方向に2分割すると、ピクチャ境界を超えた位置の画素が分割されるならば、ブロックを水平方向に2分割することを制限する。
【0072】
ここで、ブロックを水平方向に分割することを制限するということは、ブロックを水平方向に分割することを禁止するという意味である。また、ブロックを垂直方向に分割することを制限するということは、ブロックを垂直方向に分割することを禁止するという意味である。同様に、ブロックを2分割することを制限するということは、ブロックを2分割することを禁止するという意味である。また、ブロックを3分割することを制限するということは、ブロックを3分割することを禁止するという意味である。
【0073】
次に、ブロック分割の全ての組み合わせでブロック分割を制限するか否かを判定する(S1302)。全ての組み合わせでブロック分割を制限する場合(S1302:YES)、ブロックを分割しない(S1314)。一方、全ての組み合わせでブロック分割を制限しない場合(S1302:NO)、水平方向のブロック分割を制限するか否かを判定する(S1303)。
【0074】
水平方向のブロック分割を制限する場合(S1303:YES)、次の処理に進む(S1306)。一方、水平方向のブロック分割を制限しない場合(S1303:NO)、垂直方向のブロック分割を制限するか否かを判定する(S1304)。
【0075】
垂直方向のブロック分割を制限する場合(S1304:YES)、次の処理に進む(S1310)。一方、垂直方向のブロック分割を制限しない場合(S1304:NO)、ブロックを垂直方向に分割するか否かを判断する(S1305)。
【0076】
ブロック分割する方向を垂直方向と判断した場合(S1305:YES)、ブロックの3分割を制限するか否かを判定する(S1306)。一方、ブロック分割する方向を水平方向と判断した場合(S1305:NO)、次の処理に進む(S1310)。
【0077】
ブロックの3分割を制限する場合(S1306:YES)、ブロックを垂直方向に2分割する(S1308)。一方、ブロックの3分割を制限しない場合(S1306:NO)、ブロックを2分割するか否かを判断する(S1307)。
【0078】
ブロックを2分割すると判断した場合(S1307:YES)、ブロックを垂直方向に2分割する(S1308)。一方、ブロックを3分割すると判断した場合(S1307:NO)、ブロックを垂直方向に3分割する(S1309)。
【0079】
垂直方向の分割を制限する場合(S1304:YES)、およびブロック分割する方向を水平方向と判断した場合(S1305:NO)、ブロックの3分割を制限するか否かを判定する(S1310)。
【0080】
ブロックの3分割を制限する場合(S1310:YES)、ブロックを水平方向に2分割する(S1312)。一方、ブロックの3分割を制限しない場合(S1310:NO)、ブロックを2分割するか否かを判断する(S1311)。
【0081】
ブロックを2分割すると判断した場合(S1311:YES)、ブロックを水平方向に2分割する(S1312)。一方、ブロックを3分割すると判断した場合(S1311:NO)、ブロックを水平方向に3分割する(S1313)。
【0082】
つまり、ブロック分割によってピクチャ境界を超えた位置の画素が分割される場合、その方向のブロック分割を制限する。
【0083】
ここで、具体例を説明する。いま、画面の下端において、ツリーブロックは4分割せず(S1001:NO)、ツリーブロック内部は2分割または3分割する(S1003:YES)。
図12(a)は、ツリーブロックが、ピクチャ境界を隔てて画面内と画面外の部分を含む様子を示す。このとき、全ての組み合わせでツリーブロックを分割した場合について、ブロック分割を制限するか否かを決定する(S1301)。
【0084】
全ての組み合わせでツリーブロックを分割した場合について、それぞれ
図12(a)から
図12(d)に示す。
図12(a)に示すようにブロックを垂直方向に2分割すると、ピクチャ境界を超えた位置の画素が分割されるので、このブロック分割を制限する。同様に、
図12(b)に示すようにブロックを垂直方向に3分割すると、ピクチャ境界を超えた位置の画素が分割されるので、このブロック分割を制限する。一方、
図12(c)に示すようにブロックを水平方向に2分割すると、ピクチャ境界を超えた位置の画素は分割されないので、このブロック分割を制限しない。同様に、
図12(d)に示すようにブロックを水平方向に3分割すると、ピクチャ境界を超えた位置の画素は分割されないので、このブロック分割を制限しない。
【0085】
よって、ブロック分割の全ての組み合わせでブロック分割を制限しない(S1302:NO)。また、水平方向のブロック分割を制限せず(S1303:NO)、垂直方向のブロック分割を制限する(S1304:YES)。そして、ブロックの3分割は制限しない(S1310:NO)。よって、ブロックを2分割するか否かを判断する(S1311)。いま、ブロックを2分割すると判断したとすれば(S1311:YES)、ブロックを水平方向に2分割する(S1312)。
【0086】
こうしたブロック分割の制限により、ブロックは適切な形状となる。なぜなら、画面外の画素を含むブロックにおいて、画面外の部分の画素値は一定である。そのため、そのブロックの画面内の部分の画素値の変化は、画面外の画素を含まないブロックに対して相対的に小さい。よって、細かい画素の変化を符号化する必要性は少ない。従って、画面外の画素をできるだけまとめたブロックとすることによって符号量を小さくし、符号化効率を向上させることができる。
【0087】
このブロック分割の制限は、画面の右端でも同様である。全ての組み合わせでツリーブロックを分割した場合について、それぞれ
図12(e)から
図12(h)に示す。このとき、
図12(e)に示すようにブロックを水平方向に2分割すると、ピクチャ境界を超えた位置の画素が分割される。また、
図12(f)に示すようにブロックを水平方向に3分割すると、ピクチャ境界を超えた位置の画素が分割される。よって、これらのブロック分割を制限する。こうしたブロック分割の制限により、符号化効率を向上させることができる。
【0088】
次に、画像復号化装置200のブロック分割部202の動作について説明する。ブロック分割部202は、前述の画像符号化装置100におけるブロック分割部101と同じ処理手順でブロックを分割する。ブロック分割部101では、ブロック分割のパターンを選択し、選択したブロック分割情報を出力する。一方、ブロック分割部202は、符号化ビットストリームから復号化されたブロック分割情報を用いてブロックを分割する。ブロック分割の制限は、前述の画像符号化装置100と同様である。
【0089】
第1の実施の形態のブロック分割に関するシンタックス(符号化ビットストリームの構文規則)を
図13に示す。
図13において、QT()はブロックの4分割処理にかかるシンタックスを表し、MTT()はブロックの2分割または3分割処理にかかるシンタックスを表す。画像符号化装置100はこのシンタックスに従って符号化し、画像復号化装置200はこのシンタックスに従って復号化する。
【0090】
まず、ブロックを4分割するか否かはQTflagで表される。4分割する場合はQTflag=1、4分割しない場合はQTflag=0とする。4分割する場合(QTflag=1)、4分割した各ブロックについてさらに4分割可能であれば(QTvalid=1)、再帰的に4分割処理をする。4分割しない場合(QTflag=0)、2分割または3分割するか否かはMTTflagで表される。2分割または3分割する場合(MTTflag=1)、垂直方向に分割するか否かはvertical_flagで表され、2分割するか否かはBTflagで表される。垂直方向に分割する場合はvertical_flag=1、水平方向に分割する場合はvertical_flag=0とする。また、2分割する場合はBTflag=1、3分割する場合はBTflag=0とする。2分割または3分割した各ブロックについてさらに2分割または3分割可能であれば(MTTvalid=1)、再帰的に2分割または3分割処理をする。
【0091】
ここで、4分割した各ブロックが、さらに4分割可能か否かを示す変数QTvalidについて説明する。QTvalidは、4分割した各ブロックごとに定義される。4分割するブロックに画面内の画素が含まれない場合は、QTvalid=0となる。上記以外の場合は、QTvalid=1となる。
【0092】
また、2分割または3分割した各ブロックが、さらに2分割または3分割可能か否かを示す変数MTTvalidについて説明する。MTTvalidは、2分割または3分割した各ブロックごとに定義される。2分割または3分割するブロックに画面内の画素が含まれない場合は、MTTvalid=0となる。上記以外の場合は、MTTvalid=1となる。
【0093】
本実施の形態ではブロック分割の方向を制限するため、vertical_flagは不要となる。よって、
図13におけるvertical_flagを省略した形としても良い。
【0094】
こうしたブロック分割の制限により、画面端のブロックを適切な形状に分割することができ、符号化効率を向上させることができる。また、画像符号化および復号化に適したブロック分割ができる。
(第2の実施の形態)
本発明の第2の実施の形態に係る画像符号化装置及び画像復号化装置について説明する。第2の実施の形態では、ブロック分割の深度が制限深度に達した場合に、ブロック分割を制限する。これ以外の構成は第1の実施の形態と同様であるため、説明を省略する。
【0095】
ここで、ブロック分割の深度について説明する。第1の実施の形態において、ブロックを2分割または3分割した後、2分割または3分割された各ブロックに対して再帰的に2分割または3分割する処理について説明した。この処理において、1回目の2分割または3分割処理を深度0と定義する。また、1回目の2分割または3分割処理によって分割された各ブロックに対する2回目の2分割または3分割処理を深度1と定義し、2回目の2分割または3分割処理によって分割された各ブロックに対する3回目の2分割または3分割処理を深度2と定義し、以下同様にして深度を定義する。また、ブロック分割を制限する深度を予め定めて、これを制限深度と定義する。
【0096】
ブロック分割の制限は、画面端においてブロックを2分割または3分割する際に適用される。つまり、
図3における2分割または3分割の処理(S1004からS1010)が、以下に説明する処理に置き換わる。また、
図7における2分割または3分割の処理(S1104からS1110)が、以下に説明する処理に置き換わる。さらに、
図8における2分割または3分割の処理(S1202からS1208)が、以下に説明する処理に置き換わる。
【0097】
ブロック分割の制限について、
図14を用いて説明する。まず、ブロックを2分割または3分割する際に、ブロック分割の深度が制限深度に達しているか否かを判定する(S1401)。
【0098】
制限深度に達していない場合(S1401:NO)、ブロック分割を制限しないと決定する(S1402)。一方、制限深度に達している場合(S1401:YES)、ブロック分割の全ての組み合わせについて、ブロック分割を制限するか否かを決定する(S1301)。S1301は第1の実施の形態と同じであるため、説明を省略する。
【0099】
次に、ブロック分割の全ての組み合わせでブロック分割を制限するか否かを判定する(S1302)。S1302以下の処理は第1の実施の形態と同じであるため、説明を省略する。
【0100】
つまり、ブロック分割によってピクチャ境界を超えた位置の画素が分割され、かつブロック分割の深度が制限深度に達した場合、ブロック分割を制限する。
【0101】
ここで、具体例を説明する。いま、画面の下端において、ツリーブロックは4分割せず(S1001:NO)、ツリーブロック内部を2分割または3分割する(S1003:YES)。また、制限深度は1とする。
図12(a)は、ツリーブロックが、ピクチャ境界を隔てて画面内と画面外の部分を含む様子を示す。このツリーブロックを2分割または3分割する際には、垂直方向の分割によって、ピクチャ境界を超えた位置の画素が分割される。ただし、深度は0であり、制限深度の1に達していない(S1401:NO)。そのため、ブロック分割を制限しないと決定する(S1402)。よって、すべてのブロック分割を制限せず(S1302:NO)、水平方向のブロック分割を制限せず(S1303:NO)、垂直方向のブロック分割を制限しない(S1304:NO)。そして、ブロックを垂直方向に分割するか否かを判断する(S1305)。いま、ブロックを垂直方向に分割すると判断したとすれば(S1305:YES)、ブロックの3分割を制限しないので(S1306:NO)、ブロックを2分割するか否かを判断する(S1307)。いま、ブロックを2分割すると判断したとすると(S1307:YES)、ブロックを垂直方向に2分割する(S1308)。その様子を
図12(a)に示す。
【0102】
続いて、垂直方向に2分割された各ブロックのうち、左のブロックを2分割または3分割する。このとき、深度は1であり、制限深度の1に達している(S1401:YES)。よって、ブロック分割の全ての組み合わせについて、ブロック分割を制限するか否かを決定する(S1301)。
【0103】
ブロックを全ての組み合わせで分割した場合について、それぞれ
図15(a)から
図15(d)に示す。
図15(a)に示すようにブロックを垂直方向に2分割すると、ピクチャ境界を超えた位置の画素が分割されるので、このブロック分割を制限する。同様に、
図15(b)に示すようにブロックを垂直方向に3分割すると、ピクチャ境界を超えた位置の画素が分割されるので、このブロック分割を制限する。一方、
図15(c)に示すようにブロックを水平方向に2分割すると、ピクチャ境界を超えた位置の画素は分割されないので、このブロック分割を制限しない。同様に、
図15(d)に示すようにブロックを水平方向に3分割すると、ピクチャ境界を超えた位置の画素は分割されないので、このブロック分割を制限しない。
【0104】
よって、ブロック分割の全ての組み合わせでブロック分割を制限しない(S1302:NO)。また、水平方向のブロック分割を制限せず(S1303:NO)、垂直方向のブロック分割は制限する(S1304:YES)。そして、ブロックの3分割は制限しない(S1310:NO)。よって、ブロックを2分割するか否かを判断する(S1311)。いま、ブロックを2分割すると判断したとすれば(S1311:YES)、ブロックを水平方向に2分割する(S1312)。
【0105】
こうしたブロック分割の制限により、ブロックは適切な大きさ及び形状となる。なぜなら、画面外の画素を含むブロックにおいて、画面外の部分の画素値は一定である。そのため、そのブロックの画面内の部分の画素値の変化は、画面外の画素を含まないブロックに対して相対的に小さい。よって、細かい画素の変化を符号化する必要性は少ない。従って、画面外の画素をできるだけまとめたブロックとすることによって符号量を小さくし、符号化効率を向上させることができる。
【0106】
このブロック分割の制限は、画面の右端でも同様である。ツリーブロックを2分割または3分割するときは深度0であり制限深度1に達しないので、ブロック分割を制限せず2分割または3分割する。分割されたブロックをさらに分割する際は深度1であり制限深度1に達しているので、ブロック分割を制限するか否かを判定する。すると、ブロックを水平方向に2分割する場合と、ブロックを水平方向に3分割する場合は、ピクチャ境界を超えた位置の画素が分割される。よって、これらのブロック分割を制限する。こうしたブロック分割の制限により、符号化効率を向上させることができる。
【0107】
本実施の形態では、ブロック分割の深度は2分割または3分割に対して定義している。これは、4分割に対して定義しても良い。また、本実施の形態では、ブロック分割の深度によって、ブロック分割を制限している。これは、ブロックが含むピクチャ境界を超えた位置の画素の数や割合によって制限しても良い。つまり、これらの値が予め定められた値より大きい場合に、そのブロック分割を制限するように構成する。加えて、これらの値は、ブロック分割の深度ごとに異なった値としても良い。これにより、画面外の画素の数や割合が少ないブロックは分割し、画面外の画素の数や割合が多いブロックは分割しないようにする。ブロック分割の制限深度や、ブロックが含むピクチャ境界を超えた位置の画素の数や割合など、ブロック分割の制限にかかる値は、符号化装置が符号化ビットストリーム内に記録し、復号化装置が符号化ビットストリーム内に記録された値を用いる構成にしてもよい。
【0108】
第1の実施の形態では、ブロック分割の深度によらずブロック分割を制限する。一方、本実施の形態では、ブロック分割の深度に応じてブロック分割を制限する。これにより、画面外の画素の割合が少ないブロックは分割し、画面外の画素の割合が多いブロックは分割しないようにする。。従って、画面端のブロックを適切な大きさ及び形状に分割することができ、符号化効率を向上させることができる。また、画像符号化および復号化に適したブロック分割ができる。
(第3の実施の形態)
本発明の第3の実施の形態に係る画像符号化装置及び画像復号化装置について説明する。第3の実施の形態では、ピクチャ境界を超えた位置の画素の数によって、ブロック分割を制御する。これ以外の構成は第1の実施の形態と同様であるため、説明を省略する。
【0109】
ブロック分割の制御は、画面端においてブロックを2分割または3分割する際に適用される。つまり、
図3における2分割または3分割の処理(S1004からS1010)が、以下に説明する処理に置き換わる。また、
図7における2分割または3分割の処理(S1104からS1110)が、以下に説明する処理に置き換わる。さらに、
図8における2分割または3分割の処理(S1202からS1208)が、以下に説明する処理に置き換わる。
【0110】
ブロック分割の制御について、
図16を用いて説明する。まず、ブロック分割の全ての組み合わせについて、ピクチャ境界を超えた位置の画素数をカウントする(S1601)。ブロック分割の全ての組み合わせとは、ブロックを水平方向に2分割した場合、ブロックを垂直方向に2分割した場合、ブロックを水平方向に3分割した場合、ブロックを垂直方向に3分割した場合の4つである。
【0111】
そして、ブロックを2分割した場合とブロックを3分割した場合のそれぞれについて、ピクチャ境界を超えた位置の画素数が最大となる分割方向を決定する(S1602)。
【0112】
次に、ブロックを2分割するか否かを判断する(S1603)。
【0113】
2分割すると判断した場合(S1603:YES)、S1602において決定された分割方向に2分割する(S1604)。一方、3分割すると判断した場合(S1603:NO)、S1602において決定された分割方向に3分割する(S1605)。
【0114】
つまり、ピクチャ境界を超えた位置の画素がブロック内に最も多く含まれるように、ブロック分割の方向を制御している。
【0115】
ここで、具体例を説明する。いま、画像は1920x1080画素、ツリーブロックは128x128画素とする。また、ツリーブロックは4分割せず(S1101:NO)、ブロックの内部を2分割または3分割する(S1103:YES)。すると、
図17(a)に示すように、画面の下端にはピクチャ境界を超えて垂直方向に72画素が存在する。このとき、ツリーブロックを全ての組み合わせで分割した場合の、各ブロックにおけるピクチャ境界を超えた位置の画素数をカウントする(S1601)。
【0116】
ツリーブロックを全ての組み合わせで分割した場合について、それぞれ
図17(a)から
図17(d)に示す。
図17(a)に示すようにブロックを垂直方向に2分割すると、分割されたブロックの左側(500)と右側(501)はそれぞれ4608画素である。一方、
図17(b)のようにブロックを水平方向に2分割すると、分割されたブロックの上側(510)は1024画素、下側(511)は8192画素である。つまり、ピクチャ境界を超えた位置の画素数が最大となるのは水平方向に分割する場合の下側の8192画素である。よって、画素数が最大となる分割方向は水平方向である(S1602)。
【0117】
同様に、
図17(c)のようにブロックを垂直方向に3分割したとすると、分割されたブロックの左側(520)と右側(522)はそれぞれ2304画素であり、中央(521)は4608画素である。一方、
図17(d)のようにブロックを水平方向に3分割したとすると、分割されたブロックの上側は0画素、中央(531)は5120画素、下側(532)は4096画素である。つまり、ピクチャ境界を超えた位置の画素数が最大となるのは水平方向に分割する場合の中央の5120画素である。よって、画素数が最大となる分割方向は水平方向である(S1602)。
【0118】
最後に、ブロックを2分割するか否かを判断する(S1603)。2分割すると判断した場合(S1603:YES)、決定された分割方向である水平方向にブロックを2分割する(S1604)。一方、3分割すると判断した場合(S1603:NO)、決定された分割方向である水平方向にブロックを3分割する(S1605)。
【0119】
本実施の形態では、ブロックを2分割または3分割する際に、ピクチャ境界を超えた位置の画素がブロック内に最も多く含まれるように、ブロック分割の方向を制御する。これは、画面外の画素を含むブロックにおいて、画面外の部分の画素値は一定であるから、細かい画素の変化を符号化する必要性は少ないからである。従って、そのような画素をできるだけ1つにまとめたブロックとすることによって符号量を小さくし、符号化効率を向上させることができる。
【0120】
さらに、ブロックの分割方向だけでなく、ブロックの分割数を決定してもよい。上述の通り、ピクチャ境界を超えた位置の画素数が最大となるのは、2分割の場合は8192画素、3分割の場合は5120画素である。つまり、ピクチャ境界を超えた位置の画素がブロック内に多く含まれるのは2分割の場合であるから、ブロックを2分割する。
【0121】
これは、2分割に比べて、3分割はブロックの端に近い位置でブロックが分割されるからである。3分割は、2分割よりピクチャ境界を超えた位置の画素数が少なくなる傾向がある。従って、画面端においてはブロックを3分割せず、2分割する方向を決定することができる。これにより、ブロックの3分割にかかる処理を削減し、ブロック分割の処理を高速化できる。
【0122】
ブロック分割の制御は、画面端においてブロックを2分割または3分割する際に適用される。つまり、
図3における2分割または3分割の処理(S1004からS1010)が、以下に説明する処理に置き換わる。また、
図7における2分割または3分割の処理(S1104からS1110)が、以下に説明する処理に置き換わる。さらに、
図8における2分割または3分割の処理(S1202からS1208)が、以下に説明する処理に置き換わる。
【0123】
ブロック分割の制御について、
図18を用いて説明する。まず、ブロック分割の全ての組み合わせについて、ピクチャ境界を超えた位置の画素数をカウントする(S1651)。ブロック分割の全ての組み合わせとは、ブロックを水平方向に2分割した場合と、ブロックを垂直方向に2分割した場合の2つである。
【0124】
次に、ブロックを2分割した場合について、ピクチャ境界を超えた位置の画素数が最大となる分割方向を決定する(S1652)。そして、決定された分割方向にブロックを2分割する(S1654)。
【0125】
本実施の形態のブロック分割に関するシンタックスは、
図13におけるvertical_flagを省略した形とする。これは、本実施の形態ではブロック分割の方向を制御しており、vertical_flagは不要となるからである。さらに、本実施の形態においてブロックの分割数を決定しても良く、ブロックを3分割しないようにしても良い。その場合にはBTflagが不要となるから、これを省略した形としても良い。本実施の形態のブロック分割に関するシンタックスは、
図13と同じにしても良い。
【0126】
1920x1080画素の場合、画面の右端においてピクチャ境界を超えた位置の画素は存在しない。しかし、画像の幅がツリーブロックの大きさの整数倍でない場合には、ピクチャ境界を超えた位置の画素が存在するので、上述と同様にブロック分割を制御する。
【0127】
本実施の形態では、ピクチャ境界を超えた位置の画素の数によって、ブロック分割の方向を制御している。これは、ピクチャ境界を超えた位置の画素の割合によって、ブロック分割の方向を制御しても良い。
【0128】
こうしたブロック分割の制御により、画面端のブロックを適切な大きさ及び形状に分割することができ、符号化効率を向上させることができる。また、画像符号化および復号化に適したブロック分割ができる。
(第4の実施の形態)
本発明の第4の実施の形態に係る画像符号化装置及び画像復号化装置について説明する。第4の実施の形態では、ピクチャ境界が前述の実施の形態と異なる場合について説明する。これ以外の構成は第1の実施の形態と同様であるため、説明を省略する。
【0129】
ここで、ピクチャ境界が
図12と異なるパターンを考える。ただし、ピクチャ境界が異なっても、ブロック分割を制限するか否かの判断結果が
図12の場合と変わらないパターンは除く。例えば、
図12(a)において、ピクチャ境界が少し上に位置していたとする。その場合でも、ピクチャ境界を超えた位置の画素が分割されるため、ブロック分割は制限される。つまり、
図12(a)は、ピクチャ境界が上下方向に変わっても、ブロック分割を制限するという判断結果は変わらない。これは
図12(b)も同じである。同様に、
図12(e)および
図12(f)は、ピクチャ境界が左右方向に変わっても、ブロック分割を制限するという判断結果は変わらない。
【0130】
結局、ピクチャ境界が
図12と異なるパターンは、
図19(a)から
図19(d)となる。
図19(a)のピクチャ境界は、
図12(c)より上に位置している。同じく、
図19(b)のピクチャ境界は、
図12(d)より上に位置している。同様に、
図19(c)および
図19(d)のピクチャ境界は、
図12(g)および
図12(h)より左に位置している。
【0131】
図19(a)と
図19(b)は、どちらも水平方向の分割である。しかし、2分割した場合はピクチャ境界を超えた位置の画素が分割されず、3分割した場合はピクチャ境界を超えた位置の画素が分割される。つまり、3分割した場合のみ、ブロック分割が制限される。
【0132】
図19(c)と
図19(d)は、どちらも垂直方向の分割である。しかし、2分割した場合はピクチャ境界を超えた位置の画素が分割されず、3分割した場合はピクチャ境界を超えた位置の画素が分割される。つまり、3分割した場合のみ、ブロック分割が制限される。
【0133】
つまり、2分割と3分割とで、ブロック分割を制限する判断が別れる。これは、2分割に比べて、3分割はブロックの端に近い位置でブロックが分割されるからである。3分割は、2分割よりピクチャ境界を超えた位置の画素が分割される傾向がある。従って、画面端においてはブロックを3分割せず、2分割する方向を制限するか否か判定することができる。これにより、ブロックの3分割にかかる処理を削減し、ブロック分割の処理を高速化できる。
【0134】
ブロック分割の制限は、画面端においてブロックを2分割または3分割する際に適用される。つまり、
図3における2分割または3分割の処理(S1004からS1010)が、以下に説明する処理に置き換わる。また、
図7における2分割または3分割の処理(S1104からS1110)が、以下に説明する処理に置き換わる。さらに、
図8における2分割または3分割の処理(S1202からS1208)が、以下に説明する処理に置き換わる。
【0135】
ブロック分割の制限について、
図20を用いて説明する。
図20は、
図11に対して一部の処理を省略した形となっている。よって、
図11と同じステップ番号を付して説明を省略することがある。
【0136】
まず、ブロック分割の全ての組み合わせについて、ブロック分割を制限するか否かを決定する(S1901)。ブロック分割の全ての組み合わせとは、ブロックを水平方向に2分割した場合、ブロックを垂直方向に2分割した場合の2つである。また、ブロック分割を制限するか否かは、ピクチャ境界を超えた位置の画素が分割されるか否かにより決定する。例えば、ブロックを水平方向に2分割すると、ピクチャ境界を超えた位置の画素が分割されるならば、ブロックを水平方向に2分割することを制限する。S1302以降の処理は、3分割にかかる処理がなくなることを除いて
図11と同じであるため、説明を省略する。
【0137】
ここで、
図19(a)を用いて具体例を説明する。
図19(a)の場合において、ブロック分割の全ての組み合わせについて、ブロック分割を制限するか否かを決定する(S1901)。いま、ブロックを水平方向に2分割した場合には、ピクチャ境界を超えた位置の画素が分割されないので、水平方向の分割は制限しない。また、ブロックを垂直方向に2分割した場合には、ピクチャ境界を超えた位置の画素が分割されるので、垂直方向の分割は制限する。よって、ブロック分割の全ての組み合わせについて、ブロック分割を制限しない(S1302:NO)。そして、水平方向のブロック分割を制限せず(S1303:NO)、垂直方向のブロック分割を制限するので(S1304:YES)。つまり、ブロックは水平方向に2分割する(S1312)。
【0138】
ここで、ピクチャ境界が
図19と比べてさらに上または左に近いパターンを考える。すると、どのパターンにおいても、ピクチャ境界を超えた位置の画素が分割される。従って、画面端においてはブロックの2分割および3分割を常に制限しても良い。
【0139】
こうしたブロック分割の制御により、画面端のブロックを適切な大きさ及び形状に分割することができ、符号化効率を向上させることができる。また、画像符号化および復号化に適したブロック分割ができる。
(第5の実施の形態)
本発明の第5の実施の形態に係る画像符号化装置及び画像復号化装置について説明する。第5の実施の形態では、画面右下の端におけるブロック分割の制限について説明する。これ以外の構成は第1の実施の形態と同様であるため、説明を省略する。
【0140】
図9に示したように、画面端におけるツリーブロックは、ピクチャ境界を隔てて画面内と画面外の部分を含むことがある。特に、画面右端におけるツリーブロック1001や画面下端におけるツリーブロック1002が含む画面外の部分に比べて、画面右下の端におけるツリーブロック1003が含む画面外の部分は、より多くなる傾向がある。よって、ブロック分割の制限により、符号化効率を向上させることができる余地が大きい。ツリーブロックが分割されている場合には、そのツリーブロックに含まれる分割されたブロックにおいて、ブロック分割を制限する。
【0141】
画面右下の端におけるブロック分割の制限について、
図20を用いて説明する。画面右下の端におけるブロックとは、
図9のツリーブロック1003に相当する。
【0142】
まず、ブロック分割の全ての組み合わせについて、ブロック分割を制限するか否かを決定する(S1901)。ブロック分割の全ての組み合わせとは、ブロックを水平方向に2分割した場合、ブロックを垂直方向に2分割した場合の2つである。また、ブロック分割を制限するか否かは、ピクチャ境界を超えた位置の画素が分割されるか否かにより決定する。例えば、ブロックを水平方向に2分割すると、ピクチャ境界を超えた位置の画素が分割されるならば、ブロックを水平方向に2分割することを制限する。
【0143】
いま、画面右下の端におけるブロックであるから、ブロック分割の全ての組み合わせについて、ピクチャ境界を超えた位置の画素が分割される。全ての組み合わせでブロック分割を制限する場合(S1302:YES)、ブロックを分割しない(S1314)。
【0144】
ここで、
図21を用いて具体例を説明する。
図21(a)と
図21(b)は、画面右下の端におけるツリーブロックにおいて、ブロック分割の全ての組み合わせを示している。いま、
図21(a)と
図21(b)のどちらも、ピクチャ境界を超えた位置の画素が分割される。全ての組み合わせでブロック分割を制限する場合(S1302:YES)、ブロックを分割しない(S1314)。
【0145】
図21(c)は、
図21(a)と同じピクチャ境界で、ツリーブロックが4分割されている例である。4分割された各ブロックをz−スキャン順にブロック601,602,603,604とする。
図21(c)について、ブロック分割の各ステップを説明する。
【0146】
図21(c)は、次のステップによりブロック分割されている。まず、
図3の処理において、画像をツリーブロックに分割し(S1000)、ツリーブロック内部を4分割すると判定し(S1001:YES)、ツリーブロックを4分割する(S1002)。4分割された各ブロック601,602,603,604について、それぞれ
図7の処理をする。
【0147】
図7において、分割されたブロックの内部を再び4分割しないと判定し(S1101:NO)、ブロック内部を2分割または3分割すると判定する(S1103:YES)。
図7における2分割または3分割の処理(S1104からS1110)は、
図20の処理に置き換わる。
【0148】
図20において、ブロック分割の全ての組み合わせについて、ブロック分割を制限するか否かを決定する(S1901)。いま、画面右下の端におけるブロックであるから、ブロック分割の全ての組み合わせについて、ピクチャ境界を超えた位置の画素が分割される。全ての組み合わせでブロック分割を制限する場合(S1302:YES)、ブロックを分割しない(S1314)。以上により、
図21(c)のブロック分割を終了する。
【0149】
図21(d)は、
図21(c)と異なるピクチャ境界で、ツリーブロックが4分割されている例である。この例は、前述した実施の形態を組み合わせた複雑なブロック分割を示している。4分割された各ブロックのうち、ブロック602,603は更にブロック分割されている。ツリーブロックを4分割した後(S1002)、4分割された各ブロック601,602,603,604ごとに、ブロック分割の各ステップを説明する。
【0150】
ブロック601は、
図7の処理をする。
図7において、分割されたブロックの内部を再び4分割しないと判定し(S1101:NO)、ブロック内部を2分割または3分割しないと判定する(S1103:NO)。ブロック601は、その内部を再分割せずにブロック分割処理を終了する(S1111)。
【0151】
ブロック602は、
図7の処理をする。
図7において、分割されたブロックの内部を再び4分割しないと判定し(S1101:NO)、ブロック内部を2分割または3分割すると判定する(S1103:YES)。
図7における2分割または3分割の処理(S1104からS1110)は、
図20の処理に置き換わる。
【0152】
図20において、ブロック分割の全ての組み合わせについて、ブロック分割を制限するか否かを決定する(S1901)。いま、ブロックを水平方向に2分割した場合には、ピクチャ境界を超えた位置の画素が分割されるので、水平方向の分割は制限する。また、ブロックを垂直方向に2分割した場合には、ピクチャ境界を超えた位置の画素が分割されないので、垂直方向の分割は制限しない。よって、ブロック分割の全ての組み合わせについて、ブロック分割を制限しない(S1302:NO)。そして、水平方向のブロック分割を制限する(S1303:YES)。つまり、ブロックは垂直方向に2分割する(S1308)。結局、ブロック602は分割612により垂直分割される。
【0153】
ブロック603は、
図7の処理をする。
図7において、分割されたブロックの内部を再び4分割しないと判定し(S1101:NO)、ブロック内部を2分割または3分割すると判定する(S1103:YES)。
図7における2分割または3分割の処理(S1104からS1110)は、
図18の処理に置き換わる。
【0154】
図18において、ブロック分割の全ての組み合わせについて、ピクチャ境界を超えた位置の画素数をカウントする(S1651)。ブロック分割の全ての組み合わせとは、ブロックを水平方向に2分割した場合と、ブロックを垂直方向に2分割した場合の2つである。いま、ブロック603においては、
図17(a)と
図17(b)に示した通り、ピクチャ境界を超えた位置の画素数が最大となるのは水平方向に分割する場合である。よって、ブロックを2分割した場合について、ピクチャ境界を超えた位置の画素数が最大となる分割方向を水平方向と決定する(S1652)。そして、決定された分割方向にブロックを2分割する(S1654)。結局、ブロック603は分割623により水平分割される。
【0155】
ブロック604は、
図7の処理をする。
図7において、分割されたブロックの内部を再び4分割しないと判定し(S1101:NO)、ブロック内部を2分割または3分割すると判定する(S1103:YES)。
図7における2分割または3分割の処理(S1104からS1110)は、
図20の処理に置き換わる。
【0156】
図20において、ブロック分割の全ての組み合わせについて、ブロック分割を制限するか否かを決定する(S1901)。いま、分割624によってブロックを水平方向に2分割した場合には、ピクチャ境界を超えた位置の画素が分割されるので、水平方向の分割は制限する。また、分割614によってブロックを垂直方向に2分割した場合には、ピクチャ境界を超えた位置の画素が分割されるので、垂直方向の分割は制限する。つまり、ブロック分割の全ての組み合わせについて、ピクチャ境界を超えた位置の画素が分割される。全ての組み合わせでブロック分割を制限する場合(S1302:YES)、ブロックを分割しない(S1314)。
【0157】
こうしたブロック分割の制御により、画面端のブロックを適切な大きさ及び形状に分割することができ、符号化効率を向上させることができる。また、画像符号化および復号化に適したブロック分割ができる。
【0158】
以上に述べた全ての実施の形態において、ブロック分割を制御する対象はピクチャ境界を超えた位置としている。これは、任意の境界を定めて、それを超えた位置についてブロック分割を制御するようにしても良い。また、任意の境界として、周辺の画素に比べて重要度が高い画素を定め、その境界を超えた位置についてブロック分割を制御する対象としても良い。さらに、任意の境界を超えた位置は画面の下端や右端とは限らず、画面の上端や左端となることもあるし、端でなくてもよい。その場合、画面端でなくてもブロックを適切な大きさ及び形状に分割することができ、符号化効率を向上させることができる。
【0159】
以上に述べた全ての実施の形態は、複数を組み合わせても良い。
【0160】
以上に述べた全ての実施の形態において、画像符号化装置が出力する符号化ビットストリームは、実施の形態で用いられた符号化方法に応じて復号することができるように特定のデータフォーマットを有している。符号化ビットストリームは、HDD、SSD、フラッシュメモリ、光ディスク等のコンピュータ等で読み解き可能な記録媒体に記録して提供しても良いし、有線あるいは無線のネットワークを通してサーバから提供しても良い。従って、この画像符号化装置に対応する画像復号装置は、提供手段によらず、この特定のデータフォーマットの符号化ビットストリームを復号することができる。
【0161】
画像符号化装置と画像復号装置の間で符号化ビットストリームをやりとりするために、有線または無線のネットワークが用いられる場合、通信路の伝送形態に適したデータ形式に符号化ビットストリームを変換して伝送してもよい。その場合、画像符号化装置が出力する符号化ビットストリームを通信路の伝送形態に適したデータ形式の符号化データに変換してネットワークに送信する送信装置と、ネットワークから符号化データを受信して符号化ビットストリームに復元して画像復号装置に供給する受信装置とが設けられる。
【0162】
送信装置は、画像符号化装置が出力する符号化ビットストリームをバッファするメモリと、符号化ビットストリームをパケット化するパケット処理部と、ネットワークを介してパケット化された符号化データを送信する送信部とを含む。受信装置は、ネットワークを介してパケット化された符号化データを受信する受信部と、受信された符号化データをバッファするメモリと、符号化データをパケット処理して符号化ビットストリームを生成し、画像復号装置に提供するパケット処理部とを含む。
【0163】
画像符号化装置と画像復号装置の間で符号化ビットストリームをやりとりするために、有線または無線のネットワークが用いられる場合、送信装置、受信装置に加え、さらに、送信装置が送信する符号化データを受信し、受信装置に供給する中継装置が設けられても良い。中継装置は、送信装置が送信するパケット化された符号化データを受信する受信部と、受信された符号化データをバッファするメモリと、パケットされた符号化データとネットワークに送信する送信部とを含む。さらに、中継装置は、パケット化された符号化データをパケット処理して符号化ビットストリームを生成する受信パケット処理部と、符号化ビットストリームを蓄積する記録媒体と、符号化ビットストリームをパケット化する送信パケット処理部を含んでも良い。
【0164】
また、画像復号装置で復号された画像を表示する表示部を構成に追加することで、表示装置としても良い。その場合、表示部は、復号画像信号重畳部205により生成され、復号画像メモリ206に格納された復号画像信号を読み出して画面に表示する。
【0165】
また、撮像部を構成に追加し、撮像した画像を画像符号化装置に入力することで、撮像装置としても良い。その場合、撮像部は、撮像した画像信号をブロック分割部101に入力する。
【0166】
図22に、本願の符号化復号装置のハードウェア構成の一例を示す。符号化復号装置は、本発明の実施の形態に係る画像符号化装置、および画像復号装置の構成を包含する。係る符号化復号装置9000は、CPU9001、コーデックIC9002、I/Oインターフェース9003、メモリ9004、光学ディスクドライブ9005、ネットワークインターフェース9006、ビデオインターフェース9009を有し、各部はバス9010により接続される。
【0167】
画像符号化部9007と画像復号部9008は、典型的にはコーデックIC9002として実装される。本発明の実施の形態に係る画像符号化装置の画像符号化処理は、画像符号化部9007により実行され、本発明の実施の形態に係る画像復号装置における画像復号処理は、画像符号化部9007により実行される。I/Oインターフェース9003は、例えばUSBインターフェースにより実現され、外部のキーボード9104、マウス9105等と接続する。CPU9001は、I/Oインターフェース9003を介して入力したユーザー操作に基づき、ユーザーの所望する動作を実行するように符号化復号装置9000を制御する。キーボード9104、マウス9105等によるユーザーの操作としては、符号化、復号のどちらの機能を実行するかの選択、符号化品質の設定、符号化ストリームの入出力先、画像の入出力先等がある。
【0168】
ユーザーがディスク記録媒体9100に記録された画像を再生する操作を所望する場合、光学ディスクドライブ9005は、挿入されたディスク記録媒体9100から符号化ビットストリームを読出し、読み出した符号化ストリームを、バス9010を介してコーデックIC9002の画像復号部9008に送る。画像復号部9008は入力した符号化ビットストリームに対して本発明の実施の形態に係る画像復号装置における画像復号処理を実行し、復号画像を、ビデオインターフェース9009を介して外部のモニタ9103へ送る。また、符号化復号装置9000は、ネットワークインターフェース9006を有し、ネットワーク9101を介して、外部の配信サーバ9106や、携帯端末9107と接続可能である。ユーザーがディスク記録媒体9100に記録された画像に変えて、配信サーバ9106や携帯端末9107に記録された画像を再生することを所望する場合は、ネットワークインターフェース9006は、入力されたディスク記録媒体9100から符号化ビットストリームを読出すことに変えて、ネットワーク9101より符号化ストリームを取得する。また、ユーザーがメモリ9004に記録された画像を再生することを所望する場合は、メモリ9004に記録された符号化ストリームに対して、本発明の実施の形態に係る画像復号装置における画像復号処理を実行する。
【0169】
ユーザーが外部のカメラ9102で撮像した画像を符号化しメモリ9004に記録する操作を所望する場合、ビデオインターフェース9009は、カメラ9102から画像を入力し、バス9010を介し、コーデックIC9002の画像符号化部9007に送る。画像符号化部9007は、ビデオインターフェース9009を介して入力した画像に対して本発明の実施の形態に係る画像符号化装置における画像符号化処理を実行し、符号化ビットストリームを作成する。そして符号化ビットストリームを、バス9010を介し、メモリ9004へ送る。ユーザーがメモリ9004に変えて、ディスク記録媒体9100に符号化ストリームを記録することを所望する場合は、光学ディスクドライブ9005は、挿入されたディスク記録媒体9100に対し符号化ストリームの書き出しを行う。
【0170】
画像符号化装置を有し画像復号装置を有さないハードウェア構成や、画像復号装置を有し画像符号化装置を有さないハードウェア構成を実現することも可能である。そのようなハードウェア構成は、例えばコーデックIC9002が、画像符号化部9007、または画像復号部9008にそれぞれ置き換わることにより実現される。
【0171】
以上の符号化及び復号化に関する処理は、ハードウェアを用いた伝送、蓄積、受信装置として実現しても良いのは勿論のこと、ROM(リード・オンリー・メモリ)やフラッシュメモリ等に記憶されているファームウェアや、コンピュータ等のソフトウェアによって実現しても良い。そのファームウェアプログラム、ソフトウェアプログラムをコンピュータ等で読み取り可能な記録媒体に記録して提供しても良いし、有線あるいは無線のネットワークを通してサーバから提供しても良いし、地上波あるいは衛星ディジタル放送のデータ放送として提供しても良い。
【0172】
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。