(57)【特許請求の範囲】
【請求項１】
ビデオデータを符号化する方法であって、
ビデオエンコーダが、走査順序を定義するための所定の関数と前記関数の複数のパラメータ値とに少なくとも部分的に基づいて、残差ビデオデータのブロックに関連する変換係数の走査順序を形成することと、前記複数のパラメータ値が前記残差ビデオデータのブロックのサイズを示す第１のパラメータと前記走査順序の走査方向が水平又は垂直のいずれかであることを示す第２のパラメータとを含み、ここにおいて、
変換係数のブロックの最後の行より外の、前記ブロックの各それぞれの行に関して、前記走査方向が水平であることを前記第２のパラメータが示すことに基づいて、前記ビデオエンコーダは、前記所定の関数の第３のパラメータに基づいて、前記それぞれの行ごとにそれぞれの閾値を導出し、前記それぞれの行の前記それぞれの閾値は、前記変換係数の前記ブロックの次の行の係数を走査する前に、前記それぞれの行のいくつの係数が走査されるかを特定し、ここにおいて、前記それぞれの行の前記それぞれの閾値に達した後、前記それぞれの行及び前記次の行の係数は、インターリーブ式に走査され、
変換係数の前記ブロックの最後の列より外の、前記ブロックの各それぞれの列に関して、前記走査方向が垂直であることを前記第２のパラメータが示すことに基づいて、前記ビデオエンコーダは、前記第３のパラメータに基づいて、前記それぞれの列ごとにそれぞれの閾値を導出し、前記それぞれの列の前記それぞれの閾値は、前記変換係数の前記ブロックの次の列の係数を走査する前に、前記それぞれの列のいくつの係数が走査されるかを特定し、ここにおいて、前記それぞれの列の前記それぞれの閾値に達した後、前記それぞれの列及び前記次の列の係数は、前記インターリーブ式に走査され、
前記ビデオエンコーダが、ビデオ符号化プロセスにおいて使用するために、前記走査順序に従って前記変換係数を走査することと、
を備える、方法。
【請求項２】
前記変換係数が２次元アレイ内に存在し、前記変換係数を走査することが、前記走査順序に従って前記ビデオエンコーダにおいて前記変換係数を１次元アレイに走査することを備える、請求項１に記載の方法。
【請求項３】
符号化ビデオ中で、前記１次元アレイ内の走査された前記変換係数を与えることと、前記走査順序を形成するための前記関数の前記複数のパラメータ値を信号伝達することとを更に備える、請求項２に記載の方法。
【請求項４】
ビデオデータを復号する方法であって、
ビデオデコーダが、走査順序を定義するための所定の関数と前記関数の複数のパラメータ値とに少なくとも部分的に基づいて、残差ビデオデータのブロックに関連する変換係数の走査順序を形成することと、前記複数のパラメータ値が前記残差ビデオデータのブロックのサイズを示す第１のパラメータと前記走査順序の走査方向が水平又は垂直のいずれかであることを示す第２のパラメータとを含み、ここにおいて、
変換係数のブロックの最後の行より外の、前記ブロックの各それぞれの行に関して、前記走査方向が水平であることを前記第２のパラメータが示すことに基づいて、前記ビデオデコーダは、前記所定の関数の第３のパラメータに基づいて、前記それぞれの行ごとにそれぞれの閾値を導出し、前記それぞれの行の前記それぞれの閾値は、前記変換係数の前記ブロックの次の行の係数を走査する前に、前記それぞれの行のいくつの係数が走査されるかを特定し、ここにおいて、前記それぞれの行の前記それぞれの閾値に達した後、前記それぞれの行及び前記次の行の係数は、インターリーブ式に走査され、
変換係数の前記ブロックの最後の列より外の、前記ブロックの各それぞれの列に関して、前記走査方向が垂直であることを前記第２のパラメータが示すことに基づいて、前記ビデオデコーダは、前記第３のパラメータに基づいて、前記それぞれの列ごとにそれぞれの閾値を導出し、前記それぞれの列の前記それぞれの閾値は、前記変換係数の前記ブロックの次の列の係数を走査する前に、前記それぞれの列のいくつの係数が走査されるかを特定し、ここにおいて、前記それぞれの列の前記それぞれの閾値に達した後、前記それぞれの列及び前記次の列の係数は、前記インターリーブ式に走査され、
前記ビデオデコーダが、ビデオ復号プロセスにおいて使用するために、前記走査順序に従って前記変換係数を走査することと、ここにおいて、前記変換係数が１次元アレイ内に存在し、前記変換係数を走査することが、前記ビデオデコーダが前記走査順序に従って前記変換係数を２次元アレイに走査することを備える、
を備える、方法。
【請求項５】
符号化ビデオ中で、前記１次元アレイ内の走査された前記変換係数と、前記走査順序を形成するための前記関数の前記複数のパラメータ値を示す信号とを受信することを更に備える、請求項４に記載の方法。
【請求項６】
符号化ビデオ中で、前記１次元アレイ内の走査された前記変換係数を受信することと、前記走査順序を形成するための前記関数の前記複数のパラメータ値を推論することとを更に備える、請求項４に記載の方法。
【請求項７】
残差ビデオデータの前記ブロックが、ビデオデータのブロックの画素値とビデオデータの予測ブロックの画素値との間の差を示す残差値を含み、前記変換係数が、残差ビデオデータの前記ブロックに適用される変換によって生成される係数を含む、請求項１または４に記載の方法。
【請求項８】
前記走査方向が水平であることを前記第２のパラメータが示すことに基づいて、前記変換係数の前記ブロック中で走査される前記ブロックの前記最後の行より外の前記行のうちの各連続する行の前記それぞれの閾値を固定値に設定することをさらに備え、
前記走査方向が垂直であることを前記第２のパラメータが示すことに基づいて、前記変換係数の前記ブロック中で走査される前記ブロックの前記最後の列より外の前記列のうちの各連続する列の前記それぞれの閾値を前記固定値に設定することを更に備える、請求項１または４に記載の方法。
【請求項９】
前記走査方向が水平であることを前記第２のパラメータが示すことに基づいて、前記変換係数の前記ブロック中で走査される前記行のうちの次の行の前記閾値に対して、前記変換係数の前記ブロック中で走査される前記行のうちの各次の行の前記それぞれの閾値を低減することと、
前記走査方向が垂直であることを前記第２のパラメータが示すことに基づいて、前記変換係数の前記ブロック中で走査される前記列のうちの次の列の前記閾値に対して、前記変換係数の前記ブロック中で走査される前記列のうちの各次の列の前記それぞれの閾値を低減することと、
を更に備える、請求項１または４に記載の方法。
【請求項１０】
前記走査順序に従って前記変換係数を走査することは、
前記走査方向が水平であることを前記第２のパラメータが示すことに基づいて、
前記変換係数の前記ブロックの第１の行に関して、前記第１の行の前記閾値に等しい数の前記係数を走査することと、
前記第１の行中の変換係数の数が前記第１の行の前記閾値よりも大きいことに基づいて、前記第１の行又は列に関する未走査係数と前記インターリーブ式に、第２の行に関する前記係数のうちの１つ以上を走査することと、
前記第２の行の前記閾値を低減することと、第３の行に関する未走査係数を走査する前に、前記第２の行の前記低減された閾値に等しい数の、前記第２の行に関する未走査係数を走査することと、
前記走査方向が垂直であることを前記第２のパラメータが示すことに基づいて、
前記変換係数の前記ブロックの第１の列に関して、前記第１の列の前記閾値に等しい数の前記係数を走査することと、
前記第１の列中の変換係数の数が前記第１の列の前記閾値よりも大きいことに基づいて、前記第１の列に関する未走査係数と前記インターリーブ式に、第２の列に関する前記係数のうちの１つ以上を走査することと、
前記第２の列の前記閾値を低減することと、第３の列に関する未走査係数を走査する前に、前記第２の列の前記低減された閾値に等しい数の、前記第２の列に関する未走査係数を走査することと、
を備える、請求項１または４に記載の方法。
【請求項１１】
前記走査順序に従って前記変換係数を走査することが、前記走査順序で前記変換係数のレベル又は符号のうちの少なくとも１つを符号化することを備える、請求項１または４に記載の方法。
【請求項１２】
ビデオデータを符号化するための装置であって、前記装置が、
走査順序を定義するための所定の関数と前記関数の複数のパラメータ値とに少なくとも部分的に基づいて、残差ビデオデータのブロックに関連する変換係数の走査順序を形成することと、
ビデオ符号化プロセスにおいて使用するために、前記走査順序に従って前記変換係数を走査することと
を行うように構成されたビデオエンコーダを備え、
前記複数のパラメータ値が前記残差ビデオデータのブロックのサイズを示す第１のパラメータと前記走査順序の走査方向が水平又は垂直のいずれかであることを示す第２のパラメータとを含み、ここにおいて、
変換係数のブロックの最後の行より外の、前記ブロックの各それぞれの行に関して、前記走査方向が水平であることを前記第２のパラメータが示すことに基づいて、前記ビデオエンコーダは、前記所定の関数の第３のパラメータに基づいて、前記それぞれの行ごとにそれぞれの閾値を導出し、前記それぞれの行の前記それぞれの閾値は、前記変換係数の前記ブロックの次の行の係数を走査する前に、前記それぞれの行のいくつの係数が走査されるかを特定し、ここにおいて、前記それぞれの行の前記それぞれの閾値に達した後、前記それぞれの行及び前記次の行の係数は、インターリーブ式に走査され、
変換係数の前記ブロックの最後の列より外の、前記ブロックの各それぞれの列に関して、前記走査方向が垂直であることを前記第２のパラメータが示すことに基づいて、前記ビデオエンコーダは、前記第３のパラメータに基づいて、前記それぞれの列ごとにそれぞれの閾値を導出し、前記それぞれの列の前記それぞれの閾値は、前記変換係数の前記ブロックの次の列の係数を走査する前に、前記それぞれの列のいくつの係数が走査されるかを特定し、ここにおいて、前記それぞれの列の前記それぞれの閾値に達した後、前記それぞれの列及び前記次の列の係数は、前記インターリーブ式に走査される、装置。
【請求項１３】
前記変換係数が２次元アレイ内に存在し、前記ビデオエンコーダが、前記走査順序に従って前記変換係数を１次元アレイに走査するように構成された、請求項１２に記載の装置。
【請求項１４】
前記ビデオエンコーダが、符号化ビデオ中で、前記１次元アレイ内の走査された前記変換係数を与えることと、前記走査順序を形成するための前記関数の前記複数のパラメータ値を信号伝達することとを行うように構成された、請求項１３に記載の装置。
【請求項１５】
ビデオデータを復号するための装置であって、前記装置が、
走査順序を定義するための所定の関数と前記関数の複数のパラメータ値とに少なくとも部分的に基づいて、残差ビデオデータのブロックに関連する変換係数の走査順序を形成することと、
ビデオ復号プロセスにおいて使用するために、前記走査順序に従って前記変換係数を走査することと
を行うように構成されたビデオデコーダを備え、
前記複数のパラメータ値が前記残差ビデオデータのブロックのサイズを示す第１のパラメータと前記走査順序の走査方向が水平又は垂直のいずれかであることを示す第２のパラメータとを含み、ここにおいて、
変換係数のブロックの最後の行より外の、前記ブロックの各それぞれの行に関して、前記走査方向が水平であることを前記第２のパラメータが示すことに基づいて、前記ビデオデコーダは、前記所定の関数の第３のパラメータに基づいて、前記それぞれの行ごとにそれぞれの閾値を導出し、前記それぞれの行の前記それぞれの閾値は、前記変換係数の前記ブロックの次の行の係数を復号する前に、前記それぞれの行のいくつの係数が復号されるかを特定し、ここにおいて、前記それぞれの行の前記それぞれの閾値に達した後、前記それぞれの行及び前記次の行の係数は、インターリーブ式に走査され、
変換係数の前記ブロックの最後の列より外の、前記ブロックの各それぞれの列に関して、前記走査方向が垂直であることを前記第２のパラメータが示すことに基づいて、前記ビデオデコーダは、前記第３のパラメータに基づいて、前記それぞれの列ごとにそれぞれの閾値を導出し、前記それぞれの列の前記それぞれの閾値は、前記変換係数の前記ブロックの次の列の係数を走査する前に、前記それぞれの列のいくつの係数が走査されるかを特定し、ここにおいて、前記それぞれの列の前記それぞれの閾値に達した後、前記それぞれの列及び前記次の列の係数は、前記インターリーブ式に走査され、
前記変換係数が１次元アレイ内に存在し、前記ビデオデコーダが、前記走査順序に従って前記変換係数を２次元アレイに走査するように構成される、装置。
【請求項１６】
前記ビデオデコーダが、符号化ビデオ中で、前記１次元アレイ内の走査された前記変換係数と、前記走査順序を形成するための前記関数の前記複数のパラメータ値を示す信号伝達とを受信するように構成された、請求項１５に記載の装置。
【請求項１７】
前記ビデオデコーダが、符号化ビデオ中で、前記１次元アレイ内の走査された前記変換係数を受信することと、前記走査順序を形成するための前記関数の前記パラメータ値を推論することとを行うように構成された、請求項１５に記載の装置。
【請求項１８】
残差ビデオデータの前記ブロックが、ビデオデータのブロックの画素値とビデオデータの予測ブロックの画素値との間の差を示す残差値を含み、前記変換係数が、残差ビデオデータの前記ブロックに適用される変換によって生成される係数を含む、請求項１２または１５に記載の装置。
【請求項１９】
前記走査方向が水平であることを前記第２のパラメータが示すことに基づいて、前記ビデオエンコーダが、前記変換係数の前記ブロック中で走査される前記ブロックの前記最後の行より外の前記行のうちの各連続する行の前記それぞれの閾値を固定値に設定するように構成され、
前記走査方向が垂直であることを前記第２のパラメータが示すことに基づいて、前記ビデオエンコーダまたはビデオデコーダが、前記変換係数の前記ブロック中で走査される前記ブロックの前記最後の列より外の前記列のうちの各連続する列の前記それぞれの閾値を前記固定値に設定するように構成された、請求項１２に記載の装置。
【請求項２０】
前記ビデオエンコーダが、
前記走査方向が水平であることを前記第２のパラメータが示すことに基づいて、前記ビデオエンコーダは、前記変換係数の前記ブロック中で走査される前記行のうちの先行する行の前記閾値に対して、前記変換係数の前記ブロック中で走査される前記行のうちの各連続する行の前記閾値を低減し、
前記走査方向が垂直であることを前記第２のパラメータが示すことに基づいて、前記ビデオエンコーダは、前記変換係数の前記ブロック中で走査される前記列のうちの先行する列の前記閾値に対して、前記変換係数の前記ブロック中で走査される前記列のうちの各連続する列の前記閾値を低減するように構成された、請求項１２に記載の装置。
【請求項２１】
前記ビデオエンコーダが、
前記走査方向が水平であることを前記第２のパラメータが示すことに基づいて、
前記変換係数の前記ブロックの第１の行に関して、前記第１の行の前記閾値に等しい数の前記係数を走査することと、
前記第１の行中の変換係数の数が前記第１の行の前記閾値よりも大きいことに基づいて、前記第１の行又は列に関する未走査係数と前記インターリーブ式に、第２の行に関する前記係数のうちの１つ以上を走査することと、
前記第２の行の前記閾値を低減することと、第３の行に関する未走査係数を走査する前に、前記第２の行の前記低減された閾値に等しい数の、前記第２の行に関する未走査係数を走査することと、
前記走査方向が垂直であることを前記第２のパラメータが示すことに基づいて、
前記変換係数の前記ブロックの第１の列に関して、前記第１の列の前記閾値に等しい数の前記係数を走査することと、
前記第１の列中の変換係数の数が前記第１の列の前記閾値よりも大きいことに基づいて、前記第１の列に関する未走査係数と前記インターリーブ式に、第２の列に関する前記係数のうちの１つ以上を走査することと、
前記第２の列の前記閾値を低減することと、第３の列に関する未走査係数を走査する前に、前記第２の列の前記低減された閾値に等しい数の、前記第２の列に関する未走査係数を走査することと、
を行うように構成された、請求項１２に記載の装置。
【請求項２２】
前記ビデオエンコーダが、前記走査順序で前記変換係数のレベル又は符号のうちの少なくとも１つを符号化するように構成された、請求項１２に記載の装置。
【請求項２３】
ビデオデータを符号化するための装置であって、
走査順序を定義するための所定の関数と前記関数の複数のパラメータ値とに少なくとも部分的に基づいて、残差ビデオデータのブロックに関連する変換係数の走査順序を形成するための手段と、
ビデオ符号化プロセスにおいて使用するために、前記走査順序に従って前記変換係数を走査するための手段と
を備え、
前記複数のパラメータ値が前記残差ビデオデータのブロックのサイズを示す第１のパラメータと前記走査順序の走査方向が水平又は垂直のいずれかであることを示す第２のパラメータとを含み、
変換係数のブロックの最後の行外の、前記ブロックの各それぞれの行に関して、前記走査方向が水平であることを前記第２のパラメータが示すことに基づいて、前記走査順序を形成するための前記手段は、前記所定の関数の第３のパラメータに基づいて、前記それぞれの行ごとにそれぞれの閾値を導出し、前記それぞれの行の前記それぞれの閾値は、前記変換係数の前記ブロックの次の行の係数を走査する前に、前記それぞれの行のいくつの係数が走査されるかを特定し、ここにおいて、前記それぞれの行の前記それぞれの閾値に達した後、前記それぞれの行及び前記次の行の係数は、インターリーブ式に走査され、
変換係数の前記ブロックの最後の列より外の、前記ブロックの各それぞれの列に関して、前記走査方向が垂直であることを前記第２のパラメータが示すことに基づいて、前記走査順序を形成するための前記手段は、前記第３のパラメータに基づいて、前記それぞれの列ごとにそれぞれの閾値を導出し、前記それぞれの列の前記それぞれの閾値は、前記変換係数の前記ブロックの次の列の係数を走査する前に、前記それぞれの列のいくつの係数が走査されるかを特定し、ここにおいて、前記それぞれの列の前記それぞれの閾値に達した後、前記それぞれの列及び前記次の列の係数は、前記インターリーブ式に走査される、装置。
【請求項２４】
前記変換係数が２次元アレイ内に存在し、前記変換係数を走査するための前記手段が、前記走査順序に従ってビデオエンコーダにおいて前記変換係数を１次元アレイに走査するための手段を備える、請求項２３に記載の装置。
【請求項２５】
符号化ビデオ中で、前記１次元アレイ内の走査された前記変換係数を与えるための手段と、前記走査順序を形成するための前記関数の前記複数のパラメータ値を信号伝達するための手段とを更に備える、請求項２４に記載の装置。
【請求項２６】
ビデオデータを復号するための装置であって、
走査順序を定義するための所定の関数と前記関数の複数のパラメータ値とに少なくとも部分的に基づいて、残差ビデオデータのブロックに関連する変換係数の走査順序を形成するための手段と、
ビデオ復号プロセスにおいて使用するために、前記走査順序に従って前記変換係数を走査するための手段と
を備え、
前記複数のパラメータ値が前記残差ビデオデータのブロックのサイズを示す第１のパラメータと前記走査順序の走査方向が水平又は垂直のいずれかであることを示す第２のパラメータとを含み、
変換係数のブロックの最後の行より外の、前記ブロックの各それぞれの行に関して、前記走査方向が水平であることを前記第２のパラメータが示すことに基づいて、前記走査順序を形成するための前記手段は、前記所定の関数の第３のパラメータに基づいて、前記それぞれの行ごとにそれぞれの閾値を導出し、前記それぞれの行の前記それぞれの閾値は、前記変換係数の前記ブロックの次の行の係数を走査する前に、前記それぞれの行のいくつの係数が走査されるかを特定し、ここにおいて、前記それぞれの行の前記それぞれの閾値に達した後、前記それぞれの行及び前記次の行の係数は、インターリーブ式に走査され、
変換係数の前記ブロックの最後の列より外の、前記ブロックの各それぞれの列に関して、前記走査方向が垂直であることを前記第２のパラメータが示すことに基づいて、前記走査順序を形成するための前記手段は、前記第３のパラメータに基づいて、前記それぞれの列ごとにそれぞれの閾値を導出し、前記それぞれの列の前記それぞれの閾値は、前記変換係数の前記ブロックの次の列の係数を走査する前に、前記それぞれの列のいくつの係数が走査されるかを特定し、ここにおいて、前記それぞれの列の前記それぞれの閾値に達した後、前記それぞれの列及び前記次の列の係数は、前記インターリーブ式に走査され、
前記変換係数が１次元アレイ内に存在し、前記変換係数を走査するための前記手段が、前記走査順序に従って前記変換係数を２次元アレイに走査するための手段を備える、装置。
【請求項２７】
符号化ビデオ中で、前記１次元アレイ内の走査された前記変換係数と、前記走査順序を形成するための前記関数の前記複数のパラメータ値を示す信号伝達とを受信するための手段を更に備える、請求項２６に記載の装置。
【請求項２８】
残差ビデオデータの前記ブロックが、ビデオデータのブロックの画素値とビデオデータの予測ブロックの画素値との間の差を示す残差値を含み、前記変換係数が、残差ビデオデータの前記ブロックに適用される変換によって生成される係数を含む、請求項２３または２６に記載の装置。
【請求項２９】
前記走査方向が水平であることを前記第２のパラメータが示すことに基づいて、前記変換係数の前記ブロック中で走査される前記行のうちの先行する行の前記閾値に対して、前記変換係数の前記ブロック中で走査される前記行のうちの各連続する行の前記閾値の値を低減するための手段と、
前記走査方向が垂直であることを前記第２のパラメータが示すことに基づいて、前記変換係数の前記ブロック中で走査される前記列のうちの先行する列の前記閾値に対して、前記変換係数の前記ブロック中で走査される前記列のうちの各連続する列の前記閾値を低減するための手段と、
を更に備える、請求項２３または２６に記載の装置。
【請求項３０】
前記走査順序に従って前記変換係数を走査するための前記手段は、
前記変換係数の前記ブロックの第１の行に関して、前記走査方向が水平であることを前記第２のパラメータが示すことに基づいて、前記第１の行の前記閾値に等しい数の前記係数を走査するための手段と、
前記走査方向が水平であることを前記第２のパラメータが示すことと、前記第１の行中の変換係数の数が前記第１の行の前記閾値よりも大きいこととに基づいて、前記第１の行に関する未走査係数と前記インターリーブ式に、第２の行に関する前記係数のうちの１つ以上を走査するための手段と、
前記走査方向が水平であることを前記第２のパラメータが示すことに基づいて前記第２の行の前記閾値を低減するための手段と、第３の行に関する未走査係数を走査する前に、前記第２の行の前記低減された閾値に等しい数の、前記第２の行に関する未走査係数を走査するための手段と、
前記走査方向が垂直であることを前記第２のパラメータが示すことに基づいて、前記変換係数の前記ブロックの第１の列に関して、前記第１の列の前記閾値に等しい数の前記係数を走査するための手段と、
前記走査方向が垂直であることを前記第２のパラメータが示すことと、前記第１の列中の変換係数の数が前記第１の列の前記閾値よりも大きいことに基づいて、前記第１の列に関する未走査係数と前記インターリーブ式に、第２の列に関する前記係数のうちの１つ以上を走査するための手段と、
前記走査方向が垂直であることを前記第２のパラメータが示すことに基づいて、前記第２の列の前記閾値を低減するための手段と、第３の列に関する未走査係数を走査する前に、前記第２の列の前記低減された閾値に等しい数の、前記第２の列に関する未走査係数を走査するための手段と、
を備える、請求項２３または２６に記載の装置。
【請求項３１】
走査順序を定義するための所定の関数と前記関数の複数のパラメータ値とに少なくとも部分的に基づいて、残差ビデオデータのブロックに関連する変換係数の走査順序を形成することと、前記複数のパラメータ値が前記残差ビデオデータのブロックのサイズを示す第１のパラメータと前記走査順序の走査方向が水平又は垂直のいずれかであることを示す第２のパラメータとを含み、
変換係数のブロックの最後の行より外の、前記ブロックの各それぞれの行に関して、前記走査方向が水平であることを前記第２のパラメータが示すことに基づいて、ビデオエンコーダは、前記所定の関数の第３のパラメータに基づいて、前記それぞれの行ごとにそれぞれの閾値を導出し、前記それぞれの行の前記それぞれの閾値は、前記変換係数の前記ブロックの次の行の係数を走査する前に、前記それぞれの行のいくつの係数が走査されるかを特定し、ここにおいて、前記それぞれの行の前記それぞれの閾値に達した後、前記それぞれの行及び前記次の行の係数は、インターリーブ式に走査され、
変換係数の前記ブロックの最後の列より外の、前記ブロックの各それぞれの列に関して、前記走査方向が垂直であることを前記第２のパラメータが示すことに基づいて、前記ビデオエンコーダは、前記第３のパラメータに基づいて、前記それぞれの列ごとにそれぞれの閾値を導出し、前記それぞれの列の前記それぞれの閾値は、前記変換係数の前記ブロックの次の列の係数を走査する前に、前記それぞれの列のいくつの係数が走査されるかを特定し、ここにおいて、前記それぞれの列の前記それぞれの閾値に達した後、前記それぞれの列及び前記次の列の係数は、前記インターリーブ式に走査され、
ビデオ符号化プロセスにおいて使用するために、前記走査順序に従って前記変換係数を走査することと
を前記ビデオエンコーダに行わせるための命令を記憶するコンピュータ可読記憶媒体。
【請求項３２】
前記変換係数が２次元アレイ内に存在し、前記命令が、前記走査順序に従ってビデオエンコーダにおいて前記変換係数を１次元アレイに走査することを前記ビデオエンコーダに行わせ、前記命令が、符号化ビデオ中で、前記１次元アレイ内の走査された前記変換係数を与えることと、前記走査順序を形成するための前記関数の前記複数のパラメータ値を信号伝達することとを前記ビデオエンコーダに行わせる、請求項３１に記載のコンピュータ可読記憶媒体。
【請求項３３】
走査順序を定義するための所定の関数と前記関数の複数のパラメータ値とに少なくとも部分的に基づいて、残差ビデオデータのブロックに関連する変換係数の走査順序を形成することと、
ビデオ復号プロセスにおいて使用するために、前記走査順序に従って前記変換係数を走査することと
をビデオデコーダに行わせるための命令を記憶し、
前記複数のパラメータ値が前記残差ビデオデータのブロックのサイズを示す第１のパラメータと前記走査順序の走査方向が水平又は垂直のいずれかであることを示す第２のパラメータとを含み、
変換係数のブロックの最後の行より外の、前記ブロックの各それぞれの行に関して、前記走査方向が水平であることを前記第２のパラメータが示すことに基づいて、前記ビデオデコーダは、前記所定の関数の第３のパラメータに基づいて、前記それぞれの行ごとにそれぞれの閾値を導出し、前記それぞれの行の前記それぞれの閾値は、前記変換係数の前記ブロックの次の行の係数を走査する前に、前記それぞれの行のいくつの係数が走査されるかを特定し、ここにおいて、前記それぞれの行の前記それぞれの閾値に達した後、前記それぞれの行及び前記次の行の係数は、インターリーブ式に走査され、
変換係数の前記ブロックの最後の列より外の、前記ブロックの各それぞれの列に関して、前記走査方向が垂直であることを前記第２のパラメータが示すことに基づいて、前記ビデオデコーダは、前記第３のパラメータに基づいて、前記それぞれの列ごとにそれぞれの閾値を導出し、前記それぞれの列の前記それぞれの閾値は、前記変換係数の前記ブロックの次の列の係数を走査する前に、前記それぞれの列のいくつの係数が走査されるかを特定し、ここにおいて、前記それぞれの列の前記それぞれの閾値に達した後、前記それぞれの列及び前記次の列の係数は、前記インターリーブ式に走査され、
前記変換係数が１次元アレイ内に存在し、前記命令が、前記走査順序に従ってビデオデコーダにおいて前記変換係数を２次元アレイに走査することを前記ビデオデコーダに行わせ、前記命令が、符号化ビデオ中で、前記１次元アレイ内の走査された前記変換係数と、前記走査順序を形成するための前記関数の前記複数のパラメータ値を示す信号伝達とを受信することを前記ビデオデコーダに行わせる、コンピュータ可読記憶媒体。
【請求項３４】
残差ビデオデータの前記ブロックが、ビデオデータのブロックの画素値とビデオデータの予測ブロックの画素値との間の差を示す残差値を含み、前記変換係数が、残差ビデオデータの前記ブロックに適用される変換によって生成される係数を含む、請求項３１に記載のコンピュータ可読記憶媒体。
【請求項３５】
前記走査方向が水平であることを前記第２のパラメータが示すことに基づいて、前記ビデオデコーダは、前記変換係数の前記ブロック中で走査される前記ブロックの前記最後の行より外の前記行のうちの各連続する行の前記閾値を固定値に設定するように構成され、
前記走査方向が垂直であることを前記第２のパラメータが示すことに基づいて、前記ビデオデコーダは、前記変換係数の前記ブロック中で走査される前記ブロックの前記最後の列より外の前記列のうちの各連続する列の前記閾値を前記固定値に設定するように構成される、請求項１５に記載の装置。
【請求項３６】
前記ビデオデコーダは、
前記走査方向が水平であることを前記第２のパラメータが示すことに基づいて、前記変換係数の前記ブロック中で走査される前記行のうちの先行する行の前記閾値に対して、前記変換係数の前記ブロック中で走査される前記行のうちの各連続する行の前記閾値を低減することと、
前記走査方向が垂直であることを前記第２のパラメータが示すことに基づいて、前記変換係数の前記ブロック中で走査される前記列のうちの先行する列の前記閾値に対して、前記変換係数の前記ブロック中で走査される前記列のうちの各連続する列の前記閾値を低減することと、
を行うように構成される、請求項１５に記載の装置。
【請求項３７】
前記ビデオデコーダは、
前記走査方向が水平であることを前記第２のパラメータが示すことに基づいて、
前記変換係数の前記ブロックの第１の行に関して、前記第１の行の前記閾値に等しい数の前記係数を走査することと、
前記第１の行中の変換係数の数が前記第１の行の前記閾値よりも大きいことに基づいて、前記第１の行に関する未走査係数と前記インターリーブ式に、第２の行に関する前記係数のうちの１つ以上を走査することと、
前記第２の行の前記閾値を低減し、第３の行に関する未走査係数を走査する前に、前記第２の行の前記低減された閾値に等しい数の、前記第２の行に関する未走査係数を走査することと、
前記走査方向が垂直であることを前記第２のパラメータが示すことに基づいて、
前記変換係数の前記ブロックの第１の列に関して、前記第１の列の前記閾値に等しい数の前記係数を走査することと、
前記第１の列中の変換係数の数が前記第１の列の前記閾値よりも大きいことに基づいて、前記第１の列に関する未走査係数と前記インターリーブ式に、第２の列に関する前記係数のうちの１つ以上を走査することと、
前記第２の列の前記閾値を低減することと、第３の列に関する未走査係数を走査する前に、前記第２の列の前記低減された閾値に等しい数の、前記第２の列に関する未走査係数を走査することと
を行うように構成される、請求項１５に記載の装置。
【請求項３８】
前記装置は、
集積回路、
マイクロプロセッサ、または
ワイヤレスハンドセット
のうちの少なくとも１つを備える、請求項１２または１５に記載の装置。
【請求項３９】
復号されたビデオデータを表示するように構成された表示器をさらに備える、請求項１５に記載の装置。
【請求項４０】
前記ビデオデータを撮るように構成されたカメラをさらに備える、請求項１２に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、各々の内容全体が参照により本明細書に組み込まれる、２０１１年６月２９日に出願された米国仮出願第６１／５０２，７７９号、２０１１年３月８日に出願された米国仮出願第６１／４５０，５０５号、及び２０１０年１２月３日に出願された米国仮出願第６１／４１９，７３２号の利益を主張する。
【０００２】
本開示は、ビデオ符号化に関し、より詳細には、ビデオ符号化のために残差変換係数（residual transform coefficient）を走査するための技術に関する。
【背景技術】
【０００３】
デジタルビデオ機能は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末（ＰＤＡ）、ラップトップ又はデスクトップコンピュータ、デジタルカメラ、デジタル記録機器、デジタルメディアプレーヤ、ビデオゲーム機器、ビデオゲームコンソール、セルラー電話又は衛星無線電話、ビデオ遠隔会議機器などを含む、広範囲にわたる機器に組み込まれ得る。デジタルビデオ機器は、デジタルビデオ情報をより効率的に送信、受信及び記憶するための、ＭＰＥＧ−２、ＭＰＥＧ−４、ＩＴＵ−Ｔ  Ｈ．２６３、ＩＴＵ−Ｔ  Ｈ．２６４／ＭＰＥＧ−４、Ｐａｒｔ１０、Ａｄｖａｎｃｅｄ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＡＶＣ）によって定義された規格、現在開発中の高効率ビデオ符号化（ＨＥＶＣ：High Efficiency Video Coding）規格、及びそのような規格の拡張に記載されているビデオ圧縮技術など、ビデオ圧縮技術を実施する。
【０００４】
ビデオ圧縮技術は、ビデオシーケンスに固有の冗長性を低減又は除去するために空間的予測及び／又は時間的予測を含む。ブロックベースのビデオ符号化の場合、ビデオフレーム又はスライスはブロックに区分され得る。各ブロックは更に区分され得る。イントラコード化（Ｉ）フレーム又はスライス中のブロックは、同じフレーム又はスライス中の隣接ブロック中の参照サンプルに関する空間的予測を使用して符号化される。インターコード化（Ｐ又はＢ）フレーム又はスライス中のブロックは、同じフレーム又はスライス中の隣接ブロック中の参照サンプルに関する空間的予測、若しくは他の参照フレーム中の参照サンプルに関する時間的予測を使用し得る。空間的予測又は時間的予測は、コード化されるべきブロックの予測ブロックを生じる。残差データは、コード化されるべき元のブロックと予測ブロックとの間の画素差分を表す。適当に処分して下さい。
【０００５】
インターコード化ブロックは、予測ブロックを形成する参照サンプルのブロックをポイントする動きベクトルと、コード化ブロックと予測ブロックとの間の差分を示す残差データとに従って符号化される。イントラコード化ブロックは、イントラコード化モードと残差データとに従ってコード化される。さらなる圧縮のために、残差データは、画素領域から変換領域に変換されて残差変換係数を生じ得、残差変換係数は、次いで量子化され得る。最初は２次元アレイ内に構成される量子化された変換係数は、エントロピーコード化のために変換係数の１次元ベクトルを生成するために、特定の順序で走査され得る。走査順序は、０値係数のランレングスコード化など、エントロピーコード化プロセスの効率を促進するために、非０係数と０値係数とを別々にグループ化するように選択され得る。
【発明の概要】
【０００６】
概して、本開示では、走査順序の関数ベース定義を使用して、残差ビデオデータのブロックに関連する変換係数を走査する、ビデオコード化のための装置及び方法について説明する。ビデオコーダが、所定の関数（predefined function）とその関数の１つ以上のパラメータ値とに少なくとも部分的に基づいて変換係数の走査順序を定義し得る。
【０００７】
例えば、ビデオエンコーダが、コード化ビデオデータを生成する際に使用する変換係数の１次元アレイを生成するために、関数ベース走査順序を使用して変換係数の２次元アレイを走査し得る。別の例として、ビデオデコーダが、復号ビデオデータを生成する際に使用する変換係数の２次元アレイを再生するために、関数ベース走査順序を、例えば、逆に使用して変換係数の１次元アレイを走査し得る。
【０００８】
各場合において、走査順序はパラメータ値に応じて変化し得る。幾つかの例では、ビデオエンコーダが、ビデオエンコーダによって生成されるコード化ビデオデータ中でパラメータ値のうちの少なくとも幾つかを信号伝達し得る。ビデオデコーダは、走査順序を定義するためにパラメータ値を関数に適用し得る。幾つかの例では、パラメータ値は、変換単位サイズ、走査方向、及び／又は走査方向強度を含み得る。
【０００９】
一例では、本開示では、ビデオデータをコード化する方法であって、所定の関数とその関数の１つ以上のパラメータ値とに少なくとも部分的に基づいて、残差ビデオデータのブロックに関連する変換係数の走査順序を定義することと、ビデオコード化プロセスにおいて使用するために、走査順序に従って変換係数を走査することとを備える方法について説明する。幾つかの例では、本方法はビデオエンコーダを用いて実行され得る。他の例では、ビデオコード化ユニットはビデオデコーダを用いて実行され得る。
【００１０】
別の例では、本開示では、ビデオデータをコード化するための装置であって、所定の関数とその関数の１つ以上のパラメータ値とに少なくとも部分的に基づいて、残差ビデオデータのブロックに関連する変換係数の走査順序を定義することと、ビデオコード化プロセスにおいて使用するために、走査順序に従って変換係数を走査することとを行うように構成されたビデオコード化ユニットを備える装置について説明する。幾つかの例では、ビデオコーダはビデオエンコーダに関連し得る。他の例では、ビデオコーダはビデオデコーダに関連し得る。
【００１１】
別の例では、本開示では、所定の関数とその関数の１つ以上のパラメータ値とに少なくとも部分的に基づいて、残差ビデオデータのブロックに関連する変換係数の走査順序を定義することと、ビデオコード化プロセスにおいて使用するために、走査順序に従って変換係数を走査することとをビデオコーダに行わせるための命令を備えるコンピュータ可読媒体について説明する。幾つかの例では、ビデオコーダはビデオエンコーダに関連し得る。他の例では、ビデオコーダはビデオデコーダに関連し得る。
【００１２】
１つ以上の例の詳細を添付の図面及び以下の説明に記載する。他の特徴、目的、及び利点は、その説明及び図面、ならびに特許請求の範囲から明らかになろう。
【図面の簡単な説明】
【００１３】
【図１】例示的なビデオ符号化及び復号システムを示すブロック図。
【図２】変換係数の走査順序の関数ベース定義のための技術を使用し得るビデオエンコーダの一例を示すブロック図。
【図３】変換係数の走査順序の関数ベース定義のための技術を使用し得るビデオデコーダの一例を示すブロック図。
【図４】図２のビデオエンコーダにおいて使用するエントロピー符号化ユニットの一例を示すブロック図。
【図５】図３のビデオデコーダにおいて使用するエントロピー復号ユニットの一例を示すブロック図。
【図６】例示的な変換単位中の変換係数のジグザグ走査順序を示す図。
【図７】例示的な変換単位中の変換係数の水平走査順序を示す図。
【図８】例示的な変換単位中の変換係数の垂直走査順序を示す図。
【図９】水平走査方向をもつ走査順序を示す図。
【図１０】図９の走査順序よりも小さい水平走査方向強度をもつ走査順序を示す図。
【図１１】走査方向パラメータと走査方向強度パラメータとに基づいて定義された関数ベース走査順序の一例を示す図。
【図１２】走査方向パラメータと走査方向強度パラメータとに基づいて定義された関数ベース走査順序の別の例を示す図。
【図１３】ビデオエンコーダにおける変換係数の走査順序の関数ベース定義のための例示的な方法を示すフローチャート。
【図１４】ビデオデコーダにおける変換係数の走査順序の関数ベース定義のための例示的な方法を示すフローチャート。
【図１５】ビデオエンコーダにおける変換係数の走査順序の関数ベース定義のための別の例示的な方法を示すフローチャート。
【図１６】ビデオデコーダにおける変換係数の走査順序の関数ベース定義のための別の例示的な方法を示すフローチャート。
【発明を実施するための形態】
【００１４】
[0029]デジタルビデオ機器は、デジタルビデオ情報をより効率的に送信及び受信するためのビデオ圧縮技術を実装する。ビデオ圧縮は、ビデオシーケンスに固有の冗長性を低減又は除去するために空間的（フレーム内）予測及び／又は時間的（フレーム間）予測技術を適用し得る。一例として、Ｊｏｉｎｔ  Ｃｏｏｐｅｒａｔｉｖｅ  Ｔｅａｍ  ｆｏｒ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＪＣＴ−ＶＣ）によって現在開発中の高効率ビデオコード化（ＨＥＶＣ）規格に従うビデオコード化では、ビデオフレームがコード化単位に区分され得る。
【００１５】
[0030]コード化単位は、概して、ビデオ圧縮のために様々なコード化ツールが適用される基本単位として働く画像領域を指す。コード化単位は、一般に方形であり、例えば、ＩＴＵ−Ｔ  Ｈ．２６４などの他のビデオコード化規格の下での所謂マクロブロックと同様であると見なされ得る。本出願では、例示のために、開発中のＨＥＶＣ規格の現在提案されている態様の幾つかに従うコード化について説明する。但し、本開示で説明する技術は、Ｈ．２６４又は他の規格に従って定義されるビデオコード化プロセス若しくはプロプライエタリビデオコード化プロセスなど、他のビデオコード化プロセスのために有用であり得る。
【００１６】
[0031]望ましいコード化効率を達成するために、ＨＥＶＣによれば、コード化単位（ＣＵ）はビデオコンテンツに応じて可変サイズを有し得る。更に、コード化単位は、予測又は変換のためにより小さいブロックに分割され得る。具体的には、各コード化単位は、予測単位（ＰＵ）と変換単位（ＴＵ）とに更に区分され得る。予測単位は、Ｈ．２６４規格などの他のビデオコード化規格の下での所謂パーティションと同様であると見なされ得る。ＴＵは、概して、変換係数を生成するために変換が適用される残差データのブロックを指す。
【００１７】
[0032]コード化単位は、通常、Ｙとして示されるルミナンス成分と、Ｕ及びＶとして示される２つのクロマ成分とを有する。ビデオサンプリングフォーマットに応じて、サンプル数で表されるＵ及びＶ成分のサイズは、Ｙ成分のサイズと同じであるか又はそれとは異なり得る。
【００１８】
[0033]ブロック（例えば、ビデオデータの予測単位（ＰＵ））をコード化するために、ブロックの予測子が最初に導出される。予測ブロックとも呼ばれる予測子は、イントラ（Ｉ）予測（即ち、空間的予測）又はインター（Ｐ又はＢ）予測（即ち時間的予測）のいずれかを通して導出され得る。従って、幾つかの予測単位は、同じフレーム中の隣接参照ブロック中の参照サンプルに関する空間的予測を使用してイントラコード化（Ｉ）され得、他の予測単位は、他のフレーム中の参照サンプルのブロックに関して単方向にインターコード化（Ｐ）されるか又は双方向にインターコード化（Ｂ）され得る。各場合において、参照サンプルは、コード化されるべきブロックの予測ブロックを形成するために使用され得る。
【００１９】
[0034]予測ブロックの識別時に、元のビデオデータブロックとそれの予測ブロックとの間の差分が決定される。この差分は残差データと呼ばれることがあり、コード化されるべきブロック中の画素値と、コード化ブロックを表すように選択された予測ブロック中の画素値との間の画素差分を示す。より良好な圧縮を達成するために、残差データは、例えば、離散コサイン変換（ＤＣＴ）、整数変換、カルーネンレーベ（Karhunen-Loeve）（Ｋ−Ｌ）変換、又は別の変換を使用して変換され得る。
【００２０】
[0035]ＴＵなどの変換ブロック中の残差データは、空間的画素領域に存在する画素差分値の２次元（２Ｄ）アレイで構成され得る。変換は、周波数領域などの変換領域において残差画素値を変換係数の２次元アレイに変換する。さらなる圧縮のために、変換係数は、エントロピーコード化に先立って量子化され得る。次いで、エントロピーコーダは、量子化された変換係数にコンテキスト適応型可変長コード化（ＣＡＶＬＣ：Context Adaptive Variable Length Coding）、コンテキスト適応型バイナリ算術コード化（ＣＡＢＡＣ：Context Adaptive Binary Arithmetic Coding）などのエントロピーコード化を適用する。
【００２１】
[0036]量子化された変換係数のブロックをエントロピーコード化するために、ブロック中の量子化された変換係数の２次元（２Ｄ）アレイが、特定の走査順序に従って変換係数の順序付き１次元（１Ｄ）アレイ、即ちベクトルに再構成されるように、走査プロセスが通常実行される。次いで、変換係数のベクトルにエントロピーコード化が適用される。変換単位中の量子化された変換係数の走査は、エントロピーコーダのために変換係数の２Ｄアレイをシリアル化する。有効（即ち、非０）係数の位置を示すための有効性マップ（significance map）が生成され得る。他の例では、有効性マップは生成されないことがある。走査は、有効（即ち、非０）係数のレベルなど、係数のレベルを走査するため、及び／又は有効係数の符号をコード化するために適用され得る。レベルは係数の絶対値を指し得る。係数の走査は、係数有効性をコード化するため、係数レベルをコード化するため、係数符号をコード化するため、又は他の関連する係数情報をコード化するために係数を走査すること指し得る。幾つかの例では、走査は、例えば、ＣＡＶＬＣコード化プロセスに従って、係数レベル、符号、非０係数間のゼロランレングスなどの情報のエントロピーコード化をサポートし得る。また、幾つかの例では、走査は、例えば、ＣＡＢＡＣコード化プロセスに従って、有効性マップ、係数レベル、係数符号などについての有効性情報など、変換係数情報のエントロピーコード化をサポートし得る。従って、ＣＡＶＬＣプロセス又はＣＡＢＡＣプロセスなど、異なるタイプのエントロピーコード化技術に応じた変換係数情報のコード化をサポートするために、本開示で説明する技術に従って生成される走査順序が適用され得る。
【００２２】
[0037]一例として、ＤＣＴでは、しばしば、２Ｄ変換単位の左上隅（即ち、低周波数領域）のほうが非０係数の確率がより高くなる。係数のシリアル化ランの始端において非０係数を一緒にグループ化する確率を増加させる方法で係数を走査して、０値係数がシリアル化ベクトルの終端のほうへ一緒にグループ化され、ゼロのランとしてより効率的にコード化されることを可能にすることが望ましいことがある。この理由で、走査順序は効率的なエントロピーコード化のために重要であり得る。
【００２３】
0038一例として、量子化された変換係数を走査するために、所謂「ジグザグ」走査順序が広く使用されている。代替的に、水平、垂直、又は他の走査順序が使用され得る。場合によっては、ジグザグ、水平、及び／又は垂直走査順序の態様を組み合わせた走査順序が使用され得る。対角走査順序などの他の走査順序も使用され得る。変換及び量子化を介して、上述のように、例えば、変換がＤＣＴである例では、非０変換係数は、概して、ブロックの左上領域のほうの低周波数エリアに位置する。その結果、最初に左上領域を横断し得るジグザグ走査プロセスの後に、非０変換係数は、通常、１Ｄアレイの前部分に位置する可能性が高くなる。
【００２４】
[0039]より高い周波数において低減されたエネルギーにより、また量子化の効果により、通常、１Ｄアレイの終端において、幾つかの０係数が続き、これにより、ビット深度の低減時に幾つかの非０係数が０値係数になり得る。シリアル化１Ｄアレイ内の係数分布のこれらの特性は、コード化効率を改善するためにエントロピーコーダ設計において利用され得る。言い換えれば、何らかの適切な走査順序を介して１Ｄアレイの前部分に非０係数が効果的に構成され得る場合、より良好なコード化効率が、多くのエントロピーコーダの設計により期待され得る。例えば、エントロピーコード化は０値係数のランをコード化して、コード化のためのより効率的なシンボルを与え得る。
【００２５】
[0040]１Ｄアレイの前セクションにより多くの非０係数を配置するこの目的を達成するために、ビデオエンコーダデコーダ（コーデック）において、変換係数をコード化するための異なる走査順序が使用され得る。ある場合には、ジグザグ走査が有効であり得る。他の場合には、垂直走査又は水平走査などの異なるタイプの走査が、１Ｄアレイの前セクションに非０係数を配置する際により有効であり得る。
【００２６】
[0041]異なる走査順序は様々な方法で生成され得る。１つの例は、変換係数の各ブロックについて、幾つかの利用可能な走査順序から「最良」の走査順序が選定され得ることである。次いで、ビデオエンコーダが、各ブロックについて、それぞれのインデックスによって示される、デコーダに記憶された走査順序のセットのうちの最良の走査順序のインデックスをエンコーダに信号伝達し得る。最良の走査順序の選択は、幾つかの走査順序を適用することと、１Ｄベクトルの始端の近くに非０係数を配置する際に最も効果的である走査順序を選択することとによって決定され、それにより効率的なエントロピーコード化が促進され得る。
【００２７】
[0042]別の例では、現在のブロックの走査順序は、予測モード（Ｉ、Ｂ、Ｐ）、又は他のファクタなど、関連する予測単位のコード化に関係する様々なファクタに基づいて決定され得る。この場合、エンコーダ側とデコーダ側の両方において同じ情報、例えば、予測モードが推測又は場合によっては決定され得るので、エンコーダからデコーダに走査順序インデックスを信号伝達する必要はないことがある。代わりに、ビデオデコーダは、ブロックの予測モードの知識と、予測モードを特定の走査順序にマッピングする１つ以上の基準とが与えられれば、適切な走査順序を知り得る。
【００２８】
[0043]コード化効率を更に改善するために、利用可能な走査順序は常に一定であるとは限らない。代わりに、例えば、すでにコード化された係数に基づいて走査順序が適応的に調整されるように、何らかの適応が可能にされ得る。概して、走査順序適応は、選択された走査順序に従って、非０値を有する可能性が高い係数位置が、非０係数を有する可能性が低い位置の前に走査される方法で行われ得る。
【００２９】
[0044]幾つかのビデオコーデックでは、使用のために利用可能である初期走査順序は、純水平、純垂直又は純ジグザグ走査など、極めて規則的な形態であり得る。代替的に、走査順序はトレーニングプロセスを通して導出され得、従って、いくぶんランダムであるように見え得る。トレーニングプロセスは、例えば、上述のように、非０係数と０値係数との効率的な配置に関して望ましい結果を生成する走査順序を識別するための、ブロック又は一連のブロックへの異なる走査順序の適用を伴い得る。
【００３０】
[0045]走査順序がトレーニングプロセスから導出される場合、又は走査順序が順序構成に関して規則的なパターンを有しない場合、エンコーダ側とデコーダ側の両方において特定の走査順序を保存することが必要であり得る。残念ながら、場合によっては、そのような走査順序を指定するデータはかなりの量になり得る。例えば、３２×３２変換ブロックでは、１つの走査順序は１０２４個の変換係数位置を含んでいることがある。別様にサイズ決定されたブロックがあり得、変換ブロックの各サイズについて、幾つかの異なる走査順序があり得るので、保存される必要があるデータの総量は無視できない。水平、垂直又はジグザグ順序などの規則的走査順序は、記憶を必要としないか又は最小の記憶を必要とし得る。しかしながら、水平、垂直又はジグザグ順序は、トレーニングされた走査順序と同等であるコード化性能を与えるのに十分な多様性を与え得ない。
【００３１】
[0046]本開示の例によれば、変換係数のブロック中の変換係数を走査するための走査順序は、関数を使用して効率的に定義され得る。単一の関数を使用して、異なる関数パラメータ値に基づいて異なる走査順序を生成し得る。代替的に、複数の関数を使用して、例えば、同じ又は異なるパラメータ又はパラメータ値を用いて異なる走査順序を生成し得る。従って、異なるパラメータ値、異なる関数、又は両方の組合せを選択することによって異なる走査順序が生成され得る。このようにして、例えば、複雑な走査順序を定義するためにエンコーダ及びデコーダにおいて必要とされる記憶されたデータの量を低減する方法で、そのような複雑な走査順序が定義され得る。
【００３２】
[0047]走査順序の関数ベース定義の使用は、幾つかの例では、エンコーダ及び／又はデコーダにおいて走査順序をメモリに記憶する必要なしに様々な走査順序が生成されることを可能にし得る。例えば、所与のブロック又はブロックのグループの走査順序を生成するためにエンコーダ及び／又はデコーダにおいて関数が適用され得る。異なるパラメータ値の使用は、エンコーダ及び／又はデコーダが、ジグザグ、水平及び垂直走査順序などの単純な走査順序に対してよりフレキシブルに走査順序を調整することを可能にする。しかも、走査順序を定義するための関数を使用して、エンコーダ及び／又はデコーダは、幾つかの異なる走査順序を直接表すために一般に必要とされるであろうデータよりも大幅に少ないデータを記憶し得る。
【００３３】
[0048]ビデオエンコーダ又はビデオデコーダなどのビデオコーダは、所定の関数（predefined function）とその関数の１つ以上のパラメータ値とに少なくとも部分的に基づいて変換係数の走査順序を定義し得る。例えば、ビデオエンコーダが、コード化ビデオデータを生成する際に使用する変換係数の１次元アレイを生成するために、関数ベース走査順序を使用して変換係数の２次元アレイを走査し得る。別の例として、ビデオデコーダが、復号ビデオデータを生成する際に使用する変換係数の２次元アレイを再生するために、関数ベース走査順序を逆に使用して変換係数の１次元アレイを走査し得る。変換係数は、変換係数のレベル、即ち、絶対値として表され得る。走査順序は、例えば、ＣＡＢＡＣプロセスの場合、有効係数の有効性マップをコード化すること、有効係数のレベルをコード化すること、及び／又は有効係数の符号をコード化すること、及び／又は他の関連する変換情報をコード化することにおいて使用され得る。他の例では、走査順序は、例えば、ＣＡＶＬＣプロセスの場合、係数のレベルをコード化すること、有効係数の符号をコード化すること、非０係数間のゼロランレングスをコード化すること、及び／又は他の関連する変換情報をコード化することにおいて使用され得る。従って、走査順序に従って変換係数を走査することは、様々な例では、走査順序に従って残差ビデオデータ（例えば、ＴＵ中の変換係数）のブロックに関連する変換係数の有効性（即ち、非０係数又は０値係数としての係数のステータス）、レベル、符号、又はゼロランレングスのうちの少なくとも１つをコード化することを備え得る。
【００３４】
[0049]ビデオコーダ、即ち、ビデオエンコーダ又はビデオデコーダによって定義される走査順序は、パラメータ値に応じて変化し得る。幾つかの例では、パラメータ値は、変換単位サイズ、即ち、ブロックサイズ、走査方向、及び／又は走査方向強度を含み得る。ビデオエンコーダが、明示的に、又はデコーダによって記憶された異なるパラメータ値をポイントするインデックス値によって、パラメータ値をビデオデコーダに信号伝達し得る。幾つかの例では、ビデオエンコーダは、例えば、インデックス値によって複数の利用可能な関数のうちの特定の関数を信号伝達し得る。従って、ビデオエンコーダ及びビデオデコーダは単一の関数又は複数の関数を使用し得る。各場合において、走査順序を生成するために、パラメータ値の異なるセットが入力として関数に適用され得る。
【００３５】
[0050]本開示では、概して、例示のために、異なるパラメータ値をもつ単一の関数の使用について説明する。但し、本開示で説明する技術は、概して、ビデオエンコーダ及び／又はビデオデコーダにおいて走査順序を定義するための、パラメータ値の異なるセットをもつ単一の関数又は複数の関数の使用に適用可能であり得る。更に、本開示では、走査順序の関数ベース定義について概括的に説明し、また開発中のＨＥＶＣ規格の幾つかの態様に関して説明する。例示のためにＨＥＶＣ規格について説明するが、本開示で説明する技術は、概して、変換係数の走査が望ましい、任意のビデオコード化プロセスに適用可能であり得る。
【００３６】
[0051]図１は、残差ビデオデータのブロックに関連する変換係数を走査するために、走査順序の関数ベース定義のための技術を利用する例示的なビデオ符号化及び復号システム１０を示すブロック図である。図１に示すように、システム１０は、通信チャネル１６を介して符号化ビデオを宛先機器１４に送信する信号源１２を含む。信号源１２及び宛先機器１４は、デスクトップコンピュータ、ノートブック（即ち、ラップトップ）コンピュータ、タブレットコンピュータ、セットトップボックス、所謂スマートフォンなどの電話ハンドセット、テレビジョン、カメラ、表示装置、デジタルメディアプレーヤ、ビデオゲームコンソールなどを含む、広範囲にわたる機器のいずれかを備え得る。多くの場合、そのような機器はワイヤレス通信が可能であり得る。従って、通信チャネル１６は、コード化ビデオデータの送信に好適なワイヤレスチャネル、ワイヤードチャネル、又はワイヤレスチャネルとワイヤードチャネルとの組合せを備え得る。
【００３７】
[0052]本開示の例による、走査変換係数に対する走査順序の関数ベース定義のための技術は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、例えばインターネットを介したストリーミングビデオ送信、データ記憶媒体に記憶するためのデジタルビデオの符号化、データ記憶媒体に記憶されたデジタルビデオの復号、又は他の適用例など、様々なマルチメディア適用例のいずれかをサポートするビデオコード化に適用され得る。幾つかの例では、システム１０は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスト、及び／又はビデオテレフォニーなどの適用例をサポートするために、一方向又は双方向のビデオ送信をサポートするように構成され得る。
【００３８】
0053図１の例では、信号源１２は、ビデオソース１８と、ビデオエンコーダ２０と、変調器／復調器２２と、送信機２４とを含む。信号源１２において、ビデオソース１８は、ビデオカメラなどの撮像装置、以前に撮影されたビデオを含んでいるビデオアーカイブ、ビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェース、及び／又はソースビデオとしてコンピュータグラフィックスデータを生成するためのコンピュータグラフィックスシステムなどのソース、若しくはそのようなソースの組合せを含み得る。一例として、ビデオソース１８がビデオカメラである場合、信号源１２及び宛先機器１４は、所謂カメラ付き携帯電話又はビデオ電話を形成し得る。但し、本開示で説明する技術は、概してビデオコード化に適用可能であり得、ワイヤレス及び／又はワイヤード適用例に適用されるか、又は符号化ビデオデータを記憶するローカルメディアへのアクセスに適用され得る。
【００３９】
[0054]撮影されたビデオ、以前に撮影されたビデオ、又はコンピュータ生成ビデオはビデオエンコーダ２０によって符号化され得る。符号化されたビデオ情報は、ワイヤレス通信プロトコルなどの通信規格に従ってモデム２２によって変調され、送信機２４を介して宛先機器１４に送信され得る。モデム２２は、信号変調のために設計された様々なミキサ、フィルタ、増幅器又は他の構成要素を含み得る。送信機２４は、増幅器、フィルタ、及び１つ以上のアンテナを含む、データを送信するために設計された回路を含み得る。
【００４０】
[0055]図１の例では、宛先機器１４は、受信機２６と、モデム２８と、ビデオデコーダ３０と、表示装置３２とを含む。宛先機器１４の受信機２６はチャネル１６を介して情報を受信し、モデム２８はその情報を復調して、ビデオデコーダ３０のための復調されたビットストリームを生成する。チャネル１６を介して通信される情報は、ビデオデータを復号する際にビデオデコーダ３０が使用する、ビデオエンコーダ２０によって生成された様々なシンタックス情報を含み得る。ビデオエンコーダ２０及びビデオデコーダ３０の各々は、ビデオデータを符号化又は復号することが可能であるそれぞれのエンコーダデコーダ（コーデック）の一部を形成し得る。
【００４１】
[0056]表示装置３２は、宛先機器１４と一体化されるか又はその外部にあり得る。幾つかの例では、宛先機器１４は、一体型表示装置を含み、また、外部表示装置とインターフェースするように構成され得る。他の例では、宛先機器１４は表示装置であり得る。概して、表示装置３２は、復号されたビデオデータをユーザに対して表示し、液晶表示器（ＬＣＤ）、プラズマ表示器、有機発光ダイオード（ＯＬＥＤ）表示器、又は別のタイプの表示装置など、様々な表示装置のいずれかを備え得る。
【００４２】
[0057]図１の例では、通信チャネル１６は、無線周波数（ＲＦ）スペクトル又は１つ以上の物理伝送線路など、任意のワイヤレス又はワイヤード通信媒体、若しくはワイヤレス媒体とワイヤード媒体との任意の組合せを備え得る。通信チャネル１６は、ローカルエリアネットワーク、ワイドエリアネットワーク、又はインターネットなどのグローバルネットワークなど、パケットベースネットワークの一部を形成し得る。通信チャネル１６は、概して、ワイヤード媒体又はワイヤレス媒体の任意の好適な組合せを含む、ビデオデータを信号源１２から宛先機器１４に送信するのに好適な任意の通信媒体、又は様々な通信媒体の集合体を表す。通信チャネル１６は、信号源１２から宛先機器１４への通信を可能にするのに有用であり得るルータ、スイッチ、基地局、又は任意の他の機器を含み得る。
【００４３】
[0058]ビデオエンコーダ２０及びビデオデコーダ３０は、現在開発中の高効率ビデオコード化（ＨＥＶＣ）規格などのビデオ圧縮規格に従って動作し得、ＨＥＶＣテストモデル（ＨＭ）に準拠し得る。代替的に、ビデオエンコーダ２０及びビデオデコーダ３０は、代替的にＭＰＥＧ−４、Ｐａｒｔ１０、Ａｄｖａｎｃｅｄ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＡＶＣ）と呼ばれるＩＴＵ−Ｔ  Ｈ．２６４規格、又はそのような規格の拡張など、他のプロプライエタリ又は業界標準に従って動作し得る。但し、本開示の技術は、いかなる特定のコード化規格にも限定されない。他の例には、ＭＰＥＧ−２及びＩＴＵ−Ｔ  Ｈ．２６３がある。
【００４４】
[0059]図１には示されていないが、幾つかの態様では、ビデオエンコーダ２０及びビデオデコーダ３０は、それぞれオーディオエンコーダ及びオーディオデコーダと統合され得、また、共通のデータストリーム又は別個のデータストリーム中のオーディオとビデオの両方の符号化を処理するための適切なＭＵＸ−ＤＥＭＵＸユニット、又は他のハードウェア及びソフトウェアを含み得る。適用可能な場合、幾つかの例では、ＭＵＸ−ＤＥＭＵＸユニットはＩＴＵ  Ｈ．２２３マルチプレクサプロトコル、又はユーザデータグラムプロトコル（ＵＤＰ）などの他のプロトコルに準拠し得る。
【００４５】
[0060]ビデオエンコーダ２０及びビデオデコーダ３０はそれぞれ、１つ以上のマイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアなど、様々な好適なエンコーダ回路のいずれか、又はそれらの任意の組合せとして実施され得る。本技術がソフトウェアで部分的に実施されるとき、機器は、好適な非一時的コンピュータ可読媒体にソフトウェアの命令を記憶し、１つ以上のプロセッサを使用してその命令をハードウェアで実行して、本開示の技術を実行し得る。ビデオエンコーダ２０及びビデオデコーダ３０の各々は１つ以上のエンコーダ又はデコーダ中に含まれ得、そのいずれも、それぞれの機器において複合エンコーダ／デコーダ（コーデック）の一部として統合され得る。
【００４６】
[0061]ビデオエンコーダ２０は、コード化単位の変換単位の符号化を改善するために本開示の技術のいずれか又は全てを実装し得る。同様に、ビデオデコーダ３０は、コード化単位の変換単位の復号を改善するためにこれらの技術のいずれか又は全てを実装し得る。概して、本開示の技術は、走査順序の関数ベース定義を使用して、残差ビデオデータのブロックに関連する変換係数を走査する、ビデオコード化のための機器及び方法に関する。
【００４７】
[0062]本開示で説明するビデオコーダは、ビデオエンコーダ又はビデオデコーダを指し得る。従って、ビデオエンコーダ２０及びビデオデコーダ３０は、それぞれ概括的にビデオコーダと呼ばれることがある。同様に、ビデオコード化はビデオ符号化又はビデオ復号を指し得る。コーダ、エンコーダ及びデコーダという用語は、ビデオデータのコード化（例えば、符号化、復号又は両方）のために構成された特定の機械を指す。概して、走査順序を定義するための関数は、入力として関数に適用される１つ以上のパラメータ値の所与のセットについて特定の走査順序を生成するアルゴリズム、プロセス、等式（equation）、シーケンス、又は公式（formula）であり得る。走査順序は、エンコーダが、変換係数の１次元アレイを生成する（例えば、レベル及び／又は符号など、そのような変換係数に関連する情報をコード化する）ために、変換単位中の変換係数の２次元アレイを走査する順序、又はデコーダが変換係数の１次元アレイを変換係数の２次元アレイに走査する順序を指し得る。変換係数の２次元アレイは変換領域に存在し得る。変換係数の１次元アレイは、変換係数の２次元アレイのシリアル化表現であり得る。各場合において、走査された係数は量子化又は非量子化変換係数であり得る。
【００４８】
[0063]ビデオエンコーダは、走査順序を適用して、２次元アレイから１次元アレイに変換係数を走査し得、ビデオデコーダは、例えば、エンコーダとは逆に走査順序を適用して、１次元アレイから２次元アレイに変換係数を走査し得る。代替的に、ビデオデコーダは、走査順序を適用して、１次元アレイから２次元アレイに変換係数を走査し得、ビデオエンコーダは、例えば、デコーダとは逆に走査順序を適用して、２次元アレイから１次元アレイに変換係数を走査し得る。従って、コーダによる走査は、エンコーダによる２Ｄ−１Ｄ走査又はデコーダによる１Ｄ−２Ｄ走査を指し得る。更に、走査順序に従う走査は、２Ｄ−１Ｄ走査のための走査順序での走査、１Ｄ−２Ｄ走査のための走査順序での走査、１Ｄ−２Ｄ走査のための走査順序の逆での走査、又は２Ｄ−１Ｄ走査のための走査順序の逆での走査を指し得る。従って、走査順序は、エンコーダによる走査又はデコーダによる走査のために確立され得る。
【００４９】
[0064]ＨＥＶＣコード化の例では、ビデオエンコーダ２０は、最大コード化単位（ＬＣＵ）を受信し、そのＬＣＵを、各々がサブＣＵを備える、４つのクワドラント（quadrant）に分割すべきかどうか、又はそのＬＣＵを分割せずに符号化すべきかどうかを決定し得る。ＬＣＵをサブＣＵに分割すると決定した後に、ビデオエンコーダ２０は、各サブＣＵを、各々がサブＣＵを備える、４つのクワドラントに分割すべきかどうかを決定し得る。ビデオエンコーダ２０は、ＣＵを分割すべきかどうかを再帰的に決定し続け得、分割の最大数はＬＣＵ深さによって示される。ビデオエンコーダ２０は、ＬＣＵとそのＬＣＵのサブＣＵとの分割を示す４分木データ構造を与え得る。ＬＣＵは４分木のルートノードに対応し得る。４分木の各ノードはＬＣＵのＣＵに対応し得る。その上、各ノードは、対応するＣＵが分割されるかどうかを示す分割フラグ値を含み得る。
【００５０】
[0065]ＬＣＵが分割される場合、例えば、ビデオエンコーダ２０は、ＬＣＵが分割されることを示すためにルートノードにおいて分割フラグの値を設定し得る。次いで、ビデオエンコーダ２０は、もしあれば、ＬＣＵのサブＣＵのうちのどれが分割されるのかを示すためにルートノードの子ノードの値を設定し得る。分割されないＣＵは４分木データ構造のリーフノードに対応し得、リーフノードは子ノードを有しない。リーフノードに対応する各ＣＵについて、ビデオエンコーダ２０は、ＣＵと同じサイズを有する１つのＰＵを形成すべきか、又はＣＵの部分を表す４つのＰＵを形成すべきかを決定し得る。各ＰＵについて、予測ブロックは、イントラ予測モードに従って、隣接する前にコード化されたＣＵから取り出された予測データを用いて形成され得るか、又はインター予測モードに従って、前にコード化された参照フレーム中の予測ブロックから取り出された予測データを用いて形成され得る。
【００５１】
[0066]各場合において、イントラ予測コード化又はインター予測コード化を行ってＣＵのＰＵの予測値を生成した後、ビデオエンコーダ２０は、残差データを計算して、ＣＵのための１つ以上の変換単位（ＴＵ）を生成し得る。残差データは、コード化されるべきＰＵの画素とＰＵの予測値との間の画素差分に対応し得る。ビデオエンコーダ２０は、ＣＵのための残差データを含む１つ以上のＴＵを形成し得る。ビデオエンコーダ２０は、次いで、例えば、離散コサイン変換（ＤＣＴ）、整数変換、カルーネンレーベ（Ｋ−Ｌ）変換、又は別の変換を使用してＴＵを変換し得る。幾つかの例では、ビデオエンコーダ２０は、例えば、カスケード様式で２つ以上の変換をＴＵに適用するように構成され得る。
【００５２】
[0067]ＴＵのための残差データを変換することによって、ビデオエンコーダ２０は変換係数の２次元アレイを生成する。２次元アレイは、概して、変換への入力ブロック、即ちＴＵと同じサイズを有する。概して、変換プロセスは、データを更に圧縮する量子化のための残差データを準備する。量子化は、概して、係数を表すために使用されるデータの量をできるだけ低減するために変換係数を量子化するプロセスを指す。量子化プロセスは、ＴＵ中の係数の一部又は全部に関連するビット深度を低減し得る。例えば、量子化中にｎビット値がｍビット値に切り捨てられ得、ｎはｍよりも大きい。
【００５３】
[0068]ビデオエンコーダ２０は、量子化変換係数を走査し、それにより、エントロピー符号化のための変換係数のシリアル化ベクトルを生成するために、定義済走査順序を適用するか又は特定の走査順序を生成し得る。幾つかの例では、ビデオエンコーダ２０は、特定のブロックのために１つ以上の基準に基づいて異なる走査順序を選択し得る。例えば、ビデオエンコーダ２０は、特定のブロックのために異なるコード化モード、例えば、全般的にＩ、Ｐ、又はＢモード、若しくはＩ、Ｐ又はＢの特定のモードに基づいて、若しくは異なるタイプの変換、異なるＴＵサイズ、又は他の基準に基づいて異なる走査順序を選択し得る。追加又は代替として、走査順序は、例えば、より高いエネルギーの係数、即ち、非０係数が変換係数のシリアル化ベクトルの前のほうへ圧縮されるように、ベクトル中の変換係数の配置を最適化するために、走査の経験的テストに基づいて定義され得る。
【００５４】
[0069]幾つかの例では、ビデオエンコーダ２０は、異なる走査を経験的にテストし、様々な関数ベース走査順序を評価し、変換係数の所望の配置を生成する走査順序を選択し得る。例えば、ビデオエンコーダ２０は、異なる走査順序を生成するために、関数の１つ以上のパラメータ値を調整し、例えば、１Ｄベクトルの前のほうへの非０変換係数の効率的な圧縮に関して走査順序の結果を評価し得る。ビデオエンコーダ２０は、様々な所定のテスト方式のいずれかに従ってパラメータ値の範囲をテストし得る。関数が複数のパラメータ値を有する場合、テストは、パラメータの１次元変更（例えば、他のパラメータの値を固定したまま１つのパラメータの値を変更すること）又はパラメータの多次元変更（例えば、複数のパラメータの値を一括して変更すること）を評価し得る。
【００５５】
[0070]走査順序を定義するための関数は、入力としての単一のパラメータ値又は複数のパラメータ値に応答するように構成され得る。幾つかの例では、関数は、異なるブロックサイズ（例えば、ＴＵサイズ）、走査方向及び／又は走査方向強度に基づいて異なる走査順序を定義するように構成され得る。走査方向は、ＴＵ中の変換係数のブロックの行又は列にわたる走査に関して、走査が主に水平方向に方向されるのか、垂直方向に方向されるのか、又は別の方向に方向されるのかを指定し得る。走査方向強度は、例えば、走査順序が走査方向のほうへバイアスされる程度として、走査順序の方向の強度を示し得る。
【００５６】
[0071]例えば、極めて強い水平方向をもつ走査順序は、次の行中の係数の走査に進む前に、ある行中の全ての係数を走査し得る。より弱い水平方向をもつ走査順序は、第１の行中の係数のサブセットを走査し、次いで、１つ以上の他の行中の係数のサブセットを引き続き走査してから、第１の行中の残りの係数を走査するために戻り得る。場合によっては、走査順序は、他の行中の係数のサブセットと交互に残りの係数の幾つかのサブセットを走査するために、第１の行に複数回戻ることができる。
【００５７】
[0072]本開示の例によれば、ビデオエンコーダ２０及びビデオデコーダ３０は、関数に基づいて、変換係数のブロック中の変換係数を走査するための走査順序を効率的に定義し得る。同じく、ビデオエンコーダ２０及びビデオデコーダ３０は、単一の関数を利用して、異なる関数パラメータ値を用いて異なる走査順序を生成し得る。代替又は追加として、ビデオエンコーダ２０及びビデオデコーダ３０は、複数の関数を使用して、例えば、同じパラメータ値又は異なるパラメータ値を用いて異なる走査順序を生成し得る。従って、これらの例では、異なるパラメータ値、異なる関数、又は両方の組合せを選択することによって異なる走査順序が生成され得る。
【００５８】
[0073]幾つかの例では、ビデオエンコーダ２０は、関数に従って走査順序を定義するために、所与の関数の１つ以上の関数パラメータの値を指定し、次いで、１つ以上のパラメータ値のうちの少なくとも幾つかをビデオデコーダ３０に信号伝達し得る。上述のように、ビデオデコーダ３０に信号伝達されるパラメータの値は、パラメータの異なるセットの評価と、シリアル化ベクトルの開始点の近くの非０係数の効率的な圧縮に関して最良の又は少なくとも満足な結果を生じるパラメータの選択とに基づいて、ビデオエンコーダ２０によって選択され得る。
【００５９】
[0074]本開示で説明する信号伝達は、必ずしも、ビデオエンコーダ２０を組み込んだ機器とビデオデコーダ３０を組み込んだ機器との間の対話型リアルタイム通信を指すとは限らないことに留意されたい。そうではなく、信号伝達は符号化ビデオビットストリーム中で提示され得る。符号化ビデオビットストリームは、ビデオエンコーダ２０を組み込んだ信号源からビデオデコーダ３０を組み込んだ宛先機器に送信され得る。多くの場合、代替的に、符号化ビデオビットストリームは、例えば、ディスク又はサーバ上のデータ記憶アーカイブに単に記録され、データ記憶アーカイブ上のデータにアクセスするか又はデータ記憶アーカイブにデータを要求する機器によって取り出され得る。例えば、符号化ビデオは、例えば、コンピュータ、メディアプレーヤ、スマートフォンなどの中のビデオデコーダ３０に送信されるか、又はビデオデコーダ３０によってアクセスされるローカル記憶装置に記憶され得る。
【００６０】
[0075]関数は、ビデオエンコーダ２０とビデオデコーダ３０の両方において記憶された命令によって定義される単一の関数であり得る。この場合、ビデオエンコーダ２０は、１つ以上のパラメータ値のうちの少なくとも幾つかをビデオデコーダ３０に信号伝達し得る。代替的に、関数は、ビデオエンコーダ２０とビデオデコーダ３０とにおいて記憶された命令によって定義される複数の関数のうちの１つであり得る。この場合、ビデオエンコーダ２０は、ビデオデコーダ３０によって受信又はアクセスされる符号化ビデオ中で、選択された関数の識別情報とその関数の１つ以上のパラメータ値のうちの少なくとも幾つかとを信号伝達し得る。この信号伝達は、個々のＴＵのために又はＣＵ内の複数のＴＵのために異なる走査順序が指定され得るように、例えば、個々のＴＵ、ＰＵ又はＣＵのためのビットストリーム中で送信され得る。しかしながら、幾つかの適用例では、個々のＴＵのために特定の走査順序を指定する能力が望ましいことがある。
【００６１】
[0076]ビデオエンコーダ２０は、適用可能なとき、明示的に又は関数若しくはパラメータ値を識別するインデックス値を参照して関数及び／又はパラメータ値を信号伝達し得る。ビデオエンコーダ２０は、例えば、個々に又はパラメータ値のセットについて、ビデオデコーダ３０によって記憶されたパラメータ値の１つ以上のインデックス、及び／又はビデオデコーダによって記憶された命令又はデータによって定義される特定の関数を信号伝達し得る。幾つかの例では、ビデオエンコーダ２０は、パラメータ値とともに、例えば、関数を定義するための値のテーブルを使用して関数の特定の特性をも信号伝達し得る。
【００６２】
[0077]場合によっては、ビデオデコーダ３０は、関数の１つ以上のパラメータを推論するように構成され得る。一例として、ビデオデコーダ３０は、ビデオエンコーダ２０によって送信されたシンタックス要素からＴＵサイズを決定し、そのＴＵサイズに基づいて、関数又はその関数の１つ以上のパラメータ値を選択し得る。幾つかの例では、幾つかのパラメータ値は推測され得、幾つかのパラメータ値は、符号化ビットストリーム中のシンタックス要素によって信号伝達され得る。他の例では、走査順序関数の全てのパラメータ値がビデオエンコーダ２０によって信号伝達され得る。関数及び／又はパラメータ値は、例えば、シーケンスレベル、ピクチャレベル、スライスレベル、コード化単位レベル（ＬＣＵレベルとＣＵレベルの両方を含む）、ＴＵレベル又は他のコード化レベルなど、ビデオデータの様々なレベルにおいてシンタックス要素として信号伝達され得る。異なるＴＵのための異なる走査順序の定義を可能にするために、ＴＵレベルにおいて、例えば、ＴＵ４分木ヘッダ中でそのようなシンタックス要素を信号伝達することが望ましいことがある。
【００６３】
[0078]ビデオエンコーダ２０は、符号化ビデオビットストリーム中でパラメータ値を信号伝達し得る。ビデオデコーダ２０は、符号化ビデオビットストリームを受信するか又は場合によってはそれにアクセスすると、信号伝達されたパラメータ値を既知の関数に適用して、その関数に従って走査順序を構築し得る。関数は、ビデオデコーダ２０に関連するメモリに記憶された命令又はデータによって定義され得る。他の例では、関数又は関数のセットは、ビデオエンコーダ２０及びビデオデコーダ３０の両方に知られていることがあり、パラメータ値は、例えば、ブロックサイズなど、変換単位の特性に基づいて、エンコーダ側とデコーダ側の両方において推測され得る。この場合、ビデオエンコーダ２０及びビデオデコーダ３０は、両方とも、走査順序の関数ベース定義において使用するパラメータ値及び／又は関数を記憶し得る。従って、幾つかの例では、ビデオエンコーダ２０は、パラメータ値又は関数を信号伝達する必要がないことがある。
【００６４】
[0079]上記の例の各々において、関数を使用してビデオエンコーダ２０及び／又はビデオデコーダ３０において走査順序を構成することは、さもなければ大量のデータ記憶を必要とするであろう、エンコーダ及びデコーダにおいて位置ごとの厳密な走査順序を保存する必要なしに、高性能でフレキシブルな走査順序を生成する能力を与え得る。メモリから広範な走査順序定義を取り出す代わりに、例えば、ビデオデコーダ３０は、ビデオエンコーダ２０によって信号伝達されたか又はデコーダによって推測された関数とパラメータ値とを使用して走査順序を構築することができる。１つ以上のパラメータ値に基づいて走査順序を定義するために使用される関数のための命令又はデータを記憶することは、複数の実際の走査順序を記憶することよりも、ビデオデコーダ３０において著しく少ないメモリを消費し得る。
【００６５】
[0080]変換係数走査順序を生成するために１つ以上の特定のパラメータをもつ関数が使用され得る。一例では、上述のように、関数パラメータは、変換単位サイズと走査方向と走査方向強度とのうちの１つ以上を含み得る。これらのパラメータは、ビデオエンコーダ２０とビデオデコーダ３０とによって使用される走査順序を定義するために、個々に又は組合せで使用され得る。これらのパラメータの値が与えられれば、関数を使用してビデオエンコーダ２０及びビデオデコーダ３０によって走査が生成され得る。あるサイズの変換ブロックについて、例えば、異なる走査方向と方向強度とを与えることによって、異なるパラメータ値をもつ関数を使用してビデオエンコーダ２０において複数の走査順序が生成され得る。ビデオエンコーダ２０は、所望の結果を与える走査順序のうちの１つを選択し、次いで、その走査順序を生成するために使用される関連するパラメータ値をビデオデコーダ３０に信号伝達し得る。
【００６６】
[0081]上述のように、幾つかの例では、エンコーダとデコーダの両方にとって同じ関数が利用可能であり得る。従って、ビデオエンコーダとビデオデコーダの両方に同じ関数パラメータ値が知られている限り、エンコーダ側とデコーダ側の両方において同じ走査順序が生成され得る。
【００６７】
[0082]選択された走査順序を適用して、変換単位の変換係数の２次元行列を１次元ベクトルに走査した後、ビデオエンコーダ２０は、例えば、コンテンツ適応型可変長コード化（ＣＡＶＬＣ）、コンテキスト適応型バイナリ算術コード化（ＣＡＢＡＣ）、シンタックスベースコンテキスト適応型バイナリ算術コード化（ＳＢＡＣ：syntax-based context-adaptive binary arithmetic coding）、又は他のエントロピー符号化プロセスを使用して１次元ベクトルをエントロピー符号化し得る。ベクトルの開始点のほうへ非０係数を配置する際に有効である走査順序の選択は、特定のエントロピーエンコーダの設計を仮定すれば、符号化効率の改善を助けることができる。
【００６８】
[0083]ＣＡＶＬＣを実行するために、一例として、ビデオエンコーダ２０は、送信されるべきシンボルのための可変長コードを選択し得る。ＶＬＣのコードワードは、相対的により短いコードがより可能性が高いシンボルに対応し、より長いコードがより可能性が低いシンボルに対応するように構築され得る。このようにして、ＶＬＣの使用は、例えば、送信されるべき各シンボルのために等長コードワードを使用するよりも、ビット節約を達成し得る。
【００６９】
[0084]別の例として、ＣＡＢＡＣを実行するために、ビデオエンコーダ２０は、送信されるべきシンボルを符号化するために、あるコンテキストに適用すべきコンテキストモデルを選択し得る。コンテキストは、例えば、隣接値が非０か否かに関係し得る。ビデオエンコーダ２０はまた、適応走査を実行するときに生成される有効係数フラグ及び最後係数フラグなど、シンタックス要素をエントロピー符号化し得る。
【００７０】
[0085]ビデオデコーダ３０は、ビデオエンコーダ２０の動作と本質的に対称的な形で動作し得る。例えば、ビデオデコーダ３０は、符号化されたＰＵデータとＴＵデータとを含む符号化されたＣＵを表す、エントロピー符号化されたデータを受信し得る。ビデオデコーダ３０は、その受信データをエントロピー復号して、復号された量子化係数を形成し得る。ビデオエンコーダ２０が、例えば、可変長コードアルゴリズムを使用してデータをエントロピー符号化したとき、ビデオデコーダ３０は、受信コードワードに対応するシンボルを決定するために１つ以上のＶＬＣテーブルを使用し得る。ビデオエンコーダ２０が算術コード化アルゴリズムを使用してデータをエントロピー符号化したとき、ビデオデコーダ３０は、データを符号化するためにビデオエンコーダ２０によって使用されたのと同じコンテキストモデルに対応し得るデータを復号するために、コンテキストモデルを使用し得る。
【００７１】
[0086]ビデオデコーダ３０は、次いで、ビデオエンコーダ２０によって使用された走査をミラーリングする逆走査を使用して、復号された係数を逆走査し得る。係数を逆走査するために、ビデオデコーダ３０は、デコーダにおいて記憶されたか又はエンコーダによって信号伝達された命令又はデータによって定義され得る、ビデオエンコーダ２０によって使用された関数に従って、また、関数の指定された１つ以上のパラメータ値に従って走査順序を生成し得る。詳細には、ビデオデコーダ３０は、関数とともに使用する、ビデオエンコーダ２０からの１つ以上のパラメータ値の信号伝達を受信し、及び／又は１つ以上のパラメータ値を推論し、パラメータ値に基づいて走査順序を生成し得る。この走査順序を使用して、ビデオデコーダ３０は、それによって、エントロピー復号プロセスから得られた量子化変換係数の１次元ベクトルから２次元行列を形成する。
【００７２】
[0087]次に、ビデオデコーダ３０は、関数ベース走査順序に従って実行される逆走査によって生成された２次元行列中の係数を逆量子化し得る。ビデオデコーダ３０は、次いで、２次元行列に１つ以上の逆変換を適用し得る。逆変換は、ビデオエンコーダ２０によって適用された変換に対応し得る。ビデオデコーダ３０は、例えば、現在復号されているＣＵに対応する４分木のルートにおいて信号伝達された情報に基づいて、又は適切な逆変換を示す他の情報を参照して、適用すべき逆変換を決定し得る。（１つ以上の）逆変換の適用時に、ビデオデコーダ３０は、画素領域において残差ビデオデータを復元し、適用可能なとき、イントラ予測復号又はインター予測復号を適用して元のビデオデータを再構成する。
【００７３】
[0088]図２は、本開示で説明するように、変換係数の走査順序の関数ベース定義のための技術を使用し得るビデオエンコーダ２０の一例を示すブロック図である。ビデオエンコーダ２０について、例示のためにＨＥＶＣコード化のコンテキストにおいて説明するが、変換係数の走査を必要とし得る他のコード化規格又は方法に関して本開示を限定するものではない。ビデオエンコーダ２０は、ビデオフレーム内のＣＵのイントラコード化及びインターコード化を実行し得る。イントラコード化は、所与のビデオフレーム内のビデオの空間的冗長性を低減又は除去するために空間的予測に依拠する。インターコード化は、ビデオシーケンスの現在のフレームと前にコード化されたフレームとの間の時間的冗長性を低減又は除去するために時間的予測に依拠する。イントラモード（Ｉモード）は、幾つかの空間ベースのビデオ圧縮モードのいずれかを指し得る。単方向予測（Ｐモード）又は双方向予測（Ｂモード）などのインターモードは、幾つかの時間ベースのビデオ圧縮モードのいずれかを指し得る。
【００７４】
[0089]図２に示すように、ビデオエンコーダ２０は、符号化されるべきビデオフレーム内の現在のビデオブロックを受信する。図２の例では、ビデオエンコーダ２０は、動き補償ユニット４４と、動き推定ユニット４２と、イントラ予測ユニット４６と、参照フレームバッファ６４と、加算器５０と、変換ユニット５２と、量子化ユニット５４と、エントロピー符号化ユニット５６とを含む。エントロピー符号化ユニット５６は、エントロピー符号化を適用するビデオエンコーダ２０の部分を指し、ＣＵと混同されるべきでない。同様に、図２に示す変換ユニット５２は、残差データのブロックに実際の変換を適用するユニットであり、ＣＵの変換ユニット（変換単位）（ＴＵ）と呼ばれることもある変換係数のブロックと混同されるべきでない。ビデオブロック再構成のために、ビデオエンコーダ２０はまた、逆量子化ユニット５８と、逆変換ユニット６０と、加算器６２とを含む。再構成されたビデオからブロッキネスアーティファクトを除去するためにブロック境界をフィルタ処理するデブロッキングフィルタ（図２に図示せず）も含まれ得る。所望される場合、デブロッキングフィルタは、一般に、加算器６２の出力をフィルタ処理することになる。
【００７５】
[0090]符号化プロセス中に、ビデオエンコーダ２０は、コード化されるべきビデオフレーム又はスライスを受信する。フレーム又はスライスは、複数のビデオブロック、例えば、最大コード化単位（ＬＣＵ）に分割され得る。動き推定ユニット４２及び動き補償ユニット４４は、時間圧縮を行うために、１つ以上の参照フレーム中の１つ以上のブロックに対する受信したビデオブロックのインター予測コード化を実行する。イントラ予測ユニット４６は、空間圧縮を行うために、コード化されるべきブロックと同じフレーム又はスライス中の１つ以上の隣接ブロックに対する受信したビデオブロックのイントラ予測コード化を実行し得る。
【００７６】
[0091]モード選択ユニット４０は、例えば、各モードについての誤差（即ち、ひずみ）結果に基づいて、コード化モードのうちの１つ、即ち、イントラ又はインターを選択し得、残差ブロックデータを生成するために、得られたイントラ又はインターコード化ブロックを加算器５０に与え、参照フレーム中で使用する符号化ブロックを再構成するために、得られたイントラ又はインターコード化ブロックを加算器６２に与える。幾つかのビデオフレームはＩフレームに指定され得、Ｉフレーム中の全てのブロックはイントラ予測モードで符号化される。場合によっては、例えば、動き推定ユニット４２によって実行された動き探索によって得られたブロックの予測が十分に良好でなかったとき、イントラ予測ユニット４６は、Ｐフレーム又はＢフレーム中のブロックのイントラ予測符号化を実行し得る。
【００７７】
[0092]動き推定ユニット４２と動き補償ユニット４４とは、高度に統合され得るが、概念的な目的のために別々に示してある。動き推定は、ビデオブロックの動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、例えば、参照フレームの参照サンプルに対する、現在のフレーム中の予測単位の変位を示し得る。参照サンプルは、絶対値差分和（ＳＡＤ：sum of absolute difference）、２乗差分和（ＳＳＤ：sum of square difference）、又は他の差分メトリックによって決定され得る画素差分に関して、コード化されているＰＵを含むＣＵの部分にぴったり一致することがわかるブロックであり得る。動き補償ユニット４４によって実行される動き補償は、動き推定によって決定された動きベクトルに基づいて予測単位の値をフェッチ又は生成することを伴い得る。この場合も、幾つかの例では、動き推定ユニット４２と動き補償ユニット４４とは機能的に統合され得る。
【００７８】
[0093]動き推定ユニット４２は、予測単位を参照フレームバッファ６４に記憶された参照フレームの参照サンプルと比較することによってインターコード化フレームの予測単位の動きベクトルを計算する。幾つかの例では、ビデオエンコーダ２０は、参照フレームバッファ６４に記憶された参照フレームのサブ整数画素位置の値を計算し得る。例えば、ビデオエンコーダ２０は、参照フレームの１／４画素位置、１／８画素位置、又は他の分数画素位置の値を計算し得る。従って、動き推定ユニット４２は、フル画素位置と分数画素位置とに対する動き探索を実行し、分数画素精度で動きベクトルを出力し得る。動き推定ユニット４２は、計算された動きベクトルをエントロピー符号化ユニット５６と動き補償ユニット４４とに送る。動きベクトルによって識別される参照フレームの部分は画素データの参照ブロックと呼ばれることがある。動き補償ユニット４４は、例えば、ＰＵの動きベクトルによって識別される参照ブロックを取り出すことによって、現在のＣＵの予測単位についての予測ブロックを計算し得る。
【００７９】
[0094]イントラ予測ユニット４６は、動き推定ユニット４２と動き補償ユニット４４とによって実行されるインター予測の代替として、受信ブロックをイントラ予測符号化し得る。イントラ予測ユニット４６は、隣接する前にコード化されたブロック、例えば、ブロックについての左から右へ、上から下への符号化順序を仮定すると、現在のブロックの上、右上、左上、又は左のブロックに対して受信ブロックを符号化し得る。イントラ予測ユニット４６は多種多様なイントラ予測モードで構成され得る。例えば、イントラ予測ユニット４６は、符号化されているＣＵのサイズに基づいて、一定数の方向性予測モード、例えば、３３個の方向性予測モードで構成され得る。
【００８０】
[0095]イントラ予測ユニット４６は、例えば、様々なイントラ予測モードの誤差値を計算し、最も低い誤差値を生じるモードを選択することによって、イントラ予測モードを選択し得る。方向性予測モードは、空間的に隣接する画素の値を合成し、その合成された値をＰＵ中の１つ以上の画素位置に適用するための機能を含み得る。ＰＵ中の全ての画素位置の値が計算されると、イントラ予測ユニット４６は、ＰＵと符号化されるべき受信ブロックとの間の画素差分に基づいて予測モードの誤差値を計算し得る。イントラ予測ユニット４６は、許容できる又は最小の誤差値を生じるイントラ予測モードが発見されるまでイントラ予測モードをテストし続け得る。イントラ予測ユニット４６は、次いで、ＰＵの予測ブロックを加算器５０に送り得る。
【００８１】
[0096]ビデオエンコーダ２０は、コード化されている元のビデオブロックから、動き補償ユニット４４又はイントラ予測ユニット４６によって計算された予測データを減算することによって残差ブロックを形成する。加算器５０は、この減算演算を実行する１つ以上の構成要素を表す。残差ブロックは画素差分値の２次元行列に対応し得、残差ブロック中の値の数は、残差ブロックに対応するＰＵ中の画素の数と同じである。残差ブロック中の値は、ＰＵの予測ブロック中のコロケート画素(co-located pixels)の値と、コード化されるべき元のブロック中のコロケート画素の値との間の差分、即ち、誤差に対応し得る。差分は、コード化されるブロックのタイプに応じてクロマ差分又はルーマ差分になり得る。
【００８２】
[0097]変換ユニット５２は、残差ブロックから１つ以上の変換単位（ＴＵ）を形成し得る。変換ユニット５２は、離散コサイン変換（ＤＣＴ）、方向性変換、又は概念的に同様の変換などの変換をＴＵに適用して、変換係数を備えるビデオブロックを生成する。変換ユニット５２は、得られた変換係数を量子化ユニット５４に送り得る。量子化ユニット５４は、次いで、その変換係数を量子化し得る。次いで、エントロピー符号化ユニット５６が、指定された走査順序に従って、行列中の量子化された変換係数の走査を実行し得る。本開示では、エントロピー符号化ユニット５６が走査を実行するものとして説明する。但し、他の例では、量子化ユニット５４などの他の処理ユニットが走査を実行することができることを理解されたい。
【００８３】
[0098]ビデオエンコーダ２０は、エントロピー符号化ユニット５６又は量子化ユニット５４などの別の機能ユニットを介して、走査順序を定義する所与の関数にパラメータの異なるセットを適用することによって、及び／又は異なる関数にパラメータの異なるセットを適用することによって、複数の異なる走査順序を生成し得る。例えば、ビデオエンコーダ２０は、異なる走査順序を生成するために単一の関数又は関数のセットを利用し得る。異なる関数は、関数の構成に応じて、同じパラメータ又は異なるパラメータを受信し得る。ビデオエンコーダ２０は、異なる関数又は異なるパラメータ値を適用して異なる走査順序を生成し、次いで、例えば、走査から生じる１Ｄアレイの前のほうへより高いエネルギーの係数を圧縮することに関して、走査順序の結果を評価し得る。
【００８４】
[0099]ビデオエンコーダ２０は、次いで、例えば、エントロピー符号化ユニット５６を介して、最良の結果を生成するか、又は幾つかの基準に対して少なくとも満足な結果を生成する走査順序のうちの１つを選択し、エントロピー符号化のために、走査順序を適用して１Ｄアレイを生成し得る。エントロピー符号化ユニット５６は、次いで、変換係数の１Ｄアレイをエントロピー符号化してエントロピーコード化ビットストリームを生成する。ビデオエンコーダ２０は、走査順序関数のために使用されるパラメータ値と、場合によっては、複数の関数が可能である場合、関数の識別情報とを信号伝達するために、ビットストリーム中で１つ以上のシンタックス要素を送信し得る。このようにして、ビデオエンコーダ２０から信号伝達を受信することによって、ビデオデコーダ３０は、ビデオエンコーダによって使用されたパラメータ値及び／又は関数を決定し、それによって走査順序を再生することができる。後述するように、ビデオデコーダ３０は、次いで、変換係数の１Ｄアレイを変換係数の２Ｄアレイに変換するために走査順序を逆に適用し得る。この場合も、係数は、量子化ユニット５４によって量子化されるか、又は代替例では量子化されないことがある。
【００８５】
[0100]幾つかの例では、エントロピー符号化ユニット５６は、前に符号化されたＴＵの統計値に基づいて走査順序関数の１つ以上のパラメータの値を選択するように構成され得る。例えば、統計値は、特定の位置における変換係数が非０になる確率を示し得る。幾つかの例では、統計値は、ＴＵサイズ又は形状、（例えば、同じサイズ及び形状の）他のＴＵ中の有効係数の数又は構成、（例えば、同じサイズ及び形状の）他のＴＵ中の係数のレベル又は有効係数の数、若しくは他の情報に基づき得る。そのような確率を使用して、エントロピー符号化ユニット５６は、走査順序関数の１つ以上のパラメータを、例えば、開始点として選択し、次いで、例えば、走査の前のほうへ非０係数を配置することに関して、望ましい結果を生成する走査順序を識別するために、他のパラメータ値をテストし得る。エントロピー符号化ユニット５６は、様々な統計値及び計算を使用して経時的に確率を決定し得る。その上、エントロピー符号化ユニット５６は、異なる予測モード及び／又は変換のための別々の統計値を追跡し得る。
【００８６】
[0101]変換係数が走査されると、エントロピー符号化ユニット５６は、それらの係数にＣＡＶＬＣ又はＣＡＢＡＣなどのエントロピーコード化を適用し得る。更に、エントロピー符号化ユニット５６は、動きベクトル（ＭＶ）情報と、ビデオデコーダ３０においてビデオデータを復号する際に有用な様々なシンタックス要素のいずれかとを符号化し得る。幾つかの例では、シンタックス要素は、特定の係数が有効（例えば、非０）であるかどうかを示す有効係数フラグをもつ有効性マップ、特定の係数が最後有効係数であるかどうかを示す最後有効係数フラグ、及び／又は他の情報を含み得る。他の例では、シンタックス要素は、ゼロランレングス情報、係数レベル情報、最後有効係数位置、及び／又は他の情報を含み得る。ビデオデコーダ３０は、これらのシンタックス要素を使用してコード化ビデオデータを再構成し得る。エントロピー符号化ユニット５６によるエントロピーコード化の後に、得られた符号化ビデオは、ビデオデコーダ３０などの別の機器に送信されるか、又は後で送信するか又は取り出すためにアーカイブされ得る。
【００８７】
[0102]シンタックス要素をエントロピー符号化するために、エントロピー符号化ユニット５６は、ＣＡＢＡＣを実行し、例えば、前に走査されたＮ個の係数の中の有効係数の数に基づいてコンテキストモデルを選択し得、但し、Ｎは、走査されているブロックのサイズに関係し得る整数値である。エントロピー符号化ユニット５６はまた、変換係数のブロックに変換された残差データを計算するために使用される予測モードと、その残差データを変換係数のブロックに変換するために使用される変換のタイプとに基づいてコンテキストモデルを選択し得る。対応する予測単位（ＰＵ）がイントラ予測モードを使用して予測されたとき、エントロピー符号化ユニット５６は更に、イントラ予測モードの方向に基づいてコンテキストモデルの選択を行い得る。
【００８８】
[0103]幾つかの例では、変換ユニット５２は、幾つかの変換係数（即ち、幾つかのロケーションにおける変換係数）をゼロアウトするように構成され得る。例えば、変換ユニット５２は、変換後のＴＵの左上クワドラントの外部にある全ての変換係数をゼロアウトするように構成され得る。別の例として、エントロピー符号化ユニット５６は、アレイ内のある位置の後に来るアレイ内の変換係数をゼロアウトするように構成され得る。いずれの場合も、ビデオエンコーダ２０は、例えば、走査の前又は後に、変換係数のある部分をゼロアウトするように構成され得る。「ゼロアウトする」という句は、係数の値を０に等しく設定することを意味するために使用されるが、必ずしも係数をスキップ又は廃棄することを意味するとは限らない。幾つかの例では、０への係数のこの設定は、量子化から生じ得るゼロアウトに加えて行われ得る。
【００８９】
[0104]場合によっては、エントロピー符号化ユニット５６又はビデオエンコーダ２０の別のユニットは、エントロピーコード化に加えて他のコード化機能を実行するように構成され得る。例えば、エントロピー符号化ユニット５６はＣＵ及びＰＵのコード化ブロックパターン（ＣＢＰ）値を決定するように構成され得る。また、場合によっては、エントロピー符号化ユニット５６は係数のランレングスコード化を実行し得る。
【００９０】
[0105]逆量子化ユニット５８及び逆変換ユニット６０は、それぞれ逆量子化及び逆変換を適用して、例えば参照ブロックとして後で使用するために、画素領域において残差ブロックを再構成する。動き補償ユニット４４は、残差ブロックを参照フレームバッファ６４のフレームのうちの１つの予測ブロックに加算することによって参照ブロックを計算し得る。動き補償ユニット４４はまた、再構成された残差ブロックに１つ以上の補間フィルタを適用して、動き推定において使用するサブ整数画素値を計算し得る。加算器６２は、再構成された残差ブロックを、動き補償ユニット４４によって生成された動き補償予測ブロックに加算して、参照フレームバッファ６４に記憶するための再構成されたビデオブロックを生成する。再構成されたビデオブロックは、後続のビデオフレーム中のブロックをインターコード化するために動き推定ユニット４２及び動き補償ユニット４４によって参照ブロックとして使用され得る。
【００９１】
[0106]図３は、符号化ビデオシーケンスを復号するビデオデコーダ３０の一例を示すブロック図である。図３の例では、ビデオデコーダ３０は、エントロピー復号ユニット７０と、動き補償ユニット７２と、イントラ予測ユニット７４と、逆量子化ユニット７６と、逆変換ユニット７８と、参照フレームバッファ８２と、加算器８０とを含む。ビデオデコーダ３０は、幾つかの例では、ビデオエンコーダ２０（図２）に関して説明した符号化パスとは概して逆の復号パスを実行し得る。動き補償ユニット７２は、エントロピー復号ユニット７０から受信された動きベクトルに基づいて予測データを生成し得る。イントラ予測ユニット７４は、信号伝達されたイントラ予測モードと、現在のフレームの前に復号されたブロックからのデータとに基づいて現在のフレームの現在のブロックについての予測データを生成し得る。
【００９２】
[0107]幾つかの例では、エントロピー復号ユニット７０（又は逆量子化ユニット７６）は、ビデオエンコーダ２０のエントロピー符号化ユニット５６（又は量子化ユニット５４）によって使用された走査順序を反映する(mirroring)走査を使用して受信値を走査し得る。係数の走査は逆量子化ユニット７６において実行され得るが、走査については、例示のために、エントロピー復号ユニット７０によって実行されるものとして説明する。更に、説明しやすいように別個の機能ユニットとして示されているが、ビデオデコーダ３０のエントロピー復号ユニット７０、逆量子化ユニット７６、及び他のユニットの構造及び機能は互いに高度に統合され得る。図３の例では、ビデオデコーダ３０は、関数とその関数の１つ以上のパラメータ値とに基づいて走査順序を定義し得る。同じく、関数は、ビデオデコーダ３０によって記憶された命令又はデータによって定義される単一の関数であるか、又は複数の関数のうちの１つであり得る。
【００９３】
[0108]ビデオデコーダ３０は、関数の１つ以上のパラメータ値を識別し、複数の関数の場合、使用されるべき関数のうちの１つを識別する信号伝達をビデオエンコーダ２０から受信し得る。追加又は代替として、関数の選択又は１つ以上のパラメータ値の選択は、ＴＵサイズ、インター又はイントラコード化モード、若しくは他の特性など、コード化ビデオの特性に基づいてビデオデコーダ３０によって推測され得る。例示のために、ビデオエンコーダ２０及びビデオデコーダ３０が単一の関数を使用し、ビデオエンコーダ３０が関数の１つ以上のパラメータ値を信号伝達する例について説明する。
【００９４】
[0109]エントロピー復号ユニット７０は、関数と１つ以上の関連するパラメータ値とに基づいて走査順序を生成することと、次いで、走査順序を適用して、変換係数の１Ｄベクトルを変換係数の２Ｄアレイに変換することとを行うように構成され得る。例えば、関数を使用して、エントロピー復号ユニット７０は、特定の変換ブロックのためにビデオエンコーダ２０によって使用された走査順序を決定するか、又はビデオエンコーダによって使用された走査順序の逆である走査順序を決定し得る。いずれの場合も、エントロピー復号ユニット７０は、走査順序の逆を使用して１Ｄベクトルを２Ｄアレイに走査する。エントロピー復号ユニット７０によって生成された変換係数の２Ｄアレイは、量子化され得、変換係数の１Ｄベクトルを生成するためにビデオエンコーダ２０のエントロピー符号化ユニット５６によって走査された変換係数の２Ｄアレイに概して一致し得る。
【００９５】
[0110]逆量子化ユニット７６は、ビットストリーム中で与えられ、エントロピー復号ユニット７０によって復号された量子化変換係数を逆量子化（inverse quantize）、即ち、逆量子化（de-quantize）する。逆量子化プロセスは、例えば、ＨＥＶＣのために提案されたプロセス又はＨ．２６４復号規格によって定義されたプロセスと同様の、従来のプロセスを含み得る。逆量子化プロセスは、量子化の程度を決定し、同様に、適用されるべき逆量子化の程度を決定するための、ＣＵについてビデオエンコーダ２０によって計算される量子化パラメータＱＰYの使用を含み得る。逆量子化ユニット７６は、係数が１Ｄベクトルから２Ｄアレイに変換される前又は変換された後に変換係数を逆量子化し得る。
【００９６】
[0111]逆変換ユニット５８は、逆変換、例えば、逆ＤＣＴ、逆整数変換、逆ＫＬＴ、逆回転変換、逆方向性変換、又は別の逆変換を適用する。幾つかの例では、逆変換ユニット７８は、ビデオエンコーダ２０からの信号伝達に基づいて、又はブロックサイズ、コード化モードなどの１つ以上のコード化特性から変換を推論することによって、逆変換を決定し得る。幾つかの例では、逆変換ユニット７８は、現在のブロックを含むＣＵのための４分木のルートノードにおける信号伝達された変換に基づいて、現在のブロックに適用すべき変換を決定し得る。幾つかの例では、逆変換ユニット７８はカスケード逆変換を適用し得る。
【００９７】
[0112]動き補償ユニット７２は動き補償ブロックを生成し、場合によっては、補間フィルタに基づいて補間を実行する。サブ画素精度をもつ動き推定に使用されるべき補間フィルタの識別子は、シンタックス要素中に含まれ得る。動き補償ユニット７２は、ビデオブロックの符号化中にビデオエンコーダ２０によって使用される補間フィルタを使用して、参照ブロックのサブ整数画素の補間値を計算し得る。動き補償ユニット７２は、受信されたシンタックス情報に従って、ビデオエンコーダ２０によって使用された補間フィルタを決定し、その補間フィルタを使用して予測ブロックを生成し得る。
【００９８】
[0113]動き補償ユニット７２及びイントラ予測ユニット７４は、ＨＥＶＣの例では、（例えば、４分木によって与えられる）シンタックス情報の一部を使用して、符号化ビデオシーケンスの（１つ又は複数の）フレームを符号化するために使用されるＬＣＵのサイズと、符号化ビデオシーケンスのフレームの各ＣＵがどのように分割されるか（及び、同様に、サブＣＵがどのように分割されるか）を記述する分割情報と、各分割がどのように符号化されるかを示すモード（例えば、イントラ予測又はインター予測、及びイントラ予測の場合はイントラ予測符号化モード）と、各インター符号化ＰＵについての１つ以上の参照フレーム（及び／又はそれらの参照フレームの識別子を含んでいる参照リスト）と、符号化ビデオシーケンスを復号するための他の情報とを決定し得る。
【００９９】
[0114]加算器８０は、残差ブロックを、動き補償ユニット７２又はイントラ予測ユニット７４によって生成される対応する予測ブロックと合成して、復号ブロックを形成する。所望される場合、ブロッキネスアーティファクトを除去するために、復号ブロックをフィルタ処理するためにデブロッキングフィルタも適用され得る。復号ビデオブロックは、次いで、参照フレームバッファ８２に記憶され、参照フレームバッファ８２は、参照ブロックを後続の動き補償に与え、また、（図１の表示装置３２などの）表示装置上での提示のために復号ビデオを生成する。
【０１００】
[0115]図４は、図２のビデオエンコーダ２０において使用するエントロピー符号化ユニット５６の一例を示すブロック図である。図４には、関数に基づいて走査順序を決定することと、ビデオデータを符号化する際に使用するために、走査順序を適用して、変換係数の２Ｄアレイを変換係数の１Ｄアレイに変換することとのためのエントロピー符号化ユニット５６の様々な機能的態様が示されている。図１に示すように、エントロピー符号化ユニット５６は、関数ベース走査制御ユニット９０と、２Ｄ−１Ｄ走査ユニット９２と、エントロピーコード化エンジン９４と、関数メモリ９６とを含み得る。
【０１０１】
[0116]走査制御ユニット９０は、関数に１つ以上のパラメータ値を適用して走査順序を生成する。関数メモリ９６は、走査順序の生成のための関数を定義する命令及び／又はデータを記憶する。例えば、関数メモリ９６は、走査順序を生成するために実行すべき動作を指定するコンピュータコードを記憶し得る。関数ベース走査制御ユニット９０は、関数メモリ９６から命令を取り出し、関数を実行するために命令を適用する。特に、関数ベース走査制御ユニット９０は、１つ以上のパラメータ値を入力として関数に適用し、関数に従って走査順序を生成する。
【０１０２】
[0117]関数メモリ９６は、単一の関数のための命令及び／又はデータを記憶し得る。代替的に、関数メモリ９６は、複数の関数のための命令及び／又はデータを記憶し得る。場合によっては、関数は、パラメータの同じセット、若しくはより多い又はより少ない数のパラメータを含むパラメータの異なるセットを入力として受け付けるように構成され得る。幾つかの例では、走査制御ユニット９０は、ブロックサイズ、インター又はイントラコード化モード、変換などの様々なコード化特性に基づいて複数の関数のうちの１つを選択するように構成され得る。走査制御ユニット９０は、効率的な係数コード化をサポートするために、パラメータ値の様々なセットをもつ単一の関数又は複数の関数をテストして、１Ｄベクトルにおける係数の配置についての、例えば、テストされた走査順序のうちの最良の結果、又は少なくとも満足な結果を生成する走査順序を識別し得る。
【０１０３】
[0118]図４の例では、走査制御ユニット９０は、変換単位サイズと、走査方向と、走査方向強度とを入力パラメータとして受信する。走査制御ユニット９０は、それらのパラメータの値を関数に適用して走査順序を生成する。幾つかの例では、走査制御ユニット９０は、関数とパラメータの単一のセットとに基づいて単一の走査順序を生成し得る。他の例では、パラメータの値のうちの１つ以上は、ブロックサイズ、インター又はイントラコード化モード、変換などの様々なコード化特性に基づいて選択され得る。
【０１０４】
[0119]追加の例では、エントロピーコード化性能をサポートするために、関数によって生成される複数の異なる走査順序をテストし、それによって、１Ｄベクトルにおける係数の効率的な配置を与える走査順序を識別するために、パラメータの値が、例えば、制御された方法で調整され得る。入力パラメータ及び／又は関数の複数のセットが評価される例では、エントロピー符号化ユニット５６は、１Ｄベクトルにおける係数の効率的な配置に関係する様々な基準のいずれかに基づいて走査順序のうちの１つを選択するように構成され得る。
【０１０５】
[0120]走査順序は、テストされた複数の走査順序のうちの、係数の最も効率的な配置を生成することがわかった特定の走査順序であるか、又は効率閾値を満たす走査順序であり得る。例えば、走査制御ユニット１００は、満足な走査順序が生成されるまで、即ち、係数の効率的な配置に関して、異なる走査順序をテストし得る。走査ユニット９２は、走査制御ユニット９０から走査順序を受信し、走査順序を適用して、係数の２Ｄアレイを係数のシリアル化１Ｄベクトルに変換する。この場合も、変換係数の２Ｄアレイは量子化変換係数を含み得る。同様に、１Ｄベクトルは量子化変換係数を含み得る。代替的に、係数は量子化されないことがある。
【０１０６】
[0121]エントロピー符号化エンジン９４は、例えば、ＣＡＶＬＣ、ＣＡＢＡＣ又は他のプロセスを使用して、走査された係数にエントロピー符号化プロセスを適用する。エントロピー符号化プロセスは、係数が１Ｄベクトルに完全に走査された後に、又は各係数が１Ｄベクトルに追加されるときに、係数に適用され得る。場合によっては、エントロピー符号化エンジン９４は、速度及び効率を上げるためにエントロピー符号化プロセスの並列化を促進するために、１Ｄベクトルの異なるセクションを並列に符号化するように構成され得る。エントロピー符号化エンジン９４は、符号化ビデオを搬送するビットストリームを生成する。ビットストリームは、別の機器に送信されるか、又は後で取り出すためにデータ記憶アーカイブに記憶され得る。残差変換係数データに加えて、ビットストリームは、動きベクトルデータと、ビットストリーム中の符号化ビデオを復号する際に有用な様々なシンタックス要素とを搬送し得る。
【０１０７】
[0122]更に、エントロピー符号化ユニット５６は、変換係数の２Ｄアレイを変換係数の１Ｄアレイに変換するために使用される走査順序を生成するために関数に適用されるパラメータ値を示すために、符号化ビデオビットストリーム中で信号伝達を与え得る。幾つかの例では、信号伝達は、代替又は追加として、走査順序を生成するために使用される特定の関数を示し得る。例として、信号伝達は、パラメータ値又は関数を明示的に信号伝達するか、又はビデオデコーダ３０がパラメータ値をルックアップするためのインデックス値を信号伝達し得る。
【０１０８】
[0123]関数及び／又はパラメータ値は、例えば、フレーム、スライス、ＬＣＵ、ＣＵレベル又はＴＵレベルなど、様々なレベルにおいてシンタックス要素として信号伝達され得る。単一の関数を使用する場合、関数を信号伝達する必要はないことがある。また、幾つかの例では、ビデオデコーダ３０は、信号伝達なしにパラメータ値の幾つかを推論することが可能であり得る。異なるＴＵのための異なる走査順序の定義を可能にするために、ＴＵレベルにおいて、例えば、ＴＵ４分木ヘッダ中でそのようなシンタックス要素を信号伝達することが望ましいことがある。例示のために符号化ビデオビットストリーム中の信号伝達について説明するが、パラメータ値又は関数を示す情報はサイド情報内で帯域外信号伝達され得る。
【０１０９】
[0124]図５は、図３のビデオデコーダにおいて使用するエントロピー復号ユニットの一例を示すブロック図である。図５には、関数に基づいて走査順序を決定することと、ビデオデータを復号する際に使用するために、走査順序を適用して、変換係数の１Ｄアレイを変換係数の２Ｄアレイに変換することとのためのエントロピー復号ユニット７０の様々な例示的な機能的態様が示されている。図１に示すように、エントロピー復号ユニット７０は、関数ベース走査制御ユニット１００と、１Ｄ−２Ｄ走査ユニット１０２と、エントロピーコード化エンジン１０４と、関数メモリ１０６とを含み得る。
【０１１０】
[0125]エントロピー復号エンジン１０４は、ビデオデコーダ３０に送信されたか又は記憶装置からビデオデコーダ３０によって取り出された符号化ビデオをエントロピー復号する。例えば、エントロピー復号エンジン１０４は、符号化ビデオを搬送するビットストリームにエントロピー復号プロセス、例えば、ＣＡＶＬＣ、ＣＡＢＡＣ又は別のプロセスを適用して、変換係数の１Ｄベクトルを復元し得る。残差変換係数データに加えて、エントロピー復号エンジン１０４は、エントロピー復号を適用して、動きベクトルデータと、ビットストリーム中の符号化ビデオを復号する際に有用な様々なシンタックス要素とを再生し得る。エントロピー復号エンジン１０４は、符号化ビデオビットストリーム中の信号伝達に基づいて、又はビットストリーム中の他の情報から適切なプロセスを推論することによって、どのエントロピー復号プロセス、例えば、ＣＡＶＬＣ、ＣＡＢＡＣ又は別のプロセスを選択すべきかを決定し得る。
【０１１１】
[0126]エントロピー復号ユニット７０は、符号化ビデオビットストリーム中の信号伝達に基づいて、走査順序関数のパラメータ値、及び／又は使用された特定の関数の指示を決定し得る。例えば、エントロピー復号ユニット７０は、パラメータ値及び／又は関数識別情報を明示的に信号伝達するシンタックス要素、若しくはそのような情報のルックアップを可能にするインデックス値を受信し得る。この場合も、例示のために符号化ビデオビットストリーム中の信号伝達について説明するが、パラメータ値又は関数を示す情報は帯域外サイド情報としてエントロピー復号ユニット７０によって受信され得る。単一の関数を使用する場合、関数を信号伝達する必要はないことがある。代わりに、エントロピー復号ユニット７０は、ビデオデコーダにおいて、例えば、関数メモリ１０６に記憶された単一の関数に依拠し得る。また、幾つかの例では、ビデオデコーダ３０は、信号伝達なしにパラメータ値の幾つかを推論することが可能であり得る。
【０１１２】
[0127]図４のメモリ９６のように、図５のメモリ１０６は、走査順序の生成のための関数を定義する命令及び／又はデータを記憶し得る。関数メモリ１０６は、単一の関数のための命令及び／又はデータを記憶し得る。代替的に、関数メモリ１０６が複数の関数のための命令及び／又はデータを記憶する場合、符号化ビデオは、走査順序を生成するために関数のうちのどれが使用されるべきかを示す信号伝達を含み得るか、又はエントロピー復号ユニット７０は、１つ以上のコード化特性に基づいて特定の関数を推論し得る。
【０１１３】
[0128]関数ベース走査制御ユニット１００は、関数メモリ１０６から命令を取り出し、関数を実行するために命令を適用して、走査順序を生成する。関数ベース走査制御ユニット１００は、その一部又は全部が符号化ビデオビットストリーム中で信号伝達され得る、１つ以上のパラメータ値を入力として関数に適用し、関数に従って走査順序を生成する。走査制御ユニット１００は、指定された関数にパラメータ値を適用して走査順序を生成する。
【０１１４】
[0129]走査ユニット１０２は、走査制御ユニット１００から走査順序を受信し、走査順序を直接又は逆に適用して、係数の走査を制御する。図５の例では、走査制御ユニット１００は、変換単位サイズと、走査方向と、走査方向強度とを入力パラメータとして受信する。これらのパラメータ値と、関数メモリ１０６によって与えられた関数とを使用して、ビデオデコーダ３０は、ビデオエンコーダ２０によって使用された走査順序を再生することができる。
【０１１５】
[0130]概して、ビデオデコーダ３０のエントロピー復号ユニット７０において、関数及びパラメータ値を使用して、ビデオエンコーダ２０のエントロピー符号化ユニット５６によって適用された同じ又は実質的に同じ走査順序、若しくは逆の走査順序を再生する。走査ユニット１０２は、次いで、走査順序を直接又は逆に適用して、所与のＴＵについて、ビデオエンコーダ２０によって１Ｄアレイに変換された変換係数の２Ｄアレイを再構成し得る。この場合も、走査ユニット１０２によって生成された１Ｄアレイ内の変換係数は量子化され得る。ビデオデコーダ３０における逆変換の適用に先立って、係数に逆量子化が適用され得る。
【０１１６】
[0131]ビデオエンコーダ２０及びビデオデコーダ３０における走査順序を定義するための関数の使用により、関数パラメータの異なる値に従って様々な走査順序が生成されることが可能になり得る。このようにして、ビデオエンコーダ２０及びビデオデコーダ３０は、ジグザグ、水平及び垂直走査順序などの固定走査順序に対して、走査順序を構築する際の少なくともある程度の柔軟性を与え得る。更に、走査順序の関数ベース定義は、走査順序の生成のための情報を記憶するために必要なメモリの量を低減し得る。走査順序におけるあらゆる係数の位置を記憶する代わりに、幾つかの例では、ビデオエンコーダ２０及びビデオデコーダ３０は、単に関数のための命令及び／又はデータを記憶し、関数とその関数のために指定されたパラメータに従って走査順序をオンザフライで生成し得る。
【０１１７】
[0132]図６は、例示的な変換単位（ＴＵ）中の変換係数のジグザグ走査順序を示す図である。図６では、文字ａ〜ｐは係数の識別情報を示し、番号１〜１５は、そのような係数が走査される順序を示す。図６に示すように、量子化変換係数のブロックのエントロピーコード化をサポートするために、ジグザグ走査順序は、概して、対角方向往復パターンでブロックの左上隅から右下隅に進んで、変換係数の２Ｄアレイを変換係数の１Ｄベクトルに変換する。ＤＣＴでは、特に量子化の後に、非０係数が変換単位の左上隅のほうへ（即ち、低周波数領域に）配置され、０値係数が右下隅のほうへ（即ち、より高い周波数領域に）配置される確率がより高くなる。従って、図６に示すジグザグ走査は、係数のシリアル化ランの最初に非０係数を一緒にグループ化する確率を増加させる。
【０１１８】
[0133]図７は、例示的な変換単位中の変換係数の水平走査順序を示す図である。図７では、文字ａ〜ｐは係数の識別情報を示し、番号１〜１５は、そのような係数が走査される順序を示す。図７に示すように、水平走査順序は、概して、左上隅から右上隅まで最上行に沿って進み、次いで、ＴＵの上から下まで続く各後続の行において左から右に引き続き走査する。
【０１１９】
[0134]図８は、例示的な変換単位中の変換係数の垂直走査順序を示す図である。図８では、文字ａ〜ｐは係数の識別情報を示し、番号１〜１５は、そのような係数が走査される順序を示す。図８に示すように、垂直走査順序は、概して、左上隅から左下隅まで左側列に沿って進み、次いで、ＴＵの左から右まで続く各後続の行において上から下に引き続き走査する。
【０１２０】
[0135]図６〜図８の例では、ジグザグ、水平及び垂直走査順序は、変換係数の４×４ブロックに適用される。例示のために、変換係数の４つの行と４つの列とを有する４×４ブロックが示されている。幾つかの例では、変換単位は、はるかに大きいことがある。例えば、変換単位は、サイズが８×８であるか、１６×１６であるか、又はより大きいことがある。図６、図７及び図８の各方形は、１６個の変換係数のうちの１つを表し、各方形内の番号（例えば、０、１、２など）は、走査順序における変換係数の位置を示す。言い換えれば、方形中の番号の昇順は、係数のシリアル化シーケンスを形成するために係数が走査される順序を示す。
【０１２１】
[0136]本開示の例によれば、（例えば、レベル及び符号などの変換係数情報をコード化するために）変換係数のブロック中の変換係数を走査するための走査順序が関数によって効率的に定義され得る。幾つかの例では、上記で説明したように、ビデオエンコーダ２０は、関数に従って走査順序を定義するために関数パラメータの値を指定し、それらの値をビデオデコーダ３０に信号伝達し得る。関数の使用は、走査順序を構築する際の、より高い洗練度及びフレキシビリティを与え得る。
【０１２２】
[0137]異なるサイズの変換ブロック、即ち、変換単位の変換係数走査順序を生成するために、特定のパラメータをもつ関数が使用され得る。一例では、関数パラメータは、変換ブロックサイズと走査方向と走査方向強度とのうちの１つ以上を含み得る。これらのパラメータの値が与えられれば、関数を使用してビデオエンコーダ及びビデオデコーダによって走査が生成され得る。例示のために、走査順序の構成のための関数の一例として、これらのパラメータを使用する関数について説明する。但し、異なるパラメータをもつ他の関数も有用であり得る。
【０１２３】
[0138]図９は、水平走査方向をもつ走査順序を示す図である。図９では、文字ａ〜ｐは係数の識別情報を示し、番号１〜１５は、そのような係数が走査される順序を示す。走査順序は、水平又は垂直などの特定の方向と、走査順序が方向のほうへバイアスされる程度を示す方向強度とを有し得る。図９の例では、走査が次の行に進む前に各行の全体が走査される、即ち、行中の係数の全てが走査されるという点で、走査順序は水平方向のほうへ強くバイアスされる。詳細には、例示のために４×４ＴＵを使用して、走査順序は、最上行にわたって進み、順序０〜３において左から右に全ての位置を走査し、次いで、順序４〜７において左から右に第２の行中の全ての位置を引き続き走査し、次いで、順序８〜１１において左から右に第３の行中の全ての位置を引き続き走査し、次いで、順序１２〜１５において左から右に第４の行中の全ての位置を引き続き走査する。
【０１２４】
[0139]図１０は、図９の走査順序よりも小さい水平走査方向強度をもつ走査順序を示す図である。図１０では、文字ａ〜ｐは係数の識別情報を示し、番号１〜１５は、そのような係数が走査される順序を示す。図９の走査順序のように、図１０の走査順序は水平方向を有する。従って、図９と図１０の走査順序の走査方向パラメータは両方とも水平である。しかしながら、水平方向強度は、図９の水平方向強度に対して低減される。言い換えれば、図９の走査順序は、図１０の走査順序よりも水平方向のほうへの強い方向を有する。
【０１２５】
[0140]上記で説明したように、図９の走査順序によれば、現在行の係数が全てコード化されてから、下側の次の行にある係数がコード化される。詳細には、各行中の全ての係数（例えば、図９の係数０、１、２、３）が連続的に走査されてから、より下の行中の係数が走査される。しかしながら、図１０の走査順序によれば、現在行、即ち、より前の行にある全ての係数がコード化される前に、後の行にある幾つかの係数がコード化される。
【０１２６】
[0141]例えば、図１０では、第１の（最上）行中の最後の（右端）係数ｄが走査順序位置４において走査される前に、第２の行からの第１（左端）の係数ｅが走査順序位置３において走査される。また、第２の行中の（左から右に）第３及び第４の係数が、それぞれ走査順序位置７及び１０において走査される前に、第３の行中の第１の係数が走査順序位置６において走査される。
【０１２７】
[0142]また、第２の行中の最後係数ｈが走査順序位置１０において走査される前に、第３の行中の第２の係数ｊが走査順序位置８において走査され、第４の行中の第１の係数ｍが走査順序位置９において走査される。残りの走査順序は、図１０に提示されている番号から明白である。また、図１０の走査順序は水平方向に有利であるが、それの方向は図９の走査順序の方向ほど強くない。
【０１２８】
[0143]図９では、方向パラメータ値は水平であり、方向強度パラメータ値は「高」として特徴づけられるか、若しくは数字スケール上のより高い又は最も高い数として提示され得る。図１０では、方向パラメータ値は水平であり、方向強度パラメータ値は「中」として、又は数字スケール上の中位の数として特徴づけられ得る。ビデオエンコーダ２０による信号伝達では、方向パラメータ値についての水平又は垂直指示は１ビットフラグによって表され得、例えば、水平の場合には１であり、垂直の場合には０であるか、又はその逆である。方向強度パラメータ値の強度は、例えば、明示的に、又は、例えば、ビデオデコーダ３０において記憶されたテーブル又は他のデータ構造中の複数の数値のうちの１つに対するインデックスとして、ビットストリーム中で信号伝達される数値によって表され得る。
【０１２９】
[0144]上記の図９及び図１０の例は、水平方向に方向された走査順序の事例を説明している。４×４ＴＵ中の左から右に続く列の代わりに、行に関する説明が適用される場合、垂直方向に方向された走査順序にも実質的に同じ説明が適用され得る。従って、簡潔のために、垂直に方向された走査順序が、異なる垂直方向強度を有する事例については示していないが、そのような事例は、本開示で説明する技術によって対処され得る。
【０１３０】
[0145]概して、変換係数のブロックの走査は左上隅位置から開始し得る。本開示によれば、走査方向パラメータが、走査順序が水平に方向されることを示す場合、走査順序は行方向に沿って水平に続く。そうではなく、方向が垂直である場合、走査順序は列方向に沿って垂直に続く。
【０１３１】
[0146]更に、方向強度パラメータに基づいて、水平方向の場合は行ごとに（又は垂直方向の場合は列ごとに）閾値が導出され得るように走査順序関数が構成され得る。以下の説明では、水平に方向された走査の事例を取り上げるが、単に「行」を「列」と入れ替えることによって、垂直に方向された走査にも同じ説明が適用され得る。
【０１３２】
[0147]方向強度パラメータから導出された閾値は、次の行において係数をコード化する前に、現在行において何個の係数がコード化されるべきかを指定するために使用され得る。係数の閾値数に達した後、現在行にある係数の走査と次の行にある係数の走査とがインターリーブ式に順序付けられ得る。
【０１３３】
[0148]図１１は、走査方向パラメータと走査方向強度パラメータとに基づいて定義された関数ベース走査順序の一例を示す図である。図１１では、文字ａ〜ｐは係数の識別情報を示し、番号１〜１５は、そのような係数が走査される順序を示す。図１１の例では、走査方向パラメータに基づいて走査方向を決定することと、正確な走査順序を決定するために、方向強度パラメータ値に基づいて閾値を生成することとを行うように関数が構成される。幾つかの例では、異なるブロックサイズ、例えば、ＴＵサイズのために異なる走査順序関数が選択され得る。代替的に、走査順序を調整するために所与の走査順序関数がブロックサイズを適用し得る。この場合も、例示のために４×４ＴＵを示しているが、より大きいＴＵへの関数ベース走査順序定義の適用に関して限定するものではない。
【０１３４】
[0149]図１１の例では、走査方向は水平であり、方向強度パラメータ値は値４になるように指定されると仮定する。方向強度パラメータ値に基づいて、ビデオエンコーダ２０又はビデオデコーダ３０は、関数に従って各行の閾値を導出し得る。この例では、第１の（最上）行の閾値が方向強度値に等しくなる、即ち、４に等しくなるように設定されるように関数が構成される。次いで、関数に従って、ＴＵ中で上から下に、後続の行の各々の閾値に、徐々に減少する値が割り当てられ得る。
【０１３５】
[0150]他の例では、閾値は、走査順序関数への入力パラメータとしてのブロックサイズ（例えば、ＴＵサイズ）に従って、又はブロックサイズと方向強度との組合せに従って設定され得る。更に、方向は、走査の全般的方向を決定し、走査順序関数への別の入力パラメータとして働き得る。例示のために、図１１を参照しながら、方向強度パラメータに従う閾値の調整について説明する。
【０１３６】
[0151]図１１の例では、閾値は、各行の後に、即ち、最上行の下の連続する行ごとに１だけ減少する。但し、行ごとに閾値を割り当てるための他の関数も可能であることに留意されたい。例えば、関数は、各行に同じ閾値を割り当て得るか、又は閾値が行ごとに２だけ減少すべきであることを指定し得るなどである。また、連続する行の閾値の減少は、異なる走査方式を定義する関数に従って線形又は非線形であり得る。
【０１３７】
[0152]上述のように、所与の走査順序関数に従って、各行の導出された閾値は、次の行にある係数を走査する前に、現在行にある何個の係数が走査されるべきかを指定するために使用され得る。この場合も、閾値は方向強度パラメータの値の関数であり得る。この例では、所与の現在行の閾値に達した後、即ち、現在行において閾値に等しい数の係数が走査された後、現在行にある係数と次の行にある係数とがインターリーブ式に走査される。図１１では、第１、第２、第３及び第４の行の閾値は、それぞれ、Ｔｈｒｅｓ［０］、Ｔｈｒｅｓ［１］、Ｔｈｒｅｓ［２］、及びＴｈｒｅｓ［３］としてインデックス付けされる。
【０１３８】
[0153]図１１に示す例では、閾値は、行ごとに走査の進行によって変化する。第１の行の閾値は４に等しいが、第２、第３及び第４の行の閾値は、それぞれ、値３、２及び１に漸進的に減少する。第１の行の閾値は４であり、第１の行の下の他の行にある係数が走査される前に、第１の行中の４つの係数ａ、ｂ、ｃ及びｄの全てが走査される。図１１の第１の行中のこれらの係数ａ、ｂ、ｃ及びｄは、走査順序において０、１、２、３と番号付けされる。第２の行では、閾値は３である。従って、後続の行中の係数がコード化される前に、第２の行にある最初の３つの係数がコード化され、走査順序において４、５、６と番号付けされる。
【０１３９】
[0154]第２の行の閾値３によって設定された限界に従って、第２の行のこれらの３つの係数ｅ、ｆ、及びｇのみを走査した後、走査は第３の行に進む。詳細には、第３の行中の第１の係数ｉがコード化され、走査順序において７と番号付けされる。第３の行の閾値は２であり、第３の行中には、この時点でまだ２つの係数がコード化されてなかったので、図１１に示すように、走査は、第２の行に戻り、次の係数（即ち、第２の行中の第４の係数ｈ）をコード化し、走査順序においてこの係数を番号８として番号付けする。
【０１４０】
[0155]次に、第２の行中の係数の全ての走査を完了して、関数は、走査が第３の行に進み、この行にある次の係数（即ち、第３の行中の第２の係数ｊ）をコード化することを指定する。この走査された係数ｊは、図１１によって示すように走査順序において９と番号付けされる。この時点で、第３の行にはコード化された２つの係数（走査順序位置７の第３の行中の第１の係数ｉ及び走査順序位置９の第３の行中の第２の係数ｊ）がある。第３の行の閾値２に基づいて、走査は、第４の行にある第１の係数ｍに進む。第４の行中の第１の係数ｍの位置は、走査順序において１０として番号付けされる。
【０１４１】
[0156]この位置から続けて、第４の行の閾値１を仮定すれば、走査は第３の行に戻る。詳細には、走査は、図１１に示すように、インターリーブ式に交互に第３の行と第４の行との間を往復し、走査順序位置１１において第３の行中の第３の係数ｋを走査し、次いで、走査順序位置１２において第４の行中の第２の係数ｎを走査し、次いで、第３の行に戻って、走査順序位置１３において第４の係数ｌを走査し、次いで、走査順序位置１４及び１５において第４の行中の第３及び第４の係数ｏ、ｐを走査する。
【０１４２】
[0157]図１１の例では、先行する行において、先行する行の閾値に等しい数の変換係数が走査されるまで、走査は後の行に進まない。図１１の走査順序を生成する関数に従って、閾値は、行ごとに変化し、上から下に漸進的に減少する。
【０１４３】
[0158]図１２は、走査方向パラメータと走査方向強度パラメータとに基づいて定義された関数ベース走査順序の別の例を示す図である。図１２では、文字ａ〜ｐは係数の識別情報を示し、番号１〜１５は、そのような係数が走査される順序を示す。図１１の走査順序に関連する関数について上記で説明したルールに基づいて、各行（又は列）の閾値が、得られた走査順序パターンを決定することがわかり得る。図１２には、各行の閾値が固定値３になるように設定された代替例が与えられている。言い換えれば、図１２では、あらゆる行が、方向強度パラメータに基づいて決定され得る同じ閾値３を有する。図１２の例では、方向強度パラメータ値は３であり、走査順序関数は、方向強度パラメータ値を適用して、ＴＵの各行の固定閾値を生成する。
【０１４４】
[0159]この場合、固定閾値を用いて、走査順序は、走査順序位置０、１及び２において第１の行中の最初の３つの係数ａ、ｂ、ｃを走査し始め、第１の行の閾値３を満たす。次いで、走査順序位置３において第２の行中の第１の係数ｅを走査してから、走査順序位置４において第１の行中の第４の係数ｄを走査する。走査は、次いで第２の行に戻って、第２の行中の第２及び第３の係数ｆ、ｇを走査し、この時点で、第２の行の閾値３が満たされる。
【０１４５】
[0160]この時点で、第２の行の閾値３が満たされる。従って、走査は次の行、即ち、第３の行に進み、第１の係数ｉを走査する。走査は、次いで第２の行に戻り、第４の係数ｈを走査する。プロセスは、第３及び第４の行を通して同様の方法で続く。各場合において、行に適用可能な閾値に従って、先行する行において３つの変換係数が走査されるまで、走査は後の行に進まない。走査の結果、変換ブロック中の係数の２Ｄアレイが係数の１Ｄアレイ、即ち、ベクトルに変換される。また、図１２の例では、行の全てについて、閾値は３に固定される。
【０１４６】
[0161]図１１及び図１２の例では、走査順序を導くために使用される閾値は、走査方向強度パラメータに基づいて決定される。方向強度をパラメータとして使用することの代替として、関数はまた、走査順序を生成するパラメータとして閾値のアレイを直接とり得る。従って、ビデオエンコーダ２０は、関数の方向強度パラメータ又は関数の閾値のアレイを指定し得る。
【０１４７】
[0162]各場合において、関数は、走査を導くために各行の閾値を設定し得る。走査順序関数のための入力パラメータとして閾値のアレイを使用する手法は、上記で説明したルールに基づいて走査順序を生成する際に、より多くの自由を与え得る。しかしながら、実際には、方向強度値に基づいて、各行（又は列）の徐々に減少する閾値は、ビデオコード化のための効率的な走査順序を生成するのに十分良好であり得ることがわかる。
【０１４８】
[0163]図１１及び図１２の例は４×４ブロックの事例を示している。但し、この概念は、８×８、１６×１６、３２×３２など、他のサイズのブロックに直接拡張され得ることが明らかである。これらの事例では、ブロックサイズが、走査されるべき係数の数を決定し、例えば、方向強度パラメータ値とともに、閾値を設定するために使用され得るという点で、ブロックサイズは、複数の利用可能な走査順序関数の中での走査順序関数の選択のための、又は走査順序関数への入力としての、パラメータのうちの１つであり得る。
【０１４９】
[0164]ビデオエンコーダ２０において、図１１に示す走査順序は、（厳密な水平走査又はラスタ走査の場合、ａｂｃｄｅｆｇｈｉｊｋｌｍｎｏｐと順序付けられた）係数の２Ｄアレイを、ａｂｃｄｅｆｇｉｈｊｍｋｎｌｏｐと順序付けられた１Ｄアレイに再構成するであろう。図１２に示す走査順序は、ビデオエンコーダ２０において、（厳密な水平走査の場合、ａｂｃｄｅｆｇｈｉｊｋｌｍｎｏｐと順序付けられた）係数の２Ｄアレイを、ａｂｃｅｄｆｇｉｈｊｋｍｌｎｏｐと順序付けられた１Ｄアレイに再構成するであろう。
【０１５０】
[0165]図１１及び図１２の例では、ビデオデコーダ３０は、１Ｄアレイを２Ｄアレイに走査するために走査順序を逆に適用するであろう。図１２では、例えば、ビデオデコーダ３０は各行に閾値３を適用し、最初に係数ａｂｃを第１の行に走査し、次いで、ｅを第２の行に走査してから次の係数ｄを第１の行に走査し、次いで、係数ｆ及びｇを第２の行に走査し、次いで、係数ｉを第３の行に走査してから係数ｈを第２の行に走査するなどであろう。
【０１５１】
[0166]従って、走査方向強度に基づいて走査順序関数によって生成された閾値は、ビデオエンコーダ２０による２Ｄ−１Ｄ走査とビデオデコーダ３０による１Ｄ−２Ｄ走査とに対して同様の方法で適用され得る。いずれの場合も、関数と関連するパラメータとに従って生成された走査順序は、適用可能なとき、ビデオエンコーダ又はビデオデコーダによる係数の走査を制御する。
【０１５２】
[0167]以下は、本開示に示す関数ベース走査順序技術のＣコード実装形態の一例である。関数パラメータのうち、ｏｒｄｅｒ１Ｄは、２Ｄ変換ブロックから走査されるべき係数の走査順序位置を記憶する走査順序アレイである。パラメータｂｌｋＳｉｚｅは、変換ブロックのサイズ、即ち、Ｎ×Ｎブロックを形成する行と列の数Ｎで表されるサイズである。パラメータｄｉｒは走査方向であり、例えば、１は水平を示し、０は垂直を示す。パラメータｗは方向強度パラメータである。関数内のアレイｉＴｈｒｅｓ［］は、変換ブロックの各行又は列の導出された閾値を保存する。関数Ｍｉｎ（）は、２つの入力値のうちの小さいほうの入力値を戻す。
【数１】
0006271477.tif 000002
【０１５３】
[0168]上記のコードでは、走査方向が水平であるのか垂直であるのかに応じて、ｉＬｉｎｅＮｕｍは、ブロック中の現在係数位置の行（又は列）インデックスを示し、ｉＬｉｎｅＰｏｓ［ｉＬｉｎｅＮｕｍ］は、現在係数位置の列（又は行）インデックスを示す。このコードでは、ｉＰｏｓＩｄｘは走査順序インデックスを示す。各行又は列の閾値サイズを割り当てるために、ｉＴｈｒｅｓ［ｉ］が、走査方向強度パラメータに従って指定される重みｗに等しくなるように初めに設定される。この例では、走査方向が水平であるのか垂直であるのかに応じて、走査の行（又は列）の中で走査が進むにつれて、重みｗは減分される。他の例では、重みｗは固定のままであり得る。上記の例示的なコードでは、ｗが２よりも大きいままである限り、重みは、連続する行又は列ごとに減分される。
【０１５４】
[0169]各連続する行において左から右に係数を走査する水平走査の場合の例について説明する。この例では、重みｗは、第１の行０ではｎであり、次いで、重みｗが２に達し、その時点で、重みｗが、残りの行では２に固定されたままになるまで、第２の行１ではｎ−１に減分され、第３の行２ではｎ−２に減分されるなどであり得る。各連続する行（又は列）ｉでは、その行ｉの閾値は、最小ｗ値２を条件として行ごとに減分されるｗに等しくなるように設定される。プロセスは、ｉがブロックサイズ（ｂｌｋｓｉｚｅ）よりも小さいままである間、ｉの値を増分するために連続する行に沿って続き、ブロックサイズは、Ｎ×Ｎ方形ブロック中の行と列の数Ｎに対応する。他の例では、プロセスは、矩形（例えば、Ｎ×Ｍ）ブロック形状のために適応され得る。
【０１５５】
[0170]走査が第１の行にある（ｉＬｉｎｅＮｕｍ＝０）か、又は、前の行中の現在係数の位置（ｉＬｉｎｅＰｏｓ［ｉＬｉｎｅＮｕｍ−１］）が、前の行の適用可能な閾値（ｉＴｈｒｅｓ［ｉＬｉｎｅＮｕｍ−１］）とブロックサイズ（ｂｌｋＳｉｚｅ、ブロックのＮ×Ｎサイズに従って最後係数位置を示す）との最小値よりも大きいかそれに等しく、現在行中の現在係数の位置（ｉＬｉｎｅＰｏｓ［ｉＬｉｎｅＮｕｍ］）がブロックサイズ（ｂｌｋＳｉｚｅ、ブロックのＮ×Ｎサイズに従って最後係数位置を示す）よりも小さい場合、プロセスは、引き続き、位置（ｉＬｉｎｅＮｕｍ，ｉＬｉｎｅＰｏｓ［ｉＬｉｎｅＮｕｍ］）に位置する現在係数を係数の１次元アレイに走査する。アレイｏｒｄｅｒ１Ｄ［ｉＰｏｓＩｄｘ］は、走査順序に基づく係数ラスタ走査位置を記憶する。
【０１５６】
[0171]走査方向が水平（ｄｉｒ＝＝１）である場合、走査順序中の現在位置（ｏｒｄｅｒ１Ｄ［ｉＰｏｓＩｄｘ］）は、現在行の番号×ブロックサイズ（即ち、行当たりの係数）と現在行内の現在係数の列インデックスとに従って決定される位置にある係数に対応するように設定される。例えば、走査が行ｎ内にあり、ブロックサイズがｍ×ｍである場合、走査順序アレイ中の現在位置は、ｏｒｄｅｒ１Ｄ［ｉＰｏｓＩｄｘ］＝ｎ＊ｍ＋行中の現在係数の列インデックスである。行中の現在係数の列インデックスがｐである場合、走査順序アレイ内の現在位置は、水平ラスタスキャンを仮定して、左上隅から現在位置まで全体で（ｎ＊ｍ＋ｐ）番目の係数をポイントするであろう。
【０１５７】
[0172]同様のプロセスが垂直走査（ｄｉｒ＝＝０）に適用され得る。しかしながら、アレイｏｒｄｅｒ１Ｄ［ｉＰｏｓＩｄｘ］内の位置は、ｉＬｉｎｅＰｏｓ［ｉＬｉｎｅＮｕｍ］＊ｂｌｋＳｉｚｅ＋ｉＬｉｎｅＮｕｍに対応するラスタ走査位置をもつ係数になるように設定され、但し、ｉＬｉｎｅＮｕｍとｉＬｉｎｅＰｏｓ［ｉＬｉｎｅＮｕｍ］の物理的意味は、水平走査における物理的意味に対して交換される。より詳細には、ｉＬｉｎｅＰｏｓ［ｉＬｉｎｅＮｕｍ］は現在係数位置の行インデックスを示し、ｉＬｉｎｅＮｕｍは現在係数の列インデックスを示す。この例では、ｉＰｏｓＩｄｘ及びｉＬｉｎｅＰｏｓ［ｉＬｉｎｅＮｕｍ］は、ループを通る各パス中にそれぞれ増分される。
【０１５８】
[0173]最後の行及びその行中の最後係数に達した場合（ｉＬｉｎｅＮｕｍ＝＝ｂｌｋＳｉｚｅ−１＆＆ｉＬｉｎｅＰｏｓ［ｉＬｉｎｅＮｕｍ］≧ｂｌｏｃｋＳｉｚｅ）、走査プロセスは停止する（ブレーク）。そうでない場合、行番号は増分され（ｉＬｉｎｅＮｕｍ＋＋）、ループは繰り返す。行インデックスｉＬｉｎｅＮｕｍがブロックサイズよりも大きいかそれに等しい場合、ｉＬｉｎｅＮｕｍは０に設定される。
【０１５９】
[0174]本開示では、ある方向及び方向強度をもつ走査順序を生成するための関数の使用について説明する。実際には、生成された走査順序は、しばしば標準ジグザグ走査とともに使用され得る。例えば、イントラ予測ブロックでは、自然で効率的なコード化方式は、それのイントラ予測方向（又は予測モード）に基づいてブロックの走査順序を選択することであり得る。イントラ予測の方向に基づいて、ある対応する方向をもつ走査順序が選択され、ブロックの変換係数をコード化する際に使用され得る。
【０１６０】
[0175]エンコーダ側では、変換係数のコード化は、変換係数の１次元アレイを形成するために、走査順序に従って変換係数を符号化することを備え得る。デコーダ側では、変換係数をコード化することは、変換ブロック中の変換係数の２次元アレイを再構成するために、走査順序に従って変換係数を復号することを備え得る。
【０１６１】
[0176]関数ベース走査順序を使用することの利点は信号伝達の便宜である。エンコーダによって新しい走査順序がデコーダに信号伝達される必要がある場合、厳密な順序自体を信号伝達する代わりに、エンコーダからデコーダに関数パラメータ値のみを信号伝達する必要がある。なお一層の簡単のために、エンコーダ側とデコーダ側の両方において関数パラメータのルックアップテーブルが使用され得る。この場合、走査順序を信号伝達するために、エンコーダからデコーダに、関数パラメータルックアップテーブルに対するインデックスのみが信号伝達される必要がある。そのような信号伝達は、シーケンスレベル、ピクチャレベル、スライスレベル、コード化単位レベル、又は他のコード化レベルなど、ビデオデータの異なるレベルにおいて与えられ得る。
【０１６２】
[0177]本開示で説明するように、定義済走査順序関数を使用して、ビデオデータをコード化するための方法又は装置は、所定の関数とその関数の１つ以上のパラメータ値とに少なくとも部分的に基づいて、残差ビデオデータのブロックに関連する変換係数の走査順序を定義し、ビデオコード化プロセスにおいて使用するために、走査順序に従って変換係数を走査する。関数は、事前記憶されるか又は動的に生成され得るが、走査順序を生成する際にビデオコーダが使用するために関数が定義されるという意味で定義済みである。
【０１６３】
[0178]エンコーダ側では、変換係数は２Ｄアレイ内に存在し、例えば、ＴＵなどの変換ブロック中に構成され、走査順序関数は、変換係数を１Ｄアレイに走査するための走査順序を定義する。デコーダ側では、変換係数は１次元アレイ内に存在し、例えば、１次元アレイに従って編成され、走査順序関数は、１Ｄアレイから２Ｄアレイに変換係数を走査するための走査順序を定義する。例えば、デコーダは、ＴＵからの変換係数の構成を再生するために変換係数を走査し得る。
【０１６４】
[0179]コード化装置がビデオエンコーダ２０である場合、ビデオエンコーダは、符号化ビデオ中で、１次元アレイ内の走査された変換係数と、走査順序を定義するための関数の１つ以上のパラメータ値とを信号伝達するように構成され得る。コード化装置がビデオデコーダ３０である場合、ビデオデコーダは、符号化ビデオ中で、１Ｄアレイ内の走査された変換係数と、走査順序を定義するための関数の１つ以上のパラメータ値を示す信号伝達とを受信するように構成され得る。
【０１６５】
[0180]残差ビデオデータのブロックは、ビデオデータのコード化ブロックの画素値とビデオデータの予測ブロックの画素値との間の差を示す残差値を含む。変換係数は、残差ビデオデータのブロックに適用される変換によって生成される係数を含み得る。１つ以上のパラメータ値は、残差データのブロックのサイズ、走査方向、及び走査方向強度を含み得る。走査方向は、例えば、垂直又は水平であり得、走査方向強度は、走査が方向のほうへどのくらい強くバイアスされるかを示す値又は数字スケールであり得る。
【０１６６】
[0181]所定の関数に少なくとも部分的に基づいて走査順序を定義することは、方向強度に少なくとも部分的に基づいて閾値を決定することと、閾値に基づいて、ブロックの後の行又は列に関して走査されるべき変換係数を走査する前にブロックの複数の行又は列の各々に関して走査されるべき変換係数の数を定義することとを含み得る。
【０１６７】
[0182]この閾値は、行ごと（又は列ごと）に固定又は可変であり得、例えば、図１１及び図１２を参照しながら説明した方法で実装され得る。従って、ブロック中で走査される行又は列のうちの各連続する行又は列の閾値は、固定値に設定され得るか、又はブロック中で走査される行又は列のうちの各連続する行又は列の閾値の値は、ブロック中で走査される行又は列のうちの先行する行又は列の閾値の値に対して低減され得る。
【０１６８】
[0183]行に関して走査することは、例えば、ビデオエンコーダ２０において、係数の２Ｄアレイ内の行から係数の１Ｄアレイに走査すること、又は、例えば、ビデオデコーダ３０において、係数の１Ｄアレイから係数の２Ｄアレイ内の行に走査することを指し得る。１Ｄ−２Ｄ変換のためにビデオデコーダ３０によって適用される走査順序は、事実上、２Ｄ−１Ｄ変換のためにビデオエンコーダ２０によって適用される走査順序に対して反転され得る。係数は、必ずしも、適用可能なとき、メモリ中の２Ｄ又は１Ｄアレイ内に物理的に保存される必要があるとは限らない。そうではなく、エンコーダ又はデコーダが、既知の走査順序を用いて、例えば、ＴＵ中の係数の構成に対して適切な順序で係数をコード化することができれば十分であり得る。
【０１６９】
[0184]閾値を使用して、走査順序に従って変換係数を走査することは、ブロックの第１の行又は列に関して、閾値に等しい数の係数を走査することを含み得る。第１の行又は列中の変換係数の数が閾値よりも大きい場合、走査順序は、第１の行又は列に関する未走査係数と交互に、第２の行又は列に関する係数のうちの１つ以上を走査することを含み得る。
【０１７０】
[0185]第２の行又は列の閾値は、第１の行又は列の閾値に対して低減され得、走査順序は、第３の行又は列に関する未走査係数を走査する前に、低減された閾値に等しい数の、第２の行又は列に関する未走査係数を走査することを含み得る。従って、所与の行の全ての係数の走査が、別の行中の係数を走査する前に完了する必要はない。所与の行の閾値が満たされた場合、所与の行中の全ての係数の走査が完全に完了していなくても、次の行の走査が開始され得る。このプロセスは、２Ｄ−１Ｄ変換又は１Ｄ−２Ｄ変換のいずれかのために、２Ｄアレイ内の残りの行又は列について続き得る。
【０１７１】
[0186]図１３は、ビデオエンコーダ２０における変換係数の走査順序の関数ベース定義のための例示的な方法を示すフローチャートである。概して、ビデオエンコーダ２０は、所定の関数とその関数の１つ以上のパラメータ値とに少なくとも部分的に基づいて、残差ビデオデータのブロックに関連する変換係数の走査順序を定義することと、ビデオコード化プロセスにおいて使用するために、走査順序に従って変換係数を走査することとを行うように構成され得る。図１３に示すように、ビデオエンコーダ２０は、コード化基準、例えば、ブロックサイズ、コード化モード、変換など、１つ以上の基準に基づいて走査順序関数を選択するか、又は、全てのブロックのために全体的に使用されるべきデフォルト関数を選択する（１２０）。従って、ビデオエンコーダ２０は、複数の関数のうちの１つを選択するか、又は、場合によっては単一の関数であり得るデフォルト関数を使用し得る。
【０１７２】
[0187]ビデオエンコーダは、走査順序関数の走査順序パラメータの値を決定する（１２２）。走査順序パラメータの値は固定又は調整可能であり得る。幾つかの例では、走査順序パラメータは、ビデオエンコーダ２０による走査順序パラメータの異なる組合せの評価に基づいて選択され得る。詳細には、ビデオエンコーダ２０は、トライアルベースでパラメータの様々な組合せを適用し、エントロピーコード化のための係数の効率的な走査を生成する際の、そのようなパラメータの効果を評価し得る。例えば、ビデオエンコーダ２０は、効率的なエントロピーコード化をサポートするために、非０係数と０値係数との最も効率的な配置を生じるパラメータの組合せを選択するか、又は、例えば、所定の閾値に対する、満足な程度の効率を生じる（テストされた組合せのうちの）第１の組合せを選択し得る。
【０１７３】
[0188]ビデオエンコーダ２０によるパラメータの異なる組合せの評価は、網羅的である必要はないが、パラメータの効率的なセットを識別するための作業においてパラメータの様々な組合せをサンプリングし得る。他の例では、１Ｄベクトルにおける係数の効率的な配置を表す何らかの関数を最大にするか又は最小にするために、パラメータの様々な組合せが選択され得る。パラメータの様々な組合せは、１次元で、即ち、他のパラメータを固定したまま、個々のパラメータを個々に調整することによって調整されるか、又は、多次元で、即ち、複数のパラメータを同時に調整することによって調整され得る。ビデオエンコーダ２０は、ブロックごとに、スライスごとに、フレームごとに、又はパラメータ値を調整するため及び／又は走査順序関数を選択するための何らかの他の基準に従って、パラメータの値及び／又は選択された関数を更新し得る。
【０１７４】
[0189]また、幾つかの例では、走査順序パラメータは、ブロックサイズ、コード化モード、変換など、様々なコード化基準のいずれかに少なくとも部分的に従って調整可能であり得る。追加又は代替として、幾つかの例では、ビデオエンコーダ２０は、前にコード化されたブロックについて収集された統計値、例えば、１Ｄベクトルの開始点のほうへの非０係数の効率的な圧縮に関係する統計値に基づいて、走査順序パラメータの値を選択し得る。このようにして、ビデオエンコーダ２０は、走査順序関数によって生成される得られた走査順序が、係数の効率的な配置のほうへバイアスされるように、パラメータを選択し得る。場合によっては、コード化基準及び／又は統計値に基づいて選択されたパラメータ値は、関数とともに使用するために選択されるか、又は、上記で説明したように、異なるパラメータの評価のための開始点として働き得る。
【０１７５】
[0190]選択された走査パラメータ値と走査順序関数とに基づいて、ビデオエンコーダ２０は、変換係数のブロック、例えば、ＨＥＶＣにおけるＴＵ又は他のコード化規格におけるブロックの走査順序を定義する（１２４）。ビデオエンコーダ２０は、走査順序に従って変換係数の２Ｄアレイを走査して、係数の１Ｄアレイを生成する（１２６）。１Ｄアレイは概念的であり得る。特に、１Ｄアレイは、物理的に生成される必要はないことがあり、及び／又はビデオエンコーダ又はデコーダにおいてメモリに保存される必要はないことがある。むしろ、係数は異なる構成で記憶され得る。エンコーダ又はデコーダが、例えば、１Ｄアレイに対して、２Ｄアレイからの各係数をコード化すべき順序を知っているように、エンコーダ及び／又はデコーダが走査順序を知っていれば十分であり得る。例えば、エントロピー符号化ユニット５６又は量子化ユニット５４は、走査順序を生成し、それを適用して係数を走査し得る。ビデオエンコーダ、例えば、ビデオエントロピー符号化ユニット５６は、選択された走査順序パラメータのうちの１つ以上及び／又は選択された関数をデコーダに通信するために信号伝達を生成する（１２８）。信号伝達は、別の機器に送信されるか、又は別の機器によって後で取り出すためにデータ記憶装置に記録される、符号化ビデオビットストリーム中の１つ以上のシンタックス要素としてビデオエンコーダ２０によって符号化され得る。
【０１７６】
[0191]図１４は、ビデオデコーダ３０における変換係数の走査順序の関数ベース定義のための例示的な方法を示すフローチャートである。図１４に示すように、ビデオデコーダ１３０は、符号化されたビットストリーム中で走査順序関数の信号伝達を受信するか、又はデフォルト関数を使用する（１３０）。ビデオデコーダ３０はまた、関数とともに使用する１つ以上の走査順序パラメータの信号伝達を受信する（１３２）。前述のように、幾つかの例では、走査順序パラメータのうちの１つ以上は、ビデオデコーダ３０によって推測され得、その結果、例えば、符号化されたビットストリーム中で、パラメータを明示的に信号伝達する必要はないことがある。しかしながら、他の例では、符号化ビデオビットストリーム中で走査順序パラメータの全てがビデオデコーダ３０に信号伝達され得る。エントロピー復号ユニット７０は、符号化ビデオを復号する際に使用する信号伝達されたパラメータを取得するために、符号化ビデオビットストリームをエントロピー復号し得る。
【０１７７】
[0192]図１４を更に参照すると、ビデオデコーダ３０は、走査順序関数と１つ以上のパラメータとに基づいて走査順序を定義し（１３４）、１つ以上のパラメータは、走査順序を生成するために関数に適用される。ビデオデコーダ３０は、走査順序に従って、符号化ビデオビットストリーム中で受信された変換ブロックのための変換係数の１Ｄアレイを走査して、ビデオ復号の際に使用する係数の２Ｄアレイを生成する（１３６）。このようにして、ビデオデコーダ３０は、所定の関数とその関数の１つ以上のパラメータ値とに少なくとも部分的に基づいて、残差ビデオデータのブロックに関連する変換係数の走査順序を定義し、ビデオ符号化プロセスにおいて使用するために、走査順序に従って変換係数を走査する。
【０１７８】
[0193]図１５は、ビデオエンコーダ２０における変換係数の走査順序の関数ベース定義のための別の例示的な方法を示すフローチャートである。図１５の例では、ビデオエンコーダ２０は、走査順序関数を選択するか又はデフォルト関数を使用し（１４０）、パラメータ値としてブロックサイズを決定し（１４２）、さらなるパラメータ値として変換方向（１４４）と変換方向強度（１４６）とを選択する。走査順序関数とこれらのパラメータとに基づいて、ビデオエンコーダ２０は走査順序を定義し（１４８）、走査順序をブロック中の変換係数の２Ｄアレイに適用して、変換係数の１Ｄアレイを生成する（１５０）。ビデオエンコーダ２０は、パラメータのうちの１つ以上及び／又は走査順序関数の信号伝達を生成し（１５２）、信号伝達された情報を、例えば、１つ以上のシンタックス要素として符号化ビデオビットストリーム中に符号化する。
【０１７９】
[0194]図１６は、ビデオデコーダ３０における変換係数の走査順序の関数ベース定義のための別の例示的な方法を示すフローチャートである。図１６の例では、ビデオデコーダ３０は、走査順序関数の信号伝達を受信するか、又はデフォルト関数を使用する（１６０）。ビデオデコーダ３０は、変換ブロックサイズ（例えば、ＴＵサイズ）、走査方向、走査方向強度などの走査順序パラメータの値の信号伝達を受信する（１６２）。走査順序関数とパラメータとに基づいて、ビデオデコーダ３０は、走査順序を定義し（１６４）、走査順序に従って１Ｄアレイ内の変換係数を走査して、ビデオ復号の際に使用する係数の２Ｄアレイを生成する（１６６）。パラメータの値及び／又は選択された関数は、ブロックごとに、スライスごとに、フレームごとに、又はパラメータ値を更新するため及び／又は走査順序関数を選択するための何らかの他の基準に従って、信号伝達に従って及び／又は１つ以上のパラメータの推測に基づいて更新され得る。
【０１８０】
[0195]１つ以上の例では、本開示において説明した機能は、ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組合せで実施され得る。ソフトウェアで実施した場合、機能は、１つ以上の命令又はコードとしてコンピュータ可読媒体上に記憶されるか、若しくはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、例えば、通信プロトコルに従ってある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含むデータ記憶媒体又は通信媒体など、有形媒体に対応するコンピュータ可読記憶媒体を含み得る。このようにして、コンピュータ可読媒体は、概して、（１）非一時的である有形コンピュータ可読記憶媒体、又は（２）信号若しくは搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明した技術の実施のための命令、コード及び／又はデータ構造を取り出すために１つ以上のコンピュータ若しくは１つ以上のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
【０１８１】
[0196]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ（登録商標）、ＣＤ−ＲＯＭ又は他の光ディスクストレージ、磁気ディスクストレージ、又は他の磁気ストレージ機器、フラッシュメモリ、又は命令若しくはデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。例えば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線（ＤＳＬ）、又は赤外線、無線、及びマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、又は他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、ＤＳＬ、又は赤外線、無線、及びマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。但し、コンピュータ可読記憶媒体及びデータ記憶媒体は、接続、搬送波、信号、又は他の一時媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク（disk）及びディスク（disc）は、コンパクトディスク（disc）（ＣＤ）、レーザーディスク（登録商標）（disc）、光ディスク（disc）、デジタル多用途ディスク（disc）（ＤＶＤ）、フロッピー（登録商標）ディスク（disk）、及びブルーレイ（登録商標）ディスク（disc）を含み、ディスク（disk）は、通常、データを磁気的に再生し、ディスク（disc）は、データをレーザーで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含めるべきである。
【０１８２】
[0197]命令は、１つ以上のデジタル信号プロセッサ（ＤＳＰ）などの１つ以上のプロセッサ、汎用マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブル論理アレイ（ＦＰＧＡ）、若しくは他の等価な集積回路又はディスクリート論理回路によって実行され得る。従って、本明細書で使用する「プロセッサ」という用語は、前述の構造、又は本明細書で説明した技術の実装に好適な他の構造のいずれかを指し得る。更に、幾つかの態様では、本明細書で説明した機能は、符号化及び復号のために構成された専用ハードウェア及び／又はソフトウェアモジュール内に与えられ得、若しくは複合コーデックに組み込まれ得る。また、本技術は、１つ以上の回路又は論理要素において完全に実装され得る。
【０１８３】
[0198]本開示の技術は、ワイヤレスハンドセット、集積回路（ＩＣ）、又はＩＣのセット（例えば、チップセット）を含む、多種多様な機器又は装置において実装され得る。本開示では、開示した技術を実行するように構成された機器の機能的態様を強調するために、様々な構成要素、モジュール、又はユニットについて説明したが、それらの構成要素、モジュール、又はユニットを必ずしも異なるハードウェアユニットによって実現する必要はない。むしろ、上記で説明したように、様々なユニットが、好適なソフトウェア及び／又はファームウェアとともに、上記で説明した１つ以上のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わせられるか、又は相互動作ハードウェアユニットの集合によって与えられ得る。
【０１８４】
様々な例について説明した。これら及び他の例は以下の特許請求の範囲内に入る。
以下に、出願当初の特許請求の範囲に記載された発明を付記する。
［Ｃ１］
ビデオデータを符号化する方法であって、
所定の関数と前記関数の１つ以上のパラメータ値とに少なくとも部分的に基づいて、残差ビデオデータのブロックに関連する変換係数の走査順序を定義することと、
ビデオ符号化プロセスにおいて使用するために、前記走査順序に従って前記変換係数を走査することと、
を備える、方法。
［Ｃ２］
前記変換係数が２次元アレイ内に存在し、前記変換係数を走査することが、前記走査順序に従ってビデオエンコーダにおいて前記変換係数を１次元アレイに走査することを備える、Ｃ１に記載の方法。
［Ｃ３］
コード化ビデオ中で、前記１次元アレイ内の走査された前記変換係数を与えることと、前記走査順序を定義するための前記関数の前記１つ以上のパラメータ値を信号伝達することとを更に備える、Ｃ２に記載の方法。
［Ｃ４］
前記変換係数が１次元アレイ内に存在し、前記変換係数を走査することが、前記走査順序に従ってビデオデコーダにおいて前記変換係数を２次元アレイに走査することを備える、Ｃ１に記載の方法。
［Ｃ５］
コード化ビデオ中で、前記１次元アレイ内の走査された前記変換係数と、前記走査順序を定義するための前記関数の前記１つ以上のパラメータ値を示す信号とを受信することを更に備える、Ｃ４に記載の方法。
［Ｃ６］
コード化ビデオ中で、前記１次元アレイ内の走査された前記変換係数を受信することと、前記走査順序を定義するための前記関数の１つ以上のパラメータ値を推論することとを更に備える、Ｃ４に記載の方法。
［Ｃ７］
残差ビデオデータの前記ブロックが、ビデオデータの符号化ブロックの画素値とビデオデータの予測ブロックの画素値との間の差を示す残差値を含み、前記変換係数が、残差ビデオデータの前記ブロックに適用される変換によって生成される係数を含み、前記１つ以上のパラメータ値が残差データの前記ブロックのサイズを含む、Ｃ１に記載の方法。
［Ｃ８］
残差ビデオデータの前記ブロックが、ビデオデータの符号化ブロックの画素値とビデオデータの予測ブロックの画素値との間の差を示す残差値を含み、前記変換係数が、残差ビデオデータの前記ブロックに適用される変換によって生成される係数を含み、前記１つ以上のパラメータ値が前記走査順序の方向を含む、Ｃ１に記載の方法。
［Ｃ９］
前記１つ以上のパラメータ値が前記走査順序の方向強度を更に含む、Ｃ８に記載の方法。
［Ｃ１０］
前記方向が、水平走査方向及び垂直走査方向のうちの１つを含む、Ｃ９に記載の方法。
［Ｃ１１］
残差ビデオデータの前記ブロックが、ビデオデータの符号化ブロックの画素値とビデオデータの予測ブロックの画素値との間の差を示す残差値を含み、前記変換係数が、残差ビデオデータの前記ブロックに適用される変換によって生成される係数を含み、前記１つ以上のパラメータ値が、残差データの前記ブロックのサイズと、前記走査順序の方向と、前記走査順序の方向強度とを含む、Ｃ１に記載の方法。
［Ｃ１２］
前記１つ以上のパラメータ値が前記走査順序の方向強度を含み、所定の関数に少なくとも部分的に基づいて走査順序を定義することが、前記方向強度に少なくとも部分的に基づいて閾値を決定することを備え、前記走査順序を定義することが、前記閾値に基づいて、前記ブロックの後の行又は列に関して走査されるべき変換係数を走査する前に前記ブロックの複数の行又は列の各々に関して走査されるべき前記変換係数の数を定義することを備える、Ｃ１に記載の方法。
［Ｃ１３］
前記ブロック中で走査される前記行又は前記列のうちの各連続する行又は列の前記閾値を固定値に設定することを更に備える、Ｃ１２に記載の方法。
［Ｃ１４］
前記ブロック中で走査される前記行又は前記列のうちの先行する行又は列の前記閾値の値に対して、前記ブロック中で走査される前記行又は前記列のうちの各連続する行又は列の前記閾値の値を低減することを更に備える、Ｃ１２に記載の方法。
［Ｃ１５］
前記走査順序に従って前記変換係数を走査することは、
前記ブロックの第１の行又は列に関して、前記閾値に等しい数の前記係数を走査することと、
前記第１の行又は列中の変換係数の数が前記閾値よりも大きい場合、前記第１の行又は列に関する未走査係数と交互に、第２の行又は列に関する前記係数のうちの１つ以上を走査することと、
前記第２の行又は列の前記閾値を低減することと、第３の行又は列に関する未走査係数を走査する前に、前記低減された閾値に等しい数の、前記第２の行又は列に関する未走査係数を走査することとを備える、Ｃ１２に記載の方法。
［Ｃ１６］
前記走査順序に従って前記変換係数を走査することが、前記走査順序で前記変換係数のレベル又は符号のうちの少なくとも１つを符号化することを備える、Ｃ１に記載の方法。
［Ｃ１７］
ビデオデータを符号化するための装置であって、前記装置が、
所定の関数と前記関数の１つ以上のパラメータ値とに少なくとも部分的に基づいて、残差ビデオデータのブロックに関連する変換係数の走査順序を定義することと、
ビデオ符号化プロセスにおいて使用するために、前記走査順序に従って前記変換係数を走査することとを行うように構成されたビデオコーダを備える、装置。
［Ｃ１８］
前記変換係数が２次元アレイ内に存在し、前記ビデオコーダが、前記走査順序に従って前記変換係数を１次元アレイに走査するように構成されたビデオエンコーダを備える、Ｃ１７に記載の装置。
［Ｃ１９］
前記ビデオエンコーダが、コード化ビデオ中で、前記１次元アレイ内の走査された前記変換係数を与えることと、前記走査順序を定義するための前記関数の前記１つ以上のパラメータ値を信号伝達することとを行うように構成された、Ｃ１８に記載の装置。
［Ｃ２０］
前記変換係数が１次元アレイ内に存在し、前記ビデオコーダが、前記走査順序に従って前記変換係数を２次元アレイに走査するように構成されたビデオデコーダを備える、Ｃ１７に記載の装置。
［Ｃ２１］
前記ビデオデコーダが、コード化ビデオ中で、前記１次元アレイ内の走査された前記変換係数と、前記走査順序を定義するための前記関数の前記１つ以上のパラメータ値を示す信号とを受信するように構成された、Ｃ２０に記載の装置。
［Ｃ２２］
前記ビデオデコーダが、コード化ビデオ中で、前記１次元アレイ内の走査された前記変換係数を受信することと、前記走査順序を定義するための前記関数の１つ以上のパラメータ値を推論することとを行うように構成された、Ｃ２０に記載の装置。
［Ｃ２３］
残差ビデオデータの前記ブロックが、ビデオデータの符号化ブロックの画素値とビデオデータの予測ブロックの画素値との間の差を示す残差値を含み、前記変換係数が、残差ビデオデータの前記ブロックに適用される変換によって生成される係数を含み、前記１つ以上のパラメータ値が残差データの前記ブロックのサイズを含む、Ｃ１７に記載の装置。
［Ｃ２４］
残差ビデオデータの前記ブロックが、ビデオデータの符号化ブロックの画素値とビデオデータの予測ブロックの画素値との間の差を示す残差値を含み、前記変換係数が、残差ビデオデータの前記ブロックに適用される変換によって生成される係数を含み、前記１つ以上のパラメータ値が前記走査順序の方向を含む、Ｃ１７に記載の装置。
［Ｃ２５］
前記１つ以上のパラメータ値が前記走査順序の方向強度を更に含む、Ｃ２４に記載の装置。
［Ｃ２６］
前記方向が、水平走査方向及び垂直走査方向のうちの１つを含む、Ｃ２４に記載の装置。
［Ｃ２７］
残差ビデオデータの前記ブロックが、ビデオデータの符号化ブロックの画素値とビデオデータの予測ブロックの画素値との間の差を示す残差値を含み、前記変換係数が、残差ビデオデータの前記ブロックに適用される変換によって生成される係数を含み、前記１つ以上のパラメータ値が、残差データの前記ブロックのサイズと、前記走査順序の方向と、前記走査順序の方向強度とを含む、Ｃ１７に記載の装置。
［Ｃ２８］
前記１つ以上のパラメータ値が前記走査順序の方向強度を含み、前記符号化ユニットが、前記方向強度に少なくとも部分的に基づいて閾値を決定することと、前記閾値に基づいて、前記ブロックの後の行又は列に関して走査されるべき変換係数を走査する前に前記ブロックの複数の行又は列の各々に関して走査されるべき前記変換係数の数を定義することとを行うように構成された、Ｃ１７に記載の装置。
［Ｃ２９］
前記ビデオコーダが、前記ブロック中で走査される前記行又は前記列のうちの各連続する行又は列の前記閾値を固定値に設定するように構成された、Ｃ２８に記載の装置。
［Ｃ３０］
前記ビデオコーダが、前記ブロック中で走査される前記行又は前記列のうちの先行する行又は列の前記閾値の値に対して、前記ブロック中で走査される前記行又は前記列のうちの各連続する行又は列の前記閾値の値を低減するように構成された、Ｃ２８に記載の装置。
［Ｃ３１］
前記ビデオコーダが、
前記ブロックの第１の行又は列に関して、前記閾値に等しい数の前記係数を走査することと、
前記第１の行又は列中の変換係数の数が前記閾値よりも大きい場合、前記第１の行又は列に関する未走査係数と交互に、第２の行又は列に関する前記係数のうちの１つ以上を走査することと、
前記第２の行又は列の前記閾値を低減することと、第３の行又は列に関する未走査係数を走査する前に、前記低減された閾値に等しい数の、前記第２の行又は列に関する未走査係数を走査することとを行うように構成された、Ｃ２８に記載の装置。
［Ｃ３２］
前記ビデオコーダがビデオデコーダを備える、Ｃ２８に記載の装置。
［Ｃ３３］
前記ビデオコーダがビデオエンコーダを備える、Ｃ２８に記載の装置。
［Ｃ３４］
前記ビデオコーダが、前記走査順序で前記変換係数のレベル又は符号のうちの少なくとも１つを符号化するように構成された、Ｃ１７に記載の装置。
［Ｃ３５］
ビデオデータを符号化するための装置であって、
所定の関数と前記関数の１つ以上のパラメータ値とに少なくとも部分的に基づいて、残差ビデオデータのブロックに関連する変換係数の走査順序を定義するための手段と、
ビデオ符号化プロセスにおいて使用するために、前記走査順序に従って前記変換係数を走査するための手段とを備える、装置。
［Ｃ３６］
前記変換係数が２次元アレイ内に存在し、前記変換係数を走査するための前記手段が、前記走査順序に従ってビデオエンコーダにおいて前記変換係数を１次元アレイに走査するための手段を備える、Ｃ３５に記載の装置。
［Ｃ３７］
コード化ビデオ中で、前記１次元アレイ内の走査された前記変換係数を与えるための手段と、前記走査順序を定義するための前記関数の前記１つ以上のパラメータ値を信号伝達するための手段とを更に備える、Ｃ３６に記載の装置。
［Ｃ３８］
前記変換係数が１次元アレイ内に存在し、前記変換係数を走査するための前記手段が、前記走査順序に従ってビデオデコーダにおいて前記変換係数を２次元アレイに走査するための手段を備える、Ｃ３５に記載の装置。
［Ｃ３９］
コード化ビデオ中で、前記１次元アレイ内の走査された前記変換係数と、前記走査順序を定義するための前記関数の前記１つ以上のパラメータ値を示す信号伝達とを受信するための手段を更に備える、Ｃ３８に記載の装置。
［Ｃ４０］
残差ビデオデータの前記ブロックが、ビデオデータの符号化ブロックの画素値とビデオデータの予測ブロックの画素値との間の差を示す残差値を含み、前記変換係数が、残差ビデオデータの前記ブロックに適用される変換によって生成される係数を含み、前記１つ以上のパラメータ値が前記走査順序の方向と前記走査順序の方向強度とを含む、Ｃ３５に記載の装置。
［Ｃ４１］
前記方向が、水平走査方向及び垂直走査方向のうちの１つを含む、Ｃ４０に記載の装置。
［Ｃ４２］
残差ビデオデータの前記ブロックが、ビデオデータの符号化ブロックの画素値とビデオデータの予測ブロックの画素値との間の差を示す残差値を含み、前記変換係数が、残差ビデオデータの前記ブロックに適用される変換によって生成される係数を含み、前記１つ以上のパラメータ値が、残差データの前記ブロックのサイズと、前記走査順序の方向と、前記走査順序の方向強度とを含む、Ｃ３５に記載の装置。
［Ｃ４３］
前記１つ以上のパラメータ値が前記走査順序の方向強度を含み、所定の関数に少なくとも部分的に基づいて走査順序を定義するための前記手段が、前記方向強度に少なくとも部分的に基づいて閾値を決定するための手段を備え、前記走査順序を定義するための前記手段が、前記閾値に基づいて、前記ブロックの後の行又は列に関して走査されるべき変換係数を走査する前に前記ブロックの複数の行又は列の各々に関して走査されるべき前記変換係数の数を定義するための手段を備える、Ｃ３５に記載の装置。
［Ｃ４４］
前記ブロック中で走査される前記行又は前記列のうちの先行する行又は列の前記閾値の値に対して、前記ブロック中で走査される前記行又は前記列のうちの各連続する行又は列の前記閾値の値を低減するための手段を更に備える、Ｃ４３に記載の装置。
［Ｃ４５］
前記走査順序に従って前記変換係数を走査するための前記手段は、
前記ブロックの第１の行又は列に関して、前記閾値に等しい数の前記係数を走査するための手段と、
前記第１の行又は列中の変換係数の数が前記閾値よりも大きい場合、前記第１の行又は列に関する未走査係数と交互に、第２の行又は列に関する前記係数のうちの１つ以上を走査するための手段と、
前記第２の行又は列の前記閾値を低減するための手段と、第３の行又は列に関する未走査係数を走査する前に、前記低減された閾値に等しい数の、前記第２の行又は列に関する未走査係数を走査するための手段とを備える、Ｃ４３に記載の装置。
［Ｃ４６］
所定の関数と前記関数の１つ以上のパラメータ値とに少なくとも部分的に基づいて、残差ビデオデータのブロックに関連する変換係数の走査順序を定義することと、
ビデオ符号化プロセスにおいて使用するために、前記走査順序に従って前記変換係数を走査することとをビデオコーダに行わせるための命令を備えるコンピュータ可読媒体。
［Ｃ４７］
前記変換係数が２次元アレイ内に存在し、前記命令が、前記走査順序に従ってビデオエンコーダにおいて前記変換係数を１次元アレイに走査することを前記ビデオコーダに行わせ、前記命令が、コード化ビデオ中で、前記１次元アレイ内の走査された前記変換係数を与えることと、前記走査順序を定義するための前記関数の前記１つ以上のパラメータ値を信号伝達することとを前記ビデオコーダに行わせる、Ｃ４６に記載のコンピュータ可読媒体。
［Ｃ４８］
前記変換係数が１次元アレイ内に存在し、前記命令が、前記走査順序に従ってビデオデコーダにおいて前記変換係数を２次元アレイに走査することを前記ビデオコーダに行わせ、前記命令が、コード化ビデオ中で、前記１次元アレイ内の走査された前記変換係数と、前記走査順序を定義するための前記関数の前記１つ以上のパラメータ値を示す信号伝達とを受信することを前記ビデオコーダに行わせる、Ｃ４６に記載のコンピュータ可読媒体。
［Ｃ４９］
残差ビデオデータの前記ブロックが、ビデオデータの符号化ブロックの画素値とビデオデータの予測ブロックの画素値との間の差を示す残差値を含み、前記変換係数が、残差ビデオデータの前記ブロックに適用される変換によって生成される係数を含み、前記１つ以上のパラメータ値が残差データの前記ブロックのサイズを含む、Ｃ４６に記載のコンピュータ可読媒体。
［Ｃ５０］
残差ビデオデータの前記ブロックが、ビデオデータの符号化ブロックの画素値とビデオデータの予測ブロックの画素値との間の差を示す残差値を含み、前記変換係数が、残差ビデオデータの前記ブロックに適用される変換によって生成される係数を含み、前記１つ以上のパラメータ値が前記走査順序の方向を含み、前記１つ以上のパラメータ値が前記走査順序の方向強度を更に含み、前記方向が、水平走査方向及び垂直走査方向のうちの１つを含む、Ｃ４６に記載のコンピュータ可読媒体。
【図１】
0006271477.tif 000003
【図２】
0006271477.tif 000004
【図３】
0006271477.tif 000005
【図４】
0006271477.tif 000006
【図５】
0006271477.tif 000007
【図６】
0006271477.tif 000008
【図７】
0006271477.tif 000009
【図８】
0006271477.tif 000010
【図９】
0006271477.tif 000011
【図１０】
0006271477.tif 000012
【図１１】
0006271477.tif 000013
【図１２】
0006271477.tif 000014
【図１３】
0006271477.tif 000015
【図１４】
0006271477.tif 000016
【図１５】
0006271477.tif 000017
【図１６】
0006271477.tif 000018