(57)【特許請求の範囲】
【請求項１】
ビデオデータを復号する方法であって、
第1の参照ピクチャと、前記第1の参照ピクチャとは異なる第2の参照ピクチャとを復号するステップであって、前記第1の参照ピクチャおよび前記第2の参照ピクチャが、ともに現在のピクチャの前に表示されるべきか、またはともに前記現在のピクチャの後に表示されるべきかのいずれかである、復号するステップと、
前記現在のピクチャの現在のブロックから前記第1の参照ピクチャの第1の参照ブロックへの第1の動きベクトル(MV0)を決定するステップと、
前記現在のブロックから前記第2の参照ピクチャの第2の参照ブロックへの第2の動きベクトル(MV1)を決定するステップと、
前記現在のピクチャから前記第1の参照ピクチャまでの第1の時間的距離(TD0)を決定するステップと、
前記現在のピクチャから前記第2の参照ピクチャまでの第2の時間的距離(TD1)を決定するステップと、
MV0、MV1、TD0およびTD1を使用して双方向オプティカルフロー(BIO)に従って前記現在のブロックを復号するステップと
を含み、BIOに従って前記現在のブロックを復号するステップが、MV0およびMV1がTD0およびTD1に比例するとき、BIOに従って前記現在のブロックを復号するステップを含み、MV0がx成分(MV0x)とy成分(MV0y)とを含み、MV1がx成分(MV1x)とy成分(MV1y)とを含み、前記方法がさらに、(|MV0x*TD1-MV1x*TD0|==0&&|MV0y*TD1-MV1y*TD0|==0)であるとき、MV0およびMV1がTD0およびTD1に比例すると決定するステップを含む、方法。
【請求項２】
第2のブロックのMV0’およびMV1’が前記第2のブロックのTD0’およびTD1’にほぼ比例するとき、BIOに従って前記第2のブロックを復号するステップをさらに含み、MV0’がx成分(MV0x’)とy成分(MV0y’)とを含み、MV1’がx成分(MV1x’)とy成分(MV1y’)とを含み、前記方法がさらに、
しきい値(Th)を決定するステップと、
(|MV0x’*TD1’-MV1x’*TD0’|<=Th&&|MV0y’*TD1’-MV1y’*TD0’|<=Th)であるとき、MV0’およびMV1’がTD0’およびTD1’にほぼ比例すると決定するステップと
を含む、請求項1に記載の方法。
【請求項３】
Thを決定するステップが、Thを規定する構成データを取り出すステップを含む、請求項2に記載の方法。
【請求項４】
Thを決定するステップが、Thを規定するシンタックス要素を復号するステップを含む、請求項2に記載の方法。
【請求項５】
前記シンタックス要素を復号するステップが、前記シンタックス要素を含むシーケンスパラメータセット(SPS)、前記シンタックス要素を含むピクチャパラメータセット(PPS)、前記シンタックス要素を含むスライスヘッダ、または前記シンタックス要素を含むブロックレベルシンタックスのうちの少なくとも1つを復号するステップを含む、請求項4に記載の方法。
【請求項６】
BIOに従って前記現在のブロックを復号するステップが、MV0およびMV1が0でないときにだけ、BIOに従って前記現在のブロックを復号するステップを含む、請求項1に記載の方法。
【請求項７】
BIOに従って前記現在のブロックを復号するステップが、前記現在のピクチャの前記現在のブロックの照度補償フラグ(ic_flag)が、前記現在のブロックが照度変化の領域内にないことを示す値を有するときにだけ、BIOに従って前記現在のブロックを復号するステップを含む、請求項1に記載の方法。
【請求項８】
BIOに従って前記現在のブロックを復号するステップが、式
【数１】
0006676156.tif 000015
に従って前記現在のブロックを復号するステップを含み、It0はMV0の動き軌道上のピクセルであり、It1はMV1の動き軌道上のピクセルであり、Gx0及びGy0はMV0の前記動き軌道上の前記ピクセルに対する勾配であり、Gx1及びGy1はMV1の前記動き軌道上の前記ピクセルに対する勾配であり、Vx0およびVy0はMV0の前記動き軌道上の前記ピクセルの移動速度を定義し、Vx1およびVy1はMV1の前記動き軌道上の前記ピクセルの移動速度を定義する、請求項1に記載の方法。
【請求項９】
BIOに従って前記現在のブロックを復号するステップが、前記第1の参照ピクチャに対する勾配(Gx)、前記第2の参照ピクチャに対する勾配(Gy)、TD0およびTD1に少なくとも部分的に基づいて前記現在のブロックを復号するステップを含む、請求項1に記載の方法。
【請求項１０】
前記現在のブロックを復号するステップが、Gx’およびGy’を使用して前記現在のブロックを復号するステップを含み、Gx’=Gx・TD0およびGy’=Gy・TD1である、請求項9に記載の方法。
【請求項１１】
前記現在のブロックを復号するステップが、Gx’およびGy’を使用して前記現在のブロックを復号するステップを含み、Gx’がGxと、TD0に関連する係数とから計算され、Gy’がGyと、TD1に関連する係数とから計算される、請求項9に記載の方法。
【請求項１２】
前記第1の参照ピクチャを前記現在のピクチャに対する参照ピクチャリスト0に追加するステップと、
前記第2の参照ピクチャを前記現在のピクチャに対する参照ピクチャリスト0に追加するステップと
をさらに含む、請求項1に記載の方法。
【請求項１３】
前記第1の参照ピクチャを前記現在のピクチャに対する参照ピクチャリスト1に追加するステップと、
前記第2の参照ピクチャを前記現在のピクチャに対する参照ピクチャリスト1に追加するステップと
をさらに含む、請求項1に記載の方法。
【請求項１４】
TD0を決定するステップが、前記現在のピクチャに対する現在のピクチャ順序カウント(POC)値と前記第1の参照ピクチャに対する第1のPOC値との間の第1の差に等しいとしてTD0を計算するステップを含み、
TD1を決定するステップが、前記現在のピクチャに対する前記現在のPOC値と前記第2の参照ピクチャに対する第2のPOC値との間の第2の差に等しいものとしてTD1を計算するステップを含む、請求項1に記載の方法。
【請求項１５】
ビデオデータを符号化する方法であって、
第1の参照ピクチャと、前記第1の参照ピクチャとは異なる第2の参照ピクチャとを符号化するステップであって、前記第1の参照ピクチャおよび前記第2の参照ピクチャが、ともに現在のピクチャの前に表示されるべきか、またはともに前記現在のピクチャの後に表示されるべきかのいずれかである、符号化するステップと、
前記現在のピクチャの現在のブロックから前記第1の参照ピクチャの第1の参照ブロックへの第1の動きベクトル(MV0)を決定するステップと、
前記現在のブロックから前記第2の参照ピクチャの第2の参照ブロックへの第2の動きベクトル(MV1)を決定するステップと、
前記現在のピクチャから前記第1の参照ピクチャまでの第1の時間的距離(TD0)を決定するステップと、
前記現在のピクチャから前記第2の参照ピクチャまでの第2の時間的距離(TD1)を決定するステップと、
MV0、MV1、TD0およびTD1を使用して双方向オプティカルフロー(BIO)に従って前記現在のブロックを符号化するステップと
を含み、BIOに従って前記現在のブロックを符号化するステップが、MV0およびMV1がTD0およびTD1に比例するとき、BIOに従って前記現在のブロックを符号化するステップを含み、MV0がx成分(MV0x)とy成分(MV0y)とを含み、MV1がx成分(MV1x)とy成分(MV1y)とを含み、前記方法がさらに、(|MV0x*TD1-MV1x*TD0|==0&&|MV0y*TD1-MV1y*TD0|==0)であるとき、MV0およびMV1がTD0およびTD1に比例すると決定するステップを含む、方法。
【請求項１６】
第2のブロックのMV0’およびMV1’が前記第2のブロックのTD0’およびTD1’にほぼ比例するとき、BIOに従って前記第2のブロックを符号化するステップをさらに含み、MV0’がx成分(MV0x’)とy成分(MV0y’)とを含み、MV1’がx成分(MV1x’)とy成分(MV1y’)とを含み、前記方法がさらに、
しきい値(Th)を決定するステップと、
(|MV0x’*TD1’-MV1x’*TD0’|<=Th&&|MV0y’*TD1’-MV1y’*TD0’|<=Th)であるとき、MV0’およびMV1’がTD0’およびTD1’にほぼ比例すると決定するステップとを含む、請求項15に記載の方法。
【請求項１７】
Thを規定するシンタックス要素に対する値を符号化するステップをさらに含む、請求項16に記載の方法。
【請求項１８】
前記シンタックス要素を符号化するステップが、前記シンタックス要素を含むシーケンスパラメータセット(SPS)、前記シンタックス要素を含むピクチャパラメータセット(PPS)、前記シンタックス要素を含むスライスヘッダ、または前記シンタックス要素を含むブロックレベルシンタックスのうちの少なくとも1つを符号化するステップを含む、請求項17に記載の方法。
【請求項１９】
BIOに従って前記現在のブロックを符号化するステップが、MV0およびMV1が0でないときにだけ、BIOに従って前記現在のブロックを符号化するステップを含む、請求項15に記載の方法。
【請求項２０】
BIOに従って前記現在のブロックを符号化するステップが、前記現在のブロックが照度変化の領域内にないときにだけ、BIOに従って前記現在のブロックを符号化するステップを含む、請求項15に記載の方法。
【請求項２１】
BIOに従って前記現在のブロックを符号化するステップが、式
【数２】
0006676156.tif 000016
に従って前記現在のブロックを符号化するステップを含み、It0はMV0の動き軌道上のピクセルであり、It1はMV1の動き軌道上のピクセルであり、Gx0及びGy0はMV0の前記動き軌道上の前記ピクセルに対する勾配であり、Gx1及びGy1はMV1の前記動き軌道上の前記ピクセルに対する勾配であり、Vx0およびVy0はMV0の前記動き軌道上の前記ピクセルの移動速度を定義し、Vx1およびVy1はMV1の前記動き軌道上の前記ピクセルの移動速度を定義する、請求項15に記載の方法。
【請求項２２】
BIOに従って前記現在のブロックを符号化するステップが、前記第1の参照ピクチャに対する勾配(Gx)、前記第2の参照ピクチャに対する勾配(Gy)、TD0およびTD1に少なくとも部分的に基づいて前記現在のブロックを符号化するステップを含む、請求項15に記載の方法。
【請求項２３】
前記現在のブロックを符号化するステップが、Gx’およびGy’を使用して前記現在のブロックを符号化するステップを含み、Gx’=Gx・TD0およびGy’=Gy・TD1である、請求項22に記載の方法。
【請求項２４】
前記現在のブロックを符号化するステップが、Gx’およびGy’を使用して前記現在のブロックを符号化するステップを含み、Gx’がGxと、TD0に関連する係数とから計算され、Gy’がGyと、TD1に関連する係数とから計算される、請求項22に記載の方法。
【請求項２５】
ビデオデータを復号するためのデバイスであって、
ビデオデータを記憶するように構成されたメモリと、
1つまたは複数のプロセッサとを備え、前記1つまたは複数のプロセッサが、
前記ビデオデータの第1の参照ピクチャと、前記第1の参照ピクチャとは異なる第2の参照ピクチャとを復号することであって、前記第1の参照ピクチャおよび前記第2の参照ピクチャが、ともに現在のピクチャの前に表示されるべきか、またはともに前記現在のピクチャの後に表示されるべきかのいずれかである、復号することと、
前記現在のピクチャの現在のブロックから前記第1の参照ピクチャの第1の参照ブロックへの第1の動きベクトル(MV0)を決定することと、
前記現在のブロックから前記第2の参照ピクチャの第2の参照ブロックへの第2の動きベクトル(MV1)を決定することと、
前記現在のピクチャから前記第1の参照ピクチャまでの第1の時間的距離(TD0)を決定することと、
前記現在のピクチャから前記第2の参照ピクチャまでの第2の時間的距離(TD1)を決定することと、
MV0、MV1、TD0およびTD1を使用して双方向オプティカルフロー(BIO)に従って前記現在のブロックを復号することと
を行うように構成され、BIOに従って前記現在のブロックを復号するために、前記1つまたは複数のプロセッサが、MV0およびMV1がTD0およびTD1に比例するとき、BIOに従って前記現在のブロックを復号するように構成され、MV0がx成分(MV0x)とy成分(MV0y)とを含み、MV1がx成分(MV1x)とy成分(MV1y)とを含み、前記1つまたは複数のプロセッサが、(|MV0x*TD1-MV1x*TD0|==0&&|MV0y*TD1-MV1y*TD0|==0)であるとき、MV0およびMV1がTD0およびTD1に比例すると決定するように構成される、デバイス。
【請求項２６】
前記プロセッサが、第2のブロックのMV0’およびMV1’が前記第2のブロックのTD0’およびTD1’にほぼ比例するとき、BIOに従って前記第2のブロックを復号するように構成され、MV0’がx成分(MV0x’)とy成分(MV0y’)とを含み、MV1’がx成分(MV1x’)とy成分(MV1y’)とを含み、前記プロセッサがさらに、
しきい値(Th)を決定することと、
(|MV0x’*TD1’-MV1x’*TD0’|<=Th&&|MV0y’*TD1’-MV1y’*TD0’|<=Th)であるとき、MV0’およびMV1’がTD0’およびTD1’にほぼ比例すると決定することとを行うように構成される、請求項25に記載のデバイス。
【請求項２７】
前記プロセッサが、MV0およびMV1が0でないときにだけ、BIOに従って前記現在のブロックを復号するように構成される、請求項25に記載のデバイス。
【請求項２８】
前記現在のピクチャの前記現在のブロックの照度補償フラグ(ic_flag)が、前記現在のブロックが照度変化の領域内にないことを示す値を有するときにだけ、前記プロセッサが、BIOに従って前記現在のブロックを復号するように構成される、請求項25に記載のデバイス。
【請求項２９】
前記プロセッサが、式
【数３】
0006676156.tif 000017
を使用してBIOに従って前記現在のブロックを復号するように構成され、It0はMV0の動き軌道上のピクセルであり、It1はMV1の動き軌道上のピクセルであり、Gx0及びGy0はMV0の前記動き軌道上の前記ピクセルに対する勾配であり、Gx1及びGy1はMV1の前記動き軌道上の前記ピクセルに対する勾配であり、Vx0およびVy0はMV0の前記動き軌道上の前記ピクセルの移動速度を定義し、Vx1およびVy1はMV1の前記動き軌道上の前記ピクセルの移動速度を定義する、請求項25に記載のデバイス。
【請求項３０】
前記プロセッサが、前記第1の参照ピクチャに対する勾配(Gx)、前記第2の参照ピクチャに対する勾配(Gy)、TD0およびTD1に少なくとも部分的に基づいて前記現在のブロックを復号するように構成される、請求項25に記載のデバイス。
【請求項３１】
前記デバイスが、前記復号された現在のブロックを含むピクチャを表示するように構成されたディスプレイを備える、請求項25に記載のデバイス。
【請求項３２】
前記デバイスが、カメラ、コンピュータ、モバイルデバイス、ブロードキャスト受信機デバイス、またはセットトップボックスのうちの1つまたは複数を備える、請求項25に記載のデバイス。
【請求項３３】
ビデオデータのピクチャを復号するためのデバイスであって、
第1の参照ピクチャと、前記第1の参照ピクチャとは異なる第2の参照ピクチャとを復号するための手段であって、前記第1の参照ピクチャおよび前記第2の参照ピクチャが、ともに現在のピクチャの前に表示されるべきか、またはともに前記現在のピクチャの後に表示されるべきかのいずれかである、復号するための手段と、
前記現在のピクチャの現在のブロックから前記第1の参照ピクチャの第1の参照ブロックへの第1の動きベクトル(MV0)を決定するための手段と、
前記現在のブロックから前記第2の参照ピクチャの第2の参照ブロックへの第2の動きベクトル(MV1)を決定するための手段と、
前記現在のピクチャから前記第1の参照ピクチャまでの第1の時間的距離(TD0)を決定するための手段と、
前記現在のピクチャから前記第2の参照ピクチャまでの第2の時間的距離(TD1)を決定するための手段と、
MV0、MV1、TD0およびTD1を使用して双方向オプティカルフロー(BIO)に従って前記現在のブロックを復号するための手段と
を含み、BIOに従って前記現在のブロックを復号するための前記手段が、MV0およびMV1がTD0およびTD1に比例するとき、BIOに従って前記現在のブロックを復号するための手段を含み、MV0がx成分(MV0x)とy成分(MV0y)とを含み、MV1がx成分(MV1x)とy成分(MV1y)とを含み、前記デバイスがさらに、(|MV0x*TD1-MV1x*TD0|==0&&|MV0y*TD1-MV1y*TD0|==0)であるとき、MV0およびMV1がTD0およびTD1に比例すると決定するための手段を含む、デバイス。
【請求項３４】
第2のブロックのMV0’およびMV1’が前記第2のブロックのTD0’およびTD1’にほぼ比例するとき、BIOに従って前記第2のブロックを復号するための手段をさらに含み、MV0’がx成分(MV0x’)とy成分(MV0y’)とを含み、MV1’がx成分(MV1x’)とy成分(MV1y’)とを含み、前記デバイスがさらに、
しきい値(Th)を決定するための手段と、
(|MV0x’*TD1’-MV1x’*TD0’|<=Th&&|MV0y’*TD1’-MV1y’*TD0’|<=Th)であるとき、MV0’およびMV1’がTD0’およびTD1’にほぼ比例すると決定するための手段とを含む、請求項33に記載のデバイス。
【請求項３５】
BIOに従って前記現在のブロックを復号するための前記手段が、MV0およびMV1が0でないときにだけ、BIOに従って前記現在のブロックを復号するための手段を含む、請求項33に記載のデバイス。
【請求項３６】
BIOに従って前記現在のブロックを復号するための前記手段が、前記現在のピクチャの前記現在のブロックの照度補償フラグ(ic_flag)が、前記現在のブロックが照度変化の領域内にないことを示す値を有するときにだけ、BIOに従って前記現在のブロックを復号するための手段を含む、請求項33に記載のデバイス。
【請求項３７】
BIOに従って前記現在のブロックを復号するための前記手段が、式
【数４】
0006676156.tif 000018
に従って前記現在のブロックを復号するための手段を含み、It0はMV0の動き軌道上のピクセルであり、It1はMV1の動き軌道上のピクセルであり、Gx0及びGy0はMV0の前記動き軌道上の前記ピクセルに対する勾配であり、Gx1及びGy1はMV1の前記動き軌道上の前記ピクセルに対する勾配であり、Vx0およびVy0はMV0の前記動き軌道上の前記ピクセルの移動速度を定義し、Vx1およびVy1はMV1の前記動き軌道上の前記ピクセルの移動速度を定義する、請求項33に記載のデバイス。
【請求項３８】
BIOに従って前記現在のブロックを復号するための前記手段が、前記第1の参照ピクチャに対する勾配(Gx)、前記第2の参照ピクチャに対する勾配(Gy)、TD0およびTD1に少なくとも部分的に基づいて前記現在のブロックを復号するための手段を含む、請求項33に記載のデバイス。
【請求項３９】
命令を記憶した非一時的なコンピュータ可読記憶媒体であって、前記命令が、実行されたときに、
第1の参照ピクチャと、前記第1の参照ピクチャとは異なる第2の参照ピクチャとを復号することであって、前記第1の参照ピクチャおよび前記第2の参照ピクチャが、ともに現在のピクチャの前に表示されるべきか、またはともに前記現在のピクチャの後に表示されるべきかのいずれかである、復号することと、
前記現在のピクチャの現在のブロックから前記第1の参照ピクチャの第1の参照ブロックへの第1の動きベクトル(MV0)を決定することと、
前記現在のブロックから前記第2の参照ピクチャの第2の参照ブロックへの第2の動きベクトル(MV1)を決定することと、
前記現在のピクチャから前記第1の参照ピクチャまでの第1の時間的距離(TD0)を決定することと、
前記現在のピクチャから前記第2の参照ピクチャまでの第2の時間的距離(TD1)を決定することと、
MV0、MV1、TD0およびTD1を使用して双方向オプティカルフロー(BIO)に従って前記現在のブロックを復号することと
を、ビデオデータを復号するためのデバイスのプロセッサに行わせ、BIOに従って前記現在のブロックを前記プロセッサに復号させる前記命令が、MV0およびMV1がTD0およびTD1に比例するとき、BIOに従って前記現在のブロックを前記プロセッサに復号させる命令を含み、MV0がx成分(MV0x)とy成分(MV0y)とを含み、MV1がx成分(MV1x)とy成分(MV1y)とを含み、(|MV0x*TD1-MV1x*TD0|==0&&|MV0y*TD1-MV1y*TD0|==0)であるとき、MV0およびMV1がTD0およびTD1に比例すると前記プロセッサに決定させる命令をさらに含む、非一時的なコンピュータ可読記憶媒体。
【請求項４０】
第2のブロックのMV0’およびMV1’が前記第2のブロックのTD0’およびTD1’にほぼ比例するとき、BIOに従って前記第2のブロックを前記プロセッサに復号させる命令をさらに含み、MV0’がx成分(MV0x’)とy成分(MV0y’)とを含み、MV1’がx成分(MV1x’)とy成分(MV1y’)とを含み、
しきい値(Th)を決定することと、
(|MV0x’*TD1’-MV1x’*TD0’|<=Th&&|MV0y’*TD1’-MV1y’*TD0’|<=Th)であるとき、MV0’およびMV1’がTD0’およびTD1’にほぼ比例すると決定することとを前記プロセッサに行わせる命令をさらに含む、請求項39に記載の非一時的なコンピュータ可読記憶媒体。
【請求項４１】
BIOに従って前記現在のブロックを前記プロセッサに復号させる前記命令が、MV0およびMV1が0でないときにだけ、BIOに従って前記現在のブロックを前記プロセッサに復号させる命令を含む、請求項39に記載の非一時的なコンピュータ可読記憶媒体。
【請求項４２】
BIOに従って前記現在のブロックを前記プロセッサに復号させる前記命令が、前記現在のピクチャの前記現在のブロックの照度補償フラグ(ic_flag)が、前記現在のブロックが照度変化の領域内にないことを示す値を有するときにだけ、BIOに従って前記現在のブロックを前記プロセッサに復号させる命令を含む、請求項39に記載の非一時的なコンピュータ可読記憶媒体。
【請求項４３】
BIOに従って前記現在のブロックを前記プロセッサに復号させる前記命令が、式
【数５】
0006676156.tif 000019
に従って前記現在のブロックを前記プロセッサに復号させる命令を含み、It0はMV0の動き軌道上のピクセルであり、It1はMV1の動き軌道上のピクセルであり、Gx0及びGy0はMV0の前記動き軌道上の前記ピクセルに対する勾配であり、Gx1及びGy1はMV1の前記動き軌道上の前記ピクセルに対する勾配であり、Vx0およびVy0はMV0の前記動き軌道上の前記ピクセルの移動速度を定義し、Vx1およびVy1はMV1の前記動き軌道上の前記ピクセルの移動速度を定義する、請求項39に記載の非一時的なコンピュータ可読記憶媒体。
【請求項４４】
BIOに従って前記現在のブロックを前記プロセッサに復号させる前記命令が、前記第1の参照ピクチャに対する勾配(Gx)、前記第2の参照ピクチャに対する勾配(Gy)、TD0およびTD1に少なくとも部分的に基づいて前記現在のブロックを前記プロセッサに復号させる命令を含む、請求項39に記載の非一時的なコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、その内容全体が参照により本明細書に組み込まれる、2015年9月28日に出願した米国仮出願第62/233,846号の利益を主張するものである。
【０００２】
本開示は、ビデオコーディングに関する。
【背景技術】
【０００３】
デジタルビデオ能力は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末(PDA)、ラップトップまたはデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダー、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲーミングデバイス、ビデオゲームコンソール、セルラーまたは衛星無線電話、いわゆる「スマートフォン」、ビデオ会議デバイス、ビデオストリーミングデバイスなどを含む広範囲のデバイスに組み込まれ得る。デジタルビデオデバイスは、MPEG-2、MPEG-4、ITU-T H.263、ITU-T H.264/MPEG-4、Part 10、アドバンストビデオコーディング(AVC)、ITU-T H.265、高効率ビデオコーディング(HEVC)によって規定された規格、およびそのような規格の拡張に記載されているものなどのビデオコーディング技法を実施する。ビデオデバイスは、そのようなビデオコーディング技法を実施することによって、デジタルビデオ情報をより効率的に送信、受信、符号化、復号、および/または記憶し得る。
【０００４】
ビデオコーディング技法は、ビデオシーケンスに固有の冗長性を低減または除去するために、空間的(ピクチャ内)予測および/または時間的(ピクチャ間)予測を含む。ブロックベースのビデオコーディングのために、ビデオスライス(たとえば、ビデオフレーム、またはビデオフレームの一部)は、ビデオブロックに区分されてもよく、ビデオブロックはまた、ツリーブロック、コーディング単位(CU:coding unit)、および/またはコーディングノードと呼ばれることがある。ピクチャのイントラコーディングされた(I)スライス内のビデオブロックは、同じピクチャ内の隣接ブロック内の参照サンプルに対する空間的予測を用いて符号化されてもよい。ピクチャのインターコーディングされる(PまたはB)スライスの中のビデオブロックは、同じピクチャの中の隣接ブロックの中の参照サンプルに対する空間的予測、または他の参照ピクチャの中の参照サンプルに対する時間的予測を使用することができる。ピクチャはフレームと呼ばれることがあり、参照ピクチャは参照フレームと呼ばれることがある。
【０００５】
空間的予測または時間的予測は、コーディングされるべきブロックのための予測ブロックをもたらす。残差データは、コーディングされるべき元のブロックと予測ブロックとの間のピクセル差分を表す。インターコーディングされるブロックは、予測ブロックを形成する参照サンプルのブロックを指す動きベクトルと、コーディングされたブロックと予測ブロックとの差分を示す残差データとに従って符号化される。イントラコーディングされるブロックは、イントラコーディングモードと残差データとに従って符号化される。さらなる圧縮のために、残差データは、ピクセル領域から変換領域に変換されて残差変換係数をもたらしてよく、残差変換係数は、次いで、量子化され得る。最初に2次元アレイで構成された量子化変換係数は、変換係数の1次元ベクトルを生成するために走査されてよく、なお一層の圧縮を達成するためにエントロピーコーディングが適用され得る。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国仮出願第62/139,572号
【特許文献２】米国仮出願第62/182,367号
【非特許文献】
【０００７】
【非特許文献１】国際電気通信連合、「Advanced video coding for generic audiovisual services」、SERIES H: AUDIOVISUAL AND MULTIMEDIA SYSTEMS, Infrastructure of audiovisual services - Coding of moving video、H.264、2011年6月
【非特許文献２】国際電気通信連合、「High efficiency video coding」、SERIES H: AUDIOVISUAL AND MULTIMEDIA SYSTEMS, Infrastructure of audiovisual services - Coding of moving video、2015年4月
【非特許文献３】H. Liu、R. Xiong、D. Zhao、S. MaおよびW. Gao、「Multiple Hypotheses Bayesian Frame Rate Up-Conversion by Adaptive Fusion of Motion-Compensated Interpolations」、IEEE transactions on circuits and systems for video technology、vol. 22、No. 8、2012年8月
【非特許文献４】W. H. Lee、K. Choi、J. B. Ra、「Frame rate up conversion based on variational image fusion」、IEEE transactions on image processing、vol. 23、No. 1、2014年1月
【非特許文献５】U. S. KimおよびM. H. Sunwoo、「New frame rate up-conversion algorithms with low computational complexity」、IEEE transactions on circuits and systems for video technology、vol. 24、No. 3、2014年3月
【非特許文献６】E. Alshina、A. Alshin、J.-H. Min、K. Choi、A. Saxena、M. Budagavi、「Known tools performance investigation for next generation video coding」、ITU電気通信標準化部門、研究グループ16 Question 6、ビデオコーディングエキスパーツグループ(VCEG)、VCEG-AZ05、2015年6月、ワルシャワ、ポーランド
【非特許文献７】A. Alshina、E. Alshina、T. Lee、「Bi-directional optical flow for improving motion compensation」、ピクチャコーディングシンポジウム(PCS)、名古屋、日本、2010年
【非特許文献８】S.-F. Tu、O. C. Au、Y. Wu、E. LuoおよびC.-H. Yeun、「A Novel Framework for Frame Rate Up Conversion by Predictive Variable Block-Size Motion Estimated Optical Flow」、画像信号処理国際会議(CISP)、2009年
【発明の概要】
【課題を解決するための手段】
【０００８】
概して、本開示は、ビデオデータをコーディング(たとえば、符号化または復号)するための技法について説明する。より具体的には、本開示は、双方向オプティカルフロー(BIO)処理技法に対する様々な改善について説明する。具体的には、本開示は、同じ方向に発生する参照ピクチャ(たとえば、両参照ピクチャが現在のピクチャの前または現在のピクチャの後の表示順序値を有する)から双方向に予測されるブロックが、BIOを使用して予測される技法について説明する。たとえば、ビデオコーダは、参照ピクチャ内の参照ブロックを指す動きベクトルが、現在のピクチャと参照ピクチャとの間の対応する時間的距離に比例するかまたはほぼ比例するかどうかを決定し得る。加えてまたは代替として、ビデオコーダは、動きベクトルが0値である、および/または現在のブロックが照度変化の領域内で発生する、のうちの少なくとも一方であるとき、BIOを使用することを回避してもよい。
【０００９】
一例では、ビデオデータを復号する方法は、第1の参照ピクチャと、第1の参照ピクチャとは異なる第2の参照ピクチャとを復号するステップと、第1の参照ピクチャを現在のピクチャに対する参照ピクチャリストに追加するステップであって、第1の参照ピクチャおよび第2の参照ピクチャが、ともに現在のピクチャの前に表示されるべきか、またはともに現在のピクチャの後に表示されるべきかのいずれかである、追加するステップと、現在のピクチャの現在のブロックから第1の参照ピクチャの第1の参照ブロックへの第1の動きベクトル(MV0)を決定するステップと、現在のブロックから第2の参照ピクチャの第2の参照ブロックへの第2の動きベクトル(MV1)を決定するステップと、現在のピクチャから第1の参照ピクチャまでの第1の時間的距離(TD0)を決定するステップと、現在のピクチャから第2の参照ピクチャまでの第2の時間的距離(TD1)を決定するステップと、MV0、MV1、TD0およびTD1を使用して双方向オプティカルフロー(BIO)に従って現在のブロックを復号するステップとを含む。
【００１０】
別の例では、ビデオデータを符号化する方法は、第1の参照ピクチャと、第1の参照ピクチャとは異なる第2の参照ピクチャとを符号化するステップであって、第1の参照ピクチャおよび第2の参照ピクチャが、ともに現在のピクチャの前に表示されるべきか、またはともに現在のピクチャの後に表示されるべきかのいずれかである、符号化するステップと、現在のピクチャの現在のブロックから第1の参照ピクチャの第1の参照ブロックへの第1の動きベクトル(MV0)を決定するステップと、現在のブロックから第2の参照ピクチャの第2の参照ブロックへの第2の動きベクトル(MV1)を決定するステップと、現在のピクチャから第1の参照ピクチャまでの第1の時間的距離(TD0)を決定するステップと、現在のピクチャから第2の参照ピクチャまでの第2の時間的距離(TD1)を決定するステップと、MV0、MV1、TD0およびTD1を使用して双方向オプティカルフロー(BIO)に従って現在のブロックを符号化するステップとを含む。
【００１１】
別の例では、ビデオデータを復号するためのデバイスは、ビデオデータを記憶するように構成されたメモリと1つまたは複数のプロセッサとを含み、1つまたは複数のプロセッサは、第1の参照ピクチャと、第1の参照ピクチャとは異なる第2の参照ピクチャとを復号することであって、第1の参照ピクチャおよび第2の参照ピクチャが、ともに現在のピクチャの前に表示されるべきか、またはともに現在のピクチャの後に表示されるべきかのいずれかである、復号することと、現在のピクチャの現在のブロックから第1の参照ピクチャの第1の参照ブロックへの第1の動きベクトル(MV0)を決定することと、現在のブロックから第2の参照ピクチャの第2の参照ブロックへの第2の動きベクトル(MV1)を決定することと、現在のピクチャから第1の参照ピクチャまでの第1の時間的距離(TD0)を決定することと、現在のピクチャから第2の参照ピクチャまでの第2の時間的距離(TD1)を決定することと、MV0、MV1、TD0およびTD1を使用して双方向オプティカルフロー(BIO)に従って現在のブロックを復号することとを行うように構成される。
【００１２】
別の例では、ビデオデータを復号するためのデバイスは、第1の参照ピクチャと、第1の参照ピクチャとは異なる第2の参照ピクチャとを復号するための手段であって、第1の参照ピクチャおよび第2の参照ピクチャが、ともに現在のピクチャの前に表示されるべきか、またはともに現在のピクチャの後に表示されるべきかのいずれかである、復号するための手段と、現在のピクチャの現在のブロックから第1の参照ピクチャの第1の参照ブロックへの第1の動きベクトル(MV0)を決定するための手段と、現在のブロックから第2の参照ピクチャの第2の参照ブロックへの第2の動きベクトル(MV1)を決定するための手段と、現在のピクチャから第1の参照ピクチャまでの第1の時間的距離(TD0)を決定するための手段と、現在のピクチャから第2の参照ピクチャまでの第2の時間的距離(TD1)を決定するための手段と、MV0、MV1、TD0およびTD1を使用して双方向オプティカルフロー(BIO)に従って現在のブロックを復号するための手段とを含む。
【００１３】
別の例では、コンピュータ可読記憶媒体が命令を記憶しており、その命令は、実行されたとき、第1の参照ピクチャと、第1の参照ピクチャとは異なる第2の参照ピクチャとを復号することであって、第1の参照ピクチャおよび第2の参照ピクチャが、ともに現在のピクチャの前に表示されるべきか、またはともに現在のピクチャの後に表示されるべきかのいずれかである、復号することと、現在のピクチャの現在のブロックから第1の参照ピクチャの第1の参照ブロックへの第1の動きベクトル(MV0)を決定することと、現在のブロックから第2の参照ピクチャの第2の参照ブロックへの第2の動きベクトル(MV1)を決定することと、現在のピクチャから第1の参照ピクチャまでの第1の時間的距離(TD0)を決定することと、現在のピクチャから第2の参照ピクチャまでの第2の時間的距離(TD1)を決定することと、MV0、MV1、TD0およびTD1を使用して双方向オプティカルフロー(BIO)に従って現在のブロックを復号することとを、ビデオデータを復号するためのデバイスのプロセッサに行わせる。
【００１４】
1つまたは複数の例の詳細が、添付図面および以下の説明において記載される。他の特徴、目的、および利点は、説明および図面から、ならびに特許請求の範囲から明らかになろう。
【図面の簡単な説明】
【００１５】
【図１】双方向オプティカルフローのための技法を利用し得る例示的なビデオ符号化および復号システムを示すブロック図である。
【図２】動き補償されたフレームレートアップコンバージョン(MC-FRUC)に対して実行されたブロックマッチングアルゴリズム(BMA)として一方向動き推定(ME)の一例を示す概念図である。
【図３】MC-FRUCに対して実行されたBMAとして双方向MEの一例を示す概念図である。
【図４】本開示の技法による、双方向オプティカルフロー(BIO)に対する例示的な改善を示す概念図である。
【図５】ビデオエンコーダの一例を示すブロック図である。
【図６】双方向オプティカルフローに対する技法を実装し得るビデオデコーダの一例を示すブロック図である。
【図７】本開示の技法による、ビデオデータのブロックを予測するための例示的な方法を示すフローチャートである。
【図８】本開示の技法による、ビデオデータのブロックを復号する例示的な方法を示すフローチャートである。
【発明を実施するための形態】
【００１６】
概して、本開示の技法は、双方向オプティカルフロー(BIO)の改善に関する。BIOは、動き補償の間に適用され得る。概して、BIOは、現在のブロックのピクセルが動きベクトルに適用された対応するオフセット値を使用して予測されるように、現在のブロックに対してピクセルごとに動きベクトルを修正するために使用される。本開示の様々な技法は、たとえば動き補償の間にビデオデータのブロックを予測するときに、BIOを実行するときおよびBIOを実行するかどうかを決定するために、単独でまたは任意の組合せで適用され得る。一例では、本開示の技法は、共通の予測方向における参照ピクチャの参照ブロックに対する現在のピクチャのビデオデータのブロックをインター予測するために使用される動きベクトルが、現在のピクチャと参照ピクチャとの間の時間的距離に比例するかまたはほぼ比例するとき、BIOを実行すること、およびさもなければBIOを実行することを回避することを含む。追加または代替として、BIOは、ブロックが照度変化の領域内にないときにだけ実行され得る。さらに、BIOが実行される技法は、一般的に、ブロックに対する勾配を計算することを含む。本開示の技法によれば、勾配は、現在のピクチャと参照ピクチャとの間の時間的距離に従って修正され得る。
【００１７】
本開示の技法は、ITU-T H.264/AVC(アドバンストビデオコーディング)、またはITU-T H.265とも呼ばれる高効率ビデオコーディング(HEVC)に準拠するビデオコーデックなど、任意の既存のビデオコーデックに適用され得る。H.264は、国際電気通信連合、「Advanced video coding for generic audiovisual services」、SERIES H: AUDIOVISUAL AND MULTIMEDIA SYSTEMS, Infrastructure of audiovisual services - Coding of moving video、H.264、2011年6月において記載されており、H.265は、国際電気通信連合、「High efficiency video coding」、SERIES H: AUDIOVISUAL AND MULTIMEDIA SYSTEMS, Infrastructure of audiovisual services - Coding of moving video、2015年4月において記載されている。本開示の技法はまた、効率的なコーディングツールとして任意の他の以前のまたは将来のビデオコーディング規格に適用され得る。
【００１８】
他のビデオコーディング規格には、ITU-T H.261、ISO/IEC MPEG-1 Visual、ITU-T H.262もしくはISO/IEC MPEG-2 Visual、ITU-T H.263、ISO/IEC MPEG-4 Visual、およびH.264のスケーラブルビデオコーディング(SVC)およびマルチビュービデオコーディング(MVC)拡張、ならびに範囲拡張、マルチビュー拡張(MV-HEVC)およびスケーラブル拡張(SHVC)などのHEVCの拡張が含まれる。2015年4月には、ビデオコーディングエキスパーツグループ(VCEG)が次世代のビデオコーディング規格をターゲットにする新しい研究プロジェクトを開始した。基準ソフトウェアはHM-KTAと呼ばれる。
【００１９】
本開示の技法に関連するH.264およびHEVCの技法など、いくつかのビデオコーディング技法について以下で説明する。
【００２０】
次の説明は動き情報に関する。概して、ピクチャはブロックに分割され、ブロックの各々は予測してコーディングされ得る。現在のブロックの予測は、概して、イントラ予測技法(現在のブロックを含むピクチャからのデータを使用する)またはインター予測技法(前にコーディングされたピクチャからの、現在のブロックを含むピクチャと比較したデータを使用する)を使用して実行され得る。インター予測は、単方向予測と双方向予測の両方を含む。
【００２１】
インター予測されたブロックの各々に対して、動き情報のセットが利用可能であり得る。動き情報のセットは、前方予測方向および後方予測方向のための動き情報を含み得る。ここで、前方および後方の予測方向は、双方向予測モードの2つの予測方向であり、「前方」および「後方」という用語は、必ずしも幾何学的な意味を有するとは限らない。代わりに、前方および後方の予測方向は、概して、参照ピクチャが現在のピクチャの前に(「後方に」)表示されるべきか、または後に(「前方に」)表示されるべきかに対応する。いくつかの例では、「前方」および「後方」の予測方向は、現在のピクチャの参照ピクチャリスト0(RefPicList0)および参照ピクチャリスト1(RefPicList1)に対応し得る。ピクチャまたはスライスについて1つの参照ピクチャリストのみが利用可能であるとき、RefPicList0のみが利用可能であり、スライスの各ブロックの動き情報は常にRefPicList0のピクチャを参照する(たとえば、前方である)。
【００２２】
いくつかの場合には、動きベクトルは参照インデックスとともに復号プロセスの中で使用される。そのような動きベクトルはそれの関連する参照インデックスとともに、動き情報の単予測セットとして示される。
【００２３】
各予測方向について、動き情報は、参照インデックスと動きベクトルとを含む。場合によっては、簡単のために、動きベクトルが関連する参照インデックスを有すると仮定されるような方法では、動きベクトル自体が参照されることがある。参照インデックスは、現在の参照ピクチャリスト(RefPicList0またはRefPicList1)の中の参照ピクチャを特定するために使用され得る。動きベクトルは水平成分(x)と垂直成分(y)とを有する。概して、水平成分は、参照ブロックのx座標を突きとめる必要がある、現在のピクチャ内の現在のブロックの位置に対する参照ピクチャ内の水平変位を示す一方で、垂直成分は、参照ブロックのy座標を突きとめる必要がある、現在のブロックの位置に対する参照ピクチャ内の垂直変位を示す。
【００２４】
ビデオコーディング規格において、ピクチャの表示順序を特定するために、ピクチャ順序カウント(POC:picture order count)値が広く使用されている。1つのコーディングされたビデオシーケンス内の2つのピクチャが同じPOC値を有することがある場合があるが、それは、一般に、コーディングされたビデオシーケンス内で発生しない。したがって、ピクチャのPOC値は一般に一意であり、したがって対応するピクチャを一意に特定することができる。複数のコーディングされたビデオシーケンスが1つのビットストリーム中に存在するとき、同じPOC値を有するピクチャは、復号順序に関して互いにより接近している可能性がある。ピクチャのPOC値は、一般に、参照ピクチャリスト構築、HEVCの場合のような参照ピクチャセットの導出、および動きベクトルスケーリングのために使用される。
【００２５】
H. Liu、R. Xiong、D. Zhao、S. MaおよびW. Gao、「Multiple Hypotheses Bayesian Frame Rate Up-Conversion by Adaptive Fusion of Motion-Compensated Interpolations」、IEEE transactions on circuits and systems for video technology、vol. 22、No. 8、2012年8月、W. H. Lee、K. Choi、J. B. Ra、「Frame rate up conversion based on variational image fusion」、IEEE transactions on image processing、vol. 23、No. 1、2014年1月、およびU. S. KimおよびM. H. Sunwoo、「New frame rate up-conversion algorithms with low computational complexity」、IEEE transactions on circuits and systems for video technology、vol. 24、No. 3、2014年3月が、フレームレートアップコンバージョン(FRUC:frame-rate up-conversion)と呼ばれるプロセスを説明している。FRUC技術は、低フレームレートのビデオに基づいて高フレームレートのビデオを生成するために使用され得る。FRUCは、ディスプレイ業界において広く使用されてきた。
【００２６】
FRUCアルゴリズムは2つのタイプに分けられ得る。一方のタイプの方法は、単純なフレーム反復または平均化によって中間フレームを補間するために実行され得る。しかしながら、この方法は、多くの動きを含むピクチャでは不適切な結果をもたらす。動き補償されたFRUC(MC-FRUC)と呼ばれる他方のタイプの方法は、中間フレームを生成するときにオブジェクトの動きを考慮し、動き推定(ME)および動き補償された補間(MCI:motion-compensated interpolation)という2つのステップを含む。ビデオコーディングデバイスは、ベクトルを使用してオブジェクトの動きを表す動きベクトル(MV)を生成するためにMEを実行する一方で、ビデオコーディングデバイスは、中間フレームを生成する(たとえば、補間する)ためにMVを使用してMCIを実行する。
【００２７】
ブロックマッチングアルゴリズム(BMA)は、実装が簡単であるため、MC-FRUCにおいてMEのために広く使用されている。BMAを適用するビデオコーディングデバイスは画像をブロックに分割し、それらのブロックの運動を検出する。一方向MEおよび双方向MEという、2つの種類のMEがBMAのために主に使用される。両タイプのMEの例について、以下でさらに詳しく説明する。
【００２８】
2015年3月27日に出願された、Liら、「VIDEO CODING TOOL BASED ON FRAME-RATE UP-CONVERSION」、米国仮出願第62/139,572号、および2015年6月19日に出願された、Liら、「VIDEO CODING TOOL BASED ON FRAME-RATE UP-CONVERSION」、米国仮出願第62/182,367号は、フレームレートアップコンバージョン(FRUC)方法に基づくコーディング方法を提案した。方法は、極めて効率的であり、HM-KTA-2.0ソフトウェアに採用された。
【００２９】
E. Alshina、A. Alshin、J.-H. Min、K. Choi、A. Saxena、M. Budagavi、「Known tools performance investigation for next generation video coding」、ITU電気通信標準化部門、研究グループ16 Question 6、ビデオコーディングエキスパーツグループ(VCEG)、VCEG-AZ05、2015年6月、ワルシャワ、ポーランド(以後「Alshina 1」)、およびA. Alshina、E. Alshina、T. Lee、「Bi-directional optical flow for improving motion compensation」、ピクチャコーディングシンポジウム(PCS)、名古屋、日本、2010年、(以後「Alshina 2」)は、双方向オプティカルフロー(BIO)と呼ばれる方法を記載している。BIOは、ピクセルレベルのオプティカルフローに基づく。Alshina 1およびAlshina 2によれば、BIOは、前方予測と後方予測の両方を有するブロックにだけ適用される。Alshina 1およびAlshina 2において記載されるBIOは、以下に要約される。
【００３０】
時間tにおいてピクセル値Itを仮定すると、それの1次のテーラー展開は、
【００３１】
【数１】
0006676156.tif 000002
【００３２】
となる。
【００３３】
It0は、Itの動き軌道上にある。すなわち、It0からItへの動きは、式の中で考慮される。
【００３４】
オプティカルフロー
【００３５】
【数２】
0006676156.tif 000003
【００３６】
の仮定の下で、
【００３７】
【数３】
0006676156.tif 000004
【００３８】
、
【００３９】
【数４】
0006676156.tif 000005
【００４０】
(勾配)とすると、式(1)は、
【００４１】
【数５】
0006676156.tif 000006
【００４２】
となる。
【００４３】
移動速度として
【００４４】
【数６】
0006676156.tif 000007
【００４５】
および
【００４６】
【数７】
0006676156.tif 000008
【００４７】
を考慮すると、それらを表すためにVx0およびVy0が使用され得る。
【００４８】
それゆえ、式(2)は、
It=It0-Gx0・Vx0・(t-t0)-Gy0・Vy0・(t-t0)         (3)
となる。
【００４９】
t0において前方参照が、およびt1において後方参照が存在すること、および
t0-t=t-t1=Δt=1
を仮定すると、
【００５０】
It=It0-Gx0・Vx0・(t-t0)-Gy0・Vy0・(t-t0)=It0+Gx0・Vx0+Gy0・Vy0、
It=It1-Gx1・Vx1・(t-t1)-Gy1・Vy1・(t-t1)=It1-Gx1・Vx1-Gy1・Vy1、
【００５１】
【数８】
0006676156.tif 000009
【００５２】
が成り立つ。
【００５３】
動きは軌道に沿っているので、Vx0=Vx1=VxおよびVy0=Vy1=Vyがさらに仮定される。それゆえ、(4)は、
【００５４】
【数９】
0006676156.tif 000010
【００５５】
になり、ここでΔGx=Gx0-Gx1、ΔGy=Gy0-Gy1が、再構成された参照に基づいて計算され得る。
【００５６】
【数１０】
0006676156.tif 000011
【００５７】
は通常の双方向予測であるので、
【００５８】
【数１１】
0006676156.tif 000012
【００５９】
は、今後便宜上BIOオフセットと呼ばれる。
【００６０】
VxおよびVyは、以下のひずみ
【００６１】
【数１２】
0006676156.tif 000013
【００６２】
を最小化することによって、エンコーダとデコーダの両方において導出される。
【００６３】
導出されたVxおよびVyに関して、ブロックの最終予測が、(5)を用いて計算される。VxおよびVyは、便宜上「BIOの動き」と呼ばれる。
【００６４】
一般に、ビデオコーダは、動き補償の間にBIOを実行する。すなわち、ビデオコーダが現在のブロックに対する動きベクトルを決定した後、ビデオコーダは、動きベクトルに対する動き補償を使用して現在のブロックに対する予測されたブロックを作成する。一般に、動きベクトルは、参照ピクチャ内の現在のブロックに対する参照ブロックのロケーションを特定する。BIOを実行するとき、ビデオコーダは、現在のブロックに対してピクセルごとに動きベクトルを修正する。すなわち、参照ブロックの各ピクセルをブロックユニットとして取り出すのではなく、BIOに従って、ビデオコーダは、現在のブロックに対する動きベクトルに対してピクセルごとの修正を決定し、参照ブロックが、現在のブロックの対応するピクセルに対する動きベクトルおよびピクセルごとの修正によって特定された参照ピクセルを含むように参照ブロックを構築する。したがって、BIOは、現在のブロックに対する、より正確な参照ブロックを作成するために使用され得る。
【００６５】
本開示は、たとえばAlshina 1およびAlshina 2に従ってBIOに関する技法を改善し得る技法を説明する。たとえば、本開示は、たとえばBIOの性能に関するビデオコーデックのコーディング効率をさらに改善し得る技法を説明する。たとえば、Alshina 1およびAlshina 2によれば、BIOは、前方予測と後方予測の両方を有するブロックにだけ適用され得る。加えて、BIOは、照度変化が存在するときに、損失をもたらす場合がある。さらに、BIOは、特に雑音の多いシーケンスに対して安定でない場合がある。本開示の技法は、これらの問題を克服して、BIOの性能を改善することができる。
【００６６】
図1は、双方向オプティカルフローのための技法を利用し得る例示的なビデオ符号化および復号システム10を示すブロック図である。図1に示すように、システム10は、宛先デバイス14によって後で復号されるべき符号化されたビデオデータを提供するソースデバイス12を含む。具体的には、ソースデバイス12は、コンピュータ可読媒体16を介して宛先デバイス14にビデオデータを提供する。ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、いわゆる「スマート」パッド、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイスなどを含む、広い範囲のデバイスのうちのいずれかを備え得る。いくつかの場合、ソースデバイス12および宛先デバイス14は、ワイヤレス通信に対応し得る。
【００６７】
宛先デバイス14は、コンピュータ可読媒体16を介して、復号されるべき符号化ビデオデータを受信し得る。コンピュータ可読媒体16は、ソースデバイス12から宛先デバイス14に符号化ビデオデータを移動させることが可能な任意のタイプの媒体またはデバイスを備え得る。一例では、コンピュータ可読媒体16は、ソースデバイス12がリアルタイムで宛先デバイス14へ符号化ビデオデータを直接送信することを可能にする通信媒体を備え得る。符号化ビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され得、宛先デバイス14へ送信され得る。通信媒体は、無線周波数(RF)スペクトルまたは1つもしくは複数の物理伝送線路などの、任意のワイヤレスまたは有線の通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなどの、パケットベースネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス12から宛先デバイス14への通信を容易にするのに有用であり得る任意の他の機器を含み得る。
【００６８】
いくつかの例では、符号化データは、出力インターフェース22から記憶デバイスに出力され得る。同様に、符号化されたデータは、入力インターフェースによって記憶デバイスからアクセスされ得る。記憶デバイスは、ハードドライブ、Blu-rayディスク、DVD、CD-ROM、フラッシュメモリ、揮発性メモリもしくは不揮発性メモリ、または符号化ビデオデータを記憶するための任意の他の適切なデジタル記憶媒体などの、分散されるかまたは局所的にアクセスされる様々なデータ記憶媒体のいずれかを含み得る。さらなる一例では、記憶デバイスは、ソースデバイス12によって生成された符号化されたビデオを記憶し得るファイルサーバまたは別の中間記憶デバイスに対応し得る。宛先デバイス14は、ストリーミングまたはダウンロードを介して記憶デバイスからの記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化ビデオデータを記憶するとともにその符号化ビデオデータを宛先デバイス14へ送信することが可能な、任意のタイプのサーバであり得る。例示的なファイルサーバは、(たとえば、ウェブサイト用の)ウェブサーバ、FTPサーバ、ネットワーク接続ストレージ(NAS)デバイス、またはローカルディスクドライブを含む。宛先デバイス14は、インターネット接続を含む任意の標準的なデータ接続を通じて、符号化されたビデオデータにアクセスし得る。これは、ワイヤレスチャネル(たとえば、Wi-Fi接続)、有線接続(たとえば、DSL、ケーブルモデムなど)、またはファイルサーバ上に記憶された符号化ビデオデータにアクセスするのに適した両方の組合せを含み得る。記憶デバイスからの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはそれらの組合せであり得る。
【００６９】
本開示の技法は、必ずしもワイヤレスの用途または設定に限定されるとは限らない。技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、動的適応ストリーミングオーバーHTTP(DASH:dynamic adaptive streaming over HTTP)などのインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されているデジタルビデオ、データ記憶媒体上に記憶されたデジタルビデオの復号、または他の適用例などの、様々なマルチメディア用途のいずれかのサポートの際にビデオコーディングに適用され得る。いくつかの例では、システム10は、ビデオストリーミング、ビデオ再生、ビデオ放送、および/またはビデオ電話などの適用例をサポートするために、一方向または双方向ビデオ送信をサポートするように構成され得る。
【００７０】
図1の例では、ソースデバイス12は、ビデオソース18と、ビデオエンコーダ20と、出力インターフェース22とを含む。宛先デバイス14は、入力インターフェース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によってコンピュータ可読媒体16に出力され得る。
【００７３】
コンピュータ可読媒体16は、ワイヤレスブロードキャストもしくは有線ネットワーク送信などの一時媒体、またはハードディスク、フラッシュドライブ、コンパクトディスク、デジタルビデオディスク、Blu-rayディスク、もしくは他のコンピュータ可読媒体などの記憶媒体(すなわち、非一時的記憶媒体)を含み得る。いくつかの例では、ネットワークサーバ(図示せず)が、たとえば、ネットワーク送信を介して、ソースデバイス12から符号化ビデオデータを受信し得、符号化ビデオデータを宛先デバイス14に提供し得る。同様に、ディスクスタンピング設備などの、媒体製造設備のコンピューティングデバイスが、ソースデバイス12から符号化ビデオデータを受信し得、符号化ビデオデータを含むディスクを製造し得る。したがって、様々な例では、コンピュータ可読媒体16は、様々な形態の1つまたは複数のコンピュータ可読媒体を含むと理解され得る。
【００７４】
宛先デバイス14の入力インターフェース28は、コンピュータ可読媒体16から情報を受信する。コンピュータ可読媒体16の情報は、ビデオエンコーダ20によって規定され、ビデオデコーダ30によっても使用される、シンタックス情報を含む場合があり、シンタックス情報は、ブロックおよび他のコード化ユニット、たとえばGOPの特性および/または処理を記述するシンタックス要素を含む。ディスプレイデバイス32は、復号されたビデオデータをユーザに表示し、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなどの、様々なディスプレイデバイスのいずれかを備え得る。
【００７５】
ビデオエンコーダ20およびビデオデコーダ30は、ITU-T H.265とも呼ばれる高効率ビデオコーディング(HEVC)規格などのビデオコーディング規格に従って動作し得る。代替的に、ビデオエンコーダ20およびビデオデコーダ30は、代替的にMPEG-4、Part 10、アドバンストビデオコーディング(AVC)と呼ばれるITU-T H.264規格、またはそのような規格の拡張などの、他のプロプライエタリな規格または業界規格に従って動作し得る。しかしながら、本開示の技法は、いかなる特定のコーディング規格にも限定されない。ビデオコーディング規格の他の例は、MPEG-2とITU-T H.263とを含む。図1には示していないが、いくつかの態様では、ビデオエンコーダ20およびビデオデコーダ30は、各々、オーディオエンコーダおよびデコーダと一体化されてもよく、共通データストリームまたは別々のデータストリームにおけるオーディオとビデオの両方の符号化を処理するために、適切なMUX-DEMUXユニットまたは他のハードウェアおよびソフトウェアを含んでもよい。該当する場合、MUX-DEMUXユニットは、ITU H.223マルチプレクサプロトコル、または、ユーザデータグラムプロトコル(UDP:user datagram protocol)などの他のプロトコルに準拠してもよい。
【００７６】
一般に、ITU-T H.265によれば、ビデオフレームまたはビデオピクチャは、輝度サンプルと彩度サンプルの両方を含む一連のツリーブロックまたは最大コーディングユニット(LCU)に分割され得る。ビットストリーム内のシンタックスデータは、ピクセル数の観点から最大コーディングユニットであるLCU用のサイズを定義し得る。スライスは、コーディング順にいくつかの連続するツリーブロックを含む。ビデオフレームまたはピクチャは、1つまたは複数のスライスに区分されてもよい。各ツリーブロックは、4分木に従ってコーディングユニット(CU)に分割されてもよい。一般に、4分木データ構造はCU当たり1つのノードを含み、ルートノードはツリーブロックに対応する。CUが4つのサブCUに分割された場合、CUに対応するノードは4つのリーフノードを含み、リーフノードの各々はサブCUのうちの1つに対応する。
【００７７】
4分木データ構造の各ノードは、対応するCUに構文データを提供し得る。たとえば、4分木内のノードは、ノードに対応するCUがサブCUに分割されているかどうかを示す分割フラグを含む場合がある。CUのためのシンタックス要素は再帰的に定義される場合があり、CUがサブCUに分割されているかどうかに依存する場合がある。CUがそれ以上分割されない場合、それはリーフCUと呼ばれる。本開示では、リーフCUの4つのサブCUはまた、元のリーフCUの明示的な分割が存在しない場合でも、リーフCUと呼ばれる。たとえば、16×16サイズのCUがそれ以上分割されない場合、4つの8×8サブCUもリーフCUと呼ばれるが、16×16CUは決して分割されない。
【００７８】
CUは、CUがサイズの区別を持たないことを除いて、H.264規格のマクロブロックと同様の目的を有する。たとえば、ツリーブロックは、4つの子ノード(サブCUとも呼ばれる)に分割されてもよく、各子ノードは、今度は親ノードになり、別の4つの子ノードに分割されてもよい。最後の、4分木のリーフノードと呼ばれる分割されていない子ノードは、リーフCUとも呼ばれるコーディングノードを備える。コード化ビットストリームと関連付けられたシンタックスデータは、最大CU深度と呼ばれる、ツリーブロックが分割され得る最大回数を規定することができ、コーディングノードの最小サイズを規定することもできる。したがって、ビットストリームは、最小コーディングユニット(SCU)を規定することもできる。本開示は、HEVCの文脈におけるCU、予測ユニット(PU)、もしくは変換単位(TU)のいずれか、または、他の規格の文脈における同様のデータ構造(たとえば、H.264/AVCにおけるマクロブロックおよびそのサブブロック)を指すために、「ブロック」という用語を使用する。
【００７９】
CUはコーディングノードを含み、コーディングノードに関連付けられた1つまたは複数の予測ユニット(PU)および/または変換単位(TU)を含み得る。CUのサイズはコーディングノードのサイズに対応し、一般的には、形状が正方形である。CUのサイズは、8×8ピクセルから、最大サイズ、たとえば64×64ピクセルまたはそれ以上のツリーブロックのサイズまでの範囲であってもよい。各CUは、1つまたは複数のPUおよび/または1つまたは複数のTUを含み得る。CUに関連付けられたシンタックスデータは、たとえば、サブCU、パーティション、または1つもしくは複数のPUへのCUの区分化を記述し得る。区分モードは、CUがスキップもしくは直接モードで符号化されているか、イントラ予測モードで符号化されているか、またはインター予測モードで符号化されているかに応じて異なり得る。PUは、形状が非正方形であるように区分されてよい。CUに関連付けられたシンタックスデータはまた、たとえば、4分木に従った1つまたは複数のTUへのCUの区分化を記述してもよい。TUは、形状が正方形または非正方形(たとえば、矩形)であることが可能である。
【００８０】
HEVC規格は、CUによって異なり得る、TUに従う変換を可能にする。TUは、典型的には、区分されたLCUのために定義された所与のCU内のPUのサイズに基づいてサイズが決められるが、これは、必ずしもそうでないことがある。TUは通常、PUと同じサイズであるか、またはPUよりも小さい。いくつかの例では、CUに対応する残差サンプルは「残差4分木」(RQT:residual quad tree)として知られる4分木構造を使用して、より小さい単位に細分されてもよい。RQTのリーフノードは、変換単位(TU)と呼ばれることがある。TUに関連付けられたピクセル差分値は、量子化されてもよい変換係数を生成するために変換されてもよい。
【００８１】
リーフCUは、1つまたは複数のPUを含み得る。一般に、PUは、対応するCUのすべてまたは一部分に対応する空間領域を表し、PUのための参照サンプルを取り出すためおよび/または生成するためのデータを含み得る。その上、PUは予測に関連するデータを含む。たとえば、PUがイントラモード符号化されるとき、PUに関するデータは、PUに対応するTUに関するイントラ予測モードを記述するデータを含む場合がある、残差4分木(RQT)に含まれる場合がある。RQTは、変換木と呼ばれる場合もある。いくつかの例では、イントラ予測モードは、RQTではなくリーフCUシンタックス内でシグナリングされ得る。別の例として、PUがインターモード符号化されるとき、PUは、PUに関する、1つまたは複数の動きベクトルなどの動き情報を定義するデータを含み得る。PUの動きベクトルを定義するデータは、たとえば、動きベクトルの水平成分、動きベクトルの垂直成分、動きベクトルの解像度(たとえば、1/4ピクセル精度または1/8ピクセル精度)、動きベクトルが指す参照ピクチャ、および/または動きベクトルのための参照ピクチャリスト(たとえば、リスト0またはリスト1)を記述し得る。
【００８２】
リーフCUはまた、1つまたは複数の変換単位(TU)を含み得る。変換単位は、上記のように、RQT(TU4分木構造とも呼ばれる)を使用して指定され得る。たとえば、分割フラグは、リーフCUが4つの変換単位に分割されるかどうかを示してよい。次いで、各変換単位は、さらなるサブTUにさらに分割されてよい。TUは、それ以上分割されないとき、リーフTUと呼ばれることがある。一般に、イントラコーディングでは、1つのリーフCUに属するすべてのリーフTUは、同じイントラ予測モードを共有する。すなわち、同じイントラ予測モードは、一般に、リーフCUのすべてのTUに対する予測値を計算するために適用される。イントラコーディングに対して、ビデオエンコーダは、各リーフTUに対する残差値を、TUに対応するCUの部分と元のブロックとの間の差としてイントラ予測モードを使用して計算し得る。TUは、必ずしもPUのサイズに限定されるとは限らない。したがって、TUは、PUより大きくても小さくてもよい。イントラコーディングに対して、PUは、同じCUに対して対応するリーフTUとコロケートされてよい。いくつかの例では、リーフTUの最大サイズは、対応するリーフCUのサイズに相当してもよい。
【００８３】
その上、リーフCUのTUはまた、残差4分木(RQT)と呼ばれるそれぞれの4分木データ構造に関連付けられてもよい。すなわち、リーフCUがTUに、どのように区分されているかを示す4分木を、リーフCUは含んでもよい。TU4分木のルートノードは概して、リーフCUに対応し、一方、CU4分木のルートノードは概して、ツリーブロック(またはLCU)に対応する。分割されないRQTのTUは、リーフTUと呼ばれる。一般に、本開示は、別段に記載されていない限り、リーフCUを指すためにCUという用語を、リーフTUを指すためにTUという用語を使用する。
【００８４】
ビデオシーケンスは通常、一連のビデオフレームまたはピクチャを含む。ピクチャグループ(GOP)は一般に、一連の1つまたは複数のビデオピクチャを備える。GOPは、GOP中に含まれるピクチャの数を記述するシンタックスデータを、GOPのヘッダ、ピクチャのうちの1つまたは複数のヘッダ、または他の場所に含み得る。ピクチャの各スライスは、それぞれのスライスの符号化モードを記述するスライスシンタックスデータを含み得る。ビデオエンコーダ20は通常、ビデオデータを符号化するために、個々のビデオスライス内のビデオブロック上で動作する。ビデオブロックは、CU内のコーディングノードに対応する場合がある。ビデオブロックは固定サイズまたは可変サイズを有してもよく、指定されたコーディング規格に従ってサイズが異なってもよい。
【００８５】
一例として、予測は、様々なサイズのPUに対して実行され得る。特定のCUのサイズが2N×2Nであると仮定すると、イントラ予測は、2N×2NまたはN×NのPUサイズに対して実行され、インター予測は、2N×2N、2N×N、N×2N、またはN×Nの対称PUサイズに対して実行され得る。インター予測に対する非対称区分化はまた、2N×nU、2N×nD、nL×2N、およびnR×2NのPUサイズに対して実行され得る。非対称区分化では、CUの1つの方向は区分化されないが、他の方向は25%と75%に区分化される。25%パーティションに対応するCUの部分は、「上」、「下」、「左」、または「右」の指示がその後に続く「n」によって示される。したがって、たとえば、「2N×nU」は、上に2N×0.5NのPUおよび下に2N×1.5NのPUで水平方向に区分化された2N×2NのCUを指す。
【００８６】
本開示では、「N×N」および「N掛けるN」は、垂直方向および水平方向の寸法に関するビデオブロックのピクセルの寸法、たとえば、16×16ピクセル、または16掛ける16ピクセルを指すために、互換的に使用され得る。一般に、16×16ブロックは、垂直方向に16ピクセル(y=16)と水平方向に16ピクセル(x=16)とを有することになる。同様に、N×Nブロックは、一般に、垂直方向にNピクセルと水平方向にNピクセルとを有し、ここでNは、負ではない整数値を表す。ブロック中のピクセルは、行および列に配置され得る。その上、ブロックは、必ずしも水平方向で垂直方向と同じ数のピクセルを有する必要があるとは限らない。たとえば、ブロックは、N×Mピクセルを備えてもよく、ここでMは、必ずしもNと等しいとは限らない。
【００８７】
CUのPUを使用するイントラ予測またはインター予測コーディングに続いて、ビデオエンコーダ20は、CUのTUのための残差データを計算してもよい。PUは、空間領域(ピクセル領域とも呼ばれる)における予測ピクセルデータを生成する方法またはモードを記述するシンタックスデータを備えてもよく、TUは、変換、たとえば離散コサイン変換(DCT)、整数変換、ウェーブレット変換、または概念的に同様の変換を残差ビデオデータに適用することに続いて、変換領域における係数を備えてもよい。残差データは、符号化されていないピクチャのピクセルと、PUまたはCUパーティションに対応する予測値との間のピクセル差に対応し得る。ビデオエンコーダ20は、CUに対する残差データを表す量子化変換係数を含めるためにTUを形成し得る。すなわち、ビデオエンコーダ20は、(残差ブロックの形で)残差データを計算し、残差ブロックを変換して変換係数のブロックを作成し、次いで変換係数を量子化して量子化変換係数を形成することができる。ビデオエンコーダ20は、量子化変換係数、ならびに(たとえば、TUに対する情報を分割する)他のシンタックス情報を含むTUを形成し得る。
【００８８】
上述のように、変換係数を作成するための任意の変換に続いて、ビデオエンコーダ20は、変換係数の量子化を実行し得る。量子化は、一般に、係数を表すために使用されるデータの量をできる限り低減するために変換係数が量子化され、さらなる圧縮が行われるプロセスを指す。量子化プロセスは、係数の一部またはすべてに関連付けられたビット深度を低減することができる。たとえば、nビット値は、量子化の間にmビット値に切り捨てられてもよく、ここでnは、mよりも大きい。
【００８９】
量子化に続いて、ビデオエンコーダは、変換係数を走査してよく、量子化された変換係数を含む2次元行列から1次元ベクトルを作成する。走査は、より高いエネルギー(それゆえより低い周波数)の係数をアレイの前方に置き、より低いエネルギー(それゆえより高い周波数)の係数をアレイの後方に置くように設計されてよい。いくつかの例では、ビデオエンコーダ20は、エントロピー符号化されることが可能なシリアル化ベクトルを生成するために、量子化された変換係数を走査するために事前定義された走査順を利用してもよい。他の例では、ビデオエンコーダ20は、適応走査を実行してもよい。1次元ベクトルを形成するために、量子化された変換係数を走査した後、ビデオエンコーダ20は、たとえば、コンテキスト適応型可変長コーディング(CAVLC:context adaptive variable length coding)、コンテキスト適応型バイナリ算術コーディング(CABAC:context adaptive binary arithmetic coding)、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC:syntax-based context-adaptive binary arithmetic coding)、確率間隔区分エントロピー(PIPE:Probability Interval Partitioning Entropy)コーディング、または別のエントロピー符号化方法に従って、1次元ベクトルをエントロピー符号化してもよい。ビデオエンコーダ20はまた、ビデオデータを復号する上でビデオデコーダ30によって使用するための符号化されたビデオデータに関連付けられたシンタックス要素をエントロピー符号化してもよい。
【００９０】
CABACを実行するために、ビデオエンコーダ20は、送信されるべきシンボルにコンテキストモデル内のコンテキストを割り当て得る。コンテキストは、たとえば、シンボルの隣接値が0ではないかどうかに関連することがある。CAVLCを実行するために、ビデオエンコーダ20は、送信されるべきシンボルのための可変長コードを選択し得る。VLCにおけるコードワードは、比較的より短いコードがより可能性が高いシンボルに対応し、より長いコードがより可能性が低いシンボルに対応するように構築され得る。このように、VLCの使用は、たとえば、送信されるべき各シンボルに等長コードワードを使用して、ビットの節約を達成し得る。確率の決定は、シンボルに割り当てられたコンテキストに基づき得る。
【００９１】
一般に、ビデオデコーダ30は、符号化されたデータを復号するために、ビデオエンコーダ20によって実行されたプロセスと逆向きであるが、実質的に同様のプロセスを実行する。たとえば、ビデオデコーダ30は、残差ブロックを再生するために受信されたTUの係数を逆量子化および逆変換する。ビデオデコーダ30は、予測されたブロックを形成するために、シグナリングされた予測モード(イントラ予測またはインター予測)を使用する。次いで、ビデオデコーダ30は、元のブロックを再生するために、予測されたブロックと残差ブロックとを(ピクセルごとに)組み合わせる。ブロック境界に沿った視覚的アーティファクトを低減するためにデブロッキングプロセスを実行するなど、追加の処理が実行され得る。さらに、ビデオデコーダ30は、ビデオエンコーダ20のCABAC符号化プロセスと逆向きではあるが実質的に同様の方法で、CABACを使用してシンタックス要素を復号し得る。
【００９２】
ビデオエンコーダ20は、さらに、ブロックベースのシンタックスデータ、フレームベースのシンタックスデータ、およびGOPベースのシンタックスデータなどのシンタックスデータを、たとえばフレームヘッダ、ブロックヘッダ、スライスヘッダ、またはGOPヘッダの中でビデオデコーダ30に送ることがある。GOPシンタックスデータは、それぞれのGOPの中のフレーム数を記述し、フレームシンタックスデータは、対応するフレームを符号化するために使用される符号化/予測モードを示すことができる。
【００９３】
本開示の技法によれば、ビデオエンコーダ20および/またはビデオデコーダ30は、以下でより詳細に説明するように、動き補償の間に双方向オプティカルフロー(BIO)技法をさらに実行し得る。一般に、ビデオエンコーダ20および/またはビデオデコーダ30は、同じ参照ピクチャリスト内の2つの異なる参照ピクチャ(たとえば、リスト0(RefPicList0)またはリスト1(RefPicList1)内の両参照ピクチャ)を有するブロックにBIOを適用し得る。追加または代替として、ビデオエンコーダ20および/またはビデオデコーダ30は、照度変化の領域内のブロックに対して実行されるBIOの間に特別なプロセスを適用し得る。追加または代替として、ビデオエンコーダ20および/またはビデオデコーダ30は、場合によってはBIOの間に雑音によって引き起こされ得る悪影響を回避するために、いくつかの制約に従って構成され得る。
【００９４】
ビデオエンコーダ20およびビデオデコーダ30は、各々、該当する場合、1つもしくは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理回路、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組合せなどの、様々な適切なエンコーダ回路またはデコーダの回路のうちのいずれかとして実装される場合がある。ビデオエンコーダ20およびビデオデコーダ30の各々は、1つまたは複数のエンコーダまたはデコーダに含まれてもよく、これらのいずれもが、複合ビデオエンコーダ/デコーダ(コーデック)の一部として統合されてもよい。ビデオエンコーダ20および/またはビデオデコーダ30を含むデバイスは、集積回路、マイクロプロセッサ、および/またはセルラー電話などのワイヤレス通信デバイスを備えてよい。
【００９５】
図2は、動き補償されたフレームレートアップコンバージョン(MC-FRUC)に対して実行されたブロックマッチングアルゴリズム(BMA)として一方向動き推定(ME)の一例を示す概念図である。一般に、ビデオコーダ(ビデオエンコーダ20またはビデオデコーダ30など)は、現在のフレーム100の現在のブロック106に対する参照フレーム102から最良のマッチングブロック(たとえば、参照ブロック108)を探索することによって、MV112などの動きベクトル(MV)を取得するために一方向MEを実行する。次いで、ビデオコーダは、補間されたフレーム104内で動きベクトル112の動き軌道に沿って補間されたブロック110を補間する。すなわち、図2の例では、動きベクトル112は、現在のブロック106、参照ブロック108、および補間されたブロック110の中点を通過する。
【００９６】
図2に示すように、3つのフレームにおける3つのブロックは、動き軌道を追従しながら関連している。現在のフレーム100内の現在のブロック106はコーディングされたブロックに属するが、参照フレーム102内の最良のマッチングブロック(すなわち、参照ブロック108)は、コーディングされたブロックに完全に属する必要はない(すなわち、最良のマッチングブロックはコーディングされたブロックの境界に収まる(fall on)のではなく、代わりにそのような境界と部分的に重複する(overlap)場合がある)。同様に、補間されたフレーム104内の補間されたブロック110は、コーディングされたブロックに完全に属する必要はない。その結果、ブロックの重複する領域と満たされていない(穴の)領域が、補間されたフレーム104の中に生じ得る。
【００９７】
重複に対処するために、単純なFRUCアルゴリズムは、重複したピクセルを平均化して上書きすることを伴うだけである。その上、穴は参照フレームまたは現在のフレームからのピクセル値によってカバーされ得る。しかしながら、これらのアルゴリズムは、ブロッキングアーティファクトとぼけをもたらす場合がある。したがって、ブロッキングアーティファクトとぼけを増やすことなく穴と重複に対処するために、動きフィールドのセグメント化、離散ハートレー変換を使用した連続的な外挿、および画像のインペインティングが使用され得る。
【００９８】
図3は、MC-FRUCに対して実行されたBMAとして双方向MEの一例を示す概念図である。双方向MEは、重複および穴によって引き起こされる問題を回避するために使用され得る(MC-FRUCにおける)別の解決法である。双方向MEを実行するビデオコーダ(ビデオエンコーダ20および/またはビデオデコーダ30など)は、現在のフレーム120の現在のブロック126と参照フレーム122の参照ブロック128との間の時間的対称性を使用して(現在のフレーム120と参照フレーム122との中間にある)補間されたフレーム124の補間されたブロック130を通過するMV132、134を取得する。その結果、ビデオコーダは、補間されたフレーム124内で重複と穴を生成することはない。現在のブロック126は、ビデオコーダが、たとえばビデオコーディングの場合のように、ある順序で処理するブロックであると仮定されるので、そのようなブロックのシーケンスは、重複を伴わずに中間ピクチャ全体をカバーする。たとえば、ビデオコーディングの場合、ブロックは復号順序で処理され得る。それゆえ、そのような方法は、FRUCの概念がビデオコーディングフレームワーク内で考慮され得る場合、より適切であり得る。
【００９９】
S.-F. Tu、O. C. Au、Y. Wu、E. LuoおよびC.-H. Yeun、「A Novel Framework for Frame Rate Up Conversion by Predictive Variable Block-Size Motion Estimated Optical Flow」、画像信号処理国際会議(CISP)、2009年は、フレームレートアップコンバージョンに対するハイブリッドブロックレベル動き推定およびピクセルレベルオプティカルフロー方法について記載している。Tuは、ハイブリッドシーンはいずれの単独の方法よりも良好であったと述べている。
【０１００】
図4は、本開示の技法による、BIOに対する例示的な改善を示す概念図である。本開示の例示的な一技法は、ともに時間的に現在のピクチャの前にあるかまたはともに時間的に現在のピクチャの後にあり(たとえば、リスト0またはリスト1など、同じ参照ピクチャリスト内にあり)、現在のピクチャと参照ピクチャとの間の時間的距離に比例するかまたはほぼ比例する2つの動きベクトルを有する、2つの異なる参照ピクチャを有するブロックにBIOを適用することを伴う。「時間的距離に比例して」および「時間的距離にほぼ比例して」は、次のように定義され得る。TD0およびTD1はそれぞれ、図4に示すように、現在のピクチャとRef0との間および現在のピクチャとRef1との間の時間的距離とする。
【０１０１】
「時間的距離に比例して」は、下の式(6)に示すように定義され得る。
|MV0x*TD1-MV1x*TD0|==0&&|MV0y*TD1-MV1y*TD0|==0       (6)
【０１０２】
「時間的距離にほぼ比例して」は、下の式(7)に示すように定義され得る。
|MV0x*TD1-MV1x*TD0|<=Th&&|MV0y*TD1-MV1y*TD0|<=Th    (7)
【０１０３】
Thは、ビットストリーム内で事前定義またはシグナリングされ得るしきい値を表す。たとえば、Thは、シーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、スライスヘッダ、ブロックレベルシンタックスデータ、などの中でシグナリングされ得る。「Cur」が現在のピクチャを表すと仮定すると、「Ref0」は第1の参照ピクチャを表し、「Ref1」は第2の参照ピクチャを表す。MV0xおよびMV0yはそれぞれ、Curの現在のブロックからRef0への動きベクトル(MV0)のx成分とy成分とを表す。MV1xおよびMV1yはそれぞれ、現在のブロックからRef1への動きベクトル(MV1)のx成分とy成分とを表す。TD0は、CurとRef0との間の時間的距離(たとえば、Curに対するPOC値とRef0に対するPOC値との間の差)を表す。TD1は、CurとRef1との間の時間的距離(たとえば、Curに対するPOC値とRef1に対するPOC値との間の差)を表す。
【０１０４】
その上、上記の式(4)は、(t-t0)が上記で説明したようにTD0で置き換えられ、(t-t1)が上記で説明したようにTD1で置き換えられるように修正され得る。したがって、上記の式(4)は、以下に示すように式(4')で置き換えられ得る。
It=It0-Gx0・Vx0・(t-t0)-Gy0・Vy0・(t-t0)=It0+Gx0・Vx0・TD0+Gy0・Vy0・TD0
It=It1-Gx1・Vx1・(t-t1)-Gy1・Vy1・(t-t1)=It1-Gx1・Vx1・TD1-Gy1・Vy1・TD1
【０１０５】
【数１３】
0006676156.tif 000014
【０１０６】
具体的には、図4の例は、現在のブロック150を含む現在のピクチャ144を示す。現在のブロック150は、動きベクトル154を使用して参照ピクチャ142の参照ブロック148から、および動きベクトル152を使用して参照ピクチャ140の参照ブロック146から予測される。参照ピクチャ140および参照ピクチャ142は、現在のピクチャ144に対する同じ時間的方向において発生する。すなわち、この例では、参照ピクチャ140および参照ピクチャ142はそれぞれ、現在のピクチャ144の前に表示される。他の例では、2つの参照ピクチャは現在のピクチャの後に発生し得る(すなわち、現在のピクチャの後に表示され得る)が、本開示の技法は、依然としてそのような例において適用され得る。さらに、参照ピクチャ140は、現在のピクチャ144からTD1 158の時間的距離を有する。TD1 158は現在のピクチャ144に対するピクチャ順序カウント(POC)値と参照ピクチャ140に対するPOC値との間の差に等しい。同様に、参照ピクチャ142は、現在のピクチャ144からTD0 156の時間的距離を有する。すなわち、TD0 156は現在のピクチャ144に対するPOC値と参照ピクチャ142に対するPOC値との間の差に等しい。
【０１０７】
本開示の技法によれば、図4の例では、ビデオコーダ(ビデオエンコーダ20またはビデオデコーダ30など)は、動きベクトル154、152がそれぞれ、TD0 156およびTD1 158に比例するかまたはほぼ比例するかどうかを決定し得る。たとえば、ビデオコーダは、動きベクトル152、154のx値およびy値、ならびに時間的距離TD0 156およびTD1 158に対する値を使用して、上記の式(6)および/または(7)を実行し得る。動きベクトル154、152が、(たとえば、式(6)を使用して)TD0 156およびTD1 158に比例する、または(たとえば、式(7)を使用して)TD0 156およびTD1 158にほぼ比例すると決定したことに応答して、ビデオコーダは、現在のブロック150を予測するときにBIOを実行し得る。代替として、動きベクトル154、152が、(たとえば、式(6)を使用して)TD0 156およびTD1 158に比例しない、または(たとえば、式(7)を使用して)TD0 156およびTD1 158にほとんど比例しないと決定したことに応答して、ビデオコーダは、現在のブロック150を予測するときにBIOの実行を回避し得る。
【０１０８】
図5は、双方向オプティカルフローのための技法を実施する場合があるビデオエンコーダ20の一例を示すブロック図である。ビデオエンコーダ20は、ビデオスライス内のビデオブロックのイントラコーディングおよびインターコーディングを実行し得る。イントラコーディングは、所与のビデオフレームまたはピクチャ内のビデオにおける空間的冗長性を低減または除去するために空間的予測に依拠する。インターコーディングは、ビデオシーケンスの隣接フレームまたはピクチャ内のビデオにおける時間的冗長性を低減または除去するために時間的予測に依拠する。イントラモード(Iモード)は、いくつかの空間ベースのコーディングモードのうちのいずれかを指す場合がある。単方向予測(Pモード)または双方向予測(Bモード)などのインターモードは、いくつかの時間ベースコーディングモードのいずれかを指すことがある。
【０１０９】
図5に示すように、ビデオエンコーダ20は、符号化されるべきビデオフレーム内の現在のビデオブロックを受信する。図5の例では、ビデオエンコーダ20は、モード選択ユニット40と、参照ピクチャメモリ64(復号ピクチャバッファ(DPB)と呼ばれることもある)と、加算器50と、変換処理ユニット52と、量子化ユニット54と、エントロピー符号化ユニット56とを含む。モード選択ユニット40は、動き補償ユニット44と、動き推定ユニット42と、イントラ予測ユニット46と、区分ユニット48とを含む。ビデオブロックの再構築のために、ビデオエンコーダ20はまた、逆量子化ユニット58と、逆変換ユニット60と、加算器62とを含む。ブロック境界をフィルタリングしてブロッキネスアーティファクトを再構築されたビデオから除去するために、デブロッキングフィルタ(図5に示さず)も含まれ得る。所望される場合、デブロッキングフィルタは、一般に、加算器62の出力をフィルタリングする。追加のフィルタ(ループ内またはループ後)も、デブロッキングフィルタに加えて使用され得る。そのようなフィルタは、簡潔のために示されていないが、所望される場合、(ループ内フィルタとして)加算器50の出力をフィルタリングし得る。
【０１１０】
符号化プロセスの間に、ビデオエンコーダ20は、コーディングされるべきビデオフレームまたはスライスを受信する。フレームまたはスライスは、複数のビデオブロックに分割され得る。動き推定ユニット42および動き補償ユニット44は、時間的予測を行うために、1つまたは複数の参照フレームの中の1つまたは複数のブロックに対する受信されたビデオブロックのインター予測符号化を実行する。イントラ予測ユニット46は代替的に、空間的予測を行うために、コーディングされるべきブロックと同じフレームまたはスライスの中の1つまたは複数の隣接ブロックのピクセルを使用して、受信されたビデオブロックをイントラ予測し得る。ビデオエンコーダ20は、たとえば、ビデオデータの各ブロックに適切なコーディングモードを選択するために、複数のコーディングパスを実行し得る。
【０１１１】
その上、区分ユニット48は、以前のコーディングパスにおける以前の区分方式の評価に基づいて、ビデオデータのブロックをサブブロックに区分し得る。たとえば、区分ユニット48は、最初にフレームまたはスライスをLCUに区分し、レートひずみ分析(たとえば、レートひずみ最適化)に基づいてLCUの各々をサブCUに区分し得る。モード選択ユニット40は、さらに、LCUをサブCUに区分することを示す4分木データ構造を生成し得る。4分木のリーフノードCUは、1つまたは複数のPUと1つまたは複数のTUとを含み得る。
【０１１２】
モード選択ユニット40は、たとえば誤差結果に基づいてイントラ予測モードまたはインター予測モードのうちの一方を選択してもよく、得られた予測されたブロックを、残差データを生成するために加算器50に提供し、参照フレームとして使用するための符号化されたブロックを再構成するために加算器62に提供する。モード選択ユニット40はまた、動きベクトル、イントラモードインジケータ、区分情報、および他のそのようなシンタックス情報などのシンタックス要素を、エントロピー符号化ユニット56に与える。
【０１１３】
動き推定ユニット42および動き補償ユニット44は高集積され得るが、概念的な目的のために別個に図示される。動き推定ユニット42によって実行される動き推定は、ビデオブロックにとっての動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、たとえば、現在のフレーム(または他のコーディングされたユニット)内でコーディングされている現在のブロックに対する相対的な、参照フレーム(または他のコーディングされたユニット)内の予測ブロックに対する相対的な現在のビデオフレームまたはピクチャ内のビデオブロックのPUの変位を示し得る。予測ブロックは、絶対差分和(SAD:sum of absolute difference)、2乗差分和(SSD:sum of square difference)、または他の差分尺度によって決定され得るピクセル差分に関して、コーディングされるべきブロックとよく一致することが判明しているブロックである。いくつかの例では、ビデオエンコーダ20は、参照ピクチャメモリ64内に記憶された参照ピクチャのサブ整数ピクセル位置のための値を計算し得る。たとえば、ビデオエンコーダ20は、参照ピクチャの4分の1ピクセル位置の値、8分の1ピクセル位置の値、または他の分数ピクセル位置の値を補間し得る。したがって、動き推定ユニット42は、フルピクセル位置および分数ピクセル位置に対する動き探索を実行し、分数ピクセル精度で動きベクトルを出力し得る。
【０１１４】
動き推定ユニット42は、PUの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコード化スライスの中のビデオブロックのPU用の動きベクトルを計算する。参照ピクチャは、第1の参照ピクチャリスト(リスト0)または第2の参照ピクチャリスト(リスト1)から選択されることがあり、それらの各々が、参照ピクチャメモリ64に記憶された1つまたは複数の参照ピクチャを特定する。動き推定ユニット42は、計算された動きベクトルをエントロピー符号化ユニット56および動き補償ユニット44に送る。
【０１１５】
動き補償ユニット44によって実行される動き補償は、動き推定ユニット42によって決定された動きベクトルに基づいて予測ブロックをフェッチまたは生成することを伴い得る。同じく、動き推定ユニット42および動き補償ユニット44は、いくつかの例では、機能的に統合され得る。現在のビデオブロックのPUの動きベクトルを受信すると、動き補償ユニット44は、動きベクトルが参照ピクチャリストのうちの1つにおいて指す予測ブロックを位置特定し得る。加算器50は、以下で説明されるように、コーディングされている現在のビデオブロックのピクセル値から予測ブロックのピクセル値を減算し、ピクセル差分値を形成することによって、残差ビデオブロックを形成する。一般に、動き推定ユニット42は、ルーマ成分に対して動き推定を実行し、動き補償ユニット44は、クロマ成分とルーマ成分の両方について、ルーマ成分に基づいて計算された動きベクトルを使用する。モード選択ユニット40はまた、ビデオスライスのビデオブロックを復号する際のビデオデコーダ30による使用のために、ビデオブロックとビデオスライスとに関連付けられたシンタックス要素を生成し得る。
【０１１６】
さらに、動き補償ユニット44は、本開示の技法のいずれかまたはすべてを(単独でまたは任意の組合せで)実行するように構成され得る。動き補償ユニット44に関して説明するが、モード選択ユニット40、動き推定ユニット42、区分ユニット48、および/またはエントロピー符号化ユニット56はまた、本開示のいくつかの技法を、単独でまたは動き補償ユニット44と組み合わせて実行するように構成され得ることを理解されたい。いくつかの例では、動き補償ユニット44は、図4に関して上記で説明し、以下でより詳細に説明するように、BIO技法を実行するように構成され得る。
【０１１７】
たとえば、動き補償ユニット44は、ともに時間的に現在のピクチャより前にある(たとえば、ともに参照ピクチャリスト0の中にある)かまたはともに時間的に現在のピクチャより後にある(たとえば、ともに参照ピクチャリスト1の中にある)のいずれかである、2つの異なる参照ピクチャを有するブロックにBIOを適用するように構成されてよく、ブロックは、現在のピクチャと参照ピクチャとの間の時間的距離に少なくともほぼ比例する(たとえば、比例するかまたはほぼ比例する)2つの動きベクトルを有する。
【０１１８】
一例では、動き補償ユニット44はしきい値(Th)を用いて構成されてよく、またはThを表す値を決定してビデオビットストリーム内の(たとえば、SPS、PPS、スライスヘッダ、またはブロックレベルシンタックス内の)値を符号化してもよい。次いで、動き補償ユニット44は、現在のピクチャの現在のブロックに対する動きベクトルが対応する参照ピクチャまでの時間的距離にほぼ比例するかどうかを決定するために式(7)を実行し得る。現在のブロックに対する動きベクトルが、現在のブロックに対する対応する参照ピクチャまでの時間的距離にほぼ比例するとき、動き補償ユニット44は、上記で説明したBIO技法をブロックに適用し得る。具体的には、動き補償ユニット44は、現在のブロックに対する予測されたブロックを形成するときにBIO技法を適用してよく、次いで動き補償ユニット44は予測されたブロックを、たとえば加算器50および加算器62に与えることになる。
【０１１９】
別の例として(それは式(7)を使用して上記で説明した例に対する追加または代替であり得る)、動き補償ユニット44は、現在のブロックに対する動きベクトルが、対応する参照ピクチャまでの時間的距離に比例するかどうかを決定するために式(6)を実行するように構成され得る。現在のブロックに対する動きベクトルが、現在のブロックに対する対応する参照ピクチャまでの時間的距離に比例するとき、動き補償ユニット44は、上記で説明したBIO技法をブロックに適用し得る。
【０１２０】
いくつかの例では、動き補償ユニット44は、(式(6)および式(7)に関連して)上記で説明した技法のいずれかに対して、2つの動きベクトルが0でないときにだけ、本技法が実行されるように制約され得る。すなわち、動き補償ユニット44は、2つの動きベクトル(たとえば、動き推定ユニット42から受信された動きベクトル)が0でないかどうかを決定し得る。両方の動きベクトルが0でない場合、動き補償ユニット44は、ブロックを予測しているときに上記で説明したBIO技法を実行するために進み得る。しかしながら、動きベクトルのうちの少なくとも1つが0値である場合、動き補償ユニット44は、ブロックを予測しているときにBIO技法を実行することを回避し得る。動き補償ユニット44はこの決定を、上記で説明したように、動きベクトルが時間的距離に比例するかまたはほぼ比例するかどうかの決定への追加または代替として実行し得る。
【０１２１】
いくつかの例では、動き補償ユニット44はさらに、勾配GxおよびGyを計算するときに時間的距離を考慮に入れてもよい。具体的には、動き補償ユニット44は、通常に計算された勾配GxおよびGyから修正された勾配Gx'およびGy'を計算してよく、ここでそのような修正はそれぞれの時間的距離に基づく。たとえば、動き補償ユニット44は修正された勾配Gx'およびGy'を、Gx'=Gx・TD0およびGy'=Gy・TD1のように、真の勾配GxおよびGyと時間的距離TD0およびTD1との積として計算し得る。また、動き補償ユニット44は修正された勾配を、真の勾配と、参照ピクチャと現在のピクチャとの間の時間的距離に関連する係数との積として計算し得る。
【０１２２】
追加または代替として、動き補償ユニット44(またはモード選択ユニット40)は、ブロックが、照度変化の領域、たとえばビデオエンコーダ20が照度補償フラグ(ic_flag)に対して「真」の値をセットする領域内にあるかどうかを決定し得る。動き補償ユニット44は、BIOに対する特別なプロセスを照度変化の領域内にあるブロックに適用し得る。いくつかの例では、動き補償ユニット44は、ブロックが照度補償変化の領域内にあるとき、BIOをブロックに適用しない。代替として、動き補償ユニット44は照度補償した後にBIOを適用してよく、その上、照度補償はまた、BIOに対するブロック勾配を計算するときに適用され得る。代替として、照度補償コーディングツールが有効でない場合、BIOがブロックに適用されるかどうかを示すために、別のフラグがブロックに対してシグナリングされ得る。
【０１２３】
追加または代替として、動き補償ユニット44は、たとえば信号雑音によって引き起こされる悪影響を回避するために、BIOに関して制約される場合がある。たとえば、動き補償ユニット44は、次の制約のいずれかまたは両方を用いて構成される場合がある。BIOオフセット(上記の式(5)を以下で定義した)の範囲が、制限される場合がある。最大値および/または最小値が、あらかじめ規定されるかまたは決定され、次いで(たとえば、SPS、PPS、スライスヘッダ、またはブロックレベルシンタックスの中で)シグナリングされる場合がある。代替として、式(5)における通常の双方向予測に対する最大値および最小値が、あらかじめ規定されるかまたは決定され、次いでシグナリングされる場合がある。追加または代替として、BIOプロセスの間に計算された勾配の範囲が、あらかじめ規定された値かまたは決定され、次いでシグナリングされた値に基づいて制約される場合がある。
【０１２４】
追加または代替として、動き補償ユニット44は、最初に、BIOプロセスの一部として導出された動きベクトルの信頼度にアクセスし得る。ピクセルまたはブロックに対するBIOの動きベクトルの信頼度が低いとき、動き補償ユニット44はBIOオフセットを追加することを回避してよく、またはBIOオフセットを追加するときにBIOオフセットに、より小さい重みを加えてもよい。動き補償ユニット44は、そのBIOの動きとその隣接ピクセルのBIOの動きとの関係を分析することによって、ピクセルに対する動きベクトルの信頼度を導出し得る。たとえば、現在のピクセルに対するBIOの動きと現在のピクセルに隣接するピクセルに対するBIOの動きとの間の1つまたは複数の偏差が大きいとき、動き補償ユニット44は、現在のピクセルに対するBIOの動きの信頼度は低いと決定し得る。追加または代替として、動き補償ユニット44は、ブロック内のピクセルのBIOの動きを分析することによってブロックの信頼度を導出し得る。たとえば、ブロック内のBIOの動きの偏差が大きいとき、現在のBIOの動きの信頼度は低いと見なされ得る。追加または代替として、動き補償ユニット44は、ピクセルサンプル値を分析することに基づいてBIOの動きの信頼度を導出し得る。たとえば、動き補償ユニット44は雑音レベルを推定し、次いで、雑音レベルが高いときにBIOの動きの信頼度は低いと決定し得る。動き補償ユニット44は、BIOの動きの信頼度を導出するために、複数の方法(それは上記で説明した方法のいずれかまたはすべてを含む場合がある)をともに、任意の組合せで適用し得る。
【０１２５】
BIOをブロックに(上記で説明した技法のいずれかまたはすべてに従って、単独でまたは任意の組合せで)適用することを決定したことに応答して、動き補償ユニット44は、BIOに従ってブロックを予測するために、(たとえば、上記の式(1)〜(5)に関して)上記で説明した技法を適用し得る。
【０１２６】
イントラ予測ユニット46は、上で説明されたように、動き推定ユニット42と動き補償ユニット44とによって実行されるインター予測の代替として、現在のブロックをイントラ予測し得る。特に、イントラ予測ユニット46は、現在のブロックを符号化するために使用すべきイントラ予測モードを決定し得る。いくつかの例では、イントラ予測ユニット46は、たとえば、別個の符号化パスの間に、様々なイントラ予測モードを使用して現在のブロックを符号化することができ、イントラ予測ユニット46(または、いくつかの例では、モード選択ユニット40)は、テストされたモードから使用するのに適切なイントラ予測モードを選択することができる。
【０１２７】
たとえば、イントラ予測ユニット46は、様々なテストされたイントラ予測モードのためのレートひずみ分析を使用してレートひずみ値を計算し、テストされたモードの間で最も良好なレートひずみ特性を有するイントラ予測モードを選択することができる。レートひずみ分析は、一般に、符号化されたブロックと、符号化されたブロックを生成するために符号化された元の符号化されていないブロックとの間のひずみ(または誤差)の量、ならびに、符号化されたブロックを生成するために使用されるビットレート(すなわち、ビット数)を決定する。イントラ予測ユニット46は、どのイントラ予測モードがブロックについて最良のレートひずみ値を呈するかを決定するために、様々な符号化されたブロックのひずみおよびレートから比を計算し得る。
【０１２８】
ブロックのためのイントラ予測モードを選択した後に、イントラ予測ユニット46は、ブロックのための選択されたイントラ予測モードを示す情報をエントロピー符号化ユニット56に提供し得る。エントロピー符号化ユニット56は、選択されたイントラ予測モードを示す情報を符号化してよい。ビデオエンコーダ20は、複数のイントラ予測モードインデックステーブルおよび複数の変更されたイントラ予測モードインデックステーブル(コードワードマッピングテーブルとも呼ばれる)を含んでもよい、送信されたビットストリーム構成データ内に、コンテキストの各々のために使用する、様々なブロックのための符号化コンテキストの定義と、最もあり得るイントラ予測モードの指示と、イントラ予測モードインデックステーブルと、変更されたイントラ予測モードインデックステーブルとを含んでもよい。
【０１２９】
ビデオエンコーダ20は、モード選択ユニット40からの予測データをコーディングされている元のビデオブロックから減算することによって、残差ビデオブロックを形成する。加算器50は、この減算演算を実行する1つまたは複数の構成要素を表す。変換処理ユニット52は、離散コサイン変換(DCT)または概念的に同様の変換などの変換を残差ブロックに適用し、変換係数値を含むビデオブロックを生成する。ウェーブレット変換、整数変換、サブバンド変換、離散サイン変換(DST)、または他のタイプの変換が、DCTの代わりに使用され得る。いずれの場合にも、変換処理ユニット52は、変換を残差ブロックに適用し、変換係数のブロックを生成する。変換は、ピクセル領域からの残差情報を、周波数領域などの変換領域に転換し得る。変換処理ユニット52は、得られた変換係数を量子化ユニット54に送り得る。量子化ユニット54は、ビットレートをさらに低減するために変換係数を量子化する。量子化プロセスは、係数の一部またはすべてに関連付けられたビット深度を低減することができる。量子化の程度は、量子化パラメータを調整することによって変更され得る。
【０１３０】
量子化の後に、エントロピー符号化ユニット56は、量子化された変換係数をエントロピーコーディングする。たとえば、エントロピー符号化ユニット56は、コンテキスト適応型可変長コーディング(CAVLC)、コンテキスト適応型バイナリ算術コーディング(CABAC)、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)、確率間隔区分エントロピー(PIPE)コーディング、または別のエントロピーコーディング技法を実行し得る。コンテキストベースエントロピーコーディングの場合、コンテキストは隣接ブロックに基づき得る。エントロピー符号化ユニット56によるエントロピーコーディングに続いて、符号化されたビットストリームは、別のデバイス(たとえば、ビデオデコーダ30)に送信されるか、または後の送信もしくは取り出しのためにアーカイブされ得る。
【０１３１】
逆量子化ユニット58および逆変換ユニット60は、それぞれ逆量子化および逆変換を適用して、ピクセル領域中で残差ブロックを再構築する。具体的には、加算器62は、参照ピクチャメモリ64に記憶するための再構築されたビデオブロックを生成するために、動き補償ユニット44またはイントラ予測ユニット46によって早期に生成された動き補償された予測ブロックに、再構築された残差ブロックを加える。再構築されたビデオブロックは、後続のビデオフレーム中のブロックをインターコーディングするために、参照ブロックとして、動き推定ユニット42および動き補償ユニット44によって使用され得る。
【０１３２】
図6は、双方向オプティカルフローのための技法を実施し得るビデオデコーダ30の一例を示すブロック図である。図6の例では、ビデオデコーダ30は、エントロピー復号ユニット70と、動き補償ユニット72と、イントラ予測ユニット74と、逆量子化ユニット76と、逆変換ユニット78と、参照ピクチャメモリ82と、加算器80とを含む。ビデオデコーダ30は、いくつかの例では、ビデオエンコーダ20(図5)またはビデオエンコーダ20'(図5B)に関して説明した符号化パスとは概して逆の復号パスを実行し得る。動き補償ユニット72は、エントロピー復号ユニット70から受信された動きベクトルに基づいて、予測データを生成することができるが、イントラ予測ユニット74は、エントロピー復号ユニット70から受信されたイントラ予測モードインジケータに基づいて、予測データを生成することができる。
【０１３３】
復号プロセスの間に、ビデオデコーダ30は、ビデオエンコーダ20から、符号化されたビデオスライスのビデオブロックと関連するシンタックス要素とを表す符号化されたビデオビットストリームを受信する。ビデオデコーダ30のエントロピー復号ユニット70は、ビットストリームをエントロピー復号して、量子化係数と、動きベクトルまたはイントラ予測モードインジケータと、他のシンタックス要素とを生成する。エントロピー復号ユニット70は、動き補償ユニット72に動きベクトルと他のシンタックス要素とを転送する。ビデオデコーダ30は、ビデオスライスレベルおよび/またはビデオブロックレベルにおいてシンタックス要素を受信し得る。
【０１３４】
ビデオスライスがイントラコード化(I)スライスとしてコーディングされるとき、イントラ予測ユニット74は、シグナリングされたイントラ予測モードと、現在フレームまたはピクチャの以前に復号されたブロックからのデータとに基づいて、現在ビデオスライスのビデオブロックのための予測データを生成し得る。ビデオフレームが、インターコーディングされた(すなわち、B、PまたはGPB)スライスとしてコーディングされるとき、動き補償ユニット72は、エントロピー復号ユニット70から受信された動きベクトルと他のシンタックス要素とに基づいて、現在のビデオスライスのビデオブロックの予測ブロックを生成する。予測ブロックは、参照ピクチャリストの1つの中の参照ピクチャのうちの1つから生成され得る。ビデオデコーダ30は、参照ピクチャメモリ82に記憶された参照ピクチャに基づくデフォルトの構築技法を使用して、参照フレームリスト、リスト0およびリスト1を構築し得る。
【０１３５】
動き補償ユニット72は、動きベクトルと他のシンタックス要素とを構文解析することによって、現在ビデオスライスのビデオブロックのための予測情報を決定し、予測情報を使用して、復号されている現在ビデオブロックのための予測ブロックを生成する。たとえば、動き補償ユニット72は、ビデオスライスのビデオブロックをコーディングするために使用される予測モード(たとえば、イントラ予測またはインター予測)と、インター予測スライスタイプ(たとえば、Bスライス、Pスライス、またはGPBスライス)と、スライスのための参照ピクチャリストのうちの1つまたは複数に対する構築情報と、スライスの各々のインター符号化されたビデオブロックの動きベクトルと、スライスの各々のインターコーディングされたビデオブロックのインター予測ステータスと、現在のビデオスライス中のビデオブロックを復号するための他の情報とを決定するために、受信されたシンタックス要素のいくつかを使用する。
【０１３６】
動き補償ユニット72はまた、サブピクセル精度に対する補間フィルタに基づいて補間を実行し得る。動き補償ユニット72は、ビデオブロックの符号化の間にビデオエンコーダ20によって使用された補間フィルタを使用して、参照ブロックのサブ整数ピクセルに関する補間された値を計算し得る。この場合、動き補償ユニット72は、受信されたシンタックス要素からビデオエンコーダ20によって使用された補間フィルタを決定し、補間フィルタを使用して、予測ブロックを生成し得る。
【０１３７】
さらに、動き補償ユニット72は、本開示の技法のいずれかまたはすべてを(単独でまたは任意の組合せで)実行するように構成され得る。たとえば、動き補償ユニット72は、図4に関して上記で説明し、以下でより詳細に説明するBIO技法を実行するように構成され得る。
【０１３８】
たとえば、動き補償ユニット72は、2つの異なる参照ピクチャを有するブロックにBIOを適用するように構成されてよく、2つの異なる参照ピクチャは、ともに現在のピクチャより時間的に前である(たとえば、ともに参照ピクチャリスト0の中にある)、またはともに現在のピクチャより時間的に後である(たとえば、ともに参照ピクチャリスト1の中にある)のいずれかであり、ブロックは、現在のピクチャと参照ピクチャとの間の時間的距離に少なくともほぼ比例する(たとえば、比例するかまたはほぼ比例する)2つの動きベクトルを有する。
【０１３９】
一例では、動き補償ユニット72はしきい値(Th)を用いて構成されてよく、または(たとえば、SPS、PPS、スライスヘッダ、またはブロックレベルシンタックス内の)ビットストリームからThを表す値を復号してもよい。次いで、動き補償ユニット72は、現在のブロックに対する動きベクトルが対応する参照ピクチャまでの時間的距離にほぼ比例するかどうかを決定するために式(7)を実行し得る。現在のブロックに対する動きベクトルが、現在のブロックに対する対応する参照ピクチャまでの時間的距離にほぼ比例するとき、動き補償ユニット72は、上記で説明したBIO技法をブロックに適用し得る。具体的には、動き補償ユニット72は、現在のブロックに対する予測されたブロックを形成するときにBIO技法を適用してよく、次いで動き補償ユニット44は予測されたブロックを、たとえば加算器80に与えることになる。
【０１４０】
別の例として、動き補償ユニット72は、現在のブロックに対する動きベクトルが対応する参照ピクチャまでの時間的距離に比例するかどうかを決定するために式(6)を実行するように構成され得る。現在のブロックに対する動きベクトルが、現在のブロックに対する対応する参照ピクチャまでの時間的距離に比例するとき、動き補償ユニット72は、上記で説明したBIO技法をブロックに適用し得る。
【０１４１】
いくつかの例では、動き補償ユニット72は、(式(6)および式(7)に関連して)上記で説明した技法のいずれかに対して、2つの動きベクトルが0でないときにだけ、本技法が実行されるように制約され得る。すなわち、動き補償ユニット72は、エントロピー復号ユニット70によって復号された2つの動きベクトルが0でないかどうかを決定し得る。両方の動きベクトルが0でない場合、動き補償ユニット72は、ブロックを予測しているときに上記で説明したBIO技法を実行するために進み得る。しかしながら、動きベクトルのうちの少なくとも1つが0値である場合、動き補償ユニット72は、ブロックを予測しているときにBIO技法を実行することを回避し得る。動き補償ユニット72はこの決定を、上記で説明した、動きベクトルが時間的距離に比例するかまたはほぼ比例するかどうかの決定への追加または代替として実行し得る。
【０１４２】
いくつかの例では、動き補償ユニット72はさらに、BIOを適用するときに時間的距離を考慮に入れてもよい。式(4)において、時間的距離TD0およびTD1は等しいものと仮定されるが、それはいつも真であるとは限らない。時間的距離を考慮に入れるための1つの特定の方法は、動き補償ユニット72が、通常に計算された勾配GxおよびGyから、修正された勾配Gx'およびGy'を計算することであり、ここでそのような修正はそれぞれの時間的距離に基づく。たとえば、動き補償ユニット72は修正された勾配Gx'およびGy'を、Gx'=Gx・TD0およびGy'=Gy・TD1のように、真の勾配GxおよびGyと時間的距離TD0およびTD1との積として計算し得る。具体的には、上式から、TD0はt0-tとして計算され、TD1はt-t1として計算され得る。したがって、Δtは、TD0とTD1の両方に対して1に等しいと仮定するのではなく、現在のピクチャと参照ピクチャとの間の真の時間的距離は、たとえば式(4')で示されるように使用され得る。また、動き補償ユニット72は修正された勾配を、真の勾配と、参照ピクチャと現在のピクチャとの間の時間的距離に関連する係数との積として計算し得る。
【０１４３】
追加または代替として、動き補償ユニット72は、ブロックが真の値を有する照度補償フラグ(ic_flag)を含むときなど、照度変化の領域内にあるように示されるブロックに、BIOに対する特別なプロセスを適用し得る。いくつかの例では、動き補償ユニット72は、ブロックが照度補償変化の領域内にあるとき、BIOをブロックに適用しない。代替として、動き補償ユニット72は照度補償した後にBIOを適用してよく、その上、照度補償はまた、BIOに対するブロック勾配を計算するときに適用され得る。
【０１４４】
追加または代替として、動き補償ユニット72は、たとえば信号雑音によって引き起こされる悪影響を回避するために、BIOに関して制約される場合がある。たとえば、動き補償ユニット72は、次の制約のいずれかまたは両方を用いて構成される場合がある。BIOオフセット(上記の式(5)を以下で定義した)の範囲が、制限される場合がある。最大値および/または最小値はあらかじめ規定されてよく、または(たとえば、SPS、PPS、スライスヘッダ、またはブロックレベルシンタックスの中で)シグナリングされてもよい。代替として、式(5)における通常の双方向予測に対する最大値および最小値はあらかじめ規定されてよく、またはシグナリングされてもよい。追加または代替として、BIOプロセスの間に計算された勾配の範囲は、あらかじめ規定された値またはシグナリングされた値に基づいて制約される場合がある。
【０１４５】
追加または代替として、動き補償ユニット72は、最初に、BIOによって導出された動きベクトルの信頼度にアクセスし得る。ピクセルまたはブロックに対するBIOの動きベクトルの信頼度が低いとき、動き補償ユニット72はBIOオフセットを追加することを回避してよく、またはBIOオフセットを追加するときにBIOオフセットにより小さい重みを加えてもよい。動き補償ユニット72は、そのBIOの動きとその隣接ピクセルのBIOの動きとの関係を分析することによって、ピクセルに対する動きベクトルの信頼度を導出し得る。たとえば、現在のBIOの動きと隣接するBIOの動きとの間の偏差が大きいとき、現在のBIOの動きの信頼度は低いと見なされ得る。追加または代替として、動き補償ユニット72は、ブロック内のピクセルのBIOの動きを分析することによってブロックの信頼度を導出し得る。たとえば、ブロック内のBIOの動きの偏差が大きいとき、現在のBIOの動きの信頼度は低いと見なされ得る。追加または代替として、動き補償ユニット72は、ピクセルサンプル値を分析することによってBIOの動きの信頼度を導出し得る。たとえば、雑音レベルが推定されてよく、次いで、BIOの動きの信頼度は、雑音レベルが高いときに低いと見なされ得る。複数の方法(それは上記で説明した方法のいずれかまたはすべてを含み得る)が、BIOの動きの信頼度を導出するために、ともに任意の組合せで適用され得る。
【０１４６】
BIOをブロックに(上記で説明した技法のいずれかまたはすべてに従って、単独でまたは任意の組合せで)適用することを決定したことに応答して、動き補償ユニット72は、BIOに従ってブロックを予測するために、(たとえば、上記の式(1)〜式(5)に関して)上記で説明した技法を適用し得る。
【０１４７】
逆量子化ユニット76は、ビットストリーム中で与えられ、エントロピー復号ユニット70によって復号された量子化された変換係数を逆量子化(inverse quantize)、すなわち逆量子化(de-quantize)する。逆量子化プロセスは、量子化の程度を決定し、同様に、適用されるべき逆量子化の程度を決定するために、ビデオデコーダ30によって計算された量子化パラメータQPYをビデオスライス中の各ビデオブロックに使用することを含み得る。
【０１４８】
逆変換ユニット78は、ピクセル領域において残差ブロックを生成するために、逆変換、たとえば、逆DCT、逆整数変換、または概念的に同様の逆変換プロセスを変換係数に適用する。
【０１４９】
動き補償ユニット72が、動きベクトルおよび他のシンタックス要素に基づいて現在のビデオブロックの予測ブロックを生成した後に、ビデオデコーダ30は、逆変換ユニット78からの残差ブロックを動き補償ユニット72によって生成された対応する予測ブロックと加算することによって、復号されたビデオブロックを形成する。加算器80は、この加算演算を実行する1つまたは複数の構成要素を表す。所望される場合、ブロッキネスアーティファクトを除去するために復号されたブロックをフィルタリングする、デブロッキングフィルタも適用され得る。他のループフィルタ(コーディングループの中、またはコーディングループの後のいずれかにおける)も、ピクセルの遷移を平滑化し、または場合によってはビデオ品質を改善するために使用され得る。所与のフレームまたはピクチャ内の復号されたビデオブロックは次いで、参照ピクチャメモリ82内に記憶され、参照ピクチャメモリ82は、後続の動き補償のために使用される参照ピクチャを記憶する。参照ピクチャメモリ82はまた、図1のディスプレイデバイス32などのディスプレイデバイス上で後で提示するための、復号されたビデオを記憶する。たとえば、参照ピクチャメモリ82は、復号されたピクチャを記憶し得る。
【０１５０】
図7は、本開示の技法による、ビデオデータのブロックを予測するための例示的な方法を示すフローチャートである。図7の方法は、図1および図5のビデオエンコーダ20に関して説明される。しかしながら、他の例では、他のデバイスが、図7の方法を実行するように構成され得ることを理解されたい。
【０１５１】
ビデオエンコーダ20は、参照ピクチャメモリ64(図5)に記憶されている、参照ピクチャとして使用するためのピクチャを最初に符号化し、次いで復号することが推定されるが、これらのステップは図7の例には示されていない。次いで、ビデオエンコーダ20は、ビデオデータのブロックを受信する(170)。たとえば、ブロックは、ビデオデータの現在のピクチャ(またはピクチャのスライス)のコーディングユニット(CU)の予測ユニット(PU)であり得る。ビデオエンコーダ20は、イントラ予測またはインター予測など、様々な予測モードのうちのどれを、ブロックを予測するために使用すべきか、およびインター予測が決定された場合、単方向インター予測を使用するかまたは双方向インター予測をするかを決定し得る。図7の例では、ビデオエンコーダ20は、双方向予測を使用してブロックを予測することを決定する(172)。たとえば、ビデオエンコーダ20(具体的には、図5のモード選択ユニット40)は、様々な可能な予測モード(たとえば、1つまたは複数のイントラ予測モードおよび参照ピクチャメモリ64に記憶されている様々な復号された参照ピクチャからの単方向予測または双方向予測)に対するレートひずみメトリックを計算し、双方向予測がブロックに対する最良のレートひずみメトリックを生み出すものと決定し得る。
【０１５２】
ビデオエンコーダ20(具体的には、図5の動き推定ユニット42)はさらに、双方向予測に従ってブロックに対する動きベクトルを計算し得る(174)。そのような動きベクトルは参照ピクチャを指してよく、参照ピクチャは、ともに現在のピクチャの前に表示されるべきか、ともに現在のピクチャの後に表示されるべきか、または1つが現在のピクチャの前に表示され、別の1つが現在のピクチャの後に表示されるべきである。たとえば、参照ピクチャは、ともに参照ピクチャリスト0内で発生するか、ともに参照ピクチャリスト1内で発生するか、または一方が参照ピクチャリスト0内で発生して他方が参照ピクチャリスト1内で発生する場合がある。
【０１５３】
この例では、ビデオエンコーダ20は、ブロックに対する動きベクトルが共通の時間的方向を指すかどうかを決定する(176)。すなわち、ビデオエンコーダ20は、動きベクトルが、ともに現在のピクチャの前または後に表示されるべき参照ピクチャを指すかどうか、たとえば、参照ピクチャが、同じ参照ピクチャリスト(リスト0またはリスト1など)内で発生するかどうかを決定する。
【０１５４】
2つの動きベクトルが共通の時間的方向を指す(176の「YES」分岐)場合、ビデオエンコーダ20はさらに、動きベクトルが、現在のピクチャと、対応する参照ピクチャとの間の時間的距離に少なくともほぼ比例するかどうかを決定し得る(178)。時間的距離は、現在のピクチャと2つの参照ピクチャに対するピクチャ順序カウント(POC)値の間の差に対応し得る。「少なくともほぼ比例して」は、概して、時間的距離にほぼ比例すること、または時間的距離に比例することのいずれかを指す。ビデオエンコーダ20は、動きベクトルが時間的距離に少なくともほぼ比例するかどうかを決定するために、上記で説明した式(6)および/または(7)を実行し得る。
【０１５５】
たとえば、ビデオエンコーダ20は、第1の動きベクトル(MV0)が指す、現在のピクチャに対するPOC値と第1の参照ピクチャに対するPOC値との間の第1のPOC差を、第1の時間的距離TD0として決定し、第2の動きベクトル(MV1)が指す、現在のピクチャに対するPOC値と第2の参照ピクチャに対するPOC値との間の第2のPOC差を、第2の時間的距離TD1として決定し得る。MV0およびMV1はそれぞれ、x成分とy成分とを含み得る。たとえば、MV0は、MV0xとMV0yとの成分を含んでよく、ここで、第1の参照ピクチャ内の参照ブロックを配置する位置を決定するために現在のピクチャ内のブロックの位置に対して、MV0xは水平オフセットを記述し、MV0yは垂直オフセットを記述する。同様に、MV1は、MV1xとMV1yとの成分を含んでよく、ここで、第2の参照ピクチャ内の参照ブロックを配置する位置を決定するために現在のピクチャ内のブロックの位置に対して、MV1xは水平オフセットを記述し、MV1yは垂直オフセットを記述する。次いで、ビデオエンコーダ20は、動きベクトルが時間的距離に少なくともほぼ比例するかどうかを決定するために、式(6)および/または(7)のいずれかもしくは両方、または他の同様の式を実行するためにこれらの値を使用し得る。
【０１５６】
動きベクトルが時間的距離に少なくともほぼ比例する(178の「YES」分岐)場合、ビデオエンコーダ20はさらに、動きベクトルがともに0でないかどうかを決定し得る(180)。すなわち、ビデオエンコーダ20は、動きベクトルの各々のx成分またはy成分のうちの少なくとも1つが0より大きい絶対値を有するかどうかを決定し得る。図7の例では、動きベクトルが0でないかどうか(ステップ180)の決定は、動きベクトルが時間的距離に少なくともほぼ比例するかどうか(ステップ178)の決定とは別個のステップとして示されているが、ステップ178および180は、他の例では単一のステップとして実行され得ることを理解されたい。
【０１５７】
動きベクトルがともに0でない(180の「YES」分岐)場合、または動きベクトルが共通の時間的方向を指さない(176の「NO」分岐)場合、ビデオエンコーダ20はまた、ブロックが照度変化の領域内にあるかどうか(182)を決定し得る。ブロックが照度変化の領域内にない(182の「NO」分岐)場合、ビデオエンコーダ20は、たとえば上記で説明した式(1)〜(5)に従って、BIOを使用してブロックを予測する(184)ために進んでよい。代替として、BIOを使用してブロックを予測するとき、ビデオエンコーダ20は、時間的距離TD0および/またはTD1に従って勾配の計算を修正し得る。たとえば、ビデオエンコーダ20は、たとえばGx'=Gx・TD0およびGy'=Gy・TD1を計算することによって、通常に計算された勾配GxおよびGyから修正された勾配Gx'およびGy'を計算し得る。次いで、ビデオエンコーダ20は、式(5)においてGxおよびGyの代わりにGx'およびGy'を使用し得る。
【０１５８】
一方で、この例では、動きベクトルが共通の時間的方向を指したが時間的距離に少なくともほぼ比例することはなかった(178の「NO」分岐)か、動きベクトルのうちの少なくとも1つが0値であった(180の「NO」分岐)か、またはブロックが照度変化の領域内にある(182の「YES」分岐)場合、ビデオエンコーダ20は、BIOを使用せずに標準的な双方向予測を使用してブロックを予測し得る(186)。動きベクトルが共通の時間的方向を指すかどうか、動きベクトルがともに0でないかどうか、およびブロックが照度変化の領域内にあるかどうかの決定は、様々な例では、任意の順序で、または並行して実行されてもよく、それにより、決定の順序は、図7に示す例に限定されないことを理解されたい。
【０１５９】
いずれの場合も、BIOを使用するかまたはBIOを使用しないにかかわらず、ブロックを予測した後、ビデオエンコーダ20は、ブロックに対するシンタックス要素をエントロピー符号化するために進んでよい(188)。具体的には、ビデオエンコーダ20は、残差ブロックを形成するために、生の元のブロックと予測されたブロックとの間の差をピクセルごとに決定し得る。次いで、ビデオエンコーダ20は、変換係数を形成するために残差ブロックを周波数領域に変換し、次いで、変換係数を量子化し得る。次いで、ビデオエンコーダ20は、量子化された変換係数をエントロピー符号化し得る。ビデオエンコーダ20はさらに、ブロックが、双方向予測、動きベクトル(たとえば、マージモードまたは高度動きベクトル予測(AMVP:advanced motion vector prediction)を使用して)、ブロックが照度変化の領域内にあるかどうかを表す照度補償フラグ(ic_flag)、などを使用して予測されていることの表示など、他のシンタックス要素をエントロピー符号化し得る。
【０１６０】
このようにして、図7の方法は、第1の参照ピクチャと、第1の参照ピクチャとは異なる第2の参照ピクチャとを復号するステップであって、第1の参照ピクチャおよび第2の参照ピクチャが、ともに現在のピクチャの前に表示されるべきか、またはともに現在のピクチャの後に表示されるべきかのいずれかである、復号するステップと、現在のピクチャの現在のブロックから第1の参照ピクチャの第1の参照ブロックへの第1の動きベクトル(MV0)を決定するステップと、現在のブロックから第2の参照ピクチャの第2の参照ブロックへの第2の動きベクトル(MV1)を決定するステップと、現在のピクチャから第1の参照ピクチャまでの第1の時間的距離(TD0)を決定するステップと、現在のピクチャから第2の参照ピクチャまでの第2の時間的距離(TD1)を決定するステップと、MV0、MV1、TD0およびTD1を使用して双方向オプティカルフロー(BIO)に従って現在のブロックを符号化するステップとを含む、ビデオデータを符号化する方法の一例を表す。
【０１６１】
図8は、本開示の技法によるビデオデータのブロックを復号する例示的な方法を示すフローチャートである。図8の方法は、図1および図6のビデオデコーダ30に関して説明される。しかしながら、他の例では、他のデバイスが、図8の方法を実行するように構成され得ることを理解されたい。
【０１６２】
ビデオデコーダ30は最初に、現在のピクチャに対する参照ピクチャとして使用するためにピクチャを復号し、ここで参照ピクチャは、参照ピクチャメモリ82(図6)に記憶されることが仮定されるが、これらのステップは図8の例には示されていない。次いで、ビデオデコーダ30は、現在のピクチャの現在のブロックに対するシンタックス要素をエントロピー復号する(200)。たとえば、ビデオデコーダ30は、予測モード(たとえば、イントラ予測モードまたはインター予測モード)を示すシンタックス要素、およびインター予測に対して、マージモードまたはAMVPに関するシンタックス要素などの予測モードに対する対応するシンタックス要素、ならびに現在のブロックに対する残差ブロックを再生するために使用されるべき量子化された残差係数をエントロピー復号し得る。
【０１６３】
図8の例では、ビデオデコーダ30は、たとえば、現在のブロックに対するエントロピー復号されたシンタックス要素に基づいて、双方向予測を使用して現在のブロックを予測することを決定する(202)。したがって、現在のブロックに対するエントロピー復号されたシンタックス要素を再び使用して、ビデオデコーダ30は、ブロックに対する動きベクトルを復号する(204)。動きベクトルは、参照ピクチャメモリ82に記憶されている参照ピクチャを指してよく、参照ピクチャは、ともに表示順序で現在のピクチャの前に発生するか、ともに表示順序で現在のピクチャの後に発生するか、または一方が表示順序で現在のピクチャの前に発生し、他方が表示順序で現在のピクチャの後に発生する場合がある。
【０１６４】
この例では、ビデオデコーダ30は、ブロックに対する動きベクトルが共通の時間的方向を指すかどうかを決定する(206)。すなわち、ビデオデコーダ30は、動きベクトルが、ともに現在のピクチャの前または後に表示されるべき参照ピクチャを指すかどうか、たとえば、参照ピクチャが、同じ参照ピクチャリスト(リスト0またはリスト1など)内で発生するかどうかを決定する。
【０１６５】
2つの動きベクトルが共通の時間的方向を指す(206の「YES」分岐)場合、ビデオデコーダ30はさらに、動きベクトルが、現在のピクチャと、対応する参照ピクチャとの間の時間的距離に少なくともほぼ比例するかどうか(208)を決定し得る。時間的距離は、現在のピクチャに対するピクチャ順序カウント(POC)値と2つの参照ピクチャに対するピクチャ順序カウント(POC)値との間の差に対応し得る。「少なくともほぼ比例して」は、概して、時間的距離にほぼ比例すること、または時間的距離に比例することのいずれかを指す。ビデオデコーダ30は、動きベクトルが時間的距離に少なくともほぼ比例するかどうかを決定するために、上記で説明した式(6)および/または(7)を実行し得る。
【０１６６】
たとえば、ビデオデコーダ30は、現在のピクチャに対するPOC値と第1の動きベクトル(MV0)が指す第1の参照ピクチャに対するPOV値との間の第1のPOC差を、第1の時間的距離TD0として決定し、現在のピクチャに対するPOC値と第2の動きベクトル(MV1)が指す第2の参照ピクチャに対するPOV値との間の第2のPOC差を、第2の時間的距離TD1として決定し得る。MV0およびMV1はそれぞれ、x成分とy成分とを含み得る。たとえば、MV0は、MV0xとMV0yとの成分を含んでよく、ここで、第1の参照ピクチャ内の参照ブロックを配置する位置を決定するために現在のピクチャ内のブロックの位置に対して、MV0xは水平オフセットを記述し、MV0yは垂直オフセットを記述する。同様に、MV1は、MV1xとMV1yとの成分を含んでよく、ここで、第2の参照ピクチャ内の参照ブロックを配置する位置を決定するために現在のピクチャ内のブロックの位置に対して、MV1xは水平オフセットを記述し、MV1yは垂直オフセットを記述する。次いで、ビデオデコーダ30は、動きベクトルが時間的距離に少なくともほぼ比例するかどうかを決定するために、式(6)および/または(7)のいずれかもしくは両方、または他の同様の式を実行するためにこれらの値を使用し得る。
【０１６７】
図8の例には示さないが、上記で説明したように、式(6)および/または(7)を計算することは、しきい値Thの使用を伴う場合がある。ビデオデコーダ30は、Thに対する値を規定する構成データを記憶し得る。追加または代替として、ビデオデコーダ30は、Thを表すシンタックス要素に対する値を復号し得る。たとえば、ビデオデコーダ30は、この値を、ビデオパラメータセット(VPS)、シーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、スライスヘッダ、および/またはブロックレベルシンタックスデータのうちのいずれかまたはすべての部分として受信し得る。
【０１６８】
動きベクトルが時間的距離に少なくともほぼ比例する(208の「YES」分岐)場合、ビデオデコーダ30はさらに、動きベクトルがともに0でないかどうか(210)を決定し得る。すなわち、ビデオデコーダ30は、動きベクトルの各々のx成分またはy成分のうちの少なくとも1つが0より大きい絶対値を有するかどうかを決定し得る。図8の例では、動きベクトルが0でないかどうか(ステップ210)の決定は、動きベクトルが時間的距離に少なくともほぼ比例するかどうか(ステップ208)の決定とは別個のステップとして示されているが、ステップ208および210は、他の例では単一のステップとして実行され得ることを理解されたい。
【０１６９】
動きベクトルがともに0でない(210の「YES」分岐)場合、または動きベクトルが共通の時間的方向を指さない(206の「NO」分岐)場合、ビデオデコーダ30はまた、ブロックが照度変化の領域内にあるかどうか(212)を決定し得る。たとえば、ビデオデコーダ30は、ブロックが照度変化の領域内にあるかどうかを決定するために、照度補償フラグ(ic_flag)に対する値を決定し得る。具体的には、一例では、ic_flagの値が真である場合、ビデオデコーダ30は、ブロックが照度変化の領域内にあると決定する。ブロックが照度変化の領域内にない(212の「NO」分岐)場合、ビデオデコーダ30は、たとえば上記で説明した式(1)〜(5)に従って、BIOを使用してブロックを予測する(214)ために進んでよい。代替として、BIOを使用してブロックを予測するとき、ビデオデコーダ30は、時間的距離TD0および/またはTD1に従って勾配の計算を修正し得る。たとえば、ビデオデコーダ30は、たとえばGx'=Gx・TD0およびGy'=Gy・TD1を計算することによって、通常に計算された勾配GxおよびGyから修正された勾配Gx'およびGy'を計算し得る。次いで、ビデオデコーダ30は、式(5)においてGxおよびGyの代わりにGx'およびGy'を使用し得る。
【０１７０】
一方で、この例では、動きベクトルが共通の時間的方向を指したが時間的距離に少なくともほぼ比例することはなかった(208の「NO」分岐)か、動きベクトルのうちの少なくとも1つが0値であった(210の「NO」分岐)か、またはブロックが照度変化の領域内にある(212の「YES」分岐)場合、ビデオデコーダ30は、BIOを使用せずに標準的な双方向予測を使用してブロックを予測し得る(216)。動きベクトルが共通の時間的方向を指すかどうか、動きベクトルがともに0でないかどうか、およびブロックが照度変化の領域内にあるかどうかの決定は、様々な例では、任意の順序で、または並行して実行されてもよく、それにより、決定の順序は、図7に示す例に限定されないことを理解されたい。
【０１７１】
いずれの場合も、BIOを使用するかまたはBIOを使用しないにかかわらず、ブロックを予測した後、ビデオデコーダ30は、ブロックを再生する(218)ために進んでよい。具体的には、ビデオデコーダ30は、変換係数を再生するために、量子化された変換係数を逆量子化し得る。次いで、ビデオデコーダ30は、現在のブロックに対する残差ブロックを再生するために変換係数を逆変換し得る。次いで、ビデオデコーダ30は、現在のブロックを再生するために、残差ブロックと予測されたブロックとを(ピクセルごとに)組み合わせ得る。この再生された現在のブロックはまた、復号されたブロックと呼ばれる場合がある。
【０１７２】
このようにして、図8の方法は、第1の参照ピクチャと、第1の参照ピクチャとは異なる第2の参照ピクチャとを復号するステップと、第1の参照ピクチャを現在のピクチャに対する参照ピクチャリストに追加するステップであって、第1の参照ピクチャおよび第2の参照ピクチャが、ともに現在のピクチャの前に表示されるべきか、またはともに現在のピクチャの後に表示されるべきかのいずれかである、追加するステップと、現在のピクチャの現在のブロックから第1の参照ピクチャの第1の参照ブロックへの第1の動きベクトル(MV0)を決定するステップと、現在のブロックから第2の参照ピクチャの第2の参照ブロックへの第2の動きベクトル(MV1)を決定するステップと、現在のピクチャから第1の参照ピクチャまでの第1の時間的距離(TD0)を決定するステップと、現在のピクチャから第2の参照ピクチャまでの第2の時間的距離(TD1)を決定するステップと、MV0、MV1、TD0およびTD1を使用して双方向オプティカルフロー(BIO)に従って現在のブロックを復号するステップとを含むビデオデータを復号する方法の一例を表す。
【０１７３】
例によっては、本明細書で説明した技法のうちのいずれかのいくつかの行為またはイベントが、異なるシーケンスで実施されてよく、追加され、統合され、または完全に除外されてよい(たとえば、説明したすべての行為またはイベントが技法の実践にとって必要であるとは限らない)ことを認識されたい。その上、いくつかの例では、行為またはイベントは、連続的にではなく、たとえば、マルチスレッド処理、割込み処理、または複数のプロセッサを通して並行して実施されてよい。
【０１７４】
1つまたは複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され、ハードウェアベース処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応する、コンピュータ可読記憶媒体を含み得るか、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む通信媒体を含み得る。このように、コンピュータ可読媒体は、一般に、(1)非一時的な有形コンピュータ可読記憶媒体、または(2)信号もしくは搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明する技法の実装のための命令、コードおよび/またはデータ構造を取り出すために、1つもしくは複数のコンピュータまたは1つもしくは複数のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。コンピュータプログラム製品が、コンピュータ可読媒体を含む場合がある。
【０１７５】
限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、フラッシュメモリ、または、命令もしくはデータ構造の形態の所望のプログラムコードを記憶するために使用されコンピュータによってアクセスされ得る任意の他の媒体を含み得る。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用してウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピーディスク(disk)、およびBlu-rayディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、レーザーを用いてデータを光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲に含まれるべきである。
【０１７６】
命令は、1つまたは複数のデジタルシグナルプロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、または他の同等の集積された論理回路もしくは個別の論理回路などの、1つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用される「プロセッサ」という用語は、上記の構造、または本明細書で説明された技法の実装に好適な他の構造のいずれかを指すことがある。さらに、いくつかの態様では、本明細書で説明された機能は、符号化および復号のために構成された専用ハードウェアおよび/またはソフトウェアモジュール内で与えられるか、あるいは複合コーデックに組み込まれ得る。また、本技法は、1つまたは複数の回路または論理要素で十分に実装され得る。
【０１７７】
本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置において実装され得る。本開示では、開示される技法を実施するように構成されたデバイスの機能的態様を強調するために、様々な構成要素、モジュール、またはユニットが説明されたが、それらの構成要素、モジュール、またはユニットは、必ずしも異なるハードウェアユニットによる実現を必要とするとは限らない。むしろ、上記で説明されたように、様々なユニットが、好適なソフトウェアおよび/またはファームウェアとともに、上記で説明された1つまたは複数のプロセッサを含んで、コーデックハードウェアユニットにおいて組み合わせられるか、または相互動作可能なハードウェアユニットの集合によって与えられ得る。
【０１７８】
様々な例が記載されている。これらおよび他の例は、以下の特許請求の範囲内に入る。
【符号の説明】
【０１７９】
10  ビデオ符号化および復号システム
12  ソースデバイス
14  宛先デバイス
16  コンピュータ可読媒体
18  ビデオソース
20  ビデオエンコーダ
22  出力インターフェース
28  入力インターフェース
30  ビデオデコーダ
32  ディスプレイデバイス
40  モード選択ユニット
42  動き推定ユニット
44  動き補償ユニット
46  イントラ予測ユニット
48  区分ユニット
50  加算器
52  変換処理ユニット
54  量子化ユニット
56  エントロピー符号化ユニット
58  逆量子化ユニット
60  逆変換ユニット
62  加算器
64  参照ピクチャメモリ
70  エントロピー復号ユニット
72  動き補償ユニット
74  イントラ予測ユニット
76  逆量子化ユニット
78  逆変換ユニット
80  加算器
82  参照ピクチャメモリ
100  現在のフレーム
102  参照フレーム
104  補間されたフレーム
106  現在のブロック
108  参照ブロック
110  補間されたブロック
112  動きベクトル(MV)
120  現在のフレーム
122  参照フレーム
124  補間されたフレーム
126  現在のブロック
128  参照ブロック
130  補間されたブロック
132  MV
134  MV
140  参照ピクチャ
142  参照ピクチャ
144  現在のピクチャ
146  参照ブロック
148  参照ブロック
150  現在のブロック
152  MV
154  MV
156  TD0の時間的距離
158  TD1の時間的距離
【図１】
0006676156.tif 000020
【図２】
0006676156.tif 000021
【図３】
0006676156.tif 000022
【図４】
0006676156.tif 000023
【図５】
0006676156.tif 000024
【図６】
0006676156.tif 000025
【図７】
0006676156.tif 000026
【図８】
0006676156.tif 000027