【手続補正書】
【提出日】平成25年5月23日(2013.5.23)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００４６
【補正方法】変更
【補正の内容】
【００４６】
本発明の他の実施形態では、１つのマクロブロックは、２つ以上の複数のブロックに分割されてよい。これらの実施形態のうちの幾つかでは、符号化器において、第１の複数のブロックが、先に符号化された隣接するマクロブロックのみから再構成された画素値を用いて、予測される。符号化器では、次の複数のブロックが、先に符号化されたパーティションの先に符号化されたブロックから再構成された画素値、および／または、先に符号化された隣接するマクロブロックから再構成された画素値を用いて、予測される。これに対応して、本発明の幾つかの実施形態では、復号器において、第１の複数のブロックが、隣接するマクロブロックからのみ再構成された画素値を用いて予測され、次に、復号器では、パーティションに関連する複数のブロックが、先に復号されたパーティションの、先に復号されたブロックから、再構成された画素を用いて、および／または、隣接するマクロブロック内の先に復号され再構成された画素値を用いて、予測される。幾つかの実施形態では、複数のパーティションを有するブロックは、完全または部分的に、並列的に符号化され得る。幾つかの実施形態では、複数のパーティションを有するブロックは、完全または部分的に、並列的に復号され得る。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００４７
【補正方法】変更
【補正の内容】
【００４７】
図７Ａは、３２ｘ３２マクロブロック内の４ｘ４ブロックの典型的なパーティション２００を示す図である。この典型的なパーティション２００では、６４個の４ｘ４ブロック２０１−２６４が、４つの３２ｘ８サブマクロブロック、すなわち、立下がりスロープハッチングで示された１６個の４ｘ４ブロック２０１−２１６から成る第１のサブマクロブロック２７０、斜交平行線模様で示される１６個の４ｘ４ブロック２１７−２３２から成る第２のサブマクロブロック２７２、立上がりスロープハッチングで示される１６個の４ｘ４ブロック２３３−２４８から成る第３のサブマクロブロック２７４、および、垂直ハッチで示される１６個の４ｘ４ブロック２４９−２６４から成る第４のサブマクロブロック２７６に分割されている。各サブマクロブロック２７０、２７２、２７４、２７６は、３つのブロックセット、すなわち、軽く影を付した第１のブロックセット（第１のサブマクロブロック２７０ではブロック２１０、２１２、２１６、第２のサブマクロブロック２７２ではブロック２２６、２３２、第３のサブマクロブロック２７４ではブロック２４２、２４４、２４６、第４のサブマクロブロック２７６ではブロック２６２、２６４）、濃く影を付した第２のブロックセット（第１のサブマクロブロック２７０ではブロック２０１、２０３、２０５、２０７、第２のサブマクロブロック２７２ではブロック２１７、２１９、２２１、２２３、第３のサブマクロブロック２７４ではブロック２３３、２３５、２３７、２３９、第４のサブマクロブロック２７６ではブロック２４９、２５１、２５３、２５５）、および、影を付していない第３のブロックセット（第１のサブマクロブロック２７０ではブロック２０２、２０４、２０６、２０８、２０９、２１１、２１３、２１４、２１５、第２のサブマクロブロック２７２ではブロック２１８、２２０、２２２、２２４、２２５、２２７、２２８、２２９、２３０、２３１、第３のサブマクロブロック２７４ではブロック２３４、２３６、２３８、２４０、２４１、２４３、２４５、２４７、第４のサブマクロブロック２７６ではブロック２５０、２５  ２、２５４、２５６、２５７、２５８、２５９、２６０、２６１、２６３）に分割される。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００５５
【補正方法】変更
【補正の内容】
【００５５】
本発明の幾つかの実施形態では、Ｎ×Ｎブロックの場合のモード０（垂直モードイントラ予測）に基づく予測が、疑似コードに基づいて行われてよい。ここで、pred[y][x]は予測された画素値を示し、ｙは行番号を示し、ｘは列番号を示す。
・  // Vertical
・  // pU array holds upper neighbors
・  BLOCK_SIZE = N;
・  for (y=0; y<BLOCK_SIZE; y++)
・    for  (x=0; x<BLOCK_SIZE; x++)
・      pred[y][x] = pU[x];
・  //  end pseudo code.
本発明の幾つかの実施形態では、Ｎ×Ｎブロックの場合のモード１（水平モードイントラ予測）に基づく予測が、疑似コードに基づいて行われてよい。ここで、pred[y][x]は予測された画素値を示し、ｙは行番号を示し、ｘは列番号を示す。
・  // Horizontal
・  // pL array holds left neighbors 
・  BLOCK_SIZE = N;
・  for (y=0; y<BLOCK_SIZE; y++)
・    for  (x=0; x<BLOCK_SIZE; x++)
pred[y][x] = pL[y];
・  //  end pseudo code.
本発明の幾つかの実施形態では、Ｎ×Ｎブロック（Ｎ＝２ｎ）の場合のモード２（ＤＣモードイントラ予測）に基づく予測が、疑似コードに基づいて行われてよい。ここで、pred[y][x]は予測された画素値を示し、ｙは行番号を示し、ｘは列番号を示す。
・  // DC
・  // pU array holds upper neighbors 
・  // pL array holds left neighbors 
・  BLOCK_SIZE = N;
・  if all pU samples and all pL samples are available then
・    for (y=0; y<BLOCK_SIZE; y++)
・      for  (x=0; x<BLOCK_SIZE; x++)
・      {
・          pred[y][x] = (pU[0] + pU[1] + … + pU[N-1] +
・                                pL[0] + pL[1] + … + pL[N-1] + (1<<n))  >> (n+1);
・      }
・  if any pU samples are unavailable and all pL samples are available then
・    for (y=0; y<BLOCK_SIZE; y++)
・      for  (x=0; x<BLOCK_SIZE; x++)
・      {
・          pred[y][x] = (pL[0] + pL[1] + … + pL[N-1] + (1<<(n-1)))  >> n
・      }
・  if all pU samples are available and any pL samples are unavailable then
・    for (y=0; y<BLOCK_SIZE; y++)
・      for  (x=0; x<BLOCK_SIZE; x++)
・      {
・          pred[y][x] = (pU[0] + pU[1] + … + pU[N-1] + (1<<(n-1)))  >> n;
・      }
・  if any pU samples are unavailable and any pL samples are unavailable then
・    for (y=0; y<BLOCK_SIZE; y++)
・      for  (x=0; x<BLOCK_SIZE; x++)
・      {
・          pred[y][x] = DefaultValue;   //  DefaultValue  = 2^(b-1)  for an image with bitdepth = b
・      }
・  //  end pseudo code.
本発明の幾つかの実施形態では、Ｎ×Ｎブロックの場合のモード３（対角線左下モードイントラ予測）に基づく予測が、疑似コードに基づいて行われてよい。ここで、pred[y][x]は予測された画素値を示し、ｙは行番号を示し、ｘは列番号を示す。
・  // Diagonal Down Left
・  // pU array holds upper neighbors 
・  // pL array holds left neighbors 
・  BLOCK_SIZE = N;
・  bound = BLOCK_SIZE-1;
・  for (y=0; y<BLOCK_SIZE; y++)
・    for  (x=0; x<BLOCK_SIZE; x++)
・    {
・        if (x!=bound||y!=bound)
・           pred[y][x] = (pU[x+y] + 2*pU[x+y+1] + pU[x+y+2] +2) >> 2;
・       else
・          pred[y][x] = (pU[bound*2] + 3*pU[bound*2+1] +2) >> 2;
・    }
・  //  end pseudo code.
本発明の幾つかの実施形態では、Ｎ×Ｎブロックの場合のモード４（対角線右下モードイントラ予測）に基づく予測が、疑似コードに基づいて行われてよい。ここで、pred[y][x]は予測される画素値であり、ｙは行番号を示し、ｘは列番号を示す。
・  // Diagonal Down Right
・  // pU array holds upper neighbors 
・  // pL array holds left neighbors 
・  BLOCK_SIZE = N;
・  bound = BLOCK_SIZE-1;
・  if (x>y)
・    pred[y][x]  = (pU[x-y-2] + 2*pU[x-y-1] + pU[x-y] +2) >> 2;
・  else if (x<y)
・    pred[y][x]  = (pL[y-x-2] + 2*pL[y-x-1] + pL[y-x] +2) >> 2;
・   else
・    pred[y][x]  = (pU[0] + 2*pU[-1] + pL[0] +2) >> 2;
・  //  end pseudo code.
本発明の幾つかの実施形態では、Ｎ×Ｎブロックの場合のモード５（垂直右モードイントラ予測）に基づく予測が、疑似コードに基づいて行われてよい。ここで、pred[y][x]は予測された画素値を示し、ｙは行番号を示し、ｘは列番号を示す。
・  // Vertical Right
・  // pU array holds upper neighbors 
・  // pL array holds left neighbors 
・  BLOCK_SIZE = N;
・  bound = BLOCK_SIZE-1;
・  zVR= 2*x-y;
・  if ( ((zVR&0x1) == 0) && (zVR>=0) && zVR<=2*bound )   
・     pred[y][x] = (pU[x-(y>>1)-1] + pU[x-(y>>1)] +1) >> 1;
・  else if ( ((zVR&0x1) == 1) && (zVR> 0) && zVR<2*bound) 
・     pred[y][x]   = (pU[x-(y>>1)-2] + 2*pU[x-(y>>1)-1] + pU[x-(y>>1)] +2) >> 2;
・  else if (zVR == -1)  
・     pred[y][x]   = (pL[0] + 2*pU[-1] + pU[0] +2) >> 2;
・  else 
・      pred[y][x]   = (pL[y-(x<<1)-1] + 2*pL[y-(x<<1)-2] + pL[y-(x<<1)-3] +2) >> 2;
・    //  end pseudo code.
本発明の幾つかの実施形態では、Ｎ×Ｎブロックの場合のモード６（水平下方モードイントラ予測）に基づく予測が、疑似コードに基づいて行われてよい。ここで、pred[y][x]は予測された画素値を示し、ｙは行番号を示し、ｘは列番号を示す。：
・  // Horizontal Down
・  // pU array holds upper neighbors 
・  // pL array holds left neighbors 
・  BLOCK_SIZE = N;
・  bound = BLOCK_SIZE-1;
・  zHD= 2*y-x;
・  if ( ((zHD&0x1) == 0) && (zHD>=0) && zHD<=2*bound )    
・     pred[y][x] = (pL[y-(x>>1)-1] + pL[y-(x>>1)] +1) >> 1;
・  else if ( ((zHD&0x1) == 1) && (zHD>0) && zHD<2*bound)  
・     pred[y][x] = (pL[y-(x>>1)-2] + 2*pL[y-(x>>1)-1] + pL[y-(x>>1)] +2) >> 2;
・  else if (zHD == -1)  
・    pred[y][x] = (pL[0] + 2*pU[-1] + pU[0] +2) >> 2;
・  else 
・    pred[y][x] = (pU[x-(y<<1)-1] + 2*pU[x-(y<<1)-2] + pU[x-(y<<1)-3] +2) >> 2;・  //  end pseudo code.
本発明の幾つかの実施形態では、Ｎ×Ｎブロックの場合のモード７（垂直左モードイントラ予測）に基づく予測が、疑似コードに基づいて行われてよい。ここで、pred[y][x]は予測された画素値を示し、ｙは行番号を示し、ｘは列番号を示す。：
・  // Vertical Left
・  // pU array holds upper neighbors 
・  // pL array holds left neighbors 
・  BLOCK_SIZE = N;
・  bound = BLOCK_SIZE-1;
・  if ((y&0x1) == 0)    //even
・     pred[y][x] = (pU[x+(y>>1)] + pU[x+(y>>1)+1] +1) >> 1;
・  else    //odd
・     pred[y][x] = (pU[x+(y>>1)] + 2*pU[x+(y>>1)+1] + pU[x+(y>>1)+2] +2) >> 2;
・  //  end pseudo code.
本発明の幾つかの実施形態では、Ｎ×Ｎブロックの場合のモード８（水平上方モードイントラ予測）に基づく予測が、疑似コードに基づいて行われてよい。ここで、pred[y][x]は予測された画素値を示し、ｙは行番号を示し、ｘは列番号を示す。
・  // Horizontal Up
・  // pU array holds upper neighbors 
・  // pL array holds left neighbors 
・  BLOCK_SIZE = N;
・  bound = BLOCK_SIZE-1;
・   zHU = x+2*y;
・    if ( ((zHU&0x1) == 0) && zHU<=2*(bound-1) )     
・       pred[y][x] = (pL[y+(x>>1)] + pL[y+(x>>1)+1]+1) >> 1;
・    else if ( ((zHU&0x1) ==1) && zHU<2*(bound-1))  
・       pred[y][x] = (pL[y+(x>>1)] + 2*pL[y+(x>>1)+1] + pL[y+(x>>1)+2] +2)  >>2;
・    else if (zHU>2*bound-1)                                          
・        pred[y][x]  = pL[bound];
・    else              // (zHU==2*bound-1) 29 for MB, 13 for 8x8 block, 5 for 4x4 block
・        pred[y][x]  = (pL[bound-1] + 3*pL[bound] +2) >> 2;
・  //  end pseudo code.
上記した疑似コードは、説明のためであり、限定のために記載したものではない。また、他の実施例を排除することや、上述の予測式の拡張を排除することを意図するものではない。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０１１４
【補正方法】変更
【補正の内容】
【０１１４】
図１６Ａおよび図１６Ｂは、このプロセスを示す図である。図１６Ａに示されるように、１６個の画素６６１−６７６の４ｘ４ブロック６６０は、右の６８５−６８８および下の６８０−６８３に再構成された画素値、並びに補間されたコーナー画素値６８４から、水平下方２方向６８９に予測される。図１６Ｂは、図１６Ａの画素を１８０度回転させた後の画素を示す図である。１６個の画素６９１−７０６の４ｘ４ブロック６９０は、左の７１５−７１８および上の７１１−７１４に再構成された画素、並びに補間されたコーナー画素７１０から、「モード６」予測式を用いて、水平下方の方向７１９に予測される。これらの予測される画素値６９１−７０６は、１８０度回転させることによって、適切な画素にマップし直される。本発明の幾つかの実施形態では、「モード１５」で予測された値は、回転を介して、かつ、「モード６」予測式を用いて予測される。他の実施形態では、「モード１５」で予測された値は、４ｘ４イントラ予測の場合、次のように直接予測される。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】０１２９
【補正方法】変更
【補正の内容】
【０１２９】
反対方向のモードを用いたイントラ予測の利点は、図１９に関連して理解されよう。図１９は、典型的な、１６個の画素９０１−９１６のブロック９００を示す図である。ブロック９００が、市松模様に分割されたマクロブロックの第１のブロックセット内の全てのブロックが再構成された後に再構成されたブロックセットに存在するならば、左の隣接ブロックおよび上の隣接ブロック以外の隣接ブロックにおいて再構成された画素値（例えば、９３１−９３８）が、左の隣接ブロック内の画素９２５−９２８、および、上の隣接ブロック内の画素９２１−９２４に加えて、イントラ予測の使用に利用可能である。例えば図１９において、白画素９０１−９０７、９０９、９１０、９１３、９３１、９２１−９２８、９３５、９４０−９４２、および、グレー画素９０８、９１１、９１２、９１４−９１６、９３２−９３４、９３６−９３８、９４３、９５０−９５３、９５５−９５７によって示されるような、輝度コンテンツを有する画像の場合には、ブロック９００内のグレー画素９０８、９１１、９１２、９１４−９１６、９３２−９３４の画素値は、最も良好には、右の隣接ブロックおよび下の隣接ブロックにおいて再構成された画素値から、予測される。従って、反対方向の予測モードの使用は、予測される画素値と、予測において用いられる再構成された画素値との間の相関性が高くなるため、圧縮作用を増大させる。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】０１５４
【補正方法】変更
【補正の内容】
【０１５４】
図２０を参照する。この図は、本発明の幾つかの実施形態における典型的な符号化器１２００を説明するためのものである。任意の動画像符号化器を用いてよいことは理解されよう。入力動画像１２１０が、フレームを並び替えるために適したバッファ１２２０に供給されるか、または、必要な場合には、その一部に供給される。減算部１２３０が、好適に並び替えられたフレームの一部を、変換および量子化部１２４０に好適なように変形する。変換および量子化部１２４０は、エントロピー符号化部１２５０に信号を供給する。エントロピー符号化部１２５０は、出力ビットストリーム１２７０のために、信号を出力バッファ１２６０に供給する。入力動画像１２１０を受信する符号化器制御部１２８０が、符号化器１２００の全てのモジュールに制御信号を供給する。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】０１５６
【補正方法】変更
【補正の内容】
【０１５６】
逆変換および逆量子化部１３００は、結合部１３３０に信号を供給する。結合部１３３０は、マクロブロック種類決定部１３２０との組み合わせにおいて、信号を、イントラ符号化予測部１３４０およびデブロッキングフィルター１３５０に供給する。デブロッキングフィルター１３５０は、参照画像バッファ１３６０に連結されている。参照画像バッファ１３６０は、信号を、動き推定部１３７０および動き補償部１３８０に供給する。動き推定部１３７０は、信号を、動き補償部１３８０およびエントロピー符号化部１２５０に供給する。選択部１３９０が、減算部１２３０のために、動き補償部１３８０の出力、または、イントラ符号化予測部１３４０の出力を選択する。このようにして、減算部１２３０は、マクロブロックがイントラ符号化されたのか、または、動き補償符号化されたのかに関する情報を受信する。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】０１５８
【補正方法】変更
【補正の内容】
【０１５８】
図２１を参照する。任意の好適な復号器を用いてよい。入力ビットストリーム１４１０のための、典型的な動画像復号器１４００は、入力バッファ１４２０を含む。入力バッファ１４２０は、エントロピー復号部１４３０に信号を供給する。エントロピー復号部１４３０は、逆変換および逆量子化部１４４０に信号を供給する。逆変換および逆量子化部１４４０は、結合部１４５０に信号を供給する。結合部１４５０は、デブロッキングフィルター１４６０およびイントラ予測部１４７０に、信号を供給する。デブロッキングフィルター１４６０は、参照画像バッファ１４８０に信号を供給する。参照画像バッファ１４８０は、動き補償部１４９０に信号を供給する。
【手続補正９】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
マクロブロックをイントラ予測する方法であって、
マクロブロックを、第１の複数のブロックと、当該第１の複数のブロックに属さないブロックからなる第２の複数のブロックとに分割する分割工程と、
上記第１の複数のブロックに属するブロックの画素値を、復号されたマクロブロックの再構成された画素値のみを使って予測する第１の予測工程と、
上記第２の複数のブロックに属するブロックを、上記第１の複数のブロックの再構成された画素値、および復号されたマクロブロックの再構成された画素値を使って予測する第２の予測工程と、
を含んでいる方法。
【請求項２】
上記第２の予測工程において、上記第１の複数のブロックに属する上記ブロックは、上記第２の複数のブロックに属する上記ブロックに対して、左方向及び上方向のみならず、右方向及び下方向をも含む方向群から選択された方向に位置している、請求項１に記載の方法。
【請求項３】
上記第１又は第２の複数のブロックに属する各ブロックの予測モードを通知するステップをさらに含み、
上記第２の複数のブロックに属する各予測モードが第１の値のとき、当該予測モードは、単方向のイントラ予測モードを示しており、上記第２の複数のブロックに属する各予測モードが第２の値のとき、当該予測モードは、双方向のイントラ予測モードを示しており、
上記双方向のイントラ予測モードが示す第１及び第２の方向は互いに逆方向である、請求項２に記載の方法。
【請求項４】
上記予測モードが上記第２の値であるとき、上記第１の方向に従って予測された第１の画素値と上記第２の方向に従って予測された第２の画素値との加重補間に基づいて、画素値が予測される、請求項３に記載の方法
【請求項５】
上記加重補間の重みは、現在のブロックと上記第１の複数のブロックに属する参照ブロックとの距離、または、現在のブロックと復号されたマクロブロックの再構成された画素との距離に基づいて定められる、請求項４に記載の方法。
【請求項６】
上記加重補間の各重みは、１／２である、請求項４に記載の方法。
【請求項７】
上記第１の複数のブロックと上記第２の複数のブロックとが、チェッカーボードパターンを成している、請求項１に記載の方法。
【請求項８】
上記予測モードの予測値を予測する工程を更に含む、請求項３に記載の方法。
【手続補正１０】
【補正対象書類名】図面
【補正対象項目名】図２０
【補正方法】変更
【補正の内容】
【図２０】
2013524670.tif 000001