"ビデオデータを符号化する方法であって、前記方法は、幾何学的動き区分線を使用してビデオデータのブロックを第1の区分と第2の区分とに区分化することと、前記幾何学的動き区分線の、整数値を有する傾斜値及びy切片値を計算することと、前記第1の区分中の前記ブロックの画素と前記第2の区分中の前記ブロックの画素とを示すマスクを計算することと、前記マスクに基づいて前記第1の区分と前記第2の区分とを符号化することと、前記符号化された第1の区分と、前記符号化された第2の区分と、前記傾斜値と、前記y切片値とを出力することと、を含む、方法。前記マスクを計算することが、固定小数点演算のみを使用して前記マスクを計算することを含む、請求項1に記載の方法。前記マスクが、それぞれのx値及びy値を含む点のセットを含み、前記マスクを計算することは、前記マスク中の各点について、前記マスク中の前記点の前記値を、前記点の前記y値と、前記傾斜値と前記点の前記x値との積と、の間の差が前記y切片値よりも大きいかどうかを示す値に設定することを含む、請求項1に記載の方法。前記マスクに基づいて前記第1の区分と前記第2の区分とを符号化することは、前記マスクを使用して、前記ブロック中の画素が前記第1の区分に対応するのか前記第2の区分に対応するのかを決定することと、前記第1の区分のための動きベクトルによって示される参照ブロックから前記第1の区分中の画素についての予測値を取り出すことと、前記第2の区分のための動きベクトルによって示される参照ブロックから前記第2の区分中の画素についての予測値を取り出すこととを含む、請求項1に記載の方法。遷移領域中の前記ブロックの画素のセットを決定することと、前記第1の区分のための前記動きベクトルによって示される前記参照ブロックと、前記第2の区分のための前記動きベクトルによって示される前記参照ブロックとに基づいて、前記遷移領域中の画素の前記セットについての予測値を計算することと、をさらに含む、請求項4に記載の方法。前記幾何学的動き区分線の前記傾斜値及び前記y切片値を計算することは、角度値及び長さ値に基づいて初期傾斜値及び初期y切片値を計算することと、前記初期傾斜値及び前記初期y切片値と、2のべき乗を含む1つ以上の値との積を計算することと、前記傾斜値及び前記y切片値を形成するために前記積を最も近い整数値に丸めることと、を含み、前記角度値が、x軸に対する、前記幾何学的動き区分線に直交し原点を通る線の角度を有し、前記長さ値は、前記原点から、前記直交線が前記幾何学的動き区分線と交わる点までの距離を有する、請求項1に記載の方法。ビデオデータを符号化するための装置であって、前記装置は、幾何学的動き区分線を使用してビデオデータのブロックを第1の区分と第2の区分とに区分化することと、前記幾何学的動き区分線の、整数値を有する傾斜値及びy切片値を計算することと、前記第1の区分中の前記ブロックの画素と前記第2の区分中の前記ブロックの画素とを示すマスクを計算することと、前記マスクに基づいて前記第1の区分と前記第2の区分とを符号化することと、前記符号化された第1の区分と、前記符号化された第2の区分と、前記傾斜値と、前記y切片値とを出力することとを行うように構成されたビデオエンコーダを備える、装置。前記ビデオエンコーダが、固定小数点演算のみを使用して前記マスクを計算するように構成された、請求項7に記載の装置。前記マスクが、それぞれのx値及びy値を含む点のセットを有し、前記マスクを計算するために、前記ビデオエンコーダは、前記マスク中の各点について、前記マスク中の前記点の前記値を、前記点の前記y値と、前記傾斜値と前記点の前記x値との積と、の間の差が前記y切片値よりも大きいかどうかを示す値に設定するように構成された、請求項7に記載の装置。前記マスクに基づいて前記第1の区分と前記第2の区分とを符号化するために、前記ビデオエンコーダは、前記マスクを使用して、前記ブロック中の画素が前記第1の区分に対応するのか前記第2の区分に対応するのかを決定することと、前記第1の区分のための動きベクトルによって示される参照ブロックから前記第1の区分中の画素についての予測値を取り出すことと、前記第2の区分のための動きベクトルによって示される参照ブロックから前記第2の区分中の画素についての予測値を取り出すこととを行うように構成された、請求項7に記載の装置。前記ビデオエンコーダが、遷移領域中の前記ブロックの画素のセットを決定することと、前記第1の区分のための前記動きベクトルによって示される前記参照ブロックと、前記第2の区分のための前記動きベクトルによって示される前記参照ブロックとに基づいて、前記遷移領域中の画素の前記セットについての予測値を計算することとを行うように構成された、請求項10に記載の装置。前記幾何学的動き区分線の前記傾斜値及び前記y切片値を計算するために、前記ビデオエンコーダは、角度値及び長さ値に基づいて初期傾斜値及び初期y切片値を計算することと、前記初期傾斜値及び前記初期y切片値と、2のべき乗を含む1つ以上の値との積を計算することと、前記傾斜値及び前記y切片値を形成するために前記積を最も近い整数値に丸めることとを行うように構成され、前記角度値が、x軸に対する、前記幾何学的動き区分線に直交し原点を通る線の角度を備え、前記長さ値は、前記原点から、前記直交線が前記幾何学的動き区分線と交わる点までの距離を有する、請求項7に記載の装置。ビデオデータを符号化するための装置であって、前記装置は、幾何学的動き区分線を使用してビデオデータのブロックを第1の区分と第2の区分とに区分化するための手段と、前記幾何学的動き区分線の、整数値を有する傾斜値及びy切片値を計算するための手段と、前記第1の区分中の前記ブロックの画素と前記第2の区分中の前記ブロックの画素とを示すマスクを計算するための手段と、前記マスクに基づいて前記第1の区分と前記第2の区分とを符号化するための手段と、前記符号化された第1の区分と、前記符号化された第2の区分と、前記傾斜値と、前記y切片値とを出力するための手段と、を備える、装置。前記マスクを計算するための前記手段が、固定小数点演算のみを使用して前記マスクを計算するための手段を備える、請求項13に記載の装置。前記マスクが、それぞれのx値及びy値を含む点のセットを備え、前記マスクを計算するための前記手段は、前記マスク中の各点について、前記マスク中の前記点の前記値を、前記点の前記y値と、前記傾斜値と前記点の前記x値との積と、の間の差が前記y切片値よりも大きいかどうかを示す値に設定するための手段を備える、請求項13に記載の装置。前記マスクに基づいて前記第1の区分と前記第2の区分とを符号化するための前記手段は、前記マスクを使用して、前記ブロック中の画素が前記第1の区分に対応するのか前記第2の区分に対応するのかを決定するための手段と、前記第1の区分のための動きベクトルによって示される参照ブロックから前記第1の区分中の画素についての予測値を取り出すための手段と、前記第2の区分のための動きベクトルによって示される参照ブロックから前記第2の区分中の画素についての予測値を取り出すための手段と、を備える、請求項13に記載の装置。遷移領域中の前記ブロックの画素のセットを決定するための手段と、前記第1の区分のための前記動きベクトルによって示される前記参照ブロックと、前記第2の区分のための前記動きベクトルによって示される前記参照ブロックとに基づいて、前記遷移領域中の画素の前記セットについての予測値を計算するための手段と、をさらに備える、請求項16に記載の装置。前記幾何学的動き区分線の前記傾斜値及び前記y切片値を計算するための前記手段は、角度値及び長さ値に基づいて初期傾斜値及び初期y切片値を計算するための手段と、前記初期傾斜値及び前記初期y切片値と、2のべき乗を含む1つ以上の値との積を計算するための手段と、前記傾斜値及び前記y切片値を形成するために前記積を最も近い整数値に丸めるための手段と、を備え、前記角度値が、x軸に対する、前記幾何学的動き区分線に直交し原点を通る線の角度を有し、前記長さ値は、前記原点から、前記直交線が前記幾何学的動き区分線と交わる点までの距離を有する、請求項13に記載の装置。実行されると、幾何学的動き区分線を使用してビデオデータのブロックを第1の区分と第2の区分とに区分化することと、前記幾何学的動き区分線の、整数値を有する傾斜値及びy切片値を計算することと、前記第1の区分中の前記ブロックの画素と前記第2の区分中の前記ブロックの画素とを示すマスクを計算することと、前記マスクに基づいて前記第1の区分と前記第2の区分とを符号化することと、前記符号化された第1の区分と、前記符号化された第2の区分と、前記傾斜値と、前記y切片値とを出力することと、をプロセッサに行わせる命令を記憶したコンピュータ可読記憶媒体を備えるコンピュータプログラム製品。前記マスクを計算することを前記プロセッサに行わせる前記命令が、固定小数点演算のみを使用して前記マスクを計算することを前記プロセッサに行わせる命令を含む、請求項19に記載のコンピュータプログラム製品。前記マスクが、それぞれのx値及びy値を含む点のセットを備え、前記マスクを計算することを前記プロセッサに行わせる前記命令は、前記マスク中の各点について、前記マスク中の前記点の前記値を、前記点の前記y値と、前記傾斜値と前記点の前記x値との積と、の間の差が前記y切片値よりも大きいかどうかを示す値に設定することを前記プロセッサに行わせる命令を含む、請求項19に記載のコンピュータプログラム製品。前記マスクに基づいて前記第1の区分と前記第2の区分とを符号化することを前記プロセッサに行わせる前記命令は、前記マスクを使用して、前記ブロック中の画素が前記第1の区分に対応するのか前記第2の区分に対応するのかを決定することと、前記第1の区分のための動きベクトルによって示される参照ブロックから前記第1の区分中の画素についての予測値を取り出すことと、前記第2の区分のための動きベクトルによって示される参照ブロックから前記第2の区分中の画素についての予測値を取り出すことと、を前記プロセッサに行わせる命令を含む、請求項19に記載のコンピュータプログラム製品。遷移領域中の前記ブロックの画素のセットを決定することと、前記第1の区分のための前記動きベクトルによって示される前記参照ブロックと、前記第2の区分のための前記動きベクトルによって示される前記参照ブロックとに基づいて、前記遷移領域中の画素の前記セットについての予測値を計算することと、を前記プロセッサに行わせる命令をさらに含む、請求項22に記載のコンピュータプログラム製品。前記幾何学的動き区分線の前記傾斜値及び前記y切片値を計算することを前記プロセッサに行わせる前記命令は、角度値及び長さ値に基づいて初期傾斜値及び初期y切片値を計算することであって、前記角度値が、x軸に対する、前記幾何学的動き区分線に直交し原点を通る線の角度を備え、前記長さ値は、前記原点から、前記直交線が前記幾何学的動き区分線と交わる点までの距離を備える、計算することと、前記初期傾斜値及び前記初期y切片値と、2のべき乗を含む1つ以上の値との積を計算することと、前記傾斜値及び前記y切片値を形成するために前記積を最も近い整数値に丸めることと、を前記プロセッサに行わせる命令を含む、請求項19に記載のコンピュータプログラム製品。ビデオデータを復号する方法であって、前記方法は、幾何学的動き区分線によって第1の区分と第2の区分とに区分化されたビデオデータの符号化されたブロックを受信することと、前記幾何学的動き区分線を定義する傾斜値及びy切片値を受信することであって、前記傾斜値及び前記y切片値が整数値を備える、受信することと、前記第1の区分中の前記ブロックの画素と前記第2の区分中の前記ブロックの画素とを示すマスクを計算することと、前記マスクに基づいて前記ブロックの前記第1の区分と前記第2の区分とを復号することと、前記復号されたブロックを出力することと、を含む、方法。前記マスクを計算することが、固定小数点演算のみを使用して前記マスクを計算することを含む、請求項25に記載の方法。前記マスクが、それぞれのx値及びy値を含む点のセットを備え、前記マスクを計算することは、前記マスク中の各点について、前記マスク中の前記点の前記値を、前記点の前記y値と、前記傾斜値と前記点の前記x値との積と、の間の差が前記y切片値よりも大きいかどうかを示す値に設定することを含む、請求項25に記載の方法。前記マスクに基づいて前記第1の区分と前記第2の区分とを復号することは、前記マスクを使用して、前記ブロック中の画素が前記第1の区分に対応するのか前記第2の区分に対応するのかを決定することと、前記第1の区分のための動きベクトルによって示される参照ブロックから前記第1の区分中の画素についての予測値を取り出すことと、前記第2の区分のための動きベクトルによって示される参照ブロックから前記第2の区分中の画素についての予測値を取り出すことと、を含む、請求項25に記載の方法。遷移領域中の前記ブロックの画素のセットを決定することと、前記第1の区分のための前記動きベクトルによって示される前記参照ブロックと、前記第2の区分のための前記動きベクトルによって示される前記参照ブロックとに基づいて、前記遷移領域中の画素の前記セットについての予測値を計算することと、をさらに含む、請求項28に記載の方法。ビデオデータを復号するための装置であって、前記装置は、幾何学的動き区分線によって第1の区分と第2の区分とに区分化されたビデオデータの符号化されたブロックを受信することと、前記幾何学的動き区分線を定義し、整数値を有する傾斜値及びy切片値を受信することと、前記第1の区分中の前記ブロックの画素と前記第2の区分中の前記ブロックの画素とを示すマスクを計算することと、前記マスクに基づいて前記ブロックの前記第1の区分と前記第2の区分とを復号することと、前記復号されたブロックを出力することとを行うように構成されたビデオデコーダを備える、装置。前記ビデオデコーダが、固定小数点演算のみを使用して前記マスクを計算するように構成された、請求項30に記載の装置。前記マスクが、それぞれのx値及びy値を含む点のセットを備え、前記マスクを計算するために、前記ビデオデコーダは、前記マスク中の各点について、前記マスク中の前記点の前記値を、前記点の前記y値と、前記傾斜値と前記点の前記x値との積と、の間の差が前記y切片値よりも大きいかどうかを示す値に設定するように構成された、請求項30に記載の装置。前記マスクに基づいて前記第1の区分と前記第2の区分とを復号するために、前記ビデオデコーダは、前記マスクを使用して、前記ブロック中の画素が前記第1の区分に対応するのか前記第2の区分に対応するのかを決定することと、前記第1の区分のための動きベクトルによって示される参照ブロックから前記第1の区分中の画素についての予測値を取り出すことと、前記第2の区分のための動きベクトルによって示される参照ブロックから前記第2の区分中の画素についての予測値を取り出すこととを行うように構成された、請求項30に記載の装置。前記ビデオデコーダが、遷移領域中の前記ブロックの画素のセットを決定することと、前記第1の区分のための前記動きベクトルによって示される前記参照ブロックと、前記第2の区分のための前記動きベクトルによって示される前記参照ブロックとに基づいて、前記遷移領域中の画素の前記セットについての予測値を計算することとを行うように構成された、請求項33に記載の装置。ビデオデータを復号するための装置であって、前記装置は、幾何学的動き区分線によって第1の区分と第2の区分とに区分化されたビデオデータの符号化されたブロックを受信するための手段と、前記幾何学的動き区分線を定義し、整数値を有する傾斜値及びy切片値を受信するための手段と、前記第1の区分中の前記ブロックの画素と前記第2の区分中の前記ブロックの画素とを示すマスクを計算するための手段と、前記マスクに基づいて前記ブロックの前記第1の区分と前記第2の区分とを復号するための手段と、前記復号されたブロックを出力するための手段と、を備える、装置。前記マスクを計算するための前記手段が、固定小数点演算のみを使用して前記マスクを計算するための手段を備える、請求項35に記載の装置。前記マスクが、それぞれのx値及びy値を含む点のセットを備え、前記マスクを計算するための前記手段は、前記マスク中の各点について、前記マスク中の前記点の前記値を、前記点の前記y値と、前記傾斜値と前記点の前記x値との積と、の間の差が前記y切片値よりも大きいかどうかを示す値に設定するための手段を備える、請求項35に記載の装置。前記マスクに基づいて前記第1の区分と前記第2の区分とを復号するための前記手段は、前記マスクを使用して、前記ブロック中の画素が前記第1の区分に対応するのか前記第2の区分に対応するのかを決定するための手段と、前記第1の区分のための動きベクトルによって示される参照ブロックから前記第1の区分中の画素についての予測値を取り出すための手段と、前記第2の区分のための動きベクトルによって示される参照ブロックから前記第2の区分中の画素についての予測値を取り出すための手段と、を備える、請求項35に記載の装置。遷移領域中の前記ブロックの画素のセットを決定するための手段と、前記第1の区分のための前記動きベクトルによって示される前記参照ブロックと、前記第2の区分のための前記動きベクトルによって示される前記参照ブロックとに基づいて、前記遷移領域中の画素の前記セットについての予測値を計算するための手段と、をさらに備える、請求項38に記載の装置。実行されると、幾何学的動き区分線によって第1の区分と第2の区分とに区分化されたビデオデータの符号化されたブロックを受信することと、前記幾何学的動き区分線を定義する傾斜値及びy切片値を受信することであって、前記傾斜値及び前記y切片値が整数値を備える、受信することと、前記第1の区分中の前記ブロックの画素と前記第2の区分中の前記ブロックの画素とを示すマスクを計算することと、前記マスクに基づいて前記ブロックの前記第1の区分と前記第2の区分とを復号することと、前記復号されたブロックを出力することと、をプロセッサに行わせる命令を記憶したコンピュータ可読記憶媒体を含むコンピュータプログラム製品。前記マスクを計算することを前記プロセッサに行わせる前記命令が、固定小数点演算のみを使用して前記マスクを計算することを前記プロセッサに行わせる命令を含む、請求項40に記載のコンピュータプログラム製品。前記マスクが、それぞれのx値及びy値を含む点のセットを備え、前記マスクを計算することを前記プロセッサに行わせる前記命令は、前記マスク中の各点について、前記マスク中の前記点の前記値を、前記点の前記y値と、前記傾斜値と前記点の前記x値との積と、の間の差が前記y切片値よりも大きいかどうかを示す値に設定することを前記プロセッサに行わせる命令を含む、請求項40に記載のコンピュータプログラム製品。前記マスクに基づいて前記第1の区分と前記第2の区分とを復号することを前記プロセッサに行わせる前記命令は、前記マスクを使用して、前記ブロック中の画素が前記第1の区分に対応するのか前記第2の区分に対応するのかを決定することと、前記第1の区分のための動きベクトルによって示される参照ブロックから前記第1の区分中の画素についての予測値を取り出すことと、前記第2の区分のための動きベクトルによって示される参照ブロックから前記第2の区分中の画素についての予測値を取り出すことと、を前記プロセッサに行わせる命令を含む、請求項40に記載のコンピュータプログラム製品。遷移領域中の前記ブロックの画素のセットを決定することと、前記第1の区分のための前記動きベクトルによって示される前記参照ブロックと、前記第2の区分のための前記動きベクトルによって示される前記参照ブロックとに基づいて、前記遷移領域中の画素の前記セットについての予測値を計算することと、を前記プロセッサに行わせる命令をさらに含む、請求項43に記載のコンピュータプログラム製品。概して、本開示では、ビデオブロックの幾何学的動き区分をサポートするための技法について説明する。即ち、矩形ブロックを2つ以上の厳密に矩形の区分に区分化するのではなく、本開示の技法は、幾何学的動き区分と呼ばれる、任意の区分境界を使用してブロックを区分化することを可能にする。区分線は、2つのパラメータ、即ち、区分線に直交し、区分化されたブロックの中心点において発する線分の長さρローと、区分化されたブロックの中心点を通る水平線に対する直交線の角度θシータとを使用して定義され得る。幾つかの例では、区分線がブロックのどの画素も通らないように、区分線は、各区分の画素を分画する階段線によって実現され得る。例及び説明のために、本開示では、マクロブロックの幾何学的動き区分のための技法について説明する。しかしながら、これらの技法は、概してビデオデータの任意のブロックを区分化するために適用され得ることを理解されたい。マクロブロックという用語は、一般に16×16画素のサイズを有する2次元画素アレイを使用して、デジタルピクチャ及びビデオデータを符号化するためのデータ構造を指す。マクロブロックは、クロミナンスデータとルミナンスデータとを含み得る。一般に、クロミナンスデータは、ルミナンスデータに対して、水平及び垂直に2分の1にダウンサンプリングされる。従って、マクロブロックは、4つのルミナンスブロックと2つのクロミナンスブロックとを含み得る。4つのルミナンスブロックの各々は8×8画素を備え得、マクロブロックの各コーナーは、ルミナンスブロックのうちの厳密に1つのコーナーによって接触され得る。2つのクロミナンスブロックは、クロミナンスブロックの各々のコーナーがマクロブロックのそれぞれのコーナーに接触するような8×8画素ブロックであり得る。従って、クロミナンスブロックは、互いと重複し、ルミナンスブロックと重複し得る。ビデオ符号化規格は、一般に、ビデオデータのブロックを符号化するための様々な予測モードを与える。イントラ予測は、スライス又はフレームのブロックを同じスライス又はフレームの他のブロックに対して符号化することを伴う。インター予測は、動き推定及び動き補償技法を使用して、スライス又はフレームのブロックを1つ以上の他のスライス又はフレームに対して符号化することを可能にする。概して幾何学的動き区分を対象とする、本開示の技法は、任意の区分サイズ及び形状を可能にし得る。即ち、上記のρ値とθ値とを使用して定義される区分線により、マクロブロックを符号化するために非矩形区分を使用することが可能になり得る。特に、本開示の技法では、幾何学的動き区分のための動きベクトルを生成し、幾何学的動き区分に基づいて動き補償を実行するための技法について説明する。幾何学的動き区分線は、ブロックを矩形区分に区分化することに限定されない。幾つかの例では、幾何学的動き区分線はN×NブロックをN×Mブロックに区分化し得るが、幾何学的動き区分はまた、ブロックを、例えば、三角形区分などの非矩形区分に区分化する能力を与える。このようにして、幾何学的動き区分線は、ブロックの1つの水平方向境界及びブロックの1つの垂直方向境界と交差し得る。幾つかの例では、幾何学的動き区分をサポートすることは、修正動き補償技法modifiedmotioncompensationtechniqueの使用を含む。特に、修正動き補償技法は、幾何学的動き区分線の近くの遷移領域中の画素のための平滑化フィルタを与え得る。本開示の動き補償技法は、そのような重複画素についての残差値を決定することを含み得る。一例では、本開示の技法は、この境界領域において動き補償を実行するための低域フィルタ例えば、平滑化フィルタを定義する。即ち、幾何学的区分線における区分間の遷移を平滑化する様々なフィルタが定義され得る。画素が遷移領域内に入った場合、画素についての予測値を決定するために、これらのフィルタのうちの1つを適用することによって、その画素のための動き補償が実行され得、フィルタは、区分のための動きベクトルによって識別される予測ブロックからの値を適用し、次いで予測値と符号化されるべき画素の値との間の差を決定する。この差は、画素についての残差値を表し得る。別の例では、幾何学的に区分化されたブロックの境界領域において動き補償を実行するために、重み付き平均が使用され得る。即ち、画素についての動き補償値を決定するために、2つの区分からの画素についての値の重み付き平均が計算され得る。画素が比較的より近接している区分についての値は、他の区分についての値よりも重く重み付けされ得る。画素についての予測値は、このようにして計算され得、次いで、残差値を計算するために使用されるか、又は予測値に受信した残差値を適用することによって符号化されたブロックを再構成するために使用され得る。本開示はまた、幾何学的動き区分を使用して区分化されたブロックの残差を符号化するための技法を含む。幾何学的区分を用いてブロックの残差を符号化するために、区分線の位置に基づいて、適応変換サイズが使用され得る。概して、N×N画素の各サブブロックブロックについて、区分がブロックを横断しない場合は、サブブロックについての残差はN×N変換サイズを使用して符号化され得、他の場合は、N×NサブブロックはN/2×N/2サブブロックに再分割され得、N/2×N/2サブブロックの各々は、区分線がサブブロックを横断するかどうかに関して再分析され得る。例えば、ブロックサイズが16×16であると仮定する。内部の各8×8サブブロックについて、8×8ブロック内の全ての画素が同じ区分に属する場合は、8×8変換が使用され得、他の場合は、4つの4×4変換が使用され得る。別の例として、ブロックサイズが32×32又は64×64であるとき、各32×32又は16×16内部サブブロックについて、16×16ブロック内の全ての画素が同じ区分に属する場合は、16×16変換が使用され得、他の場合は、そのロジックが各16×16サブブロックについて繰り返され得る。本開示はさらに、幾何学的動き区分線を使用して区分化されるブロックの区分のための動きベクトルを符号化するための技法を提供する。これらの技法は、動きベクトルの動き予測子を選択することを含み得、動き予測子の候補は、同じブロックの2つの区分の動きベクトルについて異なり得る。動き予測子の候補はまた、従来の符号化規格のものよりも多くの潜在的な動き予測子を含み得る。本開示の技法はまた、固定小数点実装形態において適用され得る。特に、幾何学的動き区分線は、線の傾斜mとy切片cとを表す固定小数点例えば、整数値を使用して定義され得る。エンコーダ及びデコーダが固定小数点値から同じマスクを作成するように、エンコーダ及びデコーダはそれぞれ、幾何学的動き区分を評価するために固定小数点演算を使用するように構成され得る。エンコーダ及びデコーダは、次のようにマスクを計算するように構成され得る。マスクの各点x,yについて、y-mx<cである場合は、マスク中のx,yにおける点の値は1であり、y-mx≧cである場合は、マスク中のx,yにおける点の値は0である。このようにして、エンコーダ及びデコーダは、マスク中の各点について、マスク中の点の値が、点のy値と、線の傾斜値と点のx値との積と、の間の差が線のy切片値よりも大きいかどうかを示す値に設定されるようにそれぞれのx値及びy値によって定義された点のセットを備えるマスクを計算するように構成され得る。マスク中の各点の値は1ビット値を備え得る。値0を有するマスク中の点は領域0に対応するが、値1を有するマスク中の点は領域1に対応する。幾何学的動き区分によって定義されるように、領域0は1つの区分であり得、領域1は別の区分であり得る。従って、浮動小数点演算を使用して、幾何学的動き区分の中心点に対する角度θシータ及び距離ρローからマスクを計算するのではなく、エンコーダ及びデコーダは、角度及び中心点値に基づいて、傾斜m及びy切片cについての固定小数点、整数値を使用してマスクを計算するように構成され得る。本開示の技法はまた、特定のブロック又はブロックのセットのために幾何学的動き区分が使用されるかどうかをシグナリングすることと、使用される場合、ブロック又はブロックのセットのために固定小数点演算が使用されるべきなのか浮動小数点演算が使用されるべきなのかをシグナリングすることとを含み得る。図1は、幾何学的動き区分のための技法を利用し得る例示的なビデオ符号化及び復号システム10を示すブロック図である。図1に示すように、システム10は、通信チャネル16を介して符号化ビデオを宛先機器14に送信するソース機器12を含む。ソース機器12及び宛先機器14は、広範囲の機器のいずれかを備え得る。場合によっては、ソース機器12及び宛先機器14は、ワイヤレスハンドセット、いわゆるセルラー電話又は衛星無線電話などのワイヤレス通信機器、又は通信チャネル16を介してビデオ情報を通信することができる任意のワイヤレス機器を備え得、その場合、通信チャネル16はワイヤレスである。但し、幾何学的動き区分に関係する本開示の技法は、必ずしもワイヤレス適用例又は設定に限定されるとは限らない。例えば、これらの技法は、無線テレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、インターネットビデオ送信、記憶媒体上に符号化される符号化デジタルビデオ、又は他のシナリオに適用され得る。従って、通信チャネル16は、符号化ビデオデータの送信に好適なワイヤレス無線又はワイヤード有線媒体の任意の組合せを備え得る。図1の例では、ソース機器12は、ビデオソース18と、ビデオエンコーダ20と、変調器/復調器モデム22と、送信機24とを含む。宛先機器14は、受信機26と、モデム28と、ビデオデコーダ30と、表示装置32とを含む。本開示によれば、ソース機器12のビデオエンコーダ20は、幾何学的動き区分のための技法を適用するように構成され得る。他の例では、ソース機器及び宛先機器が他の構成要素又は構成を含み得る。例えば、ソース機器12は、外部カメラなどの外部ビデオソース18からビデオデータを受信し得る。同様に、宛先機器14は、一体型表示装置を含むのではなく、外部表示装置とインターフェースし得る。図1の図示のシステム10は一例にすぎない。幾何学的動き区分のための技法は、任意のデジタルビデオ符号化及び/又は復号化装置によって実行され得る。概して、本開示の技法はビデオ符号化装置によって実行されるが、本技法は、一般にコーデックと呼ばれるビデオエンコーダ/デコーダによっても実行され得る。さらに、本開示の技法の幾つかの態様はビデオプリプロセッサによっても実行され得る。ソース機器12及び宛先機器14は、ソース機器12が宛先機器14に送信するためのコード化ビデオデータを生成するような、符号化装置の例にすぎない。幾つかの例では、機器12、14の各々がビデオ符号化構成要素及び復号構成要素を含むので、機器12、14は、実質的に対称的に動作し得る。従って、システム10は、例えば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスト、又はビデオ電話通信のためのビデオ機器12とビデオ機器14との間の一方向又は双方向のビデオ送信をサポートし得る。ソース機器12のビデオソース18は、ビデオカメラなどの撮像機、以前に撮像されたビデオを含んでいるビデオアーカイブ、及び/又はビデオコンテンツプロバイダからのビデオフィードを含み得る。さらなる代替として、ビデオソース18は、ソースビデオとしてのコンピュータグラフィックスベースのデータ、又は生中継ビデオとアーカイブビデオとコンピュータ発生ビデオとの組合せを発生し得る。場合によっては、ビデオソース18がビデオカメラである場合、ソース機器12及び宛先機器14は、いわゆるカメラ付き携帯電話又はビデオ電話を形成し得る。但し、上述のように、本開示で説明する技法は、一般にビデオ符号化に適用可能であり、ワイヤレス及び/又はワイヤード適用例に適用可能であり得る。各場合において、撮像されたビデオ、以前に撮像されたビデオ、又はコンピュータ発生ビデオはビデオエンコーダ20によって符号化され得る。次いで、符号化ビデオ情報は、通信規格に従ってモデム22によって変調され、送信機24を介して宛先機器14に送信され得る。モデム22は、信号変調のために設計された様々なミキサ、フィルタ、増幅器又は他の構成要素を含み得る。送信機24は、増幅器、フィルタ、及び1つ以上のアンテナを含む、データを送信するために設計された回路を含み得る。宛先機器14の受信機26はチャネル16を介して情報を受信し、モデム28は情報を復調する。この場合も、ビデオ符号化プロセスは、幾何学的動き区分のための本明細書で説明する技法のうちの1つ以上を実装し得る。チャネル16を介して通信される情報は、マクロブロック及び他の符号化ユニット、例えば、ピクチャグループGOPの特性及び/又は処理を記述するシンタックス要素を含む、ビデオデコーダ30によっても使用される、ビデオエンコーダ20によって定義されるシンタックス情報を含み得る。表示装置32は、復号されたビデオデータをユーザに対して表示し、陰極線管CRT、液晶表示器LCD、プラズマ表示器、有機発光ダイオードOLED表示器、又は別のタイプの表示装置など、様々な表示装置のいずれかを備え得る。図1の例では、通信チャネル16は、無線周波数RFスペクトル又は1つ以上の物理的伝送線路など、ワイヤレス又はワイヤードの任意の通信媒体、或いはワイヤレス及びワイヤードの媒体の任意の組合せを備え得る。通信チャネル16は、ローカルエリアネットワーク、ワイドエリアネットワーク、又はインターネットなどのグローバルネットワークなど、パケットベースのネットワークの一部を形成し得る。通信チャネル16は、一般に、ワイヤード又はワイヤレス媒体の任意の好適な組合せを含む、ビデオデータをソース機器12から宛先機器14に送信するのに好適な任意の通信媒体、又は様々な通信媒体の集合体を表す。通信チャネル16は、ソース機器12から宛先機器14への通信を可能にするのに有用であり得るルータ、スイッチ、基地局、又は任意の他の機器を含み得る。ビデオエンコーダ20及びビデオデコーダ30は、代替的にMPEG-4、Part10、AdvancedVideoCodingAVCと呼ばれるITU-TH.264規格など、ビデオ圧縮規格に従って動作し得る。但し、本開示の技法は、いかなる特定の符号化規格にも限定されない。他の例には、MPEG-2及びITU-TH.263がある。図1には示されていないが、幾つかの態様では、ビデオエンコーダ20及びビデオデコーダ30は、それぞれオーディオエンコーダ及びデコーダと統合され得、適切なMUX-DEMUXユニット、又は他のハードウェア及びソフトウェアを含んで、共通のデータストリーム又は別個のデータストリーム中のオーディオとビデオの両方の符号化を処理し得る。適用可能な場合、MUX-DEMUXユニットはITUH.223マルチプレクサプロトコル、又はユーザデータグラムプロトコルUDPなどの他のプロトコルに準拠し得る。ITU-TH.264/MPEG-4AVC規格は、JointVideoTeamJVTとして知られる共同パートナーシップの成果として、ISO/IECMovingPictureExpertsGroupMPEGとともにITU-TVideoCodingExpertsGroupVCEGによって策定された。幾つかの態様では、本開示で説明する技法は、H.264規格に概して準拠する機器に適用され得る。H.264規格は、ITU-TStudyGroupによる2005年3月付けのITU-T勧告H.264AdvancedVideoCodingforgenericaudiovisualservicesに記載されており、本明細書ではH.264規格又はH.264仕様、或いはH.264/AVC規格又は仕様と呼ぶことがある。JointVideoTeamJVTはH.264/MPEG-4AVCへの拡張に取り組み続けている。ビデオエンコーダ20及びビデオデコーダ30はそれぞれ、1つ以上のマイクロプロセッサ、デジタル信号プロセッサDSP、特定用途向け集積回路ASIC、フィールドプログラマブルゲートアレイFPGA、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアなどの様々な好適なエンコーダ回路のいずれか、又はそれらの任意の組合せとして実装され得る。ビデオエンコーダ20及びビデオデコーダ30の各々を1つ以上のエンコーダ又はデコーダ中に含めることができ、そのいずれかは複合エンコーダ/デコーダコーデックの一部としてそれぞれのカメラ、コンピュータ、モバイル機器、加入者機器、ブロードキャスト機器、セットトップボックス、サーバなどに統合され得る。ビデオシーケンスは、一般に、ビデオピクチャとも呼ばれる一連のビデオフレームを含む。ピクチャグループGOPは、概して、一連の1つ以上のビデオフレームを備える。GOPは、GOP中に含まれる幾つかのフレームを記述するシンタックスデータを、GOPのヘッダ、GOPの1つ以上のフレームのヘッダ、又は他の場所中に含め得る。各フレームは、それぞれのフレームについての符号化モードを記述するフレームシンタックスデータを含み得る。ビデオエンコーダ20は、一般に、ビデオデータを符号化するために、個々のビデオフレーム内のビデオブロックに対して動作する。ビデオブロックは、マクロブロック、マクロブロックの区分、又はマクロブロックよりも大きいブロックに対応し得る。ビデオブロックは、固定サイズ又は可変サイズを有し得、指定の符号化規格に応じてサイズが異なり得る。各ビデオフレームは1つ以上のスライスを含み得る。各スライスは複数のマクロブロックを含み得、それらはサブブロックとも呼ばれる区分に配置され得る。一例として、ITU-TH.264規格は、ルーマ成分については16×16、8×8、又は4×4、及びクロマ成分については8×8など、様々なブロックサイズのイントラ予測をサポートし、ならびにルーマ成分については16×16、16×8、8×16、8×8、8×4、4×8及び4×4、及びクロマ成分については対応するスケーリングされたサイズなど、様々なブロックサイズのインター予測をサポートする。本開示では、N×xNとN×byNは、垂直寸法及び水平寸法に関するブロックの画素寸法、例えば、16×x16画素又は16×by16画素を指すために互換的に使用され得る。一般に、16×16ブロックは、垂直方向に16画素を有しy=16、水平方向に16画素を有するx=16。同様に、N×Nブロックは、一般に、垂直方向にN画素を有し、水平方向にN画素を有し、Nは、非負整数値を表す。ブロック中の画素は行と列に配置され得る。その上、ブロックは、必ずしも、水平方向において垂直方向と同じ数の画素を有する必要はない。例えば、ブロックはN×M個の画素を備え得、Mは必ずしもNに等しいとは限らない。16×16よりも小さいブロックサイズは16×16マクロブロックの区分と呼ばれることがある。ビデオブロックは、画素領域中の画素データのブロックを備え得、或いは、例えば、コード化ビデオブロックと予測ビデオブロックとの画素差分を表す残差ビデオブロックデータへの離散コサイン変換DCT、整数変換、ウェーブレット変換、又は概念的に同様の変換などの変換の適用後の、変換領域中の変換係数のブロックを備え得る。場合によっては、ビデオブロックは、変換領域中の量子化変換係数のブロックを備え得る。より小さいビデオブロックは、より良好な解像度を与えることができ、高い詳細レベルを含むビデオフレームのロケーションのために使用され得る。一般に、マクロブロック及び様々な区分はサブブロックと呼ばれることがあり、ビデオブロックと見なされ得る。さらに、スライスは、マクロブロック及び/又はサブブロックなどの複数のビデオブロックであると見なされ得る。各スライスはビデオフレームの単独で復号可能なユニットであり得る。代替的に、フレーム自体が復号可能なユニットであり得るか、又はフレームの他の部分が復号可能なユニットとして定義され得る。符号化ユニット又は符号化ユニットという用語は、フレーム全体、フレームのスライス、シーケンスとも呼ばれるピクチャグループGOPなど、ビデオフレームの単独で復号可能な任意のユニット、又は適用可能な符号化技法に従って定義される別の単独で復号可能なユニットを指し得る。本開示の技法によれば、ビデオエンコーダ20は、ブロック、例えば、マクロブロックのインターモード符号化中に幾何学的動き区分を使用するように構成され得る。即ち、ビデオエンコーダ20は、幾何学的区分とも呼ばれる幾何学的動き区分線を使用して、ブロックが最も良く符号化され得ると決定し得る。原点は、ブロックの中心にあると仮定される。その場合、各幾何学的動き区分線は、区分境界を定義する線に直交する、原点を通る線によって定義される。即ち、ビデオエンコーダ20は、2つのパラメータ、即ち、区分線に直交し、区分化されたブロックの中心点において発する線分の長さρローと、区分化されたブロックの中心点を通る水平線に対する直交線の角度θシータとを使用して、幾何学的動き区分線を定義し得る。言い換えれば、幾何学的動き区分線は、X軸に対して直交線によって定められた角度と、原点からの区分線の距離とによって定義される。ビデオエンコーダ20は、ブロックが2つの区分に区分化されるべきであると決定し、2つの区分間の分割に最も良く適合するρ,θに従って定義された区分線を計算するように構成され得る。以下の式1は、幾何学的動き区分線を次のように定義する。様々な例では、ビデオエンコーダ20は、例えば、16×16、32×32、及び/又は64×64ブロックなど、固定又は可変サイズのブロックを使用するように構成され得る。概して、N×Nブロックの場合、ビデオエンコーダ20は、両端値を含む[0,N/2-1]の範囲内のρについての値を選択し得る。従って、16×16ブロックの場合、ビデオエンコーダ20は、両端値を含む[0,7]の範囲内のρについての値を選択するように構成され得る。別の例として、32×32ブロックの場合、ビデオエンコーダ20は、両端値を含む[0,15]の範囲内のρについての値を選択するように構成され得る。さらに別の例として、64×64ブロックの場合、ビデオエンコーダ20は、両端値を含む[0,31]の範囲内のρについての値を選択するように構成され得る。幾つかの例では、ビデオエンコーダ20は、両端値を含む[0,31]の範囲内のθについての値を選択するように構成され得る。従って、θについての値の範囲は、11.25度のステップサイズを有し得る。これらの例では、ブロックサイズが16×16の場合は、256個の可能な幾何学的区分があり得、ブロックサイズが32×32の場合は、512個の可能な幾何学的区分があり得、ブロックサイズが64×64の場合は、1024個の可能な幾何学的区分があり得る。しかしながら、ブロックサイズならびにρ及びθのステップサイズの選択は、必ずしも前述の値に限定されるとは限らない。ビデオエンコーダ20及びビデオデコーダ30は、特定の画素がどの幾何学的動き区分に対応するかを決定するように構成され得、エンコーダ及びデコーダが所与の画素について同じ区分を選択するように構成されるべきである。幾つかの例では、ビデオエンコーダ20及びビデオデコーダ30は、幾何学的動き区分を使用してブロックを区分化するときに固定小数点計算を使用し得る。画素が領域0に対応するのか領域1に対応するのかの指示は、0が、画素が領域0に属することを示し、1が、画素が領域1に属することを示すバイナリマスクとして効率的に記憶され得る。可能な幾何学的区分の数及びブロックサイズのために、ビデオエンコーダ20及びビデオデコーダ30において全てのマスクを記憶することは法外であり得る。従って、本開示は、オンザフライで、幾つかの例では、固定小数点演算を使用して、マスクを計算するための技法を含む。式1における傾斜m及びy切片cは三角関数を含んでおり、従って、この式に厳密に基づくオンザフライでのマスクの計算は、浮動小数点実装形態を必要とするであろう。場合によっては、2つの機器が、一致する浮動小数点実装形態を有することは、困難であるか、さらには不可能である。従って、マスクは、固定小数点演算を使用して計算され得る。従って、遷移領域中の画素についての予測値を計算することは、第1の区分中のブロックの画素と第2の区分中のブロックの画素とを示すマスクを計算することと、固定小数点演算を使用してマスクに基づいて第1の区分中の遷移領域中の画素の少なくとも1つの隣接画素の位置を特定し、第2の区分中の少なくとも1つの隣接画素の位置を特定することとを含み得る。固定小数点演算を使用する例では、幾何学的動き区分が無限傾斜と無限y切片とをもつ垂直線になるので、θ=0及びθ=πである場合は除外され得る。残りの場合には、1tanθ及び1sinθは、固定小数点値を使用して表され得る。他のパラメータρは、すでに整数として表され得る。1tanθの場合、θの残りの値についての最大絶対値は5.0273であり、1tanθの2つの連続値間の最大絶対差は0.1989であり得る。同様に、1sinθの場合、最大絶対値は5.1258であり得、1sinθの2つの連続値間の最大絶対差は0.0196であり得る。マスク計算を固定小数点演算に変換するために、ビデオエンコーダ20は、1tanθ及び1sinθに、好適な2のべき乗を乗算し、その結果を最も近い整数に丸め得る。一例では、固定小数点実装形態の場合、ビデオエンコーダ20は、1tanθ及び1sinθに220又は1048576を乗算し、それらを最も近い整数に丸め得る。ステップサイズ1をもつ最高64×64ブロックサイズの例では、ρの最大値が32であるので、25ビット符号付き実装形態はy切片値を表すのに十分である。式mx中のxが-32から31までの値を取ることができるので、mxは25ビット符号付き整数としても表され得る。幾つかの例では、ビデオエンコーダ20及びビデオデコーダ30は、θの32個の値の各々について、32ビットの符号付き整数を使用して1tanθの値と1sinθの値とを記憶し得る。sin関数及びtan関数の対称性のために、ビデオエンコーダ20及びビデオデコーダ30は、傾き及び切片の8つの値のみを32ビット符号付き整数として記憶するように構成され得る。上記のように、これらの記憶された値は、θ=0及びθ=πのときは使用する必要がない。ビデオエンコーダ20及びビデオデコーダ30は、固定小数点演算を使用して同じマスクを導出するように構成され得る。これは、ビデオエンコーダ20とビデオデコーダ30との間にドリフトエラーを生じることを回避し得、さもなければ幾何学的動き区分によってドリフトエラーが生じ得る。領域0中の任意の点x0,y0について、y0-mx0≧cとなるように領域0を定義する。同様に、領域1中の任意の点x1,y1について、y1-mx1<cとなるように領域1を定義する。任意の幾何学的動き区分及び任意の点x,yについて、ビデオエンコーダ20は、固定小数点においてy-mxを計算し、その結果をy切片と比較して、その点が領域0に属するのか領域1に属するのかを決定し得る。θ=0又はθ=πのとき、幾何学的動き区分は、x=ρによって定義される垂直線である。その場合、x<ρの場合のブロックからの全ての点は、区分0に属するように定義され得、残りの点x≧ρは、区分1に属するように定義され得る。ビデオエンコーダ20及びビデオデコーダ30は、どの点が領域0に対応するか、及びどの点が領域1に対応するかを示すブロックのためのマスクを計算するために、ブロック中の各点にわたって反復するように構成され得る。固定小数点演算を使用してブロックのためのマスクを計算した後、幾何学ベースの動き区分のための残りの計算はマスクに基づき得る。このようにして、ビデオエンコーダ20は、幾何学的動き区分線を使用してビデオデータのブロックを第1の区分と第2の区分とに区分化することと、幾何学的動き区分線の傾斜値及びy切片値を計算することであって、傾斜値及びy切片値が整数値を備える、計算することと、第1の区分中のブロックの画素と第2の区分中のブロックの画素とを示すマスクを計算することと、マスクに基づいて第1の区分と第2の区分とを符号化することと、符号化された第1の区分と、符号化された第2の区分と、傾斜値と、y切片値とを出力することとを行うように構成されたビデオエンコーダの例に対応し得る。幾何学的動き区分を使用したブロックの区分は、ブロックの2つの非矩形区分を生成し得、各非矩形区分はそれぞれの動きベクトルを有する。それらの区分は、符号化されているブロックについての予測値に対応し得る。ビデオエンコーダ20はまた、幾何学的動き区分のための動きベクトルを符号化し得る。ビデオエンコーダ20は、動き予測子に対して動きベクトルを符号化し得る。ビデオエンコーダ20は、ブロックを符号化するときにラスタ走査順序を仮定して、すでに符号化されている隣接ブロック、例えば、現在のブロックの上のブロック、左のブロック、及び右上のブロックの動きベクトルの中央値として、動き予測子を選択し得る。本開示の技法は、従来の符号化規格において使用されるものよりも広い、候補動きベクトルのセットから、中央値を選択することと、ブロックの各動きベクトルについて潜在的に異なる候補動きベクトルを使用することとを含む。即ち、ビデオエンコーダ20は、単一のブロックの幾何学的動き区分の動きベクトルのための異なる動き予測子を使用すると決定し得る。さらに、ビデオエンコーダ20はブロックについての残差値を計算する。概して、ブロックの画素についての残差値は、ブロックの画素についての実効値とブロックのコロケート画素についての予測値との間の差に対応する。一例では、本開示の技法は、幾何学的動き区分線にわたる遷移を平滑化することを含む。そうするために、ビデオエンコーダ20は、区分線の周りの特定の遷移領域で構成され得る。一例として、ビデオエンコーダ20は、現在の画素を中心とする3×3画素ウィンドウを使用するように構成され得る。一例として、ビデオエンコーダ20は、すぐ上の画素、すぐ下の画素、すぐ左の画素、及びすぐ右の画素のうちの少なくとも2つが異なる区分に属する場合、現在の画素が遷移領域中にあると決定するように構成され得る。別の例として、ビデオエンコーダ20は、すぐ隣の8つの隣接画素のうちの少なくとも2つが異なる区分に属する場合、現在の画素が遷移領域中にあると決定するように構成され得る。他の例では、これらの方式は、現在の画素が遷移領域に属するかどうかを決定する際に画素が考慮される、現在の画素の周りを中心とするウィンドウの異なるサイズに拡張され得る。遷移を平滑化するために、ビデオエンコーダ20は、区分線にわたって低域フィルタを適用するように構成され得る。フィルタは、フィルタ処理されるべき画素を中心とする係数の行列、例えば、3×3行列に対応し得る。従って、フィルタは、遷移領域中の画素を中心とし得る。低域フィルタは様々な係数を有し得る。低域フィルタの一例は以下の通りであり得る。1→2→12→3→21→2→1但し、係数3は現在の画素に対応し、他の係数は、現在の画素のすぐ隣の他の隣接画素に対応する。低域フィルタの別の例は以下の通りであり得る。0→1→01→4→10→1→0但し、係数4は現在の画素に対応し、他の係数は、現在の画素のすぐ隣の他の隣接画素に対応する。遷移領域中の画素についての予測値を計算するために、ビデオエンコーダ20は、フィルタが遷移領域中の画素を中心とするときフィルタの係数と、係数とコロケートされる画素の値との積を計算し、積の和を計算し、積の和を係数の和で除算し得る。このようにして、ビデオエンコーダ20は、幾何学的動き区分線を使用してビデオデータのブロックを第1の区分と第2の区分とに区分化することと、第1の区分からの少なくとも1つの隣接画素についての値と第2の区分からの少なくとも1つの隣接画素についての値とを適用するフィルタを使用してブロックの遷移領域中の画素の予測値を計算することと、遷移領域中の画素の予測値に基づいてブロックの遷移領域中の画素の残差値を計算することと、画素の残差値を出力することとを行うように構成されたビデオエンコーダの例に対応する。幾つかの例では、遷移領域における平滑化のために、ビデオエンコーダ20は、現在の画素を中心とする様々な条件に基づいてフィルタ処理を選択的に実行する。条件は、区分線に直交する方向に沿った画素値の差又はある形状の勾配と、ブロックの2つの区分間の動きベクトル差と、区分線方向と、参照フレームインデックスと、量子化パラメータと、2つの区分の画素の数とを含み得る。遷移領域中の画素をフィルタ処理するかどうか、及びどのようにフィルタ処理すべきかを決定するために、他の条件も分析され得る。視覚的品質を改善するための別の方法は、遷移領域内の画素についての2つの予測を重ねることを含む。ビデオエンコーダ20は、ブロックの区分のための各動きベクトルを使用して、遷移領域に属する画素についての2つの予測を生成し得る。ビデオエンコーダ20は、次いで、重み付け和を使用して2つの予測を組み合わせ得る。例えば、画素が区分1に属しており、遷移領域中にもある場合、ビデオエンコーダ20は、第1の区分値からの予測値は2/3の重みを使用して重み付けし得、他の区分からの予測値は1/3の重みを使用して重み付けし得る。他の例では、3/4,1/4又は1/2,1/2などの他の重み値が適用され得る。幾つかの例では、重み値は適応的に決定され得る。幾つかの例では、重み付け和演算のための重み付け係数は、現在の画素を中心とする様々な条件に基づいて決定される。条件は、区分線に直交する方向に沿った画素値の差又はある形状の勾配と、ブロックの2つの区分間の動きベクトル差と、区分線方向と、参照フレームインデックスと、量子化パラメータと、2つの区分の画素の数とを含み得る。遷移領域中の画素をフィルタ処理するかどうか、及びどのようにフィルタ処理すべきかを決定するために、他の条件も分析され得る。ビデオエンコーダ20は、離散コサイン変換、4×4整数変換、8×8変換、16×16変換、又は他の変換などの変換を残差値に適用し得る。一例では、ビデオエンコーダ20は、幾何学的動き区分線が区分を通るかどうかに基づいて、ブロックの区分の残差のために変換サイズを適応的に選択し得る。この例では、区分という用語は、幾何学的動き区分とは反対に、N×NブロックのN/2×N/2又はより小さい区分を指す。一例として、幾何学的動き区分線を使用してN×Nブロックが区分化されると仮定する。ビデオエンコーダ20は、N×Nブロックを4つの重複しないN/2×N/2ブロックに分割し得る。その場合、各N/2×N/2ブロックについて、ビデオエンコーダ20は、幾何学的動き区分がN/2×N/2を通るかどうかを決定し得る。幾何学的動き区分線がN/2×N/2ブロックを通らない場合、ビデオエンコーダ20はブロックのためのN/2×N/2の変換サイズを使用し得る。一方、幾何学的動き区分線がN/2×N/2を通る場合、ビデオエンコーダ20は、N/2×N/2を4つの重複しないN/4×N/4ブロックに分割し、幾何学的動き区分線がN/4×N/4ブロックのいずれかを通るかどうかを決定する、という方法を再帰的に実行し得る。ビデオエンコーダ20は、最小変換サイズ、例えば、4×4で構成され得、その場合、ビデオエンコーダ20は、幾何学的動き区分線がサブブロックを通るかどうかにかかわらず、サブブロックのための最小変換サイズを選択し得る。このようにして、ビデオエンコーダ20は、幾何学的動き区分線を使用してビデオデータのN×N画素を有するブロックを第1の幾何学的区分と第2の幾何学的区分とに区分化し、ビデオデータのブロックを4つの等しいサイズの重複しないN/2×N/2サブブロックに分割し、N/2×N/2よりも小さい変換サイズを使用して、幾何学的動き区分線がそれを通るサブブロックのうちの少なくとも1つを符号化するように構成されたビデオエンコーダの例に対応し得る。予測データと残差データとを生成するためのイントラ予測符号化又はインター予測符号化の後、及び変換係数を生成するためのH.264/AVCで使用される4×4又は8×8整数変換、或いは離散コサイン変換DCTなどの任意の変換の後、変換係数の量子化が実行され得る。量子化は、一般に、係数を表すために使用されるデータ量をできるだけ低減するために変換係数を量子化するプロセスを指す。量子化プロセスは、係数の一部又は全部に関連するビット深度を低減し得る。例えば、量子化中にnビット値がmビット値に切り捨てられ得、但し、nはmよりも大きい。量子化の後、例えば、コンテンツ適応型可変長符号化CAVLC、コンテキスト適応型バイナリ算術符号化CABAC、又は別のエントロピー符号化方法に従って、量子化データのエントロピー符号化が実行され得る。エントロピー符号化用に構成された処理ユニット又は別の処理ユニットは、量子化係数のゼロランレングス符号化、及び/又はコード化ブロックパターンCBP値、マクロブロックタイプ、符号化モード、フレーム、スライス、マクロブロック、又はシーケンスなどの符号化ユニットの最大マクロブロックサイズなどのシンタックス情報の生成など、他の処理機能を実行し得る。ビデオエンコーダ20は、ブロックベースのシンタックスデータ、フレームベースのシンタックスデータ、及びGOPベースのシンタックスデータなどのシンタックスデータを、例えば、フレームヘッダ、ブロックヘッダ、スライスヘッダ、又はGOPヘッダ中でビデオデコーダ30にさらに送り得る。例えば、ビデオエンコーダ20が、幾何学的動き区分を定義する角度値及び長さ値のための整数を与える場合、固定小数点演算を可能にするために、ビデオエンコーダ20は、整数の使用をシグナリングし得る。ビデオエンコーダ20は、シーケンスパラメータセット又はピクチャパラメータセット中でこれをシグナリングし得る。代替的に、ビデオエンコーダ20は、プロファイル及び/又はレベルの再定義されたセットを使用し得、従って、幾何学的動き区分に関して固定小数点演算を可能にするように、整数値の使用を示すプロファイルインジケータprofile_idc又はレベルインジケータlevel_idc値を選択し得る。ビデオエンコーダ20はまた、幾何学的動き区分が一連のピクチャ及び/又は個々のピクチャのために使用可能であるかどうかをシグナリングし得る。その上、ビデオエンコーダ20は、平滑化がブロックのために使用可能であったかどうか、使用可能であった場合、平滑化がどのように達成されるか、例えば、平滑化フィルタの指示を信号伝達し得る。例えば、ビデオエンコーダ20は平滑化フィルタの係数を信号伝達し得る。ビデオエンコーダ20は、適応変換サイズ選択が使用可能であるかどうかも信号伝達し得る。ビデオエンコーダ20は、動き予測子に対して動きベクトルを符号化するために、候補動きベクトルの拡張されたセットがピクチャについて許容されるかどうかも信号伝達し得る。ビデオデコーダ30は、受信したビデオデータを復号するときに本開示の技法を使用するように構成され得る。ビデオデコーダ30によって適用される技法は、ビデオエンコーダ20によって適用される技法と本質的に対称的であり得る。例えば、ビデオデコーダ30は、これらの技法の固定小数点実装形態を達成するために、符号化されたブロックのための幾何学的動き区分を定義する傾斜及び切片についての固定小数点値を受信し得る。従って、ビデオデコーダ30は、幾何学的動き区分の傾斜及び切片に基づいて、オンザフライでブロックのためのマスクを計算し得、画素が領域0に入るのか領域1に入るのかを決定するためにブロックのための各画素ロケーションにわたって反復する。このようにして、ビデオデコーダ30は、幾何学的動き区分線によって第1の区分と第2の区分とに区分化されたビデオデータの符号化されたブロックを受信することと、幾何学的動き区分線を定義し、整数値を有する傾斜値及びy切片値を受信することと、第1の区分中のブロックの画素と第2の区分中のブロックの画素とを示すマスクを計算することと、マスクに基づいてブロックの第1の区分と第2の区分とを復号することと、復号されたブロックを出力することとを行うように構成されたビデオデコーダの例に対応し得る。別の例として、ビデオデコーダ30は、ブロックのための幾何学的動き区分線においてブロックの遷移領域を平滑化するための平滑化技法を実装し得る。ビデオデコーダ30は、ブロックの画素についての予測値を決定するために、ブロックの各幾何学的動き区分のための動きベクトルを受信し得る。ビデオデコーダ30は、上記で説明したように、幾何学的動き区分遷移領域中の画素に平滑化フィルタを適用し得る。従って、ビデオデコーダ30は、ビデオデータの符号化されたブロックと、符号化されたブロックを第1の区分と第2の区分とに区分化する幾何学的動き区分線の定義と、ブロックの遷移領域中の画素についての残差値とを受信することと、第1の区分からの少なくとも1つの隣接画素についての値と第2の区分からの少なくとも1つの隣接画素についての値とを適用するフィルタを使用してブロックの遷移領域中の画素の予測値を計算することと、予測値及び残差値に基づいてブロックの遷移領域中の画素についての再構成値を計算することと、画素の再構成値を出力することとを行うように構成されたビデオデコーダの例に対応し得る。さらに別の例として、ビデオデコーダ30は、適応変換サイズ選択に基づいて、様々なサイズの残差値のためのキーワードを受信し得る。これらのキーワードは可変長符号に対応し得、ブロックのための変換サイズに基づいて異なる辞書に対応し得る。従って、ビデオデコーダ30は、幾何学的動き区分線がブロックを通るかどうかに基づいて特定のブロックのための変換サイズを決定し得る。このようにして、ビデオデコーダ30は、幾何学的動き区分線によって第1の幾何学的区分と第2の幾何学的区分とに区分化されたビデオデータの符号化され、N×N画素を有するブロックを受信することと、ビデオデータのブロックを4つの等しいサイズの重複しないN/2×N/2サブブロックに分割することと、N/2×N/2よりも小さい変換サイズを使用して、幾何学的動き区分線がそれを通るサブブロックのうちの少なくとも1つを逆変換することとを行うように構成されたビデオデコーダの例に対応し得る。さらに別の例として、ビデオデコーダ30は、動き予測子に対して幾何学的動き区分のための動きベクトルを復号し得る。本開示の技法によれば、ビデオデコーダ30は、候補動きベクトルのより大きいセットから動き予測子を決定し得、各幾何学的区分についての動き予測子を個々に決定し得る。このようにして、ビデオデコーダ30は、幾何学的動き区分線によって第1の区分と第2の区分とに区分化されたビデオデータのブロックと、第1の区分のための第1の符号化された動きベクトルと、第2の区分のための第2の符号化された動きベクトルとを受信することと、第1の区分に隣接するブロックのための動きベクトルから選択される第1の動き予測子に基づいて第1の符号化された動きベクトルを復号することと、第2の区分に隣接し、第1の区分に隣接するブロックとは無関係に決定されるブロックのための動きベクトルから選択される第2の動き予測子に基づいて第2の符号化された動きベクトルを復号することと、復号された第1及び第2の動きベクトルを使用してブロックを復号することとを行うように構成されたビデオデコーダの例に対応し得る。ビデオエンコーダ20及びビデオデコーダ30はそれぞれ、適用可能なとき、1つ以上のマイクロプロセッサ、デジタル信号プロセッサDSP、特定用途向け集積回路ASIC、フィールドプログラマブルゲートアレイFPGA、ディスクリート論理回路、ソフトウェア、ハードウェア、ファームウェアなどの様々な好適なエンコーダ又はデコーダ回路のいずれか、或いはそれらの任意の組合せとして実装され得る。ビデオエンコーダ20及びビデオデコーダ30の各々は1つ以上のエンコーダ又はデコーダ中に含められ得、そのいずれかは複合ビデオエンコーダ/デコーダコーデックの一部として統合され得る。ビデオエンコーダ20及び/又はビデオデコーダ30を含む装置は、集積回路、マイクロプロセッサ、及び/又はセルラー電話などのワイヤレス通信機器を備え得る。ビデオエンコーダ20及びビデオデコーダ30は、本開示の技法の任意の組合せを実行するように構成され得る。即ち、ビデオエンコーダ20及びビデオデコーダ30は、幾何学的動き区分のための固定小数点実装形態、幾何学的動き区分境界によって定義された遷移領域の平滑化、各幾何学的動き区分について動きベクトルを符号化すること、及び/又は幾何学的動き区分線がサブブロックを通るかどうかに基づくサブブロックのための適応変換サイズ選択のうちのいずれか1つ以上を任意の組合せで実行するように構成され得る。幾つかの例では、ビデオエンコーダ20及びビデオデコーダ30は、本開示で説明する幾つかの技法を実装し得るが、本技法は使用不能であり得るか、又は、ビデオエンコーダ20及びビデオデコーダ30の一方は本技法の同じセットをサポートしないことがある。従って、ビデオエンコーダ20は、どの技法が特定のビデオストリームのために使用されるかをシグナリングし得、ビデオデコーダ30は、ビデオストリームを符号化するために使用される技法をビデオデコーダ30がサポートするかどうかに基づいて、ビデオストリームを取り出すか又は使用すべきか否かを選択し得る。例えば、ビデオエンコーダ20は、プロファイルインジケータprofileidc値、レベルインジケータlevelidc値、ヘッダデータ、又は他の記述データを使用して、どの技法がシーケンスパラメータセット、ピクチャパラメータセットにおいて使用されるかを信号伝達し得る。図2は、幾何学的動き区分のための技法を実装し得るビデオエンコーダ20の一例を示すブロック図である。ビデオエンコーダ20は、マクロブロック或いはマクロブロックの区分又は下位区分を含むビデオフレーム内のブロックのイントラ符号化及びインター符号化を実行し得る。イントラ符号化は、所与のビデオフレーム内のビデオの空間的冗長性を低減又は除去するために空間的予測に依拠する。インター符号化は、ビデオシーケンスの隣接フレーム内のビデオの時間的冗長性を低減又は除去するために時間的予測に依拠する。イントラモードIモードは、幾つかの空間ベースの圧縮モードのいずれかを指し、単方向予測Pモード又は双方向予測Bモードなどのインターモードは、幾つかの時間ベースの圧縮モードのいずれかを指し得る。図2にはインターモード符号化のための構成要素が示されているが、ビデオエンコーダ20はイントラモード符号化のための構成要素をさらに含み得ることを理解されたい。但し、簡潔及び明快のために、そのような構成要素は示されていない。図2に示すように、ビデオエンコーダ20は、符号化されるべきビデオフレーム内の現在のビデオブロックを受信する。図2の例では、ビデオエンコーダ20は、モード選択ユニット40と、動き推定ユニット42と、動き補償ユニット44と、イントラ予測ユニット46と、参照フレームストア64と、加算器50と、変換ユニット52と、量子化ユニット54と、エントロピー符号化ユニット56とを含む。ビデオブロック再構成のために、ビデオエンコーダ20はまた、逆量子化ユニット58と、逆変換ユニット60と、加算器62とを含む。再構成されたビデオからブロッキネスアーティファクトを除去するためにブロック境界をフィルタ処理するデブロッキングフィルタ図2に図示せずも含まれ得る。所望される場合、デブロッキングフィルタは、一般に、加算器62の出力をフィルタ処理するであろう。符号化プロセス中に、ビデオエンコーダ20は符号化されるべきビデオフレーム又はスライスを受信する。フレーム又はスライスは、複数のビデオブロックに分割され得る。動き推定ユニット42及び動き補償ユニット44は、時間圧縮を行うために、1つ以上の参照フレーム中の1つ以上のブロックに対する受信したビデオブロックのインター予測符号化を実行する。イントラ予測ユニットはまた、空間圧縮を行うために、符号化すべきブロックと同じフレーム又はスライス中の1つ以上の隣接ブロックに対する受信したビデオブロックのイントラ予測符号化を実行し得る。モード選択ユニット40は、例えば、誤り結果に基づいて符号化モード、即ち、イントラ又はインターのうちの1つを選択し、残差ブロックデータを生成するために、得られたイントラコード化ブロック又はインターコード化ブロックを加算器50に供給し、参照フレームとして使用するための符号化ブロックを再構成するために、得られたイントラコード化ブロック又はインターコード化ブロックを加算器62に供給し得る。動き推定ユニット42と動き補償ユニット44とは、高度に統合され得るが、概念的な目的のために別々に示してある。動き推定は、ビデオブロックの動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、例えば、現在のフレーム又は、他の符号化ユニット内の符号化されている現在のブロックに対する予測参照フレーム又は、他の符号化ユニット内の予測ブロックの変位を示し得る。予測ブロックは、絶対値差分和SAD、差分2乗和SSD、又は他の差分メトリックによって決定され得る画素差分に関して、符号化すべきブロックにぴったり一致することがわかるブロックである。動きベクトルはまた、マクロブロックの区分の変位を示し得る。動き補償は、動き推定によって決定された動きベクトルに基づいて予測ブロックをフェッチ又は生成することに関与し得る。この場合も、幾つかの例では、動き推定ユニット42と動き補償ユニット44は機能的に統合され得る。幾つかの例では、動き推定ユニット42は、ブロックが幾何学的動き区分線を使用して区分化されるべきであると決定し得る。動き推定ユニット42は、幾何学的動き区分線のためのパラメータ、例えば、区分化されたブロックの原点から幾何学的動き区分線の中間点までの線の角度θ及び距離ρを計算し得る。幾つかの例では、これらの技法の固定小数点実装形態を可能にするために、動き推定ユニット42は、幾何学的動き区分線の傾斜m及びy切片cとしてパラメータを決定し得る。さらに、ビデオエンコーダ20及びビデオデコーダ30図1及び図3は、θの異なる値について1/tanθ及び1/sinθのためのルックアップテーブルの同じコピーを記憶し得る。幾何学モードの場合、ビデオエンコーダ20は、出力ビットストリーム中のθとρとについての値をシグナリングし得る。ビデオデコーダ30は、ビデオエンコーダ20によって計算されるマスクと同じであるマスクを計算するために固定小数点計算を実行するために、シグナリングされた値を使用するように構成され得る。動き推定ユニット42は、ビデオブロックを参照フレームストア64中の参照フレームのビデオブロック又は区分と比較することによってインターコード化フレームのビデオブロック、又はそれの幾何学的動き区分の動きベクトルを計算する。動き補償ユニット44はまた、参照フレーム、例えば、Iフレーム又はPフレームのサブ整数画素を補間し得る。ITUH.264規格では、参照フレームをリストと呼ぶ。従って、参照フレームストア64に記憶されたデータは、リストに記憶され得る。動き推定ユニット42は、参照フレームストア64からの1つ以上の参照フレームのブロックを現在のフレーム、例えば、Pフレーム又はBフレームの符号化すべきブロックと比較する。参照フレームストア64中の参照フレームがサブ整数画素の値を含むとき、動き推定ユニット42によって計算される動きベクトルは参照フレームのサブ整数画素ロケーションを参照し得る。幾つかの例では、動き推定ユニット42は、動きベクトルを符号化するために、動きベクトルと動き予測子との間の差を計算し得る。動き推定ユニット42は、符号化されている現在のブロックの、上のブロックと、左のブロックと、上及び左のブロックと、上及び右のブロックとの動きベクトルの中央値として、動き予測子を選択し得る。動き推定ユニット42はまた、現在のブロックの上のブロック及び左のブロックが区分化されているかどうか、区分化されている場合、これらの区分が別個の動きベクトルを有するかどうかを決定し得る。これらの区分が別個の動きベクトルを有する場合、動き推定ユニット42は、これらの候補動きベクトルの全部の中央値から動き予測子を選択し得る。動き予測子を決定した後に、動き推定ユニット42は、動きベクトルと動き予測子との間の差を計算し得る。動き推定ユニット42は、計算された差をエントロピー符号化ユニット56に送り、計算された動きベクトルを動き補償ユニット44に送る。動き補償ユニット44は、予測ブロックに基づいて予測データを計算し得る。ビデオエンコーダ20は、符号化されている元のビデオブロックから、動き補償ユニット44からの予測データを減算することによって残差ビデオブロックを形成する。加算器50は、この減算演算を実行する1つ以上の構成要素を表す。幾つかの例では、本開示の技法によれば、動き補償ユニット44は、ブロックのための幾何学的動き区分線によって定義された遷移領域におけるブロック中の画素をフィルタ処理し得る。例えば、動き補償ユニット44は、領域0と領域1の両方からの値を考慮する3×3画素フィルタを使用して、遷移領域中の画素についての予測値を計算し得、領域0及び領域1は幾何学的動き区分に対応する。別の例として、動き補償ユニット44は、領域0中の画素についての値と領域1中の画素についての値との重み付け和を計算することによって、遷移領域中の画素についての予測値を計算し得る。遷移領域中の画素についての予測値を計算した後に、加算器50は、予測値と画素の実効値との間の差として、画素についての残差値を計算し得る。このようにして、加算器50によって計算される残差値は、動き補償ユニット44によって計算される平滑化された予測値に基づき得る。変換ユニット52は、離散コサイン変換DCT又は概念的に同様の変換などの変換を残差ブロックに適用し、残差変換係数値を備えるビデオブロックを生成する。変換ユニット52は、概念的にDCTと同様である、H.264規格によって定義される変換などの他の変換を実行し得る。ウェーブレット変換、整数変換、サブバンド変換又は他のタイプの変換も使用され得る。いずれの場合も、変換ユニット52は、変換を残差ブロックに適用し、残差変換係数のブロックを生成する。変換は、残差情報を画素値領域から周波数領域などの変換領域に変換し得る。幾つかの例では、変換ユニット52は、動き補償ユニット44から様々なサイズのブロックを受信し得る。動き補償ユニット44は、ブロックが幾何学的動き区分線に接触するかどうかに基づいてブロックサイズを選択するように構成され得る。例えば、元のブロックが16×16ブロックであると仮定する。動き補償ユニット44は、元のブロックを4つの8×8ブロックに分割し得る。次いで、動き補償ユニット44は、幾何学的動き区分線に接触する4つの8×8ブロックのいずれかを4×4ブロックに分割し得る。変換ユニット52は、各潜在的なブロックサイズについての変換で構成され得る。このようにして、ビデオエンコーダ20は、ブロックについての残差値を計算するときに幾何学的動き区分ブロックのための適応変換サイズ選択を実行し得る。16×16ブロックの例について説明したが、同様の技法は他のサイズブロック、例えば、32×32、64×64などに適用され得る。その上、動き補償ユニット44は、最小ブロックサイズ、例えば、4×4で構成され得る。量子化ユニット54は、ビットレートをさらに低減するために残差変換係数を量子化する。量子化プロセスは、係数の一部又は全部に関連するビット深度を低減し得る。量子化の程度は、量子化パラメータを調整することによって変更され得る。量子化の後、エントロピー符号化ユニット56が量子化変換係数をエントロピー符号化する。例えば、エントロピー符号化ユニット56は、コンテンツ適応型可変長符号化CAVLC、コンテキスト適応型バイナリ算術符号化CABAC、又は別のエントロピー符号化技法を実行し得る。エントロピー符号化ユニット56によるエントロピー符号化の後、符号化されたビデオは、別の機器に送信されるか、或いは後で送信又は取り出すためにアーカイブされ得る。コンテキスト適応型バイナリ算術符号化の場合、コンテキストは隣接マクロブロックに基づき得る。場合によっては、エントロピー符号化ユニット56又はビデオエンコーダ20の別のユニットは、エントロピー符号化に加えて他の符号化機能を実行するように構成され得る。例えば、エントロピー符号化ユニット56はマクロブロック及び区分のCBP値を決定するように構成され得る。また、場合によっては、エントロピー符号化ユニット56は、マクロブロック又はそれの区分中の係数のランレングス符号化を実行し得る。特に、エントロピー符号化ユニット56は、マクロブロック又は区分中の変換係数をスキャンするためにジグザグスキャン又は他のスキャンパターンを適用し、さらなる圧縮のためにゼロのランを符号化し得る。エントロピー符号化ユニット56はまた、符号化ビデオビットストリーム中での送信のために適切なシンタックス要素とともにヘッダ情報を構成し得る。逆量子化ユニット58及び逆変換ユニット60は、それぞれ逆量子化及び逆変換を適用して、例えば参照ブロックとして後で使用するために、画素領域において残差ブロックを再構成する。動き補償ユニット44は、残差ブロックを参照フレームストア64のフレームのうちの1つの予測ブロックに加算することによって参照ブロックを計算し得る。動き補償ユニット44はまた、再構成された残差ブロックに1つ以上の補間フィルタを適用して、動き推定において使用するサブ整数画素値を計算し得る。加算器62は、再構成された残差ブロックを動き補償ユニット44によって生成された動き補償予測ブロックに加算して、参照フレームストア64に記憶するための再構成されたビデオブロックを生成する。再構成されたビデオブロックは、後続のビデオフレーム中のブロックをインター符号化するために動き推定ユニット42及び動き補償ユニット44によって参照ブロックとして使用され得る。図3は、符号化されたビデオシーケンスを復号するビデオデコーダ30の一例を示すブロック図である。図3の例では、ビデオデコーダ30は、エントロピー復号ユニット70と、動き補償ユニット72と、イントラ予測ユニット74と、逆量子化ユニット76と、逆変換ユニット78と、参照フレームストア82と、加算器80とを含む。ビデオデコーダ30は、幾つかの例では、ビデオエンコーダ20図2に関して説明した符号化パスとは概して逆の復号パスを実行し得る。イントラ予測ユニット74は、ビットストリーム中で受信されたイントラ予測モードを使用して、空間的に隣接するブロックから予測ブロックを形成し得る。動き補償ユニット72は、エントロピー復号ユニット70から受信した動きベクトルに基づいて予測データを生成し得る。符号化されたブロックが幾何学的動き区分線を使用して区分化されるとき、ブロックのどの画素がどの区分に対応するかを決定するために、動き補償ユニット72は、ブロックのための幾何学的動き区分線の定義を受信し得る。幾つかの例では、線の定義は、ブロックの原点から幾何学的動き区分線の中心までの線の角度θ及び長さρに従い得る。幾つかの例では、動き補償ユニット72が、固定小数点演算を使用してブロックの画素がどの幾何学的区分に対応するかを示すマスクを計算することができるように、線の定義は、幾何学的動き区分線の傾斜m及びy切片cに従い得る。動き補償ユニット72は、ビットストリーム中で受信された動きベクトルを使用して、参照フレームストア82中の参照フレーム中の予測ブロックを識別し得る。幾つかの例では、動きベクトルは、前に符号化されたブロック又はそれの区分から選択される、動き予測子に対して符号化され得る。従って、動き補償ユニット72は、ブロック又は区分のための動き予測子を決定することと、次いで受信した差分値を動き予測子に追加することとによって動きベクトルを復号し得る。動き補償ユニット72はまた、平滑化フィルタを使用して幾何学的動き区分間の遷移領域中の画素についての予測値を計算するように構成され得る。例えば、動き補償ユニット72は、予測値を決定するために、これらの画素に3×3画素フィルタを適用し得る。別の例として、動き補償ユニット72は、第1の区分からの値と第2の区分からの値との重み付け和を使用して遷移領域中の画素についての予測値を計算し得る。逆量子化ユニット76は、ビットストリーム中で供給され、エントロピー復号ユニット70によって復号された量子化ブロック係数を逆量子化inversequantize、即ち、逆量子化dequantizeする。逆量子化プロセスは、例えば、H.264復号規格によって定義された従来のプロセスを含み得る。逆量子化プロセスはまた、量子化の程度を決定し、同様に、適用すべき逆量子化の程度を決定するための、各マクロブロックについてエンコーダ50によって計算される量子化パラメータQPYの使用を含み得る。逆変換ユニット58は、逆変換、例えば逆DCT、逆整数変換、又は概念的に同様の逆変換プロセスを変換係数に適用して、画素領域において残差ブロックを生成する。動き補償ユニット72は動き補償ブロックを生成し、場合によっては、補間フィルタに基づいて補間を実行する。サブ画素精度をもつ動き推定に使用すべき補間フィルタの識別子は、シンタックス要素中に含まれ得る。動き補償ユニット72は、ビデオブロックの符号化中にビデオエンコーダ20によって使用される補間フィルタを使用して、参照ブロックのサブ整数画素の補間値を計算し得る。動き補償ユニット72は、受信したシンタックス情報に従って、ビデオエンコーダ20によって使用された補間フィルタを決定し、その補間フィルタを使用して予測ブロックを生成し得る。幾つかの例では、逆変換ユニット78は、動き補償ユニット72から、符号化されたブロックのための変換サイズの指示を受信し得る。動き補償ユニット72は、ブロックが幾何学的動き区分に接触するかどうかを決定し、接触する場合、最小変換サイズ、例えば、4×4画素まで、変換サイズを1/2だけ縮小し得る。幾つかの例では、変換されたブロックは、適用すべき変換のサイズを記述するシンタックス情報を含み得る。動き補償ユニット72は、シンタックス情報を使用して、符号化ビデオシーケンスの1つ又は複数のフレームを符号化するために使用されるマクロブロックのサイズと、符号化ビデオシーケンスのフレームの各マクロブロックがどのように区分化されるのかを記述する区分情報と、各区分がどのように符号化されるのかを示すモードと、各インター符号化マクロブロック又は区分のための1つ以上の参照フレームと、符号化ビデオシーケンスを復号するための他の情報とを決定し得る。加算器80は、残差ブロックを、動き補償ユニット72又はイントラ予測ユニットによって生成される対応する予測ブロックと加算して、復号されたブロックを形成する。所望される場合、ブロッキネスアーティファクトを除去するために、デブロッキングフィルタが、復号されたブロックをフィルタ処理することにも適用され得る。復号されたビデオブロックは、次いで、参照フレームストア82に記憶され、参照フレームストア82は、その後の動き補償のための参照ブロックを与え、また、表示装置図1の表示装置32など上での提示のために復号されたビデオを生成する。図4は、幾何学的動き区分線116を使用して区分化されたブロック110を示す概念図である。幾何学的動き区分線116は、ブロック110を領域112及び領域114という2つの区分に区分化する。幾つかの例では、幾何学的動き区分線116は、直交線120の特性に従って定義され得る。特に、x軸113とy軸111との交点をブロック110のための原点として定義する。直交線120は、幾何学的動き区分線116に直交し、点124において幾何学的動き区分線116と交差する。角度118は、x軸113に対する直交線120の角度に対応する。距離122は、ブロック110の原点と幾何学的動き区分線116の点124との間の距離に対応し、ブロック110の原点からの幾何学的動き区分線116の垂直距離でもある。θシータ及びρローを上記で定義したように、角度118はθと呼ばれることもあり、距離122はρと呼ばれることもある。このようにして、幾何学的動き区分線116は、角度118と距離122との組合せを使用してブロック110のために定義され得る。代替的に、幾何学的動き区分線116は、傾斜126及びy切片128に従って定義され得る。傾斜角126は幾何学的動き区分線116の傾斜に対応する。y切片128は、幾何学的動き区分線116がy軸111と交差する点に対応する。また、上記で定義したように、傾斜126はmを使用して表され得、y切片128はcを使用して表され得る。画素が領域112中にあるのか領域114中にあるのかを示すブロック110のためのマスクを計算するために固定小数点演算が使用されることを可能にするために、傾斜126及びy切片128は整数値として表され得る。傾斜126及びy切片128は、便宜上、以下に複写する、上記の式1によって角度118及び距離120に数学的に関係付けられる。図5は、幾何学的動き区分線138を使用して区分化されたブロック130を示す概念図である。幾何学的動き区分線138は、ブロック130を領域132及び領域134という2つの領域に分割する。遷移領域136が、幾何学的動き区分線138の近くの画素を含む。幾つかの例では、遷移領域136は、領域132中の少なくとも1つの隣接画素と領域134中の少なくとも1つの隣接画素とを有する画素を含むように定義され得る。隣接画素は、上に隣接する、下に隣接する、左に隣接する、右に隣接する、左上に隣接する、右上に隣接する、左下に隣接する、及び/又は右下に隣接する、のいずれか又はすべてを含み得る。遷移領域136中の画素は、その画素が領域132により近接しているのか領域134により近接しているのかを示すために、様々なレベルの影付きで示されている。特に、この例では、淡い影付きの画素は領域132により近接しており、濃い影付きの画素は領域134により近接している。一例では、画素は、その画素に対する大部分の隣接画素が特定の領域中にあるとき、その領域により近接していると言われることがある。幾つかの例では、ビデオエンコーダ20及び/又はビデオデコーダ30は、遷移領域136中の画素に平滑化フィルタを適用するように構成され得る。図6は、3×3画素アレイ140を示す概念図である。画素アレイ140は、現在の画素142と隣接画素144A~144H隣接画素144とを含む。特に、図6の例では、画素144Bは、上に隣接する画素に対応し、画素144Gは、下に隣接する画素に対応し、画素144Dは、左に隣接する画素に対応し、画素144Eは、右に隣接する画素に対応し、画素144Aは、左上に隣接する画素に対応し、画素144Cは、右上に隣接する画素に対応し、画素144Fは、左下に隣接する画素に対応し、画素144Hは、右下に隣接する画素に対応する。画素アレイ140は、現在の画素142が遷移領域、即ち、幾何学的動き区分線の近くの領域中にあるかどうかを決定するときに使用され得る。隣接画素144のうちの2つ以上が異なる領域中にあるとき、現在の画素142は、遷移領域中に含まれると言われることがある。例えば、ネイバー画素144Dが領域0中にあり、ネイバー画素144Eが領域1中にある場合、現在の画素142は、遷移領域中にあると言われることがある。幾つかの例では、現在の画素142は、大部分の隣接画素が特定の領域中にあるとき、その領域により近接していると言われることがある。例えば、隣接画素144A、144B、144C、144D、及び144Fが領域0中にあり、隣接画素144E、144G、及び144Hが領域1中にある場合、現在の画素142は、領域0により近接していると言われることがある。画素アレイ140は、現在の画素142の値を調整するための3×3平滑化フィルタを定義するためにも使用され得る。そのフィルタは、現在の画素142及びネイバー画素144の各々のための定義された重みを有し得る。現在の画素142についての値を計算するために、画素アレイ140中の画素の各々の重みは、対応するロケーションにおける画素の値によって乗算され、次いで加算され、重みの和で除算され得る。一例では、ネイバー画素144Aは1の重みを有し、ネイバー画素144Bは2の重みを有し、ネイバー画素144Cは1の重みを有し、ネイバー画素144Dは2の重みを有し、ネイバー画素144Eは2の重みを有し、ネイバー画素144Fは1の重みを有し、ネイバー画素144Gは2の重みを有し、ネイバー画素144Hは1の重みを有し、現在の画素142は3の重みを有する。これらの重みは、それぞれの画素の値によって乗算され、次いで15121232121で除算されて、現在の画素142についての平滑化値が計算され得る。別の例では、ネイバー画素144Aは0の重みを有し、ネイバー画素144Bは1の重みを有し、ネイバー画素144Cは0の重みを有し、ネイバー画素144Dは1の重みを有し、ネイバー画素144Eは1の重みを有し、ネイバー画素144Fは0の重みを有し、ネイバー画素144Gは1の重みを有し、ネイバー画素144Hは0の重みを有し、現在の画素142は4の重みを有する。これらの重みは、それぞれの画素の値によって乗算され、次いで811411で除算されて、現在の画素142についての平滑化値が計算され得る。他の例では、他の平滑化フィルタを作成するために、ネイバー画素144と現在の画素142とに他の重みが同様に割り当てられ得る。その上、隣接画素144に割り当てられる重みは、必ずしも対称的である必要はない。さらに、より大きい、例えば、5×5、7×7などの平滑化フィルタも定義され得る。図7は、幾何学的動き区分線で区分化されたブロックについての残差値を計算するときに平滑化を実行するための例示的な方法を示すフローチャートである。例としてビデオエンコーダ20に関して説明するが、図7の方法は他の処理ユニットによって実行され得ることを理解されたい。例えば、図7の方法はビデオデコーダ30によっても適用され得る。初めに、ビデオエンコーダ20が、符号化されるべきビデオデータのブロックを受信する150。この例では、ブロックが、インター予測符号化フレーム、例えば、Pフレーム又はBフレームのブロックに対応すると仮定する。動き推定ユニット42がブロックの動き探索を実行し得る。動き探索の結果として、動き推定ユニット42は、幾何学的動き区分線を使用してブロックが区分化されるべきであると決定する152。その結果、動き推定ユニット42は、幾何学的動き区分線を使用してブロックを区分化し、2つの動きベクトル、即ち、幾何学的動き区分ごとに1つの動きベクトルを生成し得る。動き推定ユニット42は、幾何学的動き区分線の定義とともに動きベクトルを動き補償ユニット44に送り得る。幾つかの例では、幾何学的動き区分線の定義は、ブロックの原点から幾何学的動き区分線までの直交線についての角度及び距離値を使用して、又は幾何学的動き区分線についての傾斜及びy切片値を使用して表され得る。動き補償ユニット44は、幾何学的動き区分線の定義を使用してブロックのためのマスクを計算し得る。上記線が直交線の角度及び長さを使用して定義されるとき、上記計算は浮動小数点演算を使用して行われ得る。上記線が幾何学的動き区分線の傾斜及びy切片を使用して定義されるとき、上記計算は固定小数点演算を使用して行われ得る。動き補償ユニット44は、遷移領域に対応する、ブロック中の画素を決定する154。これらの画素は、幾何学的動き区分のうちの1つの中の少なくとも1つの隣接画素と、他の幾何学的動き区分中の別の隣接画素とを有する画素に対応し得る。隣接画素のセットは、画素の直接例えば、真上の、真下の、及び真横のネイバーのみを含むか、又は画素に対する対角ネイバーを含み得る。動き補償ユニット44は、次いで遷移領域中の画素のための平滑化プロセスを開始し得る。遷移領域中の画素は、定義によれば、ブロックの両方の幾何学的動き区分中のネイバーを含む。従って、平滑化は、ブロックの両方の区分からの値を使用して遷移領域中の画素についての予測値を計算することによって、2つの区分間で行われる156。幾つかの例では、遷移領域中の画素の平滑化は、各区分からの遷移領域中のコロケート画素についての値の重み付け和を計算することによって行われる。幾つかの例では、遷移領域中の画素の平滑化は、遷移領域中のある画素についての予測値を計算するために遷移領域中のその画素を囲む画素の値を平均化することによって行われ、これは各区分中の隣接画素を含む。従って、動き補償ユニット44は、係数として割り当てられた重みを有するフィルタを、フィルタ処理されるべき画素と隣接画素とに適用することによって、遷移領域中の画素についての予測値を計算し得る。動き補償ユニット44は、次いで、フィルタ処理された画素についての予測値を生成するために、これらの値の各々を加算し、重みの和で除算することによって、それらの値を平均化し得る。動き補償ユニット44は、同様にして遷移領域中の画素の各々についての予測値を計算し得る。次いで、ビデオエンコーダ20は、例えば、加算器50を使用して、元のブロックから予測値を減算することによってブロックについての残差値を計算する158。以下でより詳細に説明するように、ビデオエンコーダ20は、ブロックについての残差を、変換ユニット52によって変換されるべき変動するサイズのサブブロックに分割し得る。サブブロックに適用される遷移のサイズは、幾何学的区分線が区分を通るかどうかに基づいて適応的に決定され得る。また、ビデオエンコーダ20は計算された残差を出力し得る。出力することは、データをネットワーク上で送信すること、データをブロードキャストすること、データをコンピュータ可読媒体に記憶すること、又は他の方法でデータを出力することを含み得る。図7の方法は、幾何学的動き区分線を使用してビデオデータのブロックを第1の区分と第2の区分とに区分化することと、第1の区分からの少なくとも1つの隣接画素についての値と第2の区分からの少なくとも1つの隣接画素についての値とを適用するフィルタを使用してブロックの遷移領域中の画素の予測値を計算することと、遷移領域中の画素の予測値に基づいてブロックの遷移領域中の画素の残差値を計算することと、画素の残差値を出力することとを含む方法として要約され得る。同様の方法がビデオデコーダ30によって実行され得る。そのような方法は、ビデオデータの符号化されたブロックと、符号化されたブロックを第1の区分と第2の区分とに区分化する幾何学的動き区分線の定義と、ブロックの遷移領域中の画素についての残差値とを受信することと、第1の区分からの少なくとも1つの隣接画素についての値と第2の区分からの少なくとも1つの隣接画素についての値とを適用するフィルタを使用してブロックの遷移領域中の画素の予測値を計算することと、予測値及び残差値に基づいてブロックの遷移領域中の画素についての再構成値を計算することと、画素の再構成値を出力することとを含み得る。図8は、適応変換サイズ選択を使用して変換されるべき例示的なブロック170を示す概念図である。ブロック170は、幾何学的動き区分線172を使用して区分化されている。図8の例では、ブロック170は16×16画素ブロックである。変換ユニット52図2は、異なる変換を使用してブロック170のサブブロックを変換するために異なるサイズの様々な変換で構成され得る。ビデオエンコーダ20は、最初にブロック170を4つの8×8ブロック174A~174D8×8ブロック174に分割し得、但し、Trは変換transformを示し、変換サイズを示す。8×8ブロック174の各々について、ビデオエンコーダ20は、幾何学的動き区分線172が8×8ブロックを通るかどうかを決定し得る。そうである場合は、ビデオエンコーダ20は、8×8ブロックを4×4ブロックにさらに分割し得る。他の場合は、ビデオエンコーダ20は、8×8変換を使用して8×8ブロックを変換し得る。図8の例では、幾何学的動き区分線172は、8×8ブロック174B、174C、及び174Dを通る。従って、8×8ブロック174B、174C、及び174Dは、重複しない4×4ブロックにさらに分割される。従って、この例では、8×8ブロック174B、174C、及び174Dの4×4サブブロックは、4×4変換を使用して変換されることになる。ビデオエンコーダ20は、4×4の最小変換サイズで構成されることがあり、従って4×4ブロックをさらに分割しないことがある。但し、最小変換サイズは、4×4である必要はなく、代わりに2×2であり得、又はビデオエンコーダ20は最小変換サイズで構成されないことがある。幾つかの例では、最小変換サイズは4×4よりも大きいことがある。この例では、幾何学的動き区分線172は8×8ブロック174Aを通らず、従って、8×8ブロック174Aに8×8変換が適用されるべきである。図9は、適応変換サイズ選択を使用して変換されるべき別の例示的なブロック180の概念図である。この例では、ブロック180は、幾何学的動き区分線182によって区分化された32×32ブロックを備える。初めに、ビデオエンコーダ20が、ブロック180を4つの16×16ブロック184A~184D16×16ブロック184に区分化し得る。ビデオエンコーダ20は、次いで、幾何学的動き区分線182が16×16ブロック184のうちのいずれかを通るかどうかを決定し得る。この例では、幾何学的動き区分線182は16×16ブロック184Aを通らない。従って、ビデオエンコーダ20は、16×16区分を使用して16×16区分184Aを変換し得る。幾何学的動き区分線182が16×16ブロック184B、184C、及び184Dを通るので、ビデオエンコーダ20は、図9に示すように、16×16ブロック184B、184C、及び184Dを8×8ブロックにさらに分割し得る。ビデオエンコーダ20は、同じく図9の例に示すように、幾何学的動き区分線182が通る8×8ブロックの各々を4×4ブロックにさらに分割し得る。この例では、16×16ブロック184Bの1つの8×8ブロックが4×4ブロックにさらに分割され、16×16ブロック184Cの1つの8×8ブロックが4×4ブロックにさらに分割され、16×16ブロック184Dの8×8ブロックのうちの3つが4×4ブロックにさらに分割される。例として、ビデオエンコーダ20が4×4の最小変換サイズで構成されると仮定する。ビデオエンコーダ20は、8×8変換サイズを使用して、分割されていない8×8ブロックを変換し、4×4変換サイズを使用して4×4ブロックの各々を変換し得る。ビデオエンコーダ20は、16×16変換を使用して16×16ブロック184Aを変換し得る。このようにして、ビデオエンコーダ20は、ブロック180のサブブロックが幾何学的動き区分線182に接触するかどうかに基づいて、それらのサブブロックのための変換サイズを適応的に決定し得る。図10は、N×Nブロックのサブブロックのための変換サイズを決定するための例示的な方法を示すフローチャートである。例としてビデオエンコーダ20に関して説明するが、図10の方法は他の処理ユニットによって実行され得ることを理解されたい。例えば、図10の方法は、例えば、サブブロックを逆変換するために、N×Nブロックのサブブロックのための変換サイズを決定するためにビデオデコーダ30によっても適用され得る。初めに、ビデオエンコーダ20がN×Nブロックを受信する200。N×Nブロックは、区分化されたフルブロック、又はそれのサブブロックであり得る。ビデオエンコーダ20は、幾何学的動き区分線がN×Nブロックを通るかどうかを決定する202。そうでない場合202のNO分岐、ビデオエンコーダ20は、N×Nブロックを変換するためにN×N変換サイズを使用する204。一方、幾何学的動き区分線がN×Nブロックを通る場合202のYES分岐、ビデオエンコーダ20は、N×Nブロックを4つの重複しないN/2×N/2ブロックに分割する206。次いで、ビデオエンコーダ20は、各N/2×N/2ブロックのための変換サイズを決定する208。そうするために、ビデオエンコーダ20は、各N/2×N/2ブロックについて図10の方法の再帰呼出しを行い得る。即ち、ビデオエンコーダ20は、幾何学的動き区分線が各N/2×N/2ブロックを通るかどうかを決定し得る。幾何学的動き区分線が通らないN/2×N/2ブロックについては、ビデオエンコーダ20はN/2×N/2変換サイズを使用して変換し得、幾何学的動き区分線が通るN/2×N/2ブロックについては、ビデオエンコーダ20は、4つのN/4×N/4ブロックにさらに再分割し、この場合も潜在的に図10の方法の再帰的インスタンスを使用して各N/4×N/4ブロックのための変換サイズを決定し得る。ビデオエンコーダ20は、次いで、変換されたサブブロックを出力し得る。出力することは、データをネットワーク上で送信すること、データをブロードキャストすること、データをコンピュータ可読媒体に記憶すること、又は他の方法でデータを出力することを含み得る。図10の方法と同様の例示的な方法は、幾何学的動き区分線を使用してビデオデータのブロックを第1の幾何学的区分と第2の幾何学的区分とに区分化することであって、ブロックがN×N画素を備える、区分化することと、ビデオデータのブロックを4つの等しいサイズの重複しないN/2×N/2サブブロックに分割することと、N/2×N/2よりも小さい変換サイズを使用して、幾何学的動き区分線がそれを通るサブブロックのうちの少なくとも1つを符号化することとを含み得る。同様の方法がビデオデコーダ30によって実行され得る。ビデオデコーダによって実行される例示的な方法は、幾何学的動き区分線によって第1の幾何学的区分と第2の幾何学的区分とに区分化されたビデオデータの符号化され、N×N画素を有するブロックを受信することと、ビデオデータのブロックを4つの等しいサイズの重複しないN/2×N/2サブブロックに分割することと、N/2×N/2よりも小さい変換サイズを使用して、幾何学的動き区分線がそれを通るサブブロックのうちの少なくとも1つを逆変換することとを含み得る。以下の擬似コードは、図10の方法の例示的な部分的実装形態として、x,yにおける開始点をもつブロックのための変換サイズを決定するための例示的な関数determineTransformSizeを与える。変数slope及びinterceptは、ブロックのための幾何学的動き区分線を定義する傾斜及び切片値である。変数minTransformは、水平と垂直の両方に最小変換サイズに従って定義されたグローバル変数、例えば、4である。変数currSizeは、現在の変換サイズであり、幾何学的に動き区分化されたN×Nブロックの場合、N/2を用いて初期化し得る。変数startPartitionは、x,yにおけるブロックの開始画素のための区分に対応し、変数curPartitionは、ブロックの現在の画素のための区分を追跡する。値startPartition及びcurPartitionは、cライクな条件演算子を使用して計算され、conditionresult1result2は、conditionが真の場合はresult1を返し、他の場合はresult2を返す。2つのforループは、ブロックの画素にわたって反復する。ある時点において現在の画素のための区分が開始画素の区分に一致しない場合は、幾何学的動き区分線はブロックを通る。これにより、forループが中断し、determineTransformSizeへの再帰呼出しが行われ、現在の変換サイズcurrSizeが1/2だけ低減される。そうではなく、ブロックの全ての画素が同じ区分中に残っている場合は、ブロックを変換するために変換サイズcurrSizeが使用され得る。図11は、幾何学的区分ブロック220と隣接サブブロック228A~228F隣接サブブロック228とを示すブロック図である。幾何学的動き区分線226が、ブロック220を区分222及び区分224という2つの区分に分割する。ビデオエンコーダ20などのビデオエンコーダが、隣接サブブロック228の各々のための動きベクトルに対して区分222、224のための動きベクトルを符号化し得る。即ち、ビデオエンコーダ20は、隣接サブブロック228のうちのどれが区分222、224の各々に対するネイバーと見なされるかを決定し得る。区分222に対するネイバーは、必ずしも区分224に対するネイバーと見なされるとは限らず、同様に、区分224に対するネイバーは、必ずしも区分222に対するネイバーと見なされるとは限らない。例えば、ビデオエンコーダ20は、サブブロック228の各々が区分222に対するネイバーであるが、サブブロック228のいずれも区分224に対するネイバーでないと決定し得る。サブブロック228A及び228Eの各々について、それの右縁に位置する画素が区分のネイバーである場合、それらのサブブロックは、その区分に対するネイバーと見なされ得る。サブブロック228B及び228Fの各々について、それの下縁に位置する画素が区分のネイバーである場合、それらのサブブロックは、その区分に対するネイバーと見なされ得る。サブブロック228Dは、それの右下コーナー画素が区分に対するネイバーである場合、その区分に対するネイバーと見なされ得る。サブブロック228Cは、それの左下コーナー画素が区分に対するネイバーである場合、その区分に対するネイバーと見なされ得る。別の例では、サブブロックの部分的縁画素がネイバーである場合、そのサブブロックは区分に隣接すると見なされ得る。ビデオエンコーダ20は、区分のための動き予測子を決定するために、その区分に隣接すると見なされるサブブロック228のための動きベクトルの中央値を計算し得る。区分に隣接すると見なされるサブブロック228のための動きベクトルは、候補動き予測子のセットと呼ばれることもある。例のために、サブブロック228の各々が区分222に隣接すると決定されることを仮定すると、ビデオエンコーダ20は、区分222のための動き予測子を決定するためにサブブロック228の各々のための動きベクトルの中央値を計算し得る。ビデオエンコーダ20は、次いで、動きベクトルを符号化するために、区分222のための動きベクトルと区分222のための動き予測子との間の差を計算し得る。例のために、サブブロック228C、228E、及び228Fが区分224に隣接すると決定されることを仮定すると、ビデオエンコーダ20は、区分224のための動き予測子を決定するためにサブブロック228C、228E、及び228Fのための動きベクトルの中央値を計算し得る。ビデオエンコーダ20は、次いで、動きベクトルを符号化するために、区分224のための動きベクトルと区分224のための動き予測子との間の差を計算し得る。このようにして、ビデオエンコーダ又はビデオデコーダは、サブブロック228A、228B、228C、及び228Dのみから選択する従来の方法よりも大きい、候補動き予測子のセットから、動き予測子を選択し得る。その上、ビデオエンコーダ又はビデオデコーダは、1つの区分、例えば、区分222のための動き予測子を、他の区分、例えば、区分224のための動き予測子とは無関係に選択し得る。従って、区分222、224は同じブロック220の区分であるが、区分222、224のための動き予測子は異なり得る。従って、ビデオエンコーダ又はデコーダは、区分を含んでいるブロック、即ち、区分がそれの一部を形成するブロックではなく、候補動き予測子に関係するサブブロックが区分に隣接するかどうかに基づいて、区分のための動き予測子を選択し得る。図12は、ビデオデータのブロックの幾何学的動き区分の動きベクトルを符号化するための例示的な方法を示すフローチャートである。例としてビデオエンコーダ20に関して説明するが、図12の方法は他の処理ユニットによって実行され得ることを理解されたい。例えば、図12の方法は、幾何学的に動き区分化されたブロックの符号化された動きベクトルを復号するためにビデオデコーダ30によっても適用され得る。初めに、ビデオエンコーダ20がビデオデータのブロックを受信する250。ビデオエンコーダ20は、次いで、幾何学的動き区分を使用してブロックを区分化する252。ビデオエンコーダ20は、次いで、第1の幾何学的動き区分のための候補予測子のセットを決定する254。即ち、ビデオエンコーダ20は、ブロックに隣接するサブブロックのセットのうちのどれが第1の区分にも隣接すると見なされるかを決定し得る。次いで、ビデオエンコーダ20は、第1の区分に隣接するサブブロックのための動きベクトルを取り出し得る。ビデオエンコーダ20は、次いで、これらの動きベクトルの中央値を計算し、計算された中央値を第1の区分のための動き予測子として使用する256。ビデオエンコーダ20は、次いで、第1の区分のための動きベクトルと第1の区分のための動き予測子との間の差を計算して、第1の区分のための予測子に対して動きベクトルを符号化する258。次に、ビデオエンコーダ20は、第2の幾何学的動き区分のための候補予測子のセットを決定する260。即ち、ビデオエンコーダ20は、ブロックに隣接するサブブロックのセットのうちのどれが第2の区分に隣接すると見なされるかを決定し得る。次いで、ビデオエンコーダ20は、第2の区分に隣接するサブブロックのための動きベクトルを取り出し得る。ビデオエンコーダ20は、次いで、これらの動きベクトルの中央値を計算し、計算された中央値を第2の区分のための動き予測子として使用する262。ビデオエンコーダ20は、次いで、第2の区分のための動きベクトルと第2の区分のための動き予測子との間の差を計算して、第2の区分のための予測子に対して動きベクトルを符号化する264。ビデオエンコーダ20は、次いで、符号化された動きベクトルを出力し得る。出力することは、データをネットワーク上で送信すること、データをブロードキャストすること、データをコンピュータ可読媒体に記憶すること、又は他の方法でデータを出力することを含み得る。このようにして、ビデオエンコーダ20は、各区分のために独立して選択された候補動き予測子を使用して、互いとは無関係にブロックの幾何学的動き区分のための動きベクトルを符号化し得る。従って、ビデオエンコーダ20は、幾何学的動き区分線を使用してビデオデータのブロックを第1の区分と第2の区分とに区分化することと、第1の区分のための第1の動きベクトルと第2の区分のための第2の動きベクトルとを決定することと、第1の区分に隣接するブロックのための動きベクトルから選択される第1の動き予測子に基づいて第1の動きベクトルを符号化することと、第2の区分に隣接するブロックのための動きベクトルから選択される第2の動き予測子に基づいて第2の動きベクトルを符号化することであって、第2の区分に隣接するブロックが、第1の区分に隣接するブロックとは無関係に決定される、符号化することと、符号化された第1及び第2の動きベクトルを出力することとを含む方法を実行し得る。ビデオエンコーダ20はまた、図11に関して説明したように、従来使用されるものよりも大きい、動きベクトルのセットから、候補動き予測子を選択し得る。ビデオデコーダ30は、符号化されたブロックのための符号化された動きベクトルを復号するために同様の方法を利用し得る。動き予測子と動きベクトルとの間の差を計算するのではなく、ビデオデコーダ30は、符号化された動きベクトルを受信し、符号化された動きベクトルについての値を動き予測子に追加して、動きベクトルを復号し得る。従って、ビデオデコーダ30は、幾何学的動き区分線によって第1の区分と第2の区分とに区分化されたビデオデータのブロックと、第1の区分のための第1の符号化された動きベクトルと、第2の区分のための第2の符号化された動きベクトルとを受信することと、第1の区分に隣接するブロックのための動きベクトルから選択される第1の動き予測子に基づいて第1の符号化された動きベクトルを復号することと、第2の区分に隣接し、第1の区分に隣接するブロックとは無関係に決定されるブロックのための動きベクトルから選択される第2の動き予測子に基づいて第2の符号化された動きベクトルを復号することと、復号された第1及び第2の動きベクトルを使用してブロックを復号することとを含む方法を実行し得る。図13は、固定小数点実装形態を使用してビデオデータのブロックを符号化するための例示的な方法を示すフローチャートである。例としてビデオエンコーダ20に関して説明するが、図13の方法と同様の方法が他の処理ユニットによって実行され得ることを理解されたい。例えば、図13の方法と同様の方法は、固定小数点実装形態においてビデオデータを復号するためにビデオデコーダ30によっても適用され得る。初めに、ビデオエンコーダ20がビデオデータのブロックを受信する280。ビデオエンコーダ20は、次いで、幾何学的動き区分を使用してブロックを区分化する282。ビデオエンコーダ20は、ブロックを区分化するために使用される幾何学的動き区分線に直交しブロックの原点から開始する線分の角度θ及び長さρに従って幾何学的動き区分線を定義し得る。ビデオエンコーダ20は、角度及び長さ値が、特定の数のビットを有する整数によって記憶され得るように、角度及び長さ値のためのステップサイズで構成され得る。一例として、ビデオエンコーダ20は、5ビット数内で幾何学的動き区分線を定義する角度値を記憶するように構成され得る。角度値は、1のステップサイズと、両端値を含む0から31の間の範囲とを有し得る。従って、角度値における、2つの連続するステップ間の差は、11.25度の差を表し得る。長さ値は、ブロックのサイズに依存し、両端値を含む0からN/2-1までの範囲を有する符号付き整数に対応し得、但し、Nはブロックサイズを表す。従って、例えば、16×16ブロックの場合は、長さ値は0から7の間の符号付き整数に対応し得、32×32ブロックの場合は、長さ値は0から15の間の符号付き整数に対応し得、64×64ブロックの場合は、長さ値は0から31の間の符号付き整数に対応し得る。但し、固定小数点実装形態を可能にするために、ビデオエンコーダ20は、例えば、式1に従って、幾何学的動き区分線についての傾斜及びy切片を計算する284。ビデオエンコーダ20は、傾斜及びy切片を整数値として表し得る。即ち、ビデオエンコーダ20は、角度及び長さ値から傾斜及びy切片値を計算し、傾斜及びy切片値に整数値、例えば、65536を乗算し、次いで、計算された傾斜及びy切片値を最も近い整数に丸め得る。ビデオエンコーダ20は、得られた傾斜及びy切片値を適切なサイズのビットベクトル、例えば、32ビット整数値として記憶し得る。ビデオエンコーダ20は、次いで、傾斜及びy切片値を使用してブロックのためのマスクを計算する286。即ち、ビデオエンコーダ20は、ブロックの各点が領域0中にあるのか領域1中にあるのか例えば、図11の例では、区分222中にあるのか区分224中にあるのかを決定するために、各点にわたって反復し得る。ビデオエンコーダ20は、ブロックを符号化するときにマスクを参照し、即ち、マスクに基づいてブロックを符号化する288。例えば、ビデオエンコーダ20は、ブロックについての残差を計算するためにブロックの各区分の境界を決定し得る。即ち、ビデオエンコーダ20は、マスクを参照して、第1の区分に関連する動きベクトルを使用してブロックの画素についての値を取り出すべきなのか、又は第2の区分に関連する動きベクトルを使用してブロックの画素についての値を取り出すべきなのかを決定し得る。ビデオエンコーダ20は、これらの動きベクトルを使用して画素についての値を取り出し、これらの値と符号化されるべきブロックとの間の差を計算することによってブロックについての残差を計算し得る。このようにして、ビデオエンコーダ20は、マスクを使用して、ブロック中の画素が第1の区分に対応するのか第2の区分に対応するのかを決定し、第1の区分のための動きベクトルによって示される参照ブロックから第1の区分中の画素についての予測値を取り出し、第2の区分のための動きベクトルによって示される参照ブロックから第2の区分中の画素についての予測値を取り出し得る。幾つかの例では、ビデオエンコーダ20は、本開示で説明する平滑化技法を使用して区分間の遷移を平滑化し得る。即ち、ビデオエンコーダ20は、遷移領域中のブロックの画素のセットを決定し、第1の区分のための動きベクトルによって示される参照ブロックと、第2の区分のための動きベクトルによって示される参照ブロックとに基づいて、遷移領域中の画素のセットについての予測値を計算し得る。ビデオエンコーダ20は、次いで、符号化されたブロック、ならびに幾何学的動き区分線を定義する傾斜及びy切片値を出力する290。出力することは、データをネットワーク上で送信すること、データをブロードキャストすること、データをコンピュータ可読媒体に記憶すること、又は他の方法でデータを出力することを含み得る。ビデオエンコーダ20は、さらに、本開示の技法を使用して区分のための動きベクトルを符号化し、残差のサブブロックを変換するときに本開示の適応変換サイズ選択技法を適用し得る。このようにして、ビデオエンコーダ20などのビデオエンコーダによって実行され得る図13の方法に対応する例示的な方法は、幾何学的動き区分線を使用してビデオデータのブロックを第1の区分と第2の区分とに区分化することと、幾何学的動き区分線の整数値を有する傾斜値及びy切片値を計算することと、第1の区分中のブロックの画素と第2の区分中のブロックの画素とを示すマスクを計算することと、マスクに基づいて第1の区分と第2の区分とを符号化することと、符号化された第1の区分と、符号化された第2の区分と、傾斜値と、y切片値とを出力することとを含み得る。ビデオデコーダ30などのビデオデコーダは、ビデオデータを復号するための同様の方法を実行し得る。ビデオデータを復号する例示的な方法は、幾何学的動き区分線によって第1の区分と第2の区分とに区分化されたビデオデータの符号化されたブロックを受信することと、幾何学的動き区分線を定義し、整数値を有する傾斜値及びy切片値を受信することと、第1の区分中のブロックの画素と第2の区分中のブロックの画素とを示すマスクを計算することと、マスクに基づいてブロックの第1の区分と第2の区分とを復号することと、復号されたブロックを出力することとを含み得る。1つ以上の例では、説明した機能はハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つ以上の命令又はコードとしてコンピュータ可読媒体上に記憶されるか、或いはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、例えば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含むデータ記憶媒体又は通信媒体などの有形媒体に対応するコンピュータ可読記憶媒体を含み得る。このようにして、コンピュータ可読媒体は、概して、1非一時的である有形コンピュータ可読記憶媒体、或いは2信号又は搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明する技法の実装のための命令、コード及び/又はデータ構造を取り出すために1つ以上のコンピュータ又は1つ以上のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM、CD-ROM又は他の光ディスクストレージ、磁気ディスクストレージ又は他の磁気ストレージ機器、フラッシュメモリ、或いは命令又はデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。例えば、命令が、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者回線DSL、又は赤外線、無線、及びマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、又は他のリモートソースから送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、又は赤外線、無線、及びマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。但し、コンピュータ可読記憶媒体及びデータ記憶媒体は、接続、搬送波、信号、又は他の一時媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用するディスクdisk及びディスクdiscは、コンパクトディスクdiscCD、レーザディスクdisc、光ディスクdisc、デジタル多用途ディスクdiscDVD、フロッピー登録商標ディスクdisk及びブルーレイ登録商標ディスクdiscを含み、ディスクdiskは、通常、データを磁気的に再生し、ディスクdiscは、データをレーザで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含めるべきである。命令は、1つ以上のデジタル信号プロセッサDSPなどの1つ以上のプロセッサ、汎用マイクロプロセッサ、特定用途向け集積回路ASIC、フィールドプログラマブル論理アレイFPGA、或いは他の等価な集積回路又はディスクリート論理回路によって実行され得る。従って、本明細書で使用するプロセッサという用語は、前述の構造、又は本明細書で説明した技法の実装に好適な他の構造のいずれかを指し得る。さらに、幾つかの態様では、本明細書で説明した機能は、符号化及び復号のために構成された専用のハードウェア及び/又はソフトウェアモジュール内に提供され得、或いは複合コーデックに組み込まれ得る。また、本技法は、1つ以上の回路又は論理要素中に十分に実装され得る。本開示の技法は、ワイヤレスハンドセット、集積回路IC又はICのセット例えば、チップセットを含む、多種多様な機器又は装置において実施され得る。本開示では、開示する技法を実行するように構成された機器の機能的態様を強調するために様々な構成要素、モジュール、又はユニットについて説明したが、それらの構成要素、モジュール、又はユニットを、必ずしも異なるハードウェアユニットによって実現する必要はない。むしろ、上記で説明したように、様々なユニットが、好適なソフトウェア及び/又はファームウェアとともに、上記で説明したように1つ以上のプロセッサを含んで、コーデックハードウェアユニットにおいて組み合わせられるか、又は相互動作ハードウェアユニットの集合によって与えられ得る。様々な例について説明した。これら及び他の例は以下の特許請求の範囲内に入る。"