(57)【特許請求の範囲】
【請求項１】
符号化されていないビデオフレームを表す符号化されたビットストリームを生成するためにビデオフレームのシーケンスにおけるビデオフレームを符号化する方法であって、
前記符号化されていないビデオフレームから符号化ブロックを取得する工程と、
前記符号化ブロックを符号化する際に使用するために、インター符号化モード、スキップ符号化モード、及び直接符号化モードを含む複数の符号化モードから一つの符号化モードを選択する工程と、
を備え、
前記インター符号化モードが選択された場合には、更に、
取得された前記符号化ブロックを複数の予測ブロックに分割する工程と、
前記複数の予測ブロックのそれぞれの予測ブロックに対して、
各前記予測ブロックを符号化する際に使用するために、中間値を用いた動きベクトル予測方法及び平均値を用いた動きベクトル予測方法から一つの動きベクトル予測方法を選択する工程と、
前記符号化されたビットストリームにおける各前記予測ブロックのビデオデータ部分を生成するために、選択された動きベクトル予測方法に基づいて各前記予測ブロックを符号化する工程と、
符号化された各前記予測ブロックのヘッダ部分に、その予測ブロックの符号化に用いられた前記選択された動きベクトル予測方法を示す選択された動きベクトル予測方法フラグを設定する工程と、
を備え、
前記スキップ符号化モード又は前記直接符号化モードが選択された場合には、更に、
取得された前記符号化ブロックを現在の予測ブロックとして設定する工程と、
前記現在の予測ブロックの動きベクトル候補の順序付きリストを取得する工程と、
前記現在の予測ブロックを符号化する際に使用するために、前記動きベクトル候補の順序付きリストから動きベクトルを選択する工程と、
前記符号化されたビットストリームにおける前記現在の予測ブロックのビデオデータ部分の一部を生成するために、選択された動きベクトルを使用して前記現在の予測ブロックを符号化する工程と、
符号化された前記現在の予測ブロックのヘッダ部分に、前記選択された動きベクトルに対応する前記動きベクトル候補の順序付きリスト内の位置を示す動きベクトル選択フラグを設定する工程と、
を備え、
更に、前記符号化されたビットストリームのヘッダ部分に、前記符号化ブロックを符号化するために前記複数の符号化モードから選択された符号化モードを示す符号化モード選択フラグを設定する工程を備える方法。
【請求項２】
前記スキップ符号化モード又は前記直接符号化モードが選択された場合には、更に、
前記符号化されていないビデオフレームを、複数の行及び複数の列に配置された複数の予測ブロックであって、前記現在の予測ブロックが複数の行における第１の行に位置するとともに、複数の列における第１の列に位置する複数の予測ブロックに分割する工程を備え、
前記動きベクトル候補の順序付きリストを取得する工程は、
前記複数の予測ブロックのうちの第１の参照予測ブロックを以前符号化する際に使用された第１の動きベクトルを選択する工程と、
前記複数の予測ブロックのうちの第２の参照予測ブロックを以前符号化する際に使用された第２の動きベクトルを選択する工程と、
前記複数の予測ブロックのうちの第３の参照予測ブロックを以前符号化する際に使用された第３の動きベクトルを選択する工程と、
を含む請求項１に記載の方法。
【請求項３】
前記第１の参照予測ブロックを、前記複数の予測ブロックのうち、前記複数の行において前記第１の行に隣接する第２の行に位置するとともに、前記第１の列に位置する予測ブロックから選択し、
前記第２の参照予測ブロックを、前記複数の予測ブロックのうち、前記第２の行に位置するとともに、前記複数の列において前記第１の列に隣接する第２の列に位置する予測ブロックから選択し、
前記第３の参照予測ブロックを、前記複数の予測ブロックのうち、前記第１の行に位置するとともに、前記複数の列において前記第１の列に隣接する第３の列に位置する予測ブロックから選択する請求項２に記載の方法。
【請求項４】
前記スキップ符号化モード又は前記直接符号化モードが選択された場合には、更に、
前記符号化されていないビデオフレームを、複数の行及び複数の列に配置された複数の予測ブロックであって、前記現在の予測ブロックが複数の行における第１の行に位置するとともに、複数の列における第１の列に位置する複数の予測ブロックに分割する工程を備え、
前記動きベクトル候補の順序付きリストを取得する工程は、
前記複数の予測ブロックのうちの第１の参照予測ブロックを以前符号化する際に使用された第１の動きベクトルを選択する工程と、
前記複数の予測ブロックのうちの第２の参照予測ブロックを以前符号化する際に使用された第２の動きベクトルを選択する工程と、
ゼロ値動きベクトルを選択する工程と、
を含む請求項１に記載の方法。
【請求項５】
前記第１の参照予測ブロックを、前記複数の予測ブロックのうち、前記複数の行において前記第１の行に隣接する第２の行に位置するとともに、前記第１の列に位置する予測ブロックから選択し、
前記第２の参照予測ブロックを、前記複数の予測ブロックのうち、前記第２の行に位置するとともに、前記複数の列において前記第１の列に隣接する第２の列に位置する予測ブロックから選択する請求項４に記載の方法。
【請求項６】
前記第１の参照予測ブロックを、前記複数の予測ブロックのうち、前記複数の行において前記第１の行に隣接する第２の行に位置するとともに、前記第１の列に位置する予測ブロックから選択し、
前記第２の参照予測ブロックを、前記複数の予測ブロックのうち、前記第１の行に位置するとともに、前記複数の列において前記第１の列に隣接する第２の列に位置する予測ブロックから選択する請求項４に記載の方法。
【請求項７】
前記第１の参照予測ブロックを、前記複数の予測ブロックのうち、前記複数の行において前記第１の行に隣接する第２の行に位置するとともに、前記複数の列において前記第１の列に隣接する第２の列に位置する予測ブロックから選択し、
前記第２の参照予測ブロックを、前記複数の予測ブロックのうち、前記第１の行に位置するとともに、前記複数の列において前記第１の列に隣接する第３の列に位置する予測ブロックから選択する請求項４に記載の方法。
【請求項８】
前記スキップ符号化モード又は前記直接符号化モードが選択された場合には、更に、
前記符号化されていないビデオフレームを、複数の行及び複数の列に配置された複数の予測ブロックであって、前記現在の予測ブロックが複数の行における第１の行に位置するとともに、複数の列における第１の列に位置する複数の予測ブロックに分割する工程を備え、
前記動きベクトル候補の順序付きリストは、
前記複数の予測ブロックのうちの第１の参照予測ブロックを以前符号化する際に使用された第１の動きベクトルと、
第１のゼロ値動きベクトルと、
第２のゼロ値動きベクトルと、
を含む請求項１に記載の方法。
【請求項９】
前記第１の参照予測ブロックは、前記複数の行において前記第１の行に隣接する第２の行に位置するとともに、前記第１の列に位置する請求項８に記載の方法。
【請求項１０】
前記第１の参照予測ブロックは、前記複数の行において前記第１の行に隣接する第２の行に位置するとともに、前記複数の列において前記第１の列に隣接する第２の列に位置する請求項８に記載の方法。
【請求項１１】
前記第１の参照予測ブロックは、前記第１の行に位置するとともに、前記複数の列において前記第１の列に隣接する第２の列に位置する請求項８に記載の方法。
【請求項１２】
前記動きベクトル候補の順序付きリストは、
第１のゼロ値動きベクトルと、
第２のゼロ値動きベクトルと、
第３のゼロ値動きベクトルと、
を含む請求項１に記載の方法。
【請求項１３】
前記選択された動きベクトルを使用して前記現在の予測ブロックを符号化する工程は、
前記選択された動きベクトルを使用して、前記ビデオフレームのシーケンスにおいて以前符号化されたフレームにおける第２の予測ブロックを特定する工程と、
前記現在の予測ブロックと前記第２の予測ブロックとの間の残差を取得する工程と、
前記符号化されたビットストリームのビデオデータ部分における前記現在の予測ブロックに対応する部分を生成するために前記残差を符号化する工程と、
を含む請求項１に記載の方法。
【請求項１４】
前記選択された動きベクトルを使用して前記現在の予測ブロックを符号化する工程は、
前記選択された動きベクトルを使用して、前記ビデオフレームのシーケンスにおいて以前符号化されたフレームにおける第２の予測ブロックを特定する工程と、
前記符号化されたビットストリームのビデオデータ部分における前記現在の予測ブロックに対応する部分を生成するために前記第２の予測ブロックを符号化する工程と、
を含む請求項１に記載の方法。
【請求項１５】
符号化されていないビデオフレームを表す符号化されたビットストリームであって、少なくともヘッダ部分及びビデオデータ部分を含む符号化されたビットストリームを生成するためにビデオフレームを符号化する方法であって、
前記符号化されていないビデオフレームから符号化ブロックを取得する工程と、
前記符号化ブロックを符号化する際に使用するために、インター符号化モード、スキップ符号化モード、及び直接符号化モードを含む複数の符号化モードから一つの符号化モードを選択する工程と、
を備え、
前記インター符号化モードが選択された場合には、更に、
取得された前記符号化ブロックを複数の予測ブロックに分割する工程と、
前記複数の予測ブロックのそれぞれを符号化する際に使用するために、中間値を用いた動きベクトル予測方法及び平均値を用いた動きベクトル予測方法から一つの動きベクトル予測方法を選択する工程と、
前記複数の予測ブロックのそれぞれに対して、選択された動きベクトル予測方法を使用してそれぞれの動きベクトルを取得する工程と、
前記符号化されたビットストリームのビデオデータ部分の一部を生成するために、各前記動きベクトルを使用して前記複数の予測ブロックのそれぞれを符号化する工程と、
前記符号化されたビットストリームの前記複数の予測ブロックに対応するヘッダ部分に、前記複数の予測ブロックの符号化に用いられた前記選択された動きベクトル予測方法を示す選択された動きベクトル予測方法フラグを設定する工程と、
前記符号化されたビットストリームのヘッダ部分に、前記符号化ブロックを符号化するために前記複数の符号化モードから選択された符号化モードを示す符号化モード選択フラグを設定する工程と、
を備える方法。
【請求項１６】
前記複数の動きベクトル予測方法のうちの少なくとも１つの動きベクトル予測方法は、
前記複数の予測ブロックにおける第１の参照予測ブロックを以前符号化する際に使用された第１の動きベクトルと、
前記複数の予測ブロックにおける第２の参照予測ブロックを以前符号化する際に使用された第２の動きベクトルと、
前記複数の予測ブロックにおける第３の参照予測ブロックを以前符号化する際に使用された第３の動きベクトルと、
の中間値を決定する工程を含む請求項１５に記載の方法。
【請求項１７】
前記複数の動きベクトル予測方法のうちの少なくとも１つの動きベクトル予測方法は、
前記複数の予測ブロックにおける第１の参照予測ブロックを以前符号化する際に使用された第１の動きベクトルと、
前記複数の予測ブロックにおける第２の参照予測ブロックを以前符号化する際に使用された第２の動きベクトルと、
の平均値を決定する工程を含む請求項１５に記載の方法。
【請求項１８】
前記スキップ符号化モード又は前記直接符号化モードが選択された場合には、更に、
取得された前記符号化ブロックを現在の予測ブロックとして設定する工程と、
前記現在の予測ブロックの動きベクトル候補の順序付きリストを取得する工程と、
前記現在の予測ブロックを符号化する際に使用するために、前記動きベクトル候補の順序付きリストから動きベクトルを選択する工程と、
前記符号化されたビットストリームにおける前記現在の予測ブロックのビデオデータ部分の一部を生成するために、前記動きベクトルを使用して前記現在の予測ブロックを符号化する工程と、
符号化された前記現在の予測ブロックのヘッダ部分に、前記動きベクトルに対応する前記動きベクトル候補の順序付きリスト内の位置を示す動きベクトル選択フラグを設定する工程と、
を備える請求項１５に記載の方法。
【請求項１９】
符号化されていないビデオフレームを表す符号化されたビットストリームを生成するためにビデオフレームのシーケンスにおけるビデオフレームを符号化する方法であって、
前記符号化されていないビデオフレームから符号化ブロックを取得する工程と、
前記符号化ブロックを符号化する際に使用するために、インター符号化モード、スキップ符号化モード、及び直接符号化モードを含む複数の符号化モードから一つの符号化モードを選択する工程と、
前記符号化されたビットストリームのヘッダ部分に、選択された前記符号化モードを示す符号化モード選択フラグを設定する工程と、
前記符号化ブロックから予測ブロックを選択する工程と、
を備え、
前記インター符号化モードが選択された場合には、更に、
中間値を用いた動きベクトル予測方法及び平均値を用いた動きベクトル予測方法から一つの動きベクトル予測方法を選択する工程と、
前記符号化されたビットストリームにおけるビデオデータ部分を生成するために選択された前記動きベクトル予測方法に基づいて予測ブロックを符号化する工程と、
前記符号化されたビットストリームのヘッダ部分に、選択された動きベクトル予測方法を示す選択された動きベクトル予測方法フラグを設定する工程と、
を備え、
前記スキップ符号化モード又は前記直接符号化モードが選択された場合には、更に、
前記符号化されたビットストリームのビデオデータ部分を生成するために、動きベクトル候補の順序付きリストから選択された動きベクトルを使用して前記予測ブロックを符号化する工程と、
符号化された前記予測ブロックのヘッダ部分に、前記動きベクトルに対応する前記動きベクトル候補の順序付きリスト内の位置を示す動きベクトル選択フラグを設定する工程と、
を備える方法。
【請求項２０】
前記動きベクトルを使用して前記予測ブロックを符号化する工程は、
前記動きベクトル候補の順序付きリストを取得する工程と、
前記動きベクトル候補の順序付きリストから前記動きベクトルを選択する工程と、
前記動きベクトルを使用して、前記ビデオフレームのシーケンスにおいて以前符号化されたフレームにおける第２の予測ブロックを特定する工程と、
前記予測ブロックと前記第２の予測ブロックとの間の残差を取得する工程と、
前記符号化されたビットストリームのビデオデータ部分を生成するために前記残差を符号化する工程と、
を含む請求項１９に記載の方法。
【請求項２１】
符号化されていないビデオフレームを表す符号化されたビットストリームを生成するためにビデオフレームのシーケンスにおけるビデオフレームを符号化する方法であって、
前記符号化されていないビデオフレームから符号化ブロックを取得する工程と、
前記符号化ブロックを符号化する際に使用するために、インター符号化モード、スキップ符号化モード、及び直接符号化モードを含む複数の符号化モードから一つの符号化モードを選択する工程と、
を備え、
前記インター符号化モードが選択された場合には、更に、
取得された前記符号化ブロックを複数の予測ブロックに分割する工程と、
前記複数の予測ブロックのそれぞれの予測ブロックに対して、
各前記予測ブロックを符号化する際に使用するために、中間値を用いた動きベクトル予測方法及び平均値を用いた動きベクトル予測方法から一つの動きベクトル予測方法を選択する工程と、
前記符号化されたビットストリームにおける各前記予測ブロックのビデオデータ部分を生成するために、選択された動きベクトル予測方法に基づいて各前記予測ブロックを符号化する工程と、
符号化された各前記予測ブロックのヘッダ部分に、その予測ブロックの符号化に用いられた前記選択された動きベクトル予測方法を示す選択された動きベクトル予測方法フラグを設定する工程と、
を備え、
前記スキップ符号化モード又は前記直接符号化モードが選択された場合には、更に、
取得された前記符号化ブロックを現在の予測ブロックとして設定する工程と、
前記現在の予測ブロックの動きベクトル候補の順序付きリストを取得する工程であって、
前記現在の予測ブロックに対する複数の予測ブロックのうちの第１の参照予測ブロックを以前符号化する際に使用された第１の動きベクトルを選択する工程と、
前記複数の予測ブロックのうちの第２の参照予測ブロックを以前符号化する際に使用された第２の動きベクトルを選択する工程と、
前記複数の予測ブロックのうちの第３の参照予測ブロックを以前符号化する際に使用された第３の動きベクトルを選択する工程と、
を含む工程と、
前記現在の予測ブロックを符号化する際に使用するために、前記動きベクトル候補の順序付きリストから動きベクトルを選択する工程と、
前記符号化されたビットストリームにおける前記現在の予測ブロックのビデオデータ部分の一部を生成するために、選択された動きベクトルを使用して前記現在の予測ブロックを符号化する工程と、
符号化された前記現在の予測ブロックのヘッダ部分に、前記選択された動きベクトルに対応する前記動きベクトル候補の順序付きリスト内の位置を示す動きベクトル選択フラグを設定する工程と、
を備え、
更に、前記符号化されたビットストリームのヘッダ部分に、前記符号化ブロックを符号化するために前記複数の符号化モードから選択された符号化モードを示す符号化モード選択フラグを設定する工程を備える方法。
【請求項２２】
符号化されていないビデオフレームを表す符号化されたビットストリームを生成するためにビデオフレームのシーケンスにおけるビデオフレームを符号化する方法であって、
前記符号化されていないビデオフレームから符号化ブロックを取得する工程と、
前記符号化ブロックを符号化する際に使用するために、インター符号化モード、スキップ符号化モード、及び直接符号化モードを含む複数の符号化モードから一つの符号化モードを選択する工程と、
を備え、
前記インター符号化モードが選択された場合には、更に、
取得された前記符号化ブロックを複数の予測ブロックに分割する工程と、
前記複数の予測ブロックのそれぞれの予測ブロックに対して、
各前記予測ブロックを符号化する際に使用するために、中間値を用いた動きベクトル予測方法及び平均値を用いた動きベクトル予測方法から一つの動きベクトル予測方法を選択する工程と、
前記符号化されたビットストリームにおける各前記予測ブロックのビデオデータ部分を生成するために、選択された動きベクトル予測方法に基づいて各前記予測ブロックを符号化する工程と、
符号化された各前記予測ブロックのヘッダ部分に、その予測ブロックの符号化に用いられた前記選択された動きベクトル予測方法を示す選択された動きベクトル予測方法フラグを設定する工程と、
を備え、
前記スキップ符号化モード又は前記直接符号化モードが選択された場合には、更に、
取得された前記符号化ブロックを現在の予測ブロックとして設定する工程と、
前記現在の予測ブロックの動きベクトル候補の順序付きリストを取得する工程であって、
前記現在の予測ブロックに対する複数の予測ブロックのうちの第１の参照予測ブロックを以前符号化する際に使用された第１の動きベクトルを選択する工程と、
前記複数の予測ブロックのうちの第２の参照予測ブロックを以前符号化する際に使用された第２の動きベクトルを選択する工程と、
ゼロ値動きベクトルを選択する工程と、
を含む工程と、
前記現在の予測ブロックを符号化する際に使用するために、前記動きベクトル候補の順序付きリストから動きベクトルを選択する工程と、
前記符号化されたビットストリームにおける前記現在の予測ブロックのビデオデータ部分の一部を生成するために、選択された動きベクトルを使用して前記現在の予測ブロックを符号化する工程と、
符号化された前記現在の予測ブロックのヘッダ部分に、前記選択された動きベクトルに対応する前記動きベクトル候補の順序付きリスト内の位置を示す動きベクトル選択フラグを設定する工程と、
を備え、
更に、前記符号化されたビットストリームのヘッダ部分に、前記符号化ブロックを符号化するために前記複数の符号化モードから選択された符号化モードを示す符号化モード選択フラグを設定する工程を備える方法。
【請求項２３】
符号化されていないビデオフレームを表す符号化されたビットストリームを生成するためにビデオフレームのシーケンスにおけるビデオフレームを符号化する方法であって、
前記符号化されていないビデオフレームから符号化ブロックを取得する工程と、
前記符号化ブロックを符号化する際に使用するために、インター符号化モード、スキップ符号化モード、及び直接符号化モードを含む複数の符号化モードから一つの符号化モードを選択する工程と、
を備え、
前記インター符号化モードが選択された場合には、更に、
取得された前記符号化ブロックを複数の予測ブロックに分割する工程と、
前記複数の予測ブロックのそれぞれの予測ブロックに対して、
各前記予測ブロックを符号化する際に使用するために、中間値を用いた動きベクトル予測方法及び平均値を用いた動きベクトル予測方法から一つの動きベクトル予測方法を選択する工程と、
前記符号化されたビットストリームにおける各前記予測ブロックのビデオデータ部分を生成するために、選択された動きベクトル予測方法に基づいて各前記予測ブロックを符号化する工程と、
符号化された各前記予測ブロックのヘッダ部分に、その予測ブロックの符号化に用いられた前記選択された動きベクトル予測方法を示す選択された動きベクトル予測方法フラグを設定する工程と、
を備え、
前記スキップ符号化モード又は前記直接符号化モードが選択された場合には、更に、
取得された前記符号化ブロックを現在の予測ブロックとして設定する工程と、
前記現在の予測ブロックの動きベクトル候補の順序付きリストであって、
前記現在の予測ブロックに対する複数の予測ブロックのうちの第１の参照予測ブロックを以前符号化する際に使用された第１の動きベクトルと、
第１のゼロ値動きベクトルと、
第２のゼロ値動きベクトルと、
を含む順序付きリストを取得する工程と、
前記現在の予測ブロックを符号化する際に使用するために、前記動きベクトル候補の順序付きリストから動きベクトルを選択する工程と、
前記符号化されたビットストリームにおける前記現在の予測ブロックのビデオデータ部分の一部を生成するために、選択された動きベクトルを使用して前記現在の予測ブロックを符号化する工程と、
符号化された前記現在の予測ブロックのヘッダ部分に、前記選択された動きベクトルに対応する前記動きベクトル候補の順序付きリスト内の位置を示す動きベクトル選択フラグを設定する工程と、
を備え、
更に、前記符号化されたビットストリームのヘッダ部分に、前記符号化ブロックを符号化するために前記複数の符号化モードから選択された符号化モードを示す符号化モード選択フラグを設定する工程を備える方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ビデオ信号の符号化及び復号化に関し、より詳細には、ビデオシーケンスのフレームの予測動きベクトルの選択に関する。
【背景技術】
【０００２】
デジタル画像、演説／音声、グラフィックス、ビデオ等のデジタルマルチメディアの登場により、公開された新しいアプリケーション等、さまざまなアプリケーションが大幅に改善され、信頼性の高い記憶、通信、伝送、コンテンツの検索やアクセスが比較的容易になった。全体として、デジタルマルチメディアのアプリケーションは、エンターテイメント、情報、医療、セキュリティ等幅広い分野を網羅しており、さまざまな形で社会に役立っている。カメラやマイクロフォン等のセンサーで捕捉されるマルチメディアは、しばしばアナログであり、PCM（Pulse Coded Modulation）形式でデジタル化工程によりデジタル化される。しかし、デジタル化後は、スピーカ及び／又はTVディスプレイに必要とされるアナログ表現を再現するのに必要なデータの量が重要となる。つまり、大量のデジタルマルチメディアコンテンツの効率的な通信、記憶又は伝送には、未加工のPCM形式から圧縮された表現への圧縮を必要とする。従って、マルチメディアの圧縮に多くの技術が発明されている。長年にわたり、ビデオ圧縮技術は、非圧縮デジタルビデオと同様に、高い心理的な視覚品質を維持しながら、10から100の間の高い圧縮係数を達成している点で、非常に高度に成長してきた。
【０００３】
（MPEG-1、MPEG-2、H.263、MPEG-4 part2、MPEG-4 AVC/H.264、MPEG-4 SVCやMVCのような多数の標準化団体主導のビデオ符号化標準や、Windows Media Video、RealVideo、On2 VP等の業界主導の独自の標準によって示されているように、）現在までのところビデオ圧縮の技術及び科学において莫大な進歩がなされているが、更に高品質で、高精細で、かつ現在では3D（ステレオ）にいつでもどこでもアクセス可能という消費者の欲求の増加により、DVD/BD、ラジオ放送、ケーブル放送／衛星放送、有線及びモバイルのネットワーク等の様々な手段を介して、PC／ラップトップ、テレビ、セットトップボックス、ゲーム機、ポータブルメディアプレーヤ／デバイス、スマートフォン、ウェアラブルコンピュータ装置等の様々なクライアント装置への配信を、より高いレベルのビデオ圧縮により送達することが必要とされている。標準化団体主導の標準では、高効率ビデオ符号化におけるISO MPEGの最近開始された取り組みにより、新技術の貢献と、ITU-T標準委員会によるH.265ビデオ圧縮の長年にわたる調査研究による技術と、の組み合わせが期待されることが明らかとなった。
【０００４】
上述の標準はすべて、ビデオフレーム間の動きを補償することによって時間的冗長性を低減することを含む一般的なフレーム間予測符号化構造を採用している。基本的な考え方は、ブロックマッチング法を用いて隣接ピクチャ間の時間依存性を除去するというものである。符号化処理の最初に、符号化されていないビデオシーケンスの各フレームは、I型のフレーム、P型のフレーム、及びB型フレームの３つのカテゴリーに分類される。I型フレームは内部符号化である。すなわち、それ自体が画像を符号化するために使用され、（フレーム内の動き補償技術が適用されてもよい）フレーム間の動き補償技術が使用されないフレームの情報のみが含まれる。
【０００５】
他の２つのタイプのフレームであるPタイプ及びBタイプは、フレーム間の動き補償技術を使用して符号化される。PピクチャとBピクチャの違いは、動き補償に使用される参照ピクチャの時間方向である。P型ピクチャは表示順に以前のピクチャからの情報を利用するが、B型ピクチャは表示順に以前及び将来のピクチャからの情報を利用する。
【０００６】
P型及びB型のフレームでは、各フレームは、各ピクセルの輝度及び色信号成分の係数によって表されるピクセルのブロックに分割され、各ブロックに１つ又は複数の動きベクトル（B型ピクチャでは将来と過去の符号化されたフレームからの情報を利用することができるため、２つの動きベクトルが各ブロックについて符号化されてもよい）が与えられる。動きベクトル（MV）は、現在のブロックにおける位置から別の、以前符号化されたフレーム（表示順序で過去又は将来のフレームであってもよい）内の類似ブロックにおける位置への空間的変位を表し、それぞれ参照ブロックと参照フレームを含む。残差（「残差信号」とも呼ばれる）を生成するために、参照ブロックと現在のブロックとの間の差が計算される。したがって、インター符号化フレームの各ブロックについては、ブロックのコンテンツ全体ではなく、残差及び動きベクトルのみを符号化する必要がある。ビデオシーケンスのフレーム間のこのような時間的冗長性を除去することにより、ビデオシーケンスを圧縮することができる。
【０００７】
ビデオデータを更に圧縮するために、フレーム内又はフレーム間の予測技術が適用された後、残差信号の係数は、しばしば、（離散コサイン変換（DCT）又は離散サイン変換（DST）を使用して、）空間領域から周波数領域へと変換される。一般的に人間に知覚可能なビデオシーケンスを構成するタイプの画像のような自然発生的な画像の場合、低周波エネルギーは高周波エネルギーよりも常に強い。したがって、周波数領域の残差信号は、空間領域よりも優れたエネルギー圧縮が可能である。順方向変換の後、係数及び動きベクトルを量子化し、エントロピー符号化することができる。
【０００８】
復号化側では、空間的残差信号を復元するために、逆量子化及び逆変換が適用される。これらは、すべてのビデオ圧縮規格における一般的な変換／量子化工程である。元の符号化されていないビデオシーケンスの再現されたバージョンを生成するために、逆予測工程が実施される。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
過去の標準では、符号化に使用されるブロックは、一般に16×16画素（多くのビデオ符号化標準ではマクロブロックと呼ばれる）であった。しかし、これらの規格の開発以来、フレームサイズはより大きくなり、多くのデバイスにおいて、2048×1530ピクセル等の「高精細」（又は「HD」）フレームサイズよりも高い表示能力を有するようになった。したがって、これらのフレームサイズの動きベクトルを効率的に符号化するためには、例えば64x64ピクセル等の、より大きなブロックを有することが望まれる。一方、対応する分解能の向上のために、例えば4×4ピクセル等の、比較的小さなスケールで動き予測及び変換を行うことができることが望まれる。
【００１０】
動き予測の分解能が増加するにつれて、フレーム毎に、状況に応じてビデオシーケンス全体にわたって、動きベクトルを符号化して送信するのに必要な帯域幅の量が増加している。
【図面の簡単な説明】
【００１１】
【図１】少なくとも１つの実施形態における例示的なビデオ符号化／復号化システムを示す図。
【図２】少なくとも１つの実施形態における例示的な符号化装置の構成要素を例示的に示す図。
【図３】少なくとも１つの実施形態における例示的な復号化装置の構成要素を例示的に示す図。
【図４】少なくとも１つの実施形態における例示的なビデオ符号化部のブロック図。
【図５】少なくとも１つの実施形態における例示的なビデオ復号化部の例示的なブロック図。
【図６】少なくとも１つの実施形態における例示的な動きベクトル選択ルーチンを例示的に示す図。
【図７】少なくとも１つの実施形態における例示的な動きベクトル候補生成サブルーチンを例示的に示す図。
【図８】少なくとも１つの実施形態における例示的な動きベクトル復元ルーチンを例示的に示す図。
【発明を実施するための形態】
【００１２】
以下の詳細な説明は、主として、処理装置、処理装置のメモリ記憶装置、接続されたディスプレイ装置、及び入力装置を含む従来のコンピュータ構成要素による動作工程や象徴的表現について示されている。更に、これらの工程や表現は、遠隔ファイルサーバ、コンピュータサーバ、及びメモリストレージデバイスを含む、異種分散型コンピュータ環境における従来のコンピュータ構成要素を利用することができる。これらの従来の分散型コンピュータ構成要素の各々は、プロセッサによって通信ネットワークを介してアクセス可能である。
【００１３】
「一実施形態において」、「少なくとも１つの実施形態において」、「様々な実施形態において」、「いくつかの実施形態において」等の語句は、本明細書において繰り返し使用される。そのような表現は必ずしも同じ実施形態を指すものではない。「備える」、「有する」、及び「含む」という用語は、文脈によって別段の指示がない限り、同義語である。様々な実施形態では、一般的に上述したように、画像内／画像間の予測や変換符号化において使用される一般的な「ハイブリッド」ビデオ符号化アプローチについて説明されている。
【００１４】
ここで、図面に示された実施形態の詳細な説明について注意する。実施形態は、図面及び関連する説明に関連して説明されているが、当業者であれば、本開示の範囲から逸脱することなく、明示的に図示及び／又は記載されているか否かにかかわらず、図示され、又は記載された特定の実施形態の代わりに、全ての代替、変更、及び均等物を含む代用及び／又は同等の実施形態とすることが可能であることを認識することができる。本明細書に開示された実施形態に範囲に限定されることなく、様々な異なる実施形態や、装置の追加、又は図示された装置の組み合わせを追加又は組み合わせることが可能である。代替の実施形態では、本明細書に開示された実施形態に範囲を限定することなく、追加デバイス又は図示されたデバイスの組み合わせを、追加又は組み合わせることができる。
【００１５】
例示的なビデオ符号化／復号化システム
図１は、少なくとも１つの実施形態における例示的なビデオ符号化／復号化システム100を示す。符号化装置200（図２に図示され、以下に説明される）及び復号化装置300（図３に示され、以下に説明される）は、ネットワーク104を用いてデータ通信する。復号化装置200は、記憶域ネットワーク（「SAN」）、高速シリアルバス、及び／又は他の適切な通信技術を介した直接データ接続か、又はネットワーク104（図１に破線で示す）のいずれか一方を介して、符号化されていないビデオソース108とデータ通信する。同様に、復号化装置300は、記憶域ネットワーク（「SAN」）、高速シリアルバス、及び／又は他の適切な通信技術を介した直接データ接続か、又はネットワーク104（図１に破線で示す）のいずれか一方を介して、任意の符号化されたビデオソース112とデータ通信する。いくつかの実施形態において、符号化装置200、復号化装置300、符号化されたビデオソース112、及び／又は符号化されていないビデオソース108は、１つ又は複数の複製及び／又は分散された物理又は論理装置を備える。多くの実施形態では、図示されているよりも多くの符号化装置200、復号化装置300、符号化されていないビデオソース108、及び／又は符号化されたビデオソース112を有することがある。
【００１６】
様々な実施形態では、符号化装置200は、一般に、例えば復号化装置300からネットワーク104を介して要求を受け入れるとともに、それに応じて応答を提供するネットワーク化されたコンピュータ装置である。様々な実施形態において、復号化装置300は、携帯電話、時計や眼鏡や他のウェアラブルコンピュータ装置、専用メディアプレーヤ、コンピュータタブレット、自動車ヘッド部、AVOD（audio-video on demand）システム、専用メディアコンソール、ゲーム装置、「セットトップボックス」、デジタルビデオレコーダ、テレビジョン、又は汎用コンピュータ等の外形要素を有するネットワーク化されたコンピュータ装置であってもよい。様々な実施形態において、ネットワーク104は、インターネット、１つ又は複数のローカルエリアネットワーク（「LANs」）、１つ又は複数のワイドエリアネットワーク（「WANs」）、セルラー方式のデータネットワーク、及び／又は他のデータネットワークを含む。ネットワーク104は、様々な点で、有線及び／又は無線ネットワークとすることができる。
【００１７】
例示的な符号化装置
図２には、例示的な符号化装置200の構成要素が示されている。いくつかの実施形態では、符号化装置は、図２に示すものよりも多くの構成要素を含む。しかしながら、例示的な実施形態を開示するために、これらの一般的な従来の構成要素のすべてを示す必要はない。図２に示すように、例示的な符号化装置200は、ネットワーク104等のネットワークに接続するネットワークインターフェース204を含む。例示的な符号化装置200はまた、処理装置208、メモリ212、任意のユーザ入力装置214（例えば英数字キーボード、キーパッド、マウス又は他のポインティングデバイス、タッチスクリーン、及び／又はマイクロフォン）及び任意のディスプレイ216を含み、これらはすべてバス220を介してネットワークインターフェース204と相互接続される。メモリ212は、一般にRAM、ROM、及びディスクドライブ、フラッシュメモリ等の永久大容量記憶装置を含む。
【００１８】
例示的な符号化装置200のメモリ212は、オペレーティングシステム224や、動きベクトル選択ルーチン600（図６を参照して以下に説明する）を実施するためにソフトウェアにより実施されるフレーム間ビデオ符号化部400（図４を参照して以下に説明する）等の多数のソフトウェアサービスのプログラムコードを備える。メモリ212はまた、例えば、映画及び／又はテレビの連続小説のような音声／視覚に関するメディア作品の符号化されていないコピーを表すビデオデータファイル（図示せず）を備える。これらの及び他のソフトウェア構成要素は、フロッピーディスク、テープ、DVD/CD-ROMドライブ、メモリカード等の非一時的なコンピュータ読取メディア232に関連する駆動機構（図示せず）を使用して、符号化装置200のメモリ212に読み込まれてもよい。例示的な符号化装置200について説明したが、符号化装置は、ネットワーク120と通信可能であり、ビデオ符号化部400によって実施される例示的なソフトウェアや動きベクトル選択ルーチン600等のビデオ符号化のソフトウェアを実施する命令を実施可能な多数のネットワーク化されたコンピュータ装置群のうちのいくつかのコンピュータ装置であってもよい。
【００１９】
動作中、オペレーティングシステム224は、符号化装置200のハードウェアや他のソフトウェア資源を管理し、ソフトウェアにより実施されるフレーム間ビデオ符号化部400等のソフトウェアアプリケーションの一般的なサービスを提供する。ネットワークインターフェース204を介したネットワーク通信や、入力装置214を介したデータ受信、ディスプレイ216を介したデータ出力、ソフトウェアにより実施されるフレーム間ビデオ符号化部400等の様々なソフトウェアアプリケーションのためのメモリ212の割り当て等のハードウェア機能のため、オペレーティングシステム224は、符号化装置により実施されるソフトウェアとハードウェアとの間の仲介者として機能する。
【００２０】
いくつかの実施形態では、符号化装置200は、例えば高速シリアルバス等、符号化されていないビデオソース108と通信する専用の符号化されていないビデオインターフェース236を更に含む。いくつかの実施形態では、符号化装置200は、ネットワークインターフェース204を介して符号化されていないビデオソース108と通信する。他の実施形態では、符号化されていないビデオソース108は、メモリ212又はコンピュータ読取メディア232に存在する。
【００２１】
符号化装置200として、一般に従来の汎用コンピュータ装置に準拠する例示的な符号化装置200について説明したが、符号化装置200は、例えばビデオ記録装置、ビデオ処理及び／又はアクセラレータ、パーソナルコンピュータ、ゲーム本体、セットトップボックス、携帯情報端末又はウェアラブルコンピュータ装置、スマートフォン、又は他の適切なデバイス等のビデオ符号化が可能な多数の装置群であってもよい。
【００２２】
符号化装置200は、例えば、オンデマンドメディアサービス（図示せず）のために用いられてもよい。少なくとも１つの例示的な実施形態では、オンデマンドメディアサービスは、ビデオコンテンツ等のメディア作品のデジタルコピーを、作品毎及び／又は購読ベースでユーザに供給するオンデマンドメディアストアの促進のために符号化装置200を管理する。オンデマンドメディアサービスは、符号化されていないビデオソース108からそのようなメディア作品のデジタルコピーを取得する。
【００２３】
例示的なデコード装置
図３には、例示的な復号化装置300の構成要素が示されている。いくつかの実施形態では、復号化装置は、図３に示すものよりも多くの構成要素を含む。しかしながら、例示的な実施形態を開示するために、これらの一般的な従来のコンポーネントのすべてを示す必要はない。図３に示すように、例示的な復号化装置300は、ネットワーク104等のネットワークに接続するネットワークインターフェース304を含む。例示的な復号化装置300はまた、処理装置308、メモリ312、任意のユーザ入力装置314（例えば英数字キーボード、キーパッド、マウス又は他のポインティングデバイス、タッチスクリーン、及び／又はマイクロフォン）及び任意のディスプレイ316、及び任意のスピーカ318を含み、これらはすべてバス320を介してネットワークインターフェース304と相互接続される。メモリ312は、一般には、RAM、ROM、及びディスクドライブ、フラッシュメモリ等の永久大容量記憶装置を含む。
【００２４】
例示的な復号化装置300のメモリ312は、オペレーティングシステム224や、動きベクトル復元ルーチン800（図８を参照して以下に説明する）を実施するためにソフトウェアにより実施されるビデオ復号化部500（図５を参照して以下に説明する）等の多数のソフトウェアサービスのプログラムコードを備える。メモリ312はまた、例えば、映画及び／又はテレビの連続小説のような音声／視覚に関するメディア作品の符号化されたコピーを表すビデオデータファイル（図示せず）を備える。これらの及び他のソフトウェア構成要素は、フロッピーディスク、テープ、DVD/CD-ROMドライブ、メモリカード等の非一時的なコンピュータ読取メディア332に関連する駆動機構（図示せず）を使用して、復号化装置300のメモリ312に読み込まれていてもよい。例示的な復号化装置300について説明したが、復号化装置は、ネットワーク120と通信可能であり、ビデオ復号化部500によって実施される例示的なソフトウェアやメッセージ抽出ルーチン700等を実施可能な多数のネットワーク化されたコンピュータ装置群のうちのいくつかのコンピュータ装置であってもよい。
【００２５】
動作中、オペレーティングシステム324は、復号化装置300のハードウェアや他のソフトウェア資源を管理し、ソフトウェアにより実施されるビデオ復号化部500等のソフトウェアアプリケーションの一般的なサービスを提供する。ネットワークインターフェース304を介したネットワーク通信や、入力装置314を介したデータ受信、ディスプレイ316や任意のスピーカ318を介したデータ出力、メモリ312の割り当て等のハードウェア機能のため、オペレーティングシステム324は、符号化装置により実施されるソフトウェアとハードウェアとの間の仲介者として機能する。
【００２６】
いくつかの実施形態では、復号化装置300は、例えば高速シリアルバス等、符号化されたビデオソース116と通信する任意の符号化されたビデオインターフェース336を更に含む。いくつかの実施形態では、復号化装置300は、ネットワークインターフェース304を介して符号化されたビデオソース116と通信する。他の実施形態では、符号化されたビデオソース116は、メモリ312又はコンピュータ読取メディア332に存在する。
【００２７】
復号化装置300として、一般に従来の汎用コンピュータ装置に準拠する例示的な復号化装置300について説明したが、復号化装置300は、例えばビデオ記録装置、ビデオ処理及び／又はアクセラレータ、パーソナルコンピュータ、ゲーム本体、セットトップボックス、携帯情報端末又はウェアラブルコンピュータ装置、スマートフォン、又は他の適切なデバイス等のビデオ符号化が可能な多数の装置群であってもよい。
【００２８】
復号化装置300は、例えば、オンデマンドメディアサービスのために用いられてもよい。少なくとも１つの例示的な実施形態では、オンデマンドメディアサービスは、ビデオコンテンツ等のメディア作品のデジタルコピーを、作品毎及び／又は購読ベースで、復号化装置300を操作するユーザに供給する。復号化装置は、ネットワーク104を介して、例えば符号化装置200等の符号化されていないビデオソース108から、そのようなメディア作品のデジタルコピーを取得する。
【００２９】
ソフトウェアにより実施されるフレーム間ビデオ符号化部
図４は、少なくとも１つの実施形態による向上された動きベクトル選択予測技術が採用され、ソフトウェアにより実施されるフレーム間ビデオ符号化部400（以下、「符号化部400」という）の一般的な機能ブロック図を示す。ビデオシーケンスにおける符号化されていない１つ又は複数のビデオフレーム（vidfrms）が表示順にシーケンサ404に提供される。
【００３０】
シーケンサ404は、各符号化されていないビデオフレームに予測符号化ピクチャタイプ（例えば、I、P又はB）を割り当て、フレーム、又は、フレーム配列におけるフレーム群の順序を、符号化順序（例えばI-タイプのフレームとそれに続くPタイプのフレーム、続いてBタイプのフレーム）に従って再配列する。順序付けされた符号化されていないビデオフレーム（seqfrms）は、符号化順にブロックインデックス化部408に入力される。
【００３１】
順序付けされた符号化されていないビデオフレーム（seqfrms）のそれぞれについて、ブロックインデックス化部408は、現在のフレーム（例えば64×64画素）の最大符号化ブロック（「LCB」）サイズを決定し、符号化されていないフレームを符号化ブロック（cblks）の列に分割する。前記フレーム内の符号化ブロックは、それぞれ大きさが異なり、例えば現在のフレームにおけるLCBサイズは、4×4ピクセルである。
【００３２】
各符号化ブロックは、差分部412に一度に１つずつ入力され、以前符号化された符号化ブロックから生成された対応する予測信号ブロック（pred）との差が計算される。符号化ブロック（cblks）は、動き推定部416（以下に説明する）に提供される。差分部412で差が計算された後、得られる残差信号（res）は、変換部420によって周波数領域表現に順変換され、変換係数（tcof）のブロックが得られる。次に、変換係数（tcof）のブロックが量子化部424に送られ、量子化係数（qcf）のブロックが生成され、エントロピー符号化部428と局所復号化ループ430の両方に送られる。
【００３３】
局所復号化ループ430の開始時に、逆量子化部432は、逆量子化残差ブロック（res'）を生成するために、変換係数（tcof '）のブロックを逆量子化し、それらを逆変換部436に渡す。加算部440において、動き補償予測部442からの予測ブロック（pred）が、局所復号化ブロック（rec）を生成するために、逆量子化残差ブロック（res '）に加えられる。局所復号化ブロック（rec）は、フレームアセンブリ部及びデブロックフィルタ処理部444に送られ、ブロック化が低減されるとともに復元フレーム（recd）に組み立てられ、動き推定部416及び動き補償予測部442の参照フレームとして使用される。
【００３４】
エントロピー符号化部428は、量子化変換係数（qcf）、差分動きベクトル（dmv）、及び他のデータを符号化し、符号化ビデオビットストリーム448を生成する。符号化されていないビデオシーケンスの各フレームでは、符号化ビデオビットストリーム448は、符号化されたピクチャデータ（例えば、符号化され、かつ、量子化された変換係数（qcf）及び差分動きベクトル（dmv））及び符号化されたフレームヘッダ（例えば、現フレームのLCBサイズ等の構文情報）を含む。
【００３５】
動き推定部416の機能では、図６及び図７を参照して以下で詳細に説明するように、少なくとも１つの実施形態によれば、P型フレーム又はB型フレームにおける各符号化ブロックは、すなわち、現在の符号化ブロックにおける残差は、同じフレーム（すべての符号化ブロックがIタイプである場合と同様に）において以前符号化ブロック（「参照ブロック」）に基づいて生成され、又は、インター符号化、すなわち、現在の符号化ブロックにおける残差は、１つ又は複数の以前符号化された符号化フレーム（「参照フレーム」）からの１つ又は複数の参照ブロックに基づいて生成される。図示の実施形態では、インター符号化された符号化ブロックは、任意の適切な方法で処理される。
【００３６】
少なくとも１つの実施形態によれば、インター符号化された符号化ブロックについて、動き推定部416は、符号化ブロックの動きベクトル（又はBタイプのフレームの動きベクトル群）を決定するために、少なくとも３つの符号化モード、つまり、スキップ符号化モード、直接符号化モード、及びインター符号化モードのうちの１つを選択する。
【００３７】
インター符号化モード
インター符号化モードで符号化される符号化ブロックでは、動き推定部416は、各符号化ブロックを、例えば4×4ピクセル、8×8ピクセル、16×16ピクセル、32×32ピクセル、又は64×64ピクセルの予測ブロックに分割する。例えば、64×64の符号化ブロックは、16個の16×16予測ブロック、4個の32×32予測ブロック、又は２個の32×32予測ブロックと8個の16×16予測ブロックとに分割することができる。次に、動き推定部416は、適切な参照ブロックを決定し、予測ブロックから参照ブロックまでの相対的空間変位を決定することによって、各予測ブロックに対して動きベクトル（MV calc）を計算する。
【００３８】
少なくとも１つの実施形態の１つの態様によれば、符号化の効率を上げるために、計算された動きベクトル（MV calc）は、計算された動きベクトル（MV calc）から動きベクトル予測子（MV pred）を減算することによって符号化されて、動きベクトル差分（ΔMV）が生成される。例えば、計算された動きベクトル（MV calc）が（5, -1）（すなわち、以前符号化されたフレームからの参照ブロックは、現在のフレームにおける現在の予測ブロックに対して、５列右及び１行上に位置している）であり、動きベクトル予測子が（5、0）（すなわち、以前符号化されたフレームからの参照ブロックは、現在のフレームにおける現在の予測ブロックに対して、５列右及び同じ行に位置している）場合、動きベクトル差分（ΔMV）は、以下のようになる。
MV calc−MV pred=（5,-1）−（5,0）=（0,-1）=ΔMV
【００３９】
動きベクトル予測子（MV pred）が計算された動きベクトル（MV calc）に近いほど、動きベクトル差分（ΔMV）の値は小さくなる。したがって、動きベクトルを正確に予測し、計算された動きベクトルではなく動きベクトル差分を符号化することで、ビデオシーケンス全体にわたって、必要な情報が大幅に少なくなる。なお、この予測は、現在の予測ブロックの内容とは無関係であり、かつ、複合化装置側において再現可能なものである。
【００４０】
少なくとも１つの実施形態の一態様によれば、動き推定部416は、動きベクトル予測子（MV pred）を得るために様々な技術を使用することができる。例えば、動きベクトル予測子は、現在のフレームの予測ブロックにおいて以前符号化された複数の動きベクトルの中間値を計算することによって取得することができる。また、例えば、動きベクトル予測子は、現在のブロックに対して同じ列及び１行上に位置する参照ブロック（RB a）における動きベクトルや、現在の予測ブロックに対して１例右及び１行下に位置する参照ブロック（RB b）の動きベクトル、及び現在のブロックに対して１列左及び同じ行の参照ブロック（RB c）のように、現在の予測ブロックの空間近傍において以前符号化された複数の参照ブロックの中間値であってもよい。
【００４１】
上述したように、少なくとも１つの実施形態の一態様によれば、動き推定部416は、インター符号化モードにおいて予測ブロックの動きベクトル予測子を提供するために、追加技術、又は代替技術を使用することができる。例えば、動きベクトル予測子を提供する他の技術では、現在のブロックに対して同じ列及び１行上に位置する参照ブロック（RB a）における動きベクトルや、現在の予測ブロックに対して１例右及び１行下に位置する参照ブロック（RB b）の動きベクトル、及び現在のブロックに対して１列左及び同じ行の参照ブロック（RB c）のように、現在の予測ブロックの空間近傍において以前符号化された複数の参照ブロックの平均値に決定する。
【００４２】
少なくとも１つの実施形態の一態様によれば、符号化効率を高めるために、符号化部400は、現在のフレームのピクチャヘッダ（又は現在の予測ブロックの予測ブロックヘッダ）内に選択された動きベクトル予測方法（SMV-PM）フラグを配置することによって、現在の予測ブロックの符号化に使用可能な技術のうちのどれが使用されたかを示すことができる。例えば、少なくとも１つの実施形態では、SMV-PMフラグは、２つの可能な値を有する１ビットであり、１つの可能な値は、動きベクトル予測子が上述の中間値化技術を用いて得られたことを示し、２番目の可能な値は、動きベクトル予測子が代替技術を用いて得られたことを示す。
【００４３】
インター符号化モードによって符号化された符号化ブロックでは、動きベクトルと残差との両方が符号化されてビットストリームに含まれる。
【００４４】
スキップ符号化モードと直接符号化モード
スキップ符号化モード又は直接符号化モードで符号化される符号化ブロックの場合、動き推定部416は、符号化ブロック全体を対応する予測ブロック（PB）として使用する。
【００４５】
少なくとも１つの実施形態の一態様によれば、スキップ符号化及び直接符号化モードでは、予測ブロック（PB）のために計算された動きベクトル（MV calc）を決定するのではなく、動き推定部416は、動きベクトル候補の順序付きリストを生成するために、図７を参照して後述する所定の方法を使用する。例えば、現在の予測ブロック（PB cur）に対して、動きベクトル候補の順序付きリストは、現在のフレームの他のブロック、これを「参照ブロック」（RBs）という、を符号化するために以前使用された動きベクトルから構成される。
【００４６】
少なくとも１つの実施形態の一態様によれば、動き推定部416は、現在の予測ブロック（PB cur）を符号化する順序付けリストから最良の動きベクトル候補（MVC）を選択する。動きベクトル候補の順序付きリストを生成する工程が復号化装置側で再現可能である場合、動きベクトル自体ではなく、動きベクトル候補の順序付きリストにおける選択された動きベクトル（MV sel）のインデックスのみが符号化されたビットストリームに含まれてもよい。実際の動きベクトルではなくインデックス値を符号化することで、ビデオシーケンス全体にわたって、必要な情報が大幅に少なくなる。
【００４７】
少なくとも１つの実施形態の一態様によれば、動きベクトル候補リストを生成するために選択された動きベクトルは、好ましくは、既知の動きベクトルを有する３つの参照ブロック（RB a、RB b、RB c）から取得され、現在の予測ブロック（PB cur）及び／又は他の参照ブロック（RB）に共有される。例えば、第１の参照ブロック（RB a）は現在の予測ブロック（PB cur）の真上に位置し、第２の参照ブロック（RB b）は第１の参照ブロック（RB a）の右側に位置し、第３の参照ブロック（RB c）は、現在の予測ブロック（RB c）の左側に位置する。しかしながら、現在の予測ブロックに対する参照ブロックの特定位置は、それらが予め定義されており、下流の復号化装置がどこに位置するかを知ることができるのであれば、特に重要ではない。
【００４８】
少なくとも１つの実施形態の一態様によれば、３つ全ての参照ブロックが既知の動きベクトルを有する場合、現在の予測ブロック（PB cur）の動きベクトル候補リストにおける第１の動きベクトル候補（MVC 1）は、第１の参照ブロック（RB a）からの動きベクトル（MV a）（B型フレームでは動きベクトル群）であり、第２の動きベクトル候補（MVC 2）は、第２の参照ブロック（RB b）からの動きベクトル（MV b）（又は動きベクトル群）であり、第３の動きベクトル候補（MVC 3）は、第３の参照ブロック（RB c）からの動きベクトル（MV c）（又は動きベクトル群）である。そのため、動きベクトル候補リストは、（MV a、MV b、MV c）となる。
【００４９】
しかし、例えば、特定の参照ブロックに対して予測情報が利用可能でないか、又は現在の予測ブロック（PB cur）が現在のフレームの最上列、左端列又は右端列に位置する等の理由により、いずれかの参照ブロック（RBs）が利用可能な動きベクトルを持たない場合、その動きベクトル候補は省かれて、次の動きベクトル候補がその位置につき、ゼロ値動きベクトル（0,0）が残りの候補レベルとして代用される。例えば、動きベクトルがRB bに対して利用可能でない場合、動きベクトル候補リストは、（MV a、MV c、（0,0））となる。
【００５０】
少なくとも１つの実施形態において、動きベクトル候補の有効な組み合わせを示す動きベクトル候補リストの組み合わせの全セットは、表１に示される通りである。
【表１】
0006678357.tif 000002
【００５１】
次に、動き推定部416は、動きベクトル候補を評価し、現在の予測ブロックに対する選択された動きベクトルとして使用される最良の動きベクトル候補を選択する。下流の復号化装置が、前記予測ブロックの動きベクトル候補の順序付きリストがどのように生成されたかを知っていれば、この計算は、現在の予測ブロックのコンテンツを知らない復号化装置側で再現可能であることに留意されたい。したがって、動きベクトル自体ではなく、例えば、現在の予測ブロックにおける予測ブロックヘッダ内に動きベクトル選択フラグを設定する等して、動きベクトル候補リストから選択された動きベクトルのインデックスのみが、符号化されたビットストリームに含まれる必要があり、そして、実際の動きベクトルではなくインデックス値を符号化することによって、ビデオシーケンス全体にわたって、必要な情報が大幅に少なくなる。
【００５２】
直接符号化モードでは、動きベクトル選択フラグと、現在の予測ブロック及び動きベクトルによって示される参照フレームのブロックとの間の残差と、が符号化される。スキップ符号化モードでは、動きベクトル選択フラグは符号化されるが、残差信号の符号化は省略される。要するに、これは、現在のフレームの現在の予測ブロックの代わりに、動きベクトルによって示される参照フレームのブロックを使用するように下流の復号化装置に指示することを示す。
【００５３】
ソフトウェアにより実施されるフレーム間復号化部
図５は、少なくとも１つの実施形態による向上された動き補償予測技術が採用され、復号化装置300等の復号化装置と共に使用するのに適したフレーム間ビデオ復号化部500（以下、「復号化部500」という）により実施される対応するソフトウェアの一般的な機能ブロック図を示す。復号化部500は、符号化部400における局所復号化ループ455と同様に動作する。
【００５４】
具体的には、復号化される符号化されたビデオビットストリーム504は、量子化係数（qcf）、差分動きベクトル（dmv）、付随するメッセージデータパケット（msg-data）及び他のデータのブロックを復号化することができるエントロピー復号化部508に提供される。次に、量子化係数（qcf）のブロックは、逆量子化部512によって逆量子化され、逆量子化係数（tcof '）が得られる。次に、逆量子化係数（tcof '）は、逆変換部516によって周波数領域から逆変換され、復号化残差ブロック（res'）が得られる。加算部520は、対応する動きベクトル（mv）を用いて得られた動き補償予測ブロック（pred）を加算する。結果として得られる復号化ビデオ（dv）は、フレームアセンブリ部及びデブロックフィルタ処理部524においてデブロックフィルタ処理が行われる。フレームアセンブラ及びデブロックフィルタ処理部528の出力におけるブロック（recd）は、ビデオシーケンスの再構成されたフレームを形成し、復号化部500から出力され、また、後続の符号化ブロックを復号する動き補償予測器532の参照フレームとして使用される。
【００５５】
動きベクトル選択ルーチン
図６は、符号化部400等の少なくとも１つの実施形態と共に使用するのに適した動きベクトル選択ルーチン600を示す。当業者に認識されるように、符号化工程における全てのイベントが図６に示されているわけではない。むしろ、明確化するために、動きベクトル選択ルーチンの説明に合理的に関連するステップのみが示されている。
【００５６】
実施ブロック603において、例えば動き推定部416は、符号化ブロックを取得する。
【００５７】
判断ブロック624において、動きベクトル選択ルーチン600が、符号化ブロックの符号化モードを選択する。例えば、上述したように、インター符号化モード、直接符号化モード、又はスキップ符号化モードが選択される。現在の符号化ブロックに対してスキップ符号化モード又は直接符号化モードのいずれかが選択された場合、動きベクトル選択ルーチン600は、以下で説明する実施ブロック663に進む。
【００５８】
判断ブロック624において、インター符号化モードが現在の符号化ブロックに対して選択されている場合、実施ブロック627において、動きベクトル選択ルーチン600は、現在の符号化ブロックを１つ又は複数の予測ブロックに分割するとともに、開始ループブロック630を開始し、現在のコーディングブロックにおける各予測ブロックが順に処理される。
【００５９】
実施ブロック633において、動きベクトル選択ルーチン600は、Bタイプのピクチャの場合、参照フレームが以前のピクチャであるか、将来のピクチャであるか、又はその両方であるかを示す、現在の予測ブロックの予測インデックスを選択する。
【００６０】
次に、実施ブロック636において、動きベクトル選択ルーチン600は、上述した中間値化技術又は平均値化技術又は任意の利用可能な代替の動きベクトル予測方法等の動きベクトル予測方法を選択する。
【００６１】
実施ブロック642において、動きベクトル選択ルーチン600は、選択された動きベクトル予測方法を使用して、現在の予測ブロックの動きベクトル予測子（MV pred）を取得する。
【００６２】
実施ブロック645において、動きベクトル選択ルーチン600は、現在の予測ブロックについての計算された動きベクトル（MV calc）を取得する。
【００６３】
実施ブロック648において、動きベクトル選択ルーチン600は、現在の予測ブロックの動きベクトル差分（ΔMV）（Pタイプピクチャの場合は単一の動きベクトル差分が存在し、Bタイプピクチャの場合は２つの動きベクトル差分が存在する）を取得する。
【００６４】
実施ブロック651において、動きベクトル選択ルーチン600は、計算された動きベクトル（MV calc）によって示されるブロックに対する現在の予測ブロック（PB cur）との間の残差を取得する。
【００６５】
実施ブロック654において、動きベクトル選択ルーチン600は、現在の予測ブロックの動きベクトル差分及び残差を符号化する。
【００６６】
実施ブロック657において、動きベクトル選択ルーチン600は、現在の予測ブロックに対していずれの動きベクトル予測技術が使用されたかを示すSMV-PMフラグを、現在のフレームのピクチャヘッダ（又は現在の予測ブロックの予測ブロックヘッダ）内に設定する。
【００６７】
終了ループブロック660において、動きベクトル選択ルーチン600は、開始ループブロック630に戻り、現在の符号化ブロックの次の予測ブロック（もしあれば）を処理する。
【００６８】
判断ブロック624に戻って、現在の符号化ブロックに対してスキップ符号化モード又は直接符号化モードのいずれかが選択された場合、実施ブロック663において、動きベクトル選択ルーチン600は、現在の符号化ブロックと等しくなるように現在の予測ブロックを設定する。
【００６９】
次に、動きベクトル選択ルーチン600は、動きベクトル選択ルーチン600に対して動きベクトル候補の順序付きリストを返す動きベクトル候補生成サブルーチン700（図７を参照して以下に説明する）を呼び出す。
【００７０】
次に、実施ブロック666において、動きベクトル選択ルーチン600は、現在の予測ブロックを符号化する際に使用するために、動きベクトル候補リストから動きベクトルを選択する。
【００７１】
判断ブロック667において、選択された符号化モードが直接符号化である場合、実施ブロック669において、動きベクトル選択ルーチン600は、現在の予測ブロックと、選択された動きベクトルによって示される参照ブロックとの間の残差を計算する。
【００７２】
実施ブロック672において、動きベクトル選択ルーチン600は、残差を符号化し、実施ブロック675において、動きベクトル選択ルーチン600は、現在の予測ブロックの符号化にいずれの動きベクトル候補が選択されたかを示す動きベクトル選択フラグを、現在の予測ブロックにおける予測ブロックヘッダ内に設定する。
【００７３】
動きベクトル選択ルーチン600は、終了ブロック699で終了する。
【００７４】
動きベクトル候補生成サブルーチン700
図７は、少なくとも１つの実施形態による動きベクトル候補の順序付きリストを生成する動きベクトル候補生成サブルーチン700を示す。図示の実施形態では、３つの動きベクトル候補が生成される。しかしながら、当業者であれば、同じ技術を使用してより多くの、又はより少ない量の候補が生成されてもよいことや、更に、本開示の範囲から逸脱することなく、代替及び／又は同等の実施形態が、示され記載された特定の実施形態に対して代用可能であることを認識することができる。
【００７５】
動きベクトル候補生成サブルーチン700は、実施ブロック704において、現在の予測ブロックの動きベクトル候補リストを生成する要求を取得する。
【００７６】
判断ブロック708において、動きベクトルが第１の候補参照ブロック（RB a）から利用可能である場合、実施ブロック712において、動きベクトル候補生成サブルーチン700は、第１の動きベクトル候補（MVC 1）をMV aに設定し、判断ブロック716に進む。
【００７７】
判断ブロック716において、動きベクトルが第２の候補参照ブロック（RB b）から利用可能である場合、実施ブロック724において、動きベクトル候補生成サブルーチン700は、第２の動きベクトル候補（MVC 2）をMV bに設定し、判断ブロック728に進む。
【００７８】
判断ブロック728において、動きベクトルが第３の候補ブロック（RB c）から利用可能である場合、実施ブロック736において、動きベクトル候補生成サブルーチン700は、第３の動きベクトル候補（MVC 3）をMV cに設定する。
【００７９】
次に、動きベクトル候補生成サブルーチン700は、リターンブロック799において、MVC 1 = MV a、MVC 2 = MV b、及びMVC 3 = MV cのそれぞれの値を有する動きベクトル候補リストを返す。
【００８０】
判断ブロック728を再び参照して、動きベクトルが第３候補ブロック（RB c）から利用可能でない場合、実施ブロック740において、動きベクトル候補生成サブルーチン700は、第３動きベクトル候補（MVC 3）を（0,0）に設定する。
【００８１】
次に、動きベクトル候補生成サブルーチン700は、リターンブロック799において、MVC 1 = MV a、MVC 2 = MV b、及びMVC 3 =（0,0）のそれぞれの値を有する動きベクトル候補リストを返す。
【００８２】
判断ブロック716を再び参照して、動きベクトルが第２候補ブロック（RB b）から利用可能でない場合、動きベクトル候補生成サブルーチン700は判断ブロック732に進む。
【００８３】
判断ブロック732において、動きベクトルが第３の候補参照ブロック（RB c）から利用可能である場合、実施ブロック744において、動きベクトル候補生成サブルーチン700は、第２の動きベクトル候補（MVC 2）を MV cに設定する。実施ブロック740において、第３の動きベクトル候補（MVC 3）は（0,0）に設定される。
【００８４】
次に、動きベクトル候補生成サブルーチン700は、リターンブロック799において、MVC 1 = MV a、MVC 2 = MV c、及びMVC 3 =（0,0）のそれぞれの値を有する動きベクトル候補リストを返す。
【００８５】
判断ブロック732を再び参照して、動きベクトルが第３の候補参照ブロック（RB c）から利用可能でない場合、実施ブロック748において、動きベクトル候補生成サブルーチン700は、第２の動きベクトル候補（MVC 2）を（0,0）に設定し、実施ブロック740で第３の動きベクトル候補（MVC 3）を（0,0）に設定する。
【００８６】
次に、動きベクトル候補生成サブルーチン700は、リターンブロック799において、MVC 1 = MV a、MVC 2 =（0,0）、及びMVC 3 =（0,0）のそれぞれの値を有する動きベクトル候補リストを返す。
【００８７】
判断ブロック708を再び参照して、動きベクトルが第１の候補参照ブロック（RB a）から利用可能でない場合、動きベクトル候補生成サブルーチン700は判断ブロック720に進む。
【００８８】
判断ブロック720において、動きベクトルが第２の候補参照ブロック（RB b）から利用可能である場合、実施ブロック752において、動きベクトル候補生成サブルーチン700は、第１の動きベクトル候補（MVC 1）をMV bに設定する。次に、動きベクトル候補生成サブルーチン700は、判断ブロック732に進む。
【００８９】
判断ブロック732に戻って、動きベクトルが第３の候補参照ブロック（RB c）から利用可能である場合、実施ブロック744において、動きベクトル候補生成サブルーチン700は、第２の動きベクトル候補（MVC 2）をMV cに設定する。実施ブロック740において、第３の動きベクトル候補（MVC 3）は（0,0）に設定される。
【００９０】
次に、動きベクトル候補生成サブルーチン700は、リターンブロック799において、MVC 1 = MV b、MVC 2 = MV c、及びMVC 3 =（0,0）のそれぞれの値を有する動きベクトル候補リストを返す。
【００９１】
判断ブロック732を再び参照して、動きベクトルが第３の候補参照ブロック（RB c）から利用可能でない場合、実施ブロック748において、動きベクトル候補生成サブルーチン700は、第２の動きベクトル候補（MVC 2）を（0,0）に設定し、実施ブロック740において、第３の動きベクトル候補（MVC 3）を（0,0）に設定する。
【００９２】
次に、動きベクトル候補生成サブルーチン700は、リターンブロック799でMVC 1 = MV b、MVC 2 =（0,0）、及びMVC 3 =（0,0）のそれぞれの値を有する動きベクトル候補リストを返す。
【００９３】
判断ブロック720を再び参照して、動きベクトルが第２の候補参照ブロック（RB b）から利用可能でない場合、動きベクトル候補生成サブルーチン700は、判断ブロック756に進む。
【００９４】
判断ブロック756において、動きベクトルが第３の候補参照ブロック（RB c）から利用可能である場合、実施ブロック760において、動きベクトル候補生成サブルーチン700は、第１の動きベクトル候補（MVC 1）をMV cに設定する。次に、動きベクトル候補生成サブルーチン700は、実施ブロック748において、第２の動きベクトル候補（MVC 2）を（0,0）に設定し、実施ブロック740において、第３の動きベクトル候補（MVC 3）を（0,0）に設定する。
【００９５】
次に、動きベクトル候補生成サブルーチン700は、リターンブロック799において、MVC 1 = MV c、MVC 2=（0,0）、及びMVC 3 =（0,0）のそれぞれの値を有する動きベクトル候補リストを返す。
【００９６】
判断ブロック756を再び参照して、動きベクトルが第３の候補参照ブロック（RB c）から利用可能でない場合、実施ブロック764において、動きベクトル候補生成サブルーチン700は、第１の動きベクトル候補（MVC 1）を（0,0）に設定する。次に、動きベクトル候補生成サブルーチン700は、実施ブロック748において、第２の動きベクトル候補を（0,0）に設定し、実施ブロック740において、第３の動きベクトル候補を（0,0）に設定する。
【００９７】
次に、動きベクトル候補生成サブルーチン700は、リターンブロック799において、MVC 1 = MV b、MVC 2 =（0,0）、及びMVC 3 =（0,0）のそれぞれの値を有する動きベクトル候補リストを返す。
【００９８】
動きベクトル復元ルーチン800
図８は、復号化部500等の少なくとも１つの実施形態と共に使用するのに適した動きベクトル復元ルーチン800を示す。当業者に認識されるように、復号化工程における全てのイベントが図８に示されているわけではない。むしろ、明確化するために、動きベクトル選択ルーチンの記述に合理的に関連するステップのみが示されている。
【００９９】
実施ブロック803において、動きベクトル復元ルーチン800は、符号化ブロックに対応するデータを取得する。
【０１００】
実施ブロック828において、動きベクトル復元ルーチン800は、符号化ブロックを符号化するために使用された符号化モードを特定する。上述したように、使用された可能性がある符号化モードは、インター符号化モード、直接符号化モード、又はスキップ符号化モードである。
【０１０１】
判断ブロック830において、符号化ブロックがインター符号化モードを使用して符号化された場合、実施ブロック833において、動きベクトル復元ルーチン800は、符号化ブロックに対応する予測ブロックを特定する。開始ループブロック836において、現在の符号化ブロックにおける各予測ブロックが順に処理される。
【０１０２】
実施ブロック839において、動きベクトル復元ルーチン800は、予測ブロックヘッダから現在の予測ブロックの予測インデックスを特定する。
【０１０３】
実施ブロック842において、動きベクトル復元ルーチン800は、例えば、現在のフレームのピクチャヘッダ内のSMV-PMフラグを読み出すことによって、現在の予測ブロックの動きベクトルを予測するために使用された動きベクトル予測方法を特定する。
【０１０４】
実施ブロック848において、動きベクトル復元ルーチン800は、現在の予測ブロックの動きベクトル差分（ΔMV）を取得する。
【０１０５】
実施ブロック851において、動きベクトル復元ルーチン800は、実施ブロック842で特定された動きベクトル予測方法を使用して、現在の予測ブロックの予測動きベクトル（MV pred）を取得する。
【０１０６】
実施ブロック854において、動きベクトル復元ルーチン800は、例えば予測された動きベクトル（MV pred）を動きベクトル差分（ΔMV）に加算することによって、現在の予測ブロックについての計算された動きベクトル（MV calc）（Pタイプピクチャの場合は単一の復元された動きベクトルが存在し、Bタイプピクチャの場合は２つの復元された動きベクトルが存在する）を復元する。
【０１０７】
次に、実施ブロック857において、動きベクトル復元ルーチン800は、予測ブロックの復元値を取得するために、計算された動きベクトル（MV calc）によって示されるブロックに現在の予測ブロックの残差を加算する。
【０１０８】
判断ブロック830を再び参照して、現在の符号化ブロックがスキップ符号化モード又は直接符号化モードのいずれかを使用して符号化された場合、動きベクトル復元ルーチン800は、動きベクトル復元ルーチン800に対して動きベクトル候補の順序付きリストを返す動きベクトル候補生成サブルーチン700（図７を参照して上述した）を呼び出す。
【０１０９】
次に、実施ブロック863において、動きベクトル復元ルーチン800は、実施ブロック863の予測ブロックヘッダから動きベクトル選択フラグを読み出す。
【０１１０】
次に、実施ブロック866において、動きベクトル復元ルーチン800は、動きベクトル選択フラグを使用して、現在の予測ブロックを符号化するために使用された順序付けられた動きベクトル候補リストの順序付けリストから動きベクトルを特定する。
【０１１１】
判断ブロック869において、現在の符号化ブロックが直接符号化モードで符号化されていた場合、実施ブロック872において、動きベクトル復元ルーチン800は、予測ブロック係数を復元するために、選択された動きベクトルによって特定されるブロックの係数に予測ブロックの残差を追加する。
【０１１２】
現在の符号化ブロックがスキップ符号化モードで符号化されている場合、実施ブロック875において、動きベクトル復元ルーチン800は、選択された動きベクトルによって示される参照ブロックの係数を予測ブロック係数として使用する。
【０１１３】
動きベクトル復元ルーチン800は、終了ブロック899で終了する。
【０１１４】
本明細書において特定の実施形態を図示し説明してきたが、当業者であれば、図示され、又は記載された特定の実施形態の代わりに代用及び／又は同等の実施形態とすることが可能であることを認識することができる。この出願は、本明細書で論じる実施形態の任意の適合又は変形を包含することを意図している。
【図１】
0006678357.tif 000003
【図２】
0006678357.tif 000004
【図３】
0006678357.tif 000005
【図４】
0006678357.tif 000006
【図５】
0006678357.tif 000007
【図６】
0006678357.tif 000008
【図７】
0006678357.tif 000009
【図８】
0006678357.tif 000010