以下では、本発明の実施形態における添付図面に関連して、本発明の実施形態における技術的解決策を明確に且つ十分に説明する。当然ながら、説明される実施形態は、本発明の実施形態の一部であって、全てではない。創造的労力を伴うことなく本発明の実施例に基づいて当業者により得られる他の全ての実施例は、本発明の保護範囲内に入るものとする。
図1は、本発明の一実施形態に係るエンコーディング方法のフローチャートである。
101.ターゲット画像の全コーディングコストにしたがって、ターゲット画像に含まれる複数のコードブロック群の最初の処理順序を決定する。
102.最初の処理順序にしたがって複数のコードブロック群のうちの1つのコードブロック群をエンコードして、ビットストリームを生成する。
103.最初の処理順序をビットストリームに書き込む。
本発明のこの実施形態では、ターゲット画像の全コーディングコストにしたがってターゲット画像に含まれる複数のコードブロック群の最初の処理順序が決定され、また、最初の処理順序にしたがって複数のコードブロック群がエンコードされ、それにより、ターゲット画像における空間相関を十分に使用することができ、その結果、エンコーディング中の圧縮効率が向上される。
言うまでもなく、本発明のこの実施形態におけるターゲット画像は、エンコードされるべき画像であり、或いは、コード化画像と称されてもよい。ターゲット画像は、複数の重なり合わないコードブロック群に分けられ、この場合、コードブロック群は、HEVCにおけるコーディングツリーユニットCTUに相当してもよく、或いは、H.264/AVCにおけるマクロブロックMB或いは同様のものに相当してもよい。コードブロック群は、コーディングパラメータを独立に決定できる複数のコードブロックに分けられ続けてもよく、この場合、コードブロックは、HEVCにおけるコードユニットCUに相当してもよく、或いは、H.264/AVCにおけるサブマクロブロックSMB或いは同様のものに相当してもよい。
随意的に、一実施形態において、ステップ101は、複数のコードブロック群の全ての処理順序の各処理順序に対応する全コーディングコストを決定するステップであって、各処理順序に対応する全コーディングコストが、各処理順序にしたがって複数のコードブロック群がエンコードされるときのコーディングコストの和である、ステップと、全ての処理順序に対応する全コーディングコストの最小全コーディングコストに対応する処理順序が最初の処理順序であることを決定するステップとを含む。
具体的には、コードブロック群が異なる処理順序で処理されるときに、各コードブロック群のコーディングコストが処理順序に伴って変化する。コードブロック群のコーディングコストは、ブロック群のエンコーディングの品質を測定するための重要な基準である。コーディングコストが計算されるときには、ブロックをエンコードするために費やされるビットの量及び再構成後のブロックの品質が計算される。コーディングコストのより小さい値は、ブロックのより良好なエンコーディングを示す。したがって、全てのコードブロック群の最小全コーディングコストを得ることができる処理順序が最適な処理順序として使用されてもよい。したがって、最適な処理順序を決定する問題は、最小全コーディングコスト、すなわち、式(1)を解く問題へと変換されてよい。
ここで、Nは、コードブロック群の全体の量を示し、1≦i≦Nは、コードブロック群のインデックスが左右上下の順序で示されることを表わし、Oは、コードブロック群の処理順序を示すベクトルであり、Oのそれぞれの項目は、コードブロック群のインデックスの配置態様であり、全体の想定し得る処理順序はNの順列N!であり、O=[1,2,…,N]であるときに示される処理順序は、伝統的なライン走査順序であり、S
j,kは、既に処理されているj個のブロック群のインデックスを含むセットであり、kは、既に処理されているjブロック群がN個のブロック群から選択されるj個のブロック群の
個の想定し得る組み合わせのk番目の組み合わせであることを示し、iは、エンコードされないブロック群のうちの1つを示し、RD(S
j,k,i)は、S
j,k中の全てのコードブロック群が処理されてしまった場合においてコードブロック群iを処理するために必要とされるコストを示し、S
Nは、N個の全てのコードブロック群のセットを示し、
は、N個のコードブロック群の最適な処理順序を示し、及び、最適な問題の目的は、N個の全てのコードブロック群の全コスト
が最小であるように処理順序
を見出すことである。
を解くためには、各コードブロック群のコストRD(S
j,k,i)を計算する必要がある。1つのコードブロック群のコストRD(S
j,k,i)が得られた後、コードブロック群の最適な処理順序を決定するために式(2)で表わされる方法が使用されてもよい。
ここで、j,1≦j≦N−1は、既に処理されているコードブロック群の量を示し、
は、既に処理されているj個のブロック群の全ての想定し得る組み合わせのk番目の組み合わせを示し、S
j,kは、k番目の組み合わせの前述のケースで既に処理されているj個のブロッキング群のインデックスを含むセットであり、コスト関数
は、コードブロック群セットS
j,k中の全てのブロッキング群のコストの和、すなわち、最適な処理順序
を使用することによってS
j,kに含まれるj個のコードブロック群を処理するために必要とされる全コストであり、及び、RD(S
j,k,i)は、S
j,kによって表わされるk番目の組み合わせにより示されるj個の全てのブロック群が処理された場合においてブロッキング群iがエンコードされるときに引き起こされるコストを示す。
前述のプロセスを説明するための一例が与えられ、この場合、1,2,3の番号が付けられた処理されるべき3つのコードブロック群が存在する。j=2のときには、Sj,kに関して3つの想定し得るケース、すなわち、Sj,k={1,2}、Sj,k={1,3}、及び、Sj,k={2,3}が存在し、その最適なエンコーディング順序は、O{1,2}=1,2、O{1,3}=3,1、及び、O{2,3}=3,2であり、また、それに対応する最適なコストは、DP({1,2},O{1,2})、DP({1,3},O{1,3})、及び、DP({2,3},O{2,3})である。また、j=3のケースが考えられる。Sj,kに関する3つの想定し得るケースにおいて、他のコードブロック群はそれぞれ、3の番号が付けられたブロッキング群、2の番号が付けられたブロッキング群、及び、1の番号が付けられたブロッキング群であり、また、ブロッキング群をエンコードするための対応するコストはそれぞれRD({1,2},3)、RD({1,3},2)、及び、RD({2,3},1)である。この場合、エンコーディング番号1,2,3を伴う3つのコードブロック群の最小コストDP({1,2,3},O{1,2,3})は、式(3)を使用することによる計算によって得られてもよく、また、その後、最適な処理順序O{1,2,3}が決定される。
随意的に、一実施形態において、ステップ102は、最初の処理順序にしたがってコードブロック群に含まれる複数のコードブロックの処理順序を決定するステップと、最初の処理順序とコードブロック群に含まれる複数のコードブロックの処理順序とにしたがってコードブロック群をエンコードするステップとを含む。
具体的には、コードブロック群の処理順序が決定された後に、コードブロック群に含まれるコードブロックの処理順序が決定される必要が更にあり得る。現在のコードブロック群中のコードブロックの処理順序は、コードブロック群の処理順序にしたがって決定されてもよい。すなわち、現在のコードブロック群と現在のコードブロック群に隣り合うコードブロック群との間の処理順序は、現在のコードブロック群中のコードブロックの処理順序が決定されるように、コードブロック群の処理順序にしたがって決定されてもよい。現在のコードブロック群中のコードブロックが複数の事前に設定された候補処理順序を有してもよく、この場合、各候補処理順序が1つの位置関係に対応し、また、この位置関係は、現在処理されたコードブロック群と現在処理されたコードブロック群に隣り合う既に処理されているコードブロック群との間の相対位置関係である。現在のコードブロック群がエンコードされるべきときには、現在のコードブロック群と現在のコードブロック群に隣り合う或いは近い既にエンコードされているコードブロック群との間の相対位置関係が最初に決定されてもよく、その後、決定された相対位置関係にしたがって、対応するコードブロック群中のコードブロックの処理順序が予め設定された対応付けで決定される。コードブロックの処理順序が決定された後、処理順序にしたがって現在のコードブロック群中の全てのコードブロックがエンコードされ、また、エンコーディングが終了された後、最初の処理順序にしたがって次のコードブロック群が処理される。現在のコードブロック群と同様に、次のコードブロック群中のコードブロックの処理順序は、ターゲット画像の全てのコードブロック群が最初の処理順序にしたがって完全にエンコードされるまで、相対位置関係等にしたがって決定される必要がある。
随意的に、一実施形態では、コードブロック群の各コードブロック群に含まれる複数のコードブロックの処理順序を最初の処理順序にしたがって決定する前に、方法は、コードブロックの複数の候補処理順序を決定するステップと、複数の候補処理順序と複数の位置関係との間の対応関係を決定するステップであって、複数の位置関係が、現在処理されたコードブロック群と現在処理されたコードブロック群に隣り合う既に処理されているコードブロック群との間の複数の相対位置関係である、ステップとを更に含む。随意的に、一実施形態において、コードブロックの複数の候補処理順序を決定するステップは、コードブロックの事前に設定された複数の候補処理順序を使用するステップを含む。コードブロックの事前に設定された複数の候補処理順序は、複数の方法を使用することにより決定されてもよい。例えば、コードブロックの事前に設定された複数の候補処理順序は、コードブロック群に含まれるコードブロックの分割態様にしたがって決定される。コードブロックの分割態様は等サイズ分割を含んでもよく、すなわち、例えばH.264/AVCで使用されるコードブロック群中のコードブロックのサイズが等しい。例えばHEVCでは、コードブロックの分割態様が不等サイズ分割を更に含んでもよい。等サイズ分割の場合には、コードブロックの事前に設定された複数の候補処理順序が図4に示され得る。不等サイズ分割の場合には、コードブロックの事前に設定された複数の候補処理順序が図3に示され得る。図3及び図4に示される幾つかの処理順序が単なる一部の例であり、コードブロックの事前に設定された処理順序がこれらに限定されずに任意の順序であってもよいことが理解されるべきである。
例えば、エンコーダ側は、コードブロック群中のコードブロックの複数の処理順序と、このコードブロック群と既にエンコードされているコードブロック群との相対位置との間の対応関係を事前に設定してもよい。例えば、図4に示されるコードブロックの4つの処理順序が事前に設定されてもよく、この場合、順序0は、左から右への順次走査であり、順序1は、右から左への順次走査であり、順序2は、上から下への縦列ずつの走査であり、及び、順序3は、下から上への縦列ずつの走査である。コードブロック群と既にエンコードされているコードブロック群との相対位置は、図5に示される以下の16個の相対位置であってもよい。すなわち、1.コードブロック群に隣り合う既にエンコードされているコードブロック群が存在しない。2.コードブロック群よりも上側のコードブロック群がエンコードされてしまっている。3.コードブロック群の右側のコードブロック群がエンコードされてしまっている。4.コードブロック群よりも下側のコードブロック群がエンコードされてしまっている。5.コードブロック群の左側のコードブロック群がエンコードされてしまっている。6.コードブロック群の上側及び右側のコードブロック群がエンコードされてしまっている。7.コードブロック群の下側及び右側のコードブロック群がエンコードされてしまっている。8.コードブロック群の左側及び下側のコードブロック群がエンコードされてしまっている。9.コードブロック群の左側及び上側のコードブロック群がエンコードされてしまっている。10.コードブロック群の上側及び下側のコードブロック群がエンコードされてしまっている。11.コードブロック群の左側及び右側のコードブロック群がエンコードされてしまっている。12.コードブロック群の上側、下側、及び、左側のコードブロック群がエンコードされてしまっている。13.コードブロック群の左側、右側、及び、上側のコードブロック群がエンコードされてしまっている。14.コードブロック群の上側、下側、及び、右側のコードブロック群がエンコードされてしまっている。15.コードブロック群の左側、右側、及び、下側のコードブロック群がエンコードされてしまっている。16.コードブロック群の上側、下側、左側、及び、右側のコードブロック群がエンコードされてしまっている。
エンコーダ側は、前述の4つの処理順序と前述の16個の相対位置関係との間の対応関係を更に事前設定してもよい。例えば、相対位置関係1が順序0に対応し、相対位置関係2が順序3に対応し、及び、相対位置関係3が順序2に対応する。
前述の対応関係から分かるように、異なるコードブロック群処理順序が与えられると、現在のコードブロック群に関する前述の16個のケースから対応するケースが選択される。その後、現在のコードブロック群中のコードブロックの処理順序が決定された後、与えられたコードブロック処理順序にしたがって現在のコードブロック群中のコードブロックに関してエンコーディング作業が行われて、コーディングコストが計算される。
ここでは、コードブロック処理順序の決定のために、既に処理されている隣り合うコードブロック群におけるピクセル値をできる限り使用することにより、現在のコードブロック群におけるピクセル値が予測される。コード化画像の空間相関が比較的十分に考慮され、これが圧縮効率を向上させるのに役立つ。
随意的に、一実施形態において、コードブロック群に含まれる複数のコードブロックの処理順序を最初の処理順序にしたがって決定することは、コードブロック群とコードブロック群に隣り合う既に処理されているコードブロック群との間の相対位置関係を最初の処理順序にしたがって決定するステップと、この相対位置関係と、事前に設定された複数の候補処理順序と複数の位置関係との間の対応関係とにしたがって、コードブロック群に含まれる複数のコードブロックの処理順序を決定するステップであって、複数の位置関係が、現在処理されたコードブロック群と現在処理されたコードブロック群に隣り合う既に処理されているコードブロック群との間の複数の相対位置関係である、ステップとを含む。
すなわち、コードブロックの複数の候補処理順序、及び、複数の候補処理順序と複数の位置関係との間の対応関係、がいずれも事前に設定されてもよい。現在処理されたコードブロック群中のコードブロックの処理順序を決定する際、エンコーダ側は、事前に設定された対応関係に直接にしたがって、現在処理されたコードブロック群中のコードブロックに対応する処理順序を決定してもよく、この場合、複数の候補処理順序及び対応関係は、前述の実施形態におけるそれと同様であり、したがって、ここでは再び詳しく説明しない。
随意的に、一実施形態において、最初の処理順序をビットストリームに書き込むことは、最初の処理順序にしたがってコードブロック群のインデックスを配置するステップと、コードブロック群の配置されたインデックスをエンコードして、エンコードされたインデックスをビットストリームに書き込むステップとを含み、或いは、最初の処理順序にしたがってコードブロック群の座標を配置するステップと、コードブロック群の配置された座標をエンコードして、エンコードされた座標をビットストリームに書き込むステップとを含む。
具体的には、コードブロック群の処理順序が決定された後、処理順序は、インデックス又は座標を用いて或いは他の態様で、デコーダ側がデコーディングを行うときにデコーダ側がコードブロック群のエンコーディング中のエンコーディング順序を直接に取得できるように、ビットストリームに書き込まれてもよい。具体的には、以下の2つの態様が存在してもよい。
1つの態様では、インデックス番号、例えば0〜N−1が、左から右へ及び上から下へのライン走査によってコード化画像中のコードブロック群に割り当てられてもよい。N個のインデックス番号は、計算によって得られる最適な処理順序にしたがってビットストリームに書き込まれる。
他の態様では、水平座標値及び垂直座標値が左から右へ及び上から下へとコードブロック群に対して割り当てられてもよい。例えば、(x,y)がコードブロックを示す。コード化画像がw個のコードブロック群とh個のコードブロック群とをそれぞれ水平方向及び垂直方向に有する場合には、コード化画像が全体でN個のコードブロック群を有し、ここで、N=w*hであり、また、x、yの値範囲はそれぞれ0≦x≦w−1及び0≦y≦h−1である。N個の座標群は、計算によって得られる最適な処理順序にしたがってエンコードされてもよい。例えば、N個の水平座標値及びN個の垂直座標値は、パルス符号変調(Pulse Code Modulation,PCM)と同様なエンコーディング態様を使用することにより独立に順次にエンコードされてもよい。或いは、N個の水平座標値及びN個の垂直座標値は、差分パルス符号変調(Differential Pulse Code Modulation,DPCM)と同様なエンコーディング態様を使用することによりエンコードされてもよい。
コードブロック群の最適な処理順序Oが前述の方法を使用することによりエンコードされた後、エンコーディングの結果がビデオビットストリームへ出力され、それにより、デコーダ側が最適な処理順序にしたがってデコーディングを行う。
随意的に、一実施形態において、コードブロック群のコーディングコストは、以下のうちの少なくとも1つ、すなわち、コードブロック群をエンコードするために費やされるビットの量、又は、コードブロック群の歪みのうちの少なくとも1つを含む。コードブロック群のコーディングコストは、ブロック群のエンコーディングの品質を測定するための重要な基準である。コーディングコストが計算されるときには、ブロックをエンコードするために費やされるビットの量及び再構成後のブロックの品質が計算される。コーディングコストのより小さい値は、ブロックのより良好なエンコーディングを示す。
ターゲット画像がエンコードされるべきときには、ターゲット画像中に含まれるコードブロック群の最初の処理順序が本発明のこの実施形態における方法にしたがって決定されてもよいことが理解されるべきである。コードブロック群中のコードブロックの処理順序が決定されるときには、一部のコードブロック群中のコードブロックの処理順序が決定されてもよく、また、他のコードブロック群中のコードブロックの処理順序が他の技術的解決策にしたがって決定されてもよく或いは予め決定されてもよい。
本発明のこの実施形態では、ターゲット画像の全コーディングコストにしたがってターゲット画像中に含まれる複数のコードブロック群の最初の処理順序が決定され、また、最初の処理順序にしたがって複数のコードブロック群がエンコードされ、それにより、ターゲット画像における空間相関を十分に使用することができ、その結果、エンコーディング中の圧縮効率が向上される。
図2は、本発明の一実施形態に係るデコーディング方法のフローチャートである。
201.ターゲット画像の複数のコードブロック群の最初の処理順序をビットストリームから取得する。
202.最初の処理順序にしたがって、複数のコードブロック群のうちの1つのコードブロック群に含まれる複数のコードブロックの処理順序を決定する。
203.最初の処理順序とコードブロック群に含まれる複数のコードブロックの処理順序とにしたがってビットストリームをデコードする。
本発明のこの実施形態において、各コードブロック群に含まれるコードブロックの処理順序は、最小全コーディングコストを得ることができ且つエンコーダ側で決定される最初の処理順序にしたがって決定され、また、ターゲット画像のビットストリームは、最初の処理順序と各コードブロック群中のコードブロックの処理順序とにしたがってデコードされる。エンコーディングプロセスでは、ターゲット画像の空間相関が十分に利用され、それにより、エンコーディング中の圧縮効率が向上される。
随意的に、一実施形態では、複数のコードブロック群の1つのコードブロック群に含まれる複数のコードブロックの処理順序を最初の処理順序にしたがって決定する前に、方法は、コードブロックの複数の候補処理順序を決定するステップと、複数の候補処理順序と複数の位置関係との間の対応関係を決定するステップであって、複数の位置関係が、現在処理されたコードブロック群と現在処理されたコードブロック群に隣り合う既に処理されているコードブロック群との間の複数の相対位置関係である、ステップとを更に含む。
エンコーディングとデコーディングとの間のマッチングを確保するために、デコーダ側は、エンコーダ側により使用される解決策と同じである解決策を使用して、現在のコードブロック群中のコードブロックの処理順序をコードブロック群の処理順序にしたがって決定する。現在のコードブロック群中のコードブロックが複数の事前に設定された候補処理順序を有してもよく、この場合、各候補処理順序が1つの位置関係に対応し、また、この位置関係は、現在処理されたコードブロック群と現在処理されたコードブロック群に隣り合う既に処理されているコードブロック群との間の相対位置関係である。現在のコードブロック群がデコードされるべきときには、現在のコードブロック群と現在のコードブロック群に隣り合う或いは近い既にデコードされているコードブロック群との間の相対位置関係が最初に決定されてもよく、その後、決定された相対位置関係にしたがって、対応するコードブロック群中のコードブロックの処理順序が予め設定された対応付けで決定される。コードブロックの処理順序が決定された後、処理順序にしたがって現在のコードブロック群中の全てのコードブロックがデコードされ、また、デコーディングが終了された後、最初の処理順序にしたがって次のコードブロック群が処理される。現在のコードブロック群と同様に、次のコードブロック群中のコードブロックの処理順序は、ターゲット画像の全てのコードブロック群が最初の処理順序にしたがって完全にデコードされるまで、相対位置関係等にしたがって決定される必要がある。
随意的に、一実施形態において、複数のコードブロック群の各コードブロック群中のコードブロックの処理順序を最初の処理順序にしたがって決定することは、コードブロック群とコードブロック群に隣り合う既に処理されているコードブロック群との間の相対位置関係を最初の処理順序にしたがって決定するステップと、対応関係と相対位置関係とにしたがって、コードブロック群に含まれる複数のコードブロックの処理順序を決定するステップとを含む。随意的に、一実施形態において、コードブロックの複数の候補処理順序を決定するステップは、コードブロックの事前に設定された複数の候補処理順序を使用するステップを含む。コードブロックの事前に設定された複数の候補処理順序は、複数の方法を使用することにより決定されてもよい。例えば、コードブロックの事前に設定された複数の候補処理順序は、コードブロック群に含まれるコードブロックの分割態様にしたがって決定される。コードブロックの分割態様は等サイズ分割を含んでもよく、すなわち、例えばH.264/AVCで使用されるコードブロック群中のコードブロックのサイズが等しい。例えばHEVCでは、コードブロックの分割態様が不等サイズ分割を更に含んでもよい。等サイズ分割の場合には、コードブロックの事前に設定された複数の候補処理順序が図4に示され得る。不等サイズ分割の場合には、コードブロックの事前に設定された複数の候補処理順序が図3に示され得る。図3及び図4に示される幾つかの処理順序が単なる一部の例であり、コードブロックの事前に設定された処理順序がこれらに限定されずに任意の順序であってもよいことが理解されるべきである。
例えば、デコーダ側は、コードブロック群中のコードブロックの複数の処理順序と、このコードブロック群とデコードされたコードブロック群との相対位置対応関係とを事前に設定してもよい。例えば、図4に示されるコードブロックの4つの処理順序が事前に設定され、この場合、順序0は、左から右への順次走査であり、順序1は、右から左への順次走査であり、順序2は、上から下への縦列ずつの走査であり、及び、順序3は、下から上への縦列ずつの走査である。コードブロック群と既にデコードされているコードブロック群との相対位置は、図5に示される以下の16個の相対位置であってもよい。すなわち、1.コードブロック群に隣り合う既にデコードされているコードブロック群が存在しない。2.コードブロック群よりも上側のコードブロック群がデコードされてしまっている。3.コードブロック群の右側のコードブロック群がデコードされてしまっている。4.コードブロック群よりも下側のコードブロック群がデコードされてしまっている。5.コードブロック群の左側のコードブロック群がデコードされてしまっている。6.コードブロック群の上側及び右側のコードブロック群がデコードされてしまっている。7.コードブロック群の下側及び右側のコードブロック群がデコードされてしまっている。8.コードブロック群の左側及び下側のコードブロック群がデコードされてしまっている。9.コードブロック群の左側及び上側のコードブロック群がデコードされてしまっている。10.コードブロック群の上側及び下側のコードブロック群がデコードされてしまっている。11.コードブロック群の左側及び右側のコードブロック群がデコードされてしまっている。12.コードブロック群の上側、下側、及び、左側のコードブロック群がデコードされてしまっている。13.コードブロック群の左側、右側、及び、上側のコードブロック群がデコードされてしまっている。14.コードブロック群の上側、下側、及び、右側のコードブロック群がデコードされてしまっている。15.コードブロック群の左側、右側、及び、下側のコードブロック群がデコードされてしまっている。16.コードブロック群の上側、下側、左側、及び、右側のコードブロック群がデコードされてしまっている。
デコーダ側は、前述の4つの処理順序と前述の16個の相対位置関係との間の対応関係を更に事前設定してもよい。例えば、相対位置関係1が順序0に対応し、相対位置関係2が順序3に対応し、及び、相対位置関係3が順序2に対応する。
前述の対応関係から分かるように、異なるコードブロック群処理順序が与えられると、現在のコードブロック群に関する前述の16個のケースから対応するケースが選択される。その後、現在のコードブロック群中のコードブロックの処理順序が決定された後、与えられたコードブロック処理順序にしたがって現在のコードブロック群中のコードブロックに関してデコーディング作業が行われる。
デコーダ側の前述の複数の事前に設定されたモード及び対応関係は、エンコーダ側の事前に設定されたモード及び対応関係と同じであることが理解されるべきである。
随意的に、一実施形態において、コードブロック群に含まれる複数のコードブロックの処理順序を最初の処理順序にしたがって決定することは、コードブロック群とコードブロック群に隣り合う既に処理されているコードブロック群との間の相対位置関係を最初の処理順序にしたがって決定するステップと、この相対位置関係と、事前に設定された複数の候補処理順序と複数の位置関係との間の対応関係とにしたがって、コードブロック群に含まれる複数のコードブロックの処理順序を決定するステップであって、複数の位置関係が、現在処理されたコードブロック群と現在処理されたコードブロック群に隣り合う既に処理されているコードブロック群との間の複数の相対位置関係である、ステップとを含む。
すなわち、コードブロックの複数の候補処理順序、及び、複数の候補処理順序と複数の位置関係との間の対応関係、がいずれも事前に設定されてもよい。現在処理されたコードブロック群中のコードブロックの処理順序を決定する際、エンコーダ側は、事前に設定された対応関係に直接にしたがって、現在処理されたコードブロック群中のコードブロックに対応する処理順序を決定してもよく、この場合、複数の候補処理順序及び対応関係は、前述の実施形態におけるそれと同様であり、したがって、ここでは再び詳しく説明しない。
随意的に、一実施形態において、ステップ201は、複数のコードブロック群の配置されたインデックスを得るためにビットストリームをデコードするステップと、複数のコードブロック群のインデックスの配置順序にしたがって最初の処理順序を決定するステップとを含み、或いは、複数のコードブロック群の配置された座標を得るためにビットストリームをデコードするステップと、複数のコードブロック群の座標の配置順序にしたがって最初の処理順序を決定するステップとを含む。
具体的には、コードブロック群の処理順序を決定した後、エンコーダ側は、インデックス又は座標を用いて或いは他の態様で、デコーダ側がデコーディングを行うときにデコーダ側がコードブロック群のエンコーディング中のエンコーディング順序を直接に取得できるように、処理順序をビットストリームに書き込んでもよい。具体的には、以下の2つの態様が存在してもよい。
1つの態様では、インデックス番号、例えば0〜N−1が、左から右へ及び上から下へのライン走査によってコード化画像中のコードブロック群に割り当てられてもよい。N個のインデックス番号は、計算によって得られる最適な処理順序にしたがってビットストリームに書き込まれる。
他の態様では、水平座標値及び垂直座標値が左から右へ及び上から下へとコードブロック群に対して割り当てられてもよい。例えば、(x,y)がコードブロックを示す。コード化画像がw個のコードブロック群とh個のコードブロック群とをそれぞれ水平方向及び垂直方向に有する場合には、コード化画像が全体でN個のコードブロック群を有し、ここで、N=w*hであり、また、x、yの値範囲はそれぞれ0≦x≦w−1及び0≦y≦h−1である。N個の座標群は、計算によって得られる最適な処理順序にしたがってエンコードされてもよい。例えば、N個の水平座標値及びN個の垂直座標値は、パルス符号変調(Pulse Code Modulation,PCM)と同様なエンコーディング態様を使用することにより独立に順次にエンコードされてもよい。或いは、N個の水平座標値及びN個の垂直座標値は、差分パルス符号変調(Differential Pulse Code Modulation,DPCM)と同様なエンコーディング態様を使用することによりエンコードされてもよい。
すなわち、これに対応して、デコーダ側は、エンコーダ側によってビットストリームに書き込まれる情報にしたがって前述の2つの態様でコードブロック群の処理順序を学習してもよい。
本発明のこの実施形態において、各コードブロック群に含まれるコードブロックの処理順序は、最小全コーディングコストを得ることができ且つエンコーダ側で決定される最初の処理順序にしたがって決定され、また、ターゲット画像のビットストリームは、最初の処理順序と各コードブロック群中のコードブロックの処理順序とにしたがってデコードされる。エンコーディングプロセスでは、ターゲット画像の空間相関が十分に利用され、それにより、エンコーディング中の圧縮効率が向上される。
図3は、本発明の一実施形態に係るコードブロックの処理順序の概略図である。図4は、本発明の他の実施形態に係るコードブロックの処理順序の概略図である。
本発明の実施形態におけるコードブロック群の処理順序が任意の順序であってもよいことが理解されるべきである。コードブロック群の処理順序の決定又は選択は、図2における前述の実施形態で詳しく説明されており、したがって、ここでは再び詳しく説明しない。
コードブロック群中の全てのコードブロックの処理順序は、事前に設定された複数の候補処理順序から選択されてもよい。例えば、図3に示されるZ形状走査の4つの処理順序が事前に設定されてもよく、或いは、図4に示される順次走査の4つの処理順序が事前に設定されてもよい。本明細書中では、図3及び図4が実施例により説明を容易にするためだけに使用されるにすぎない。実際には、任意の量の処理順序が事前に設定されてもよく、また、1つの処理順序が任意であるか又は省かれてもよく、これは本発明では限定されない。
例えばHEVCにおけるCTU中のCUが異なるサイズを有し得るケースと同様に、コードブロック群中のコードブロックが異なるサイズを有する場合、ライン走査の順序は、コードブロックを処理するべく使用されるのに適さない。この場合、図3に示される4つの処理順序がコードブロックの事前に設定される処理順序として選択されてよい。例えばH.264/AVCにおけるMB中のSMBが同じサイズを有するケースと同様に、コードブロック群中のコードブロックが同じサイズを有する場合には、図4に示される順次走査の4つの処理順序がコードブロックの事前に設定される処理順序として選択されてもよい。コードブロックにおける番号は、対応するコードブロックの処理順序を表わす。
図5は、本発明の一実施形態に係るコードブロックの候補処理順序と複数の位置関係との間の対応関係の概略図である。
エンコーダ側は、コードブロック群中のコードブロックの複数の処理順序と、このコードブロック群と既にエンコードされているコードブロック群との相対位置との対応関係を事前に設定してもよい。例えば、コードブロックの4つの処理順序が事前に設定されてもよく、この場合、順序0は、左から右への順次走査であり、順序1は、右から左への順次走査であり、順序2は、上から下への縦列ずつの走査であり、及び、順序3は、下から上への縦列ずつの走査である。コードブロック群と既にエンコードされているコードブロック群との相対位置が図5に示される16個の相対位置に事前設定されてもよい。1.コードブロック群に隣り合う既にエンコードされているコードブロック群が存在しない。2.コードブロック群よりも上側のコードブロック群がエンコードされてしまっている。3.コードブロック群の右側のコードブロック群がエンコードされてしまっている。4.コードブロック群よりも下側のコードブロック群がエンコードされてしまっている。5.コードブロック群の左側のコードブロック群がエンコードされてしまっている。6.コードブロック群の上側及び右側のコードブロック群がエンコードされてしまっている。7.コードブロック群の下側及び右側のコードブロック群がエンコードされてしまっている。8.コードブロック群の左側及び下側のコードブロック群がエンコードされてしまっている。9.コードブロック群の左側及び上側のコードブロック群がエンコードされてしまっている。10.コードブロック群の上側及び下側のコードブロック群がエンコードされてしまっている。11.コードブロック群の左側及び右側のコードブロック群がエンコードされてしまっている。12.コードブロック群の上側、下側、及び、左側のコードブロック群がエンコードされてしまっている。13.コードブロック群の左側、右側、及び、上側のコードブロック群がエンコードされてしまっている。14.コードブロック群の上側、下側、及び、右側のコードブロック群がエンコードされてしまっている。15.コードブロック群の左側、右側、及び、下側のコードブロック群がエンコードされてしまっている。16.コードブロック群の上側、下側、左側、及び、右側のコードブロック群がエンコードされてしまっている。
エンコーダ側は、前述の4つの処理順序と前述の16個の相対位置関係との間の対応関係を更に事前設定してもよい。例えば、相対位置関係1が順序0に対応し、相対位置関係2が順序3に対応し、及び、相対位置関係3が順序2に対応する。
図5に示される対応関係が実施例により説明を容易にするためだけに使用されるにすぎないことが理解されるべきである。実際には、任意の量の処理順序及び任意の量の相対位置関係が事前に設定されてもよく、また、1つの処理順序が任意であり又は省かれてもよく、これは本発明では限定されない。
前述の対応関係から分かるように、異なるコードブロック群処理順序が与えられると、現在のコードブロック群に関する前述の16個のケースから対応するケースが選択される。その後、現在のコードブロック群中のコードブロックの処理順序が決定された後、与えられたコードブロック処理順序にしたがって現在のコードブロック群中のコードブロックに関してエンコーディング作業が行われて、コーディングコストが計算される。例えば、現在のコードブロック群が最初の処理順序にしたがって処理されるべきときには、現在のコードブロック群の左側及び右側のコードブロック群がエンコードされてしまったことが最初に決定され得る。現在のコードブロックが位置関係11にあるとともに、現在のコードブロックに対応するコードブロック処理順序が順序0であることが、図5における相対位置関係にしたがって決定されてもよい。その後、エンコーダ側は、順序0にしたがってコードブロック群中のコードブロックに関して左から右へ順次走査を行って、コードブロックをエンコードしてもよい。全てのコードブロックが完全にエンコードされた後、次のコードブロック群が最初のエンコーディング順序にしたがって処理される。
ここでは、コードブロック処理順序の決定のために、既に処理されている隣り合うコードブロック群におけるピクセル値をできる限り使用することにより、現在のコードブロック群におけるピクセル値が予測される。コード化画像の空間相関が比較的十分に考慮され、これが圧縮効率を向上させるのに役立つ。
図6は、本発明の一実施形態に係るエンコーダ側のエンコーディングのフローチャートである。
最初に、ターゲット画像601が複数の重なり合わないコードブロック群に分けられる。コードブロック群のための分割方法は、エンコーディング標準規格及びデコーディング標準規格に依存してよい。例えば、HEVCにおいて分割により得られるコードブロック群がCTUであってもよく、また、H.264/AVCにおいて分割により得られるコードブロック群がMBであってもよい。また、コードブロック群の分割が事前に設定されてもよく或いは任意であってもよい。また、コードブロック群は、コーディングパラメータを独立に決定できる複数のコードブロックに更に分けられ続けてもよい。前述のコードブロック群又はコードブロックはピクセルのセットである。例えば、コードブロックのサイズがN×Nであれば、それは、ブロックが水平方向及び垂直方向の両方でN−ピクセルを有する二次元ピクセルアレイであることを示す。
エンコーダ側は、コードブロックにおけるピクセルの予測子602を取得するために、コードブロックに関して予測作業を行う。予測作業は、一般的には、フレーム間予測611とフレーム内予測612とに分類されてもよい。また、コードブロックのピクセルの元の値603とコードブロックのピクセルの予測子602との間の差が計算される。コードブロックにおけるピクセルの予測された差のセットは、コードブロックの残差604と称される。残差604に関して変換・量子化613が行われた後、変換量子化係数605が得られる。最後に、変換量子化係数605に関してエントロピーエンコーディング614作業が行われ、また、エントロピーエンコーディングで出力されるビット列がビットストリームに書き込まれる。また、再構成残差606を得るために、変換・量子化613が行われた変換量子化係数605に関して逆量子化・逆変換615作業が行われ、また、ブロックの再構成607を得るために現在のコードブロックの再構成残差606と予測子602とが互いに加えられる。現在のブロックの再構成607は、その後のコードブロックを予測するために使用されるようになっており、この場合、その後のコードブロックは、現在のコード化画像中の処理されるべきコードブロックであってもよく、或いは、その後のエンコードされるべき画像中のコードブロックであってもよい。
ターゲット画像601に関して予測コーディングを行う前に、エンコーダ側は、最初に、ターゲット画像601中に含まれる複数のコードブロック群の処理順序を決定してもよい。具体的には、コードブロック群が異なる処理順序で処理されるときに、各コードブロック群のコーディングコストが処理順序に伴って変化する。したがって、全てのコードブロック群の最小全コーディングコストを得ることができる処理順序が、エンコーディングが実際に行われるときのコードブロック群の処理順序として使用されてもよいことが決定されてもよい。特定の決定方法に関しては、図1中の前述の実施形態における関連するステップ及び式(1)及び(2)を参照することができ、したがって、ここでは再び詳しく説明しない。
コードブロック群の処理順序が決定された後、各コードブロック群中のコードブロックの処理順序が決定されてもよい。具体的には、現在のコードブロック群と現在のコードブロック群に隣り合うコードブロック群との間の処理順序は、現在のコードブロック群中のコードブロックの処理順序が決定されるように、コードブロック群の処理順序にしたがって決定されてもよい。現在のコードブロック群中のコードブロックが複数の事前に設定された候補処理順序を有してもよく、この場合、各候補処理順序が1つの位置関係に対応し、また、この位置関係は、現在処理されたコードブロック群と現在処理されたコードブロック群に隣り合う既に処理されているコードブロック群との間の相対位置関係である。現在のコードブロック群がエンコードされるべきときには、現在のコードブロック群と現在のコードブロック群に隣り合う或いは近い既にエンコードされているコードブロック群との間の相対位置関係が最初に決定されてもよく、その後、決定された相対位置関係にしたがって、対応するコードブロック群中のコードブロックの処理順序が予め設定された対応付けで決定される。コードブロックの処理順序が決定された後、処理順序にしたがって現在のコードブロック群中の全てのコードブロックがエンコードされ、また、エンコーディングが終了された後、コードブロック群の処理順序にしたがって次のコードブロック群が処理される。現在のコードブロック群と同様に、次のコードブロック群中のコードブロックの処理順序は、ターゲット画像の全てのコードブロック群が処理順序にしたがって完全にエンコードされるまで、相対位置関係等にしたがって決定される必要がある。前述の「処理」は、予測作業611,612、残差604を決定する作業、変換/量子化613作業、エントロピーエンコーディング614作業、逆量子化/逆変換614作業、再構成607作業等を含んでもよい。
また、ビットストリームが生成されるときに、コードブロック群の処理順序がビットストリームに書き込まれてもよく、それにより、デコーダ側がその順序にしたがってデコーディングを行う。特定の処理順序のための識別方法に関しては、図1における対応する方法を参照することができ、したがって、ここでは再び詳しく説明しない。
本発明のこの実施形態では、ターゲット画像の全コーディングコストにしたがってターゲット画像中に含まれる複数のコードブロック群の処理順序が決定され、また、その処理順序にしたがって複数のコードブロック群がエンコードされ、それにより、ターゲット画像における空間相関を十分に利用することができ、その結果、エンコーディング中の圧縮効率が向上される。
図7は、本発明の一実施形態に係るデコーダ側のデコーディングのフローチャートである。
デコーダ側の処理方法は、エンコーダ側のそれに対応する。エンコーダ側によってエンコードされて出力されるビットストリームを得た後、デコーダ側は、そのビットストリームから、エンコーダ側がコードブロック群をエンコードするときの処理順序を取得してもよい。処理順序にしたがって、デコーダ側は、現在処理されたコードブロック群と現在処理されたコードブロック群に隣り合う或いは近い既にデコードされているコードブロック群との間の相対位置関係を最初に決定することができ、その後、決定された相対位置関係にしたがって、対応するコードブロック群中のコードブロックの処理順序が予め設定された対応付けで決定される。コードブロックの処理順序が決定された後、処理順序にしたがって現在のコードブロック群中の全てのコードブロックがデコードされ、また、デコーディングが終了された後、最初の処理順序にしたがって次のコードブロック群が処理される。現在のコードブロック群と同様に、次のコードブロック群中のコードブロックの処理順序は、ターゲット画像の全てのコードブロック群が最初の処理順序にしたがって完全にデコードされるまで、相対位置関係等にしたがって決定される必要がある。具体的には、図2における前述の方法を参照することができ、したがって、ここでは再び詳しく説明しない。言うまでもなく、デコーダ側による前述の「処理」は、予測モード情報及び変換量子化係数701を得るために入力ビットストリームに関してエントロピーデコーディング711を行うことを含む。デコーダは、現在のコードブロックの予測子を得るために既に再構成されているブロック又は画像と予測モード情報とを使用し、再構成残差702を得るために変換量子化係数701に関して逆量子化/逆変換712が行われ、また、コードブロックの再構成704を得るために現在のコードブロックの再構成残差702と予測子703とが互いに加えられる。エンコーダ側は、コードブロック群の決定された処理順序とコードブロック群中のコードブロックの処理順序とにしたがって各コードブロックに関する情報をビットストリームに書き込む。それに対応して、デコーダ側は、コードブロックのデコーディングにより得られる再構成されたブロックを前述の順序で再構成された画像中に連続的に入れ込む。
本発明のこの実施形態では、ターゲット画像の全コーディングコストにしたがってターゲット画像中に含まれる複数のコードブロック群の処理順序が決定され、また、その処理順序にしたがって複数のコードブロック群がエンコードされ、それにより、ターゲット画像における空間相関を十分に利用することができ、その結果、エンコーディング中の圧縮効率が向上される。
図8は、本発明の一実施形態に係るエンコーダ80の概略ブロック図である。図8におけるエンコーダ80は、決定ユニット81とエンコーディングユニット82とを含む。
決定ユニット81は、ターゲット画像の全コーディングコストにしたがって、ターゲット画像に含まれる複数のコードブロック群の最初の処理順序を決定する。エンコーディングユニット82は、決定ユニット81により決定される最初の処理順序にしたがって複数のコードブロック群のうちの1つのコードブロック群をエンコードして、ビットストリームを生成し、また、エンコーディングユニット82は、決定ユニット81により決定される最初の処理順序をビットストリームに書き込む。
本発明のこの実施形態におけるエンコーダ80は、ターゲット画像の全コーディングコストにしたがってターゲット画像中に含まれる複数のコードブロック群の最初の処理順序を決定するとともに、最初の処理順序にしたがって複数のコードブロック群をエンコードし、それにより、ターゲット画像における空間相関を十分に使用することができ、その結果、エンコーディング中の圧縮効率が向上される。
言うまでもなく、本発明のこの実施形態におけるターゲット画像は、エンコードされるべき画像であり、或いは、コード化画像と称されてもよい。ターゲット画像は、複数の重なり合わないコードブロック群に分けられ、この場合、コードブロック群は、HEVCにおけるコーディングツリーユニットCTUに相当してもよく、或いは、H.264/AVCにおけるマクロブロックMB或いは同様のものに相当してもよい。コードブロック群は、コーディングパラメータを独立に決定できる複数のコードブロックに分けられ続けてもよく、この場合、コードブロックは、HEVCにおけるコードユニットCUに相当してもよく、或いは、H.264/AVCにおけるサブマクロブロックSMB或いは同様のものに相当してもよい。
随意的に、一実施形態において、決定ユニット81は、具体的には、複数のコードブロック群の全ての処理順序の各処理順序に対応する全コーディングコストを決定するように構成され、この場合、各処理順序に対応する全コーディングコストは、各処理順序にしたがって複数のコードブロック群がエンコードされるときのコーディングコストの和であり、また、決定ユニット81は、全ての処理順序に対応する全コーディングコストの最小全コーディングコストに対応する処理順序が最初の処理順序であることを決定するように構成される。
具体的には、コードブロック群が異なる処理順序で処理されるときに、各コードブロック群のコーディングコストが処理順序に伴って変化する。コードブロック群のコーディングコストは、ブロック群のエンコーディングの品質を測定するための重要な基準である。コーディングコストが計算されるときには、ブロックをエンコードするために費やされるビットの量及び再構成後のブロックの品質が計算される。コーディングコストのより小さい値は、ブロックのより良好なエンコーディングを示す。したがって、全てのコードブロック群の最小全コーディングコストを得ることができる処理順序が最適な処理順序として使用されてもよい。したがって、最適な処理順序を決定する問題は、最小全コーディングコスト、すなわち、式(4)を解く問題へと変換されてよい。
ここで、Nは、コードブロック群の全体の量を示し、1≦i≦Nは、コードブロック群のインデックスが左右上下の順序で示されることを表わし、Oは、コードブロック群の処理順序を示すベクトルであり、Oのそれぞれの項目は、コードブロック群のインデックスの配置態様であり、全体の想定し得る処理順序はNの順列N!あり、O=[1,2,…,N]であるときに示される処理順序は、伝統的なライン走査順序であり、S
j,kは、既に処理されているj個のブロック群のインデックスを含むセットであり、kは、既に処理されているjブロック群がN個のブロック群から選択されるj個のブロック群の
個の想定し得る組み合わせのk番目の組み合わせであることを示し、iは、エンコードされないブロック群のうちの1つを示し、RD(S
j,k,i)は、S
j,k中の全てのコードブロック群が処理されてしまった場合においてコードブロック群iを処理するために必要とされるコストを示し、S
Nは、N個の全てのコードブロック群のセットを示し、
は、N個のコードブロック群の最適な処理順序を示し、及び、最適な問題の目的は、N個の全てのコードブロック群の全コスト
が最小であるように処理順序
を見出すことである。
を解くためには、各コードブロック群のコストRD(S
j,k,i)を計算する必要がある。1つのコードブロック群のコストRD(S
j,k,i)が得られた後、コードブロック群の最適な処理順序を決定するために式(5)で表わされる方法が使用されてもよい。
ここで、j,1≦j≦N−1は、既に処理されているコードブロック群の量を示し、
は、既に処理されているj個のブロック群の全ての想定し得る組み合わせのk番目の組み合わせを示し、S
j,kは、k番目の組み合わせの前述のケースで既に処理されているj個のブロッキング群のインデックスを含むセットであり、コスト関数
は、コードブロック群セットS
j,k中の全てのブロッキング群のコストの和、すなわち、最適な処理順序
を使用することによってS
j,kに含まれるj個のコードブロック群を処理するために必要とされる全コストであり、及び、RD(S
j,k,i)は、S
j,kによって表わされるk番目の組み合わせにより示されるj個の全てのブロック群が処理された場合においてブロッキング群iがエンコードされるときに引き起こされるコストを示す。
前述のプロセスを説明するための一例が与えられ、この場合、1,2,3の番号が付けられた処理されるべき3つのコードブロック群が存在する。j=2のときには、Sj,kに関して3つの想定し得るケース、すなわち、Sj,k={1,2}、Sj,k={1,3}、及び、Sj,k={2,3}が存在し、その最適なエンコーディング順序は、O{1,2}=1,2、O{1,3}=3,1、及び、O{2,3}=3,2であり、また、それに対応する最適なコストは、DP({1,2},O{1,2})、DP({1,3},O{1,3})、及び、DP({2,3},O{2,3})DP({2,3},O{2,3})である。また、j=3のケースが考えられる。Sj,kに関する3つの想定し得るケースにおいて、他のコードブロック群はそれぞれ、3の番号が付けられたブロッキング群、2の番号が付けられたブロッキング群、及び、1の番号が付けられたブロッキング群であり、また、ブロッキング群をエンコードするための対応するコストはそれぞれRD({1,2},3)、RD({1,3},2)、及び、RD({2,3},1)である。この場合、エンコーディング番号1,2,3を伴う3つのコードブロック群の最小コストDP({1,2,3},O{1,2,3})は、式(6)(3)を使用することによる計算によって得られてもよく、また、その後、最適な処理順序O{1,2,3}が決定される。
随意的に、一実施形態において、エンコーディングユニットは、具体的には、決定ユニットを使用することにより最初の処理順序にしたがってコードブロック群に含まれる複数のコードブロックの処理順序を決定するとともに、最初の処理順序とコードブロック群に含まれる複数のコードブロックの処理順序とにしたがってコードブロック群をエンコードするように構成される。
具体的には、コードブロック群の処理順序が決定された後に、コードブロック群に含まれるコードブロックの処理順序が決定される必要が更にあり得る。現在のコードブロック群中のコードブロックの処理順序は、コードブロック群の処理順序にしたがって決定されてもよい。すなわち、現在のコードブロック群と現在のコードブロック群に隣り合うコードブロック群との間の処理順序は、現在のコードブロック群中のコードブロックの処理順序が決定されるように、コードブロック群の処理順序にしたがって決定されてもよい。現在のコードブロック群中のコードブロックが複数の事前に設定された候補処理順序を有してもよく、この場合、各候補処理順序が1つの位置関係に対応し、また、この位置関係は、現在処理されたコードブロック群と現在処理されたコードブロック群に隣り合う既に処理されているコードブロック群との間の相対位置関係である。現在のコードブロック群がエンコードされるべきときには、現在のコードブロック群と現在のコードブロック群に隣り合う或いは近い既にエンコードされているコードブロック群との間の相対位置関係が最初に決定されてもよく、その後、決定された相対位置関係にしたがって、対応するコードブロック群中のコードブロックの処理順序が予め設定された対応付けで決定される。コードブロックの処理順序が決定された後、その処理順序にしたがって現在のコードブロック群中の全てのコードブロックがエンコードされ、また、エンコーディングが終了された後、最初の処理順序にしたがって次のコードブロック群が処理される。現在のコードブロック群と同様に、次のコードブロック群中のコードブロックの処理順序は、ターゲット画像の全てのコードブロック群が最初の処理順序にしたがって完全にエンコードされるまで、相対位置関係等にしたがって決定される必要がある。
随意的に、一実施形態において、決定ユニットは、コードブロックの複数の候補処理順序を決定するとともに、複数の候補処理順序と複数の位置関係との間の対応関係を決定するように構成され、この場合、複数の位置関係は、現在処理されたコードブロック群と現在処理されたコードブロック群に隣り合う既に処理されているコードブロック群との間の複数の相対位置関係である。随意的に、一実施形態に置いて、決定ユニットは、コードブロックの事前に設定された複数の候補処理順序を使用するように更に構成される。コードブロックの事前に設定された複数の候補処理順序は、複数の方法を使用することにより決定されてもよい。例えば、コードブロックの事前に設定された複数の候補処理順序は、コードブロック群に含まれるコードブロックの分割態様にしたがって決定される。コードブロックの分割態様は等サイズ分割を含んでもよく、すなわち、例えばH.264/AVではコードブロック群中のコードブロックのサイズが等しい。例えばHEVCでは、コードブロックの分割態様が不等サイズ分割を更に含んでもよい。等サイズ分割の場合には、コードブロックの事前に設定された複数の候補処理順序が図4に示され得る。不等サイズ分割の場合には、コードブロックの事前に設定された複数の候補処理順序が図3に示され得る。図3及び図4に示される幾つかの処理順序が単なる一部の例であり、コードブロックの事前に設定された処理順序がこれらに限定されずに任意の順序であってもよいことが理解されるべきである。
例えば、エンコーダ80は、コードブロック群中のコードブロックの複数の処理順序と、このコードブロック群と既にエンコードされたコードブロック群との相対位置との間の対応関係を事前に設定してもよい。例えば、図4に示されるコードブロックの4つの処理順序が事前に設定されてもよく、この場合、順序0は、左から右への順次走査であり、順序1は、右から左への順次走査であり、順序2は、上から下への縦列ずつの走査であり、及び、順序3は、下から上への縦列ずつの走査である。コードブロック群と既にエンコードされているコードブロック群との相対位置は、図5に示される以下の16個の相対位置であってもよい。すなわち、1.コードブロック群に隣り合う既にエンコードされているコードブロック群が存在しない。2.コードブロック群よりも上側のコードブロック群がエンコードされてしまっている。3.コードブロック群の右側のコードブロック群がエンコードされてしまっている。4.コードブロック群よりも下側のコードブロック群がエンコードされてしまっている。5.コードブロック群の左側のコードブロック群がエンコードされてしまっている。6.コードブロック群の上側及び右側のコードブロック群がエンコードされてしまっている。7.コードブロック群の下側及び右側のコードブロック群がエンコードされてしまっている。8.コードブロック群の左側及び下側のコードブロック群がエンコードされてしまっている。9.コードブロック群の左側及び上側のコードブロック群がエンコードされてしまっている。10.コードブロック群の上側及び下側のコードブロック群がエンコードされてしまっている。11.コードブロック群の左側及び右側のコードブロック群がエンコードされてしまっている。12.コードブロック群の上側、下側、及び、左側のコードブロック群がエンコードされてしまっている。13.コードブロック群の左側、右側、及び、上側のコードブロック群がエンコードされてしまっている。14.コードブロック群の上側、下側、及び、右側のコードブロック群がエンコードされてしまっている。15.コードブロック群の左側、右側、及び、下側のコードブロック群がエンコードされてしまっている。16.コードブロック群の上側、下側、左側、及び、右側のコードブロック群がエンコードされてしまっている。
エンコーダ80は、前述の4つの処理順序と前述の16個の相対位置関係との間の対応関係を更に事前設定してもよい。例えば、相対位置関係1が順序0に対応し、相対位置関係2が順序3に対応し、及び、相対位置関係3が順序2に対応する。
前述の対応関係から分かるように、異なるコードブロック群処理順序が与えられると、現在のコードブロック群に関する前述の16個のケースから対応するケースが選択される。その後、現在のコードブロック群中のコードブロックの処理順序が決定された後、与えられたコードブロック処理順序にしたがって現在のコードブロック群中のコードブロックに関してエンコーディング作業が行われて、コーディングコストが計算される。
ここでは、コードブロック処理順序の決定のために、既に処理されている隣り合うコードブロック群におけるピクセル値をできる限り使用することにより、現在のコードブロック群におけるピクセル値が予測される。コード化画像の空間相関が比較的十分に考慮され、これが圧縮効率を向上させるのに役立つ。
随意的に、一実施形態において、決定ユニットは、具体的には、コードブロック群とコードブロック群に隣り合う既に処理されているコードブロック群との間の相対位置関係を最初の処理順序にしたがって決定するとともに、対応関係と相対位置関係とにしたがって、コードブロック群に含まれる複数のコードブロックの処理順序を決定するように構成される。
随意的に、一実施形態において、決定ユニットは、具体的には、コードブロック群とコードブロック群に隣り合う既に処理されているコードブロック群との間の相対位置関係を最初の処理順序にしたがって決定するとともに、この相対位置関係と、事前に設定された複数の候補処理順序と複数の位置関係との間の対応関係とにしたがって、コードブロック群に含まれる複数のコードブロックの処理順序を決定するように構成され、この場合、複数の位置関係は、現在処理されたコードブロック群と現在処理されたコードブロック群に隣り合う既に処理されているコードブロック群との間の複数の相対位置関係である。
すなわち、コードブロックの複数の候補処理順序、及び、複数の候補処理順序と複数の位置関係との間の対応関係、がいずれも事前に設定されてもよい。現在処理されたコードブロック群中のコードブロックの処理順序を決定する際、エンコーダ80は、事前に設定された対応関係に直接にしたがって、現在処理されたコードブロック群中のコードブロックに対応する処理順序を決定してもよく、この場合、複数の候補処理順序及び対応関係は、前述の実施形態におけるそれと同様であり、したがって、ここでは再び詳しく説明しない。
随意的に、一実施形態において、エンコーディングユニットは、具体的には、最初の処理順序にしたがってコードブロック群のインデックスを配置するとともに、コードブロック群の配置されたインデックスをエンコードして、エンコードされたインデックスをビットストリームに書き込むように構成され、或いは、最初の処理順序にしたがってコードブロック群の座標を配置するとともに、コードブロック群の配置された座標をエンコードして、エンコードされた座標をビットストリームに書き込むように構成される。
具体的には、コードブロック群の処理順序が決定された後、処理順序は、インデックス又は座標を用いて或いは他の態様で、デコーダ側がデコーディングを行うときにデコーダ側がコードブロック群のエンコーディング中のエンコーディング順序を直接に取得できるように、ビットストリームに書き込まれてもよい。具体的には、以下の2つの態様が存在してもよい。
1つの態様では、インデックス番号、例えば0〜N−1が、左から右へ及び上から下へのライン走査によってコード化画像中のコードブロック群に割り当てられてもよい。N個のインデックス番号は、計算によって得られる最適な処理順序にしたがってビットストリームに書き込まれる。
他の態様では、水平座標値及び垂直座標値が左から右へ及び上から下へとコードブロック群に対して割り当てられてもよい。例えば、(x,y)がコードブロックを示す。コード化画像がw個のコードブロック群とh個のコードブロック群とをそれぞれ水平方向及び垂直方向に有する場合には、コード化画像が全体でN個のコードブロック群を有し、ここで、N=w*hであり、また、x、yの値範囲はそれぞれ0≦x≦w−1及び0≦y≦h−1である。N個の座標群は、計算によって得られる最適な処理順序にしたがってエンコードされてもよい。例えば、N個の水平座標値及びN個の垂直座標値は、パルス符号変調(Pulse Code Modulation,PCM)と同様なエンコーディング態様を使用することにより独立に順次にエンコードされてもよい。或いは、N個の水平座標値及びN個の垂直座標値は、差分パルス符号変調(Differential Pulse Code Modulation,DPCM)と同様なエンコーディング態様を使用することによりエンコードされてもよい。
コードブロック群の最適な処理順序Oが前述の方法を使用することによりエンコードされた後、エンコーディングの結果がビデオビットストリームへ出力され、それにより、デコーダ側が最適な処理順序にしたがってデコーディングを行う。
随意的に、一実施形態において、コードブロック群のコーディングコストは、以下のうちの少なくとも1つ、すなわち、コードブロック群をエンコードするためにエンコーディングユニットにより費やされるビットの量、又は、コードブロック群の歪みのうちの少なくとも1つを含む。
コードブロック群のコーディングコストは、ブロック群のエンコーディングの品質を測定するための重要な基準である。コーディングコストが計算されるときには、ブロックをエンコードするために費やされるビットの量及び再構成後のブロックの品質が計算される。コーディングコストのより小さい値は、ブロックのより良好なエンコーディングを示す。
ターゲット画像がエンコードされるべきときには、ターゲット画像中に含まれるコードブロック群の最初の処理順序が本発明のこの実施形態における方法にしたがって決定されてもよいことが理解されるべきである。コードブロック群中のコードブロックの処理順序が決定されるときには、一部のコードブロック群中のコードブロックの処理順序が決定されてもよく、また、他のコードブロック群中のコードブロックの処理順序が他の技術的解決策にしたがって決定されてもよく或いは予め決定されてもよい。
本発明のこの実施形態におけるエンコーダ80は、ターゲット画像の全コーディングコストにしたがってターゲット画像中に含まれる複数のコードブロック群の最初の処理順序を決定するとともに、最初の処理順序にしたがって複数のコードブロック群をエンコードし、それにより、ターゲット画像における空間相関を十分に使用することができ、その結果、エンコーディング中の圧縮効率が向上される。
図9は、本発明の一実施形態に係るデコーダの概略ブロック図である。図9におけるデコーダ90は、取得ユニット91、決定ユニット92、及び、デコーディングユニット93を含む。
取得ユニット91は、ターゲット画像の複数のコードブロック群の最初の処理順序をビットストリームから取得する。決定ユニット92は、最初の処理順序にしたがって、複数のコードブロック群のうちの1つのコードブロック群に含まれる複数のコードブロックの処理順序を決定する。デコーディングユニット93は、最初の処理順序とコードブロック群に含まれる複数のコードブロックの処理順序とにしたがってビットストリームをデコードする。
本発明のこの実施形態において、各コードブロック群に含まれるコードブロックの処理順序は、最小全コーディングコストを得ることができ且つエンコーダ側で決定される最初の処理順序にしたがって決定され、また、デコーダ90は、最初の処理順序と各コードブロック群中のコードブロックの処理順序とにしたがってターゲット画像のビットストリームをデコードする。エンコーディングプロセスでは、ターゲット画像の空間相関が十分に利用され、それにより、エンコーディング中の圧縮効率が向上される。
随意的に、一実施形態において、決定ユニット92は、コードブロックの複数の候補処理順序を決定するとともに、複数の候補処理順序と複数の位置関係との間の対応関係を決定するように更に構成され、この場合、複数の位置関係は、現在処理されたコードブロック群と現在処理されたコードブロック群に隣り合う既に処理されているコードブロック群との間の複数の相対位置関係である。
エンコーディングとデコーディングとの間のマッチングを確保するために、デコーダ90は、エンコーダ側により使用される解決策と同じである解決策を使用して、現在のコードブロック群中のコードブロックの処理順序をコードブロック群の処理順序にしたがって決定する。現在のコードブロック群中のコードブロックが複数の事前に設定された候補処理順序を有してもよく、この場合、各候補処理順序が1つの位置関係に対応し、また、この位置関係は、現在処理されたコードブロック群と現在処理されたコードブロック群に隣り合う既に処理されているコードブロック群との間の相対位置関係である。現在のコードブロック群がデコードされるべきときには、現在のコードブロック群と現在のコードブロック群に隣り合う或いは近い既にデコードされているコードブロック群との間の相対位置関係が最初に決定されてもよく、その後、決定された相対位置関係にしたがって、対応するコードブロック群中のコードブロックの処理順序が予め設定された対応付けで決定される。コードブロックの処理順序が決定された後、その処理順序にしたがって現在のコードブロック群中の全てのコードブロックがデコードされ、また、デコーディングが終了された後、最初の処理順序にしたがって次のコードブロック群が処理される。現在のコードブロック群と同様に、次のコードブロック群中のコードブロックの処理順序は、ターゲット画像の全てのコードブロック群が最初の処理順序にしたがって完全にデコードされるまで、相対位置関係等にしたがって決定される必要がある。
随意的に、一実施形態において、決定ユニットは、具体的には、コードブロック群とコードブロック群に隣り合う既に処理されているコードブロック群との間の相対位置関係を最初の処理順序にしたがって決定するとともに、対応関係と相対位置関係とにしたがって、コードブロック群に含まれる複数のコードブロックの処理順序を決定するように構成される。随意的に、一実施形態に置いて、決定ユニットは、具体的には、コードブロックの事前に設定された複数の候補処理順序を使用するように構成される。コードブロックの事前に設定された複数の候補処理順序は、複数の方法を使用することにより決定されてもよい。例えば、コードブロックの事前に設定された複数の候補処理順序は、コードブロック群に含まれるコードブロックの分割態様にしたがって決定される。コードブロックの分割態様は等サイズ分割を含んでもよく、すなわち、例えばH.264/AVCで使用されるコードブロック群中のコードブロックのサイズが等しい。例えばHEVCでは、コードブロックの分割態様が不等サイズ分割を更に含んでもよい。等サイズ分割の場合には、コードブロックの事前に設定された複数の候補処理順序が図4に示され得る。不等サイズ分割の場合には、コードブロックの事前に設定された複数の候補処理順序が図3に示され得る。図3及び図4に示される幾つかの処理順序が単なる一部の例であり、コードブロックの事前に設定された処理順序がこれらに限定されずに任意の順序であってもよいことが理解されるべきである。
例えば、デコーダ90は、コードブロック群中のコードブロックの複数の処理順序と、このコードブロック群と既にデコードされているコードブロック群との相対位置との間の対応関係を事前に設定してもよい。例えば、図4に示されるコードブロックの4つの処理順序が事前に設定され、この場合、順序0は、左から右への順次走査であり、順序1は、右から左への順次走査であり、順序2は、上から下への縦列ずつの走査であり、及び、順序3は、下から上への縦列ずつの走査である。コードブロック群と既にデコードされているコードブロック群との相対位置が図5に示される16個の相対位置に事前設定されてもよい。1.コードブロック群に隣り合う既にデコードされているコードブロック群が存在しない。2.コードブロック群よりも上側のコードブロック群がデコードされてしまっている。3.コードブロック群の右側のコードブロック群がデコードされてしまっている。4.コードブロック群よりも下側のコードブロック群がデコードされてしまっている。5.コードブロック群の左側のコードブロック群がデコードされてしまっている。6.コードブロック群の上側及び右側のコードブロック群がデコードされてしまっている。7.コードブロック群の下側及び右側のコードブロック群がデコードされてしまっている。8.コードブロック群の左側及び下側のコードブロック群がデコードされてしまっている。9.コードブロック群の左側及び上側のコードブロック群がデコードされてしまっている。10.コードブロック群の上側及び下側のコードブロック群がデコードされてしまっている。11.コードブロック群の左側及び右側のコードブロック群がデコードされてしまっている。12.コードブロック群の上側、下側、及び、左側のコードブロック群がデコードされてしまっている。13.コードブロック群の左側、右側、及び、上側のコードブロック群がデコードされてしまっている。14.コードブロック群の上側、下側、及び、右側のコードブロック群がデコードされてしまっている。15.コードブロック群の左側、右側、及び、下側のコードブロック群がデコードされてしまっている。16.コードブロック群の上側、下側、左側、及び、右側のコードブロック群がデコードされてしまっている。
デコーダ90は、前述の4つの処理順序と前述の16個の相対位置関係との間の対応関係を更に事前設定してもよい。例えば、相対位置関係1が順序0に対応し、相対位置関係2が順序3に対応し、及び、相対位置関係3が順序2に対応する。
前述の対応関係から分かるように、異なるコードブロック群処理順序が与えられると、現在のコードブロック群に関する前述の16個のケースから対応するケースが選択される。その後、現在のコードブロック群中のコードブロックの処理順序が決定された後、与えられたコードブロック処理順序にしたがって現在のコードブロック群中のコードブロックに関してデコーディング作業が行われる。
デコーダ90の前述の複数の事前に設定されたモード及び対応関係は、エンコーダ側の事前に設定されたモード及び対応関係と同じであることが理解されるべきである。
随意的に、一実施形態において、決定ユニットは、具体的には、コードブロック群とコードブロック群に隣り合う既に処理されているコードブロック群との間の相対位置関係を最初の処理順序にしたがって決定するとともに、この相対位置関係と、事前に設定された複数の候補処理順序と複数の位置関係との間の対応関係とにしたがって、コードブロック群に含まれる複数のコードブロックの処理順序を決定するように構成され、この場合、複数の位置関係は、現在処理されたコードブロック群と現在処理されたコードブロック群に隣り合う既に処理されているコードブロック群との間の複数の相対位置関係である。
すなわち、コードブロックの複数の候補処理順序、及び、複数の候補処理順序と複数の位置関係との間の対応関係、がいずれも事前に設定されてもよい。現在処理されたコードブロック群中のコードブロックの処理順序を決定する際、エンコーダ側は、事前に設定された対応関係に直接にしたがって、現在処理されたコードブロック群中のコードブロックに対応する処理順序を決定してもよく、この場合、複数の候補処理順序及び対応関係は、前述の実施形態におけるそれと同様であり、したがって、ここでは再び詳しく説明しない。
随意的に、一実施形態において、取得ユニット91は、具体的には、複数のコードブロック群の配置されたインデックスを得るためにビットストリームをデコードするとともに、複数のコードブロック群のインデックスの配置順序にしたがって最初の処理順序を決定するように構成され、或いは、複数のコードブロック群の配置された座標を得るためにビットストリームをデコードするとともに、複数のコードブロック群の座標の配置順序にしたがって最初の処理順序を決定するように構成される。
具体的には、コードブロック群の処理順序を決定した後、エンコーダ側は、インデックス又は座標を用いて或いは他の態様で、デコーダ90がデコーディングを行うときにデコーダ90がコードブロック群のエンコーディング中のエンコーディング順序を直接に取得できるように、処理順序をビットストリームに書き込んでもよい。具体的には、以下の2つの態様が存在してもよい。
1つの態様では、インデックス番号、例えば0〜N−1が、左から右へ及び上から下へのライン走査によってコード化画像中のコードブロック群に割り当てられてもよい。N個のインデックス番号は、計算によって得られる最適な処理順序にしたがってビットストリームに書き込まれる。
他の態様では、水平座標値及び垂直座標値が左から右へ及び上から下へとコードブロック群に対して割り当てられてもよい。例えば、(x,y)がコードブロックを示す。コード化画像がw個のコードブロック群とh個のコードブロック群とをそれぞれ水平方向及び垂直方向に有する場合には、コード化画像が全体でN個のコードブロック群を有し、ここで、N=w*hであり、また、x、yの値範囲はそれぞれ0≦x≦w−1及び0≦y≦h−1である。N個の座標群は、計算によって得られる最適な処理順序にしたがってエンコードされてもよい。例えば、N個の水平座標値及びN個の垂直座標値は、パルス符号変調(Pulse Code Modulation,PCM)と同様なエンコーディング態様を使用することにより独立に順次にエンコードされてもよい。或いは、N個の水平座標値及びN個の垂直座標値は、差分パルス符号変調(Differential Pulse Code Modulation,DPCM)と同様なエンコーディング態様を使用することによりエンコードされてもよい。
すなわち、これに対応して、デコーダ90は、エンコーダ側によってビットストリームに書き込まれる情報にしたがって前述の2つの態様でコードブロック群の処理順序を学習してもよい。
本発明のこの実施形態において、各コードブロック群に含まれるコードブロックの処理順序は、最小全コーディングコストを得ることができ且つエンコーダ側で決定される最初の処理順序にしたがって決定され、また、デコーダ90は、最初の処理順序と各コードブロック群中のコードブロックの処理順序とにしたがってターゲット画像のビットストリームをデコードする。エンコーディングプロセスでは、ターゲット画像の空間相関が十分に利用され、それにより、エンコーディング中の圧縮効率が向上される。
図10は、本発明の他の実施形態に係るエンコーダの概略ブロック図である。図10におけるエンコーダ100は、プロセッサ101及びメモリ102を含む。プロセッサ101は、バスシステム103を使用することによりメモリ102に接続される。
メモリ102は、以下の作業、すなわち、ターゲット画像の全コーディングコストにしたがってターゲット画像中に含まれる複数のコードブロック群の最初の処理順序を決定する作業と、最初の処理順序にしたがって複数のコードブロック群のうちの1つのコードブロック群をエンコードしてビットストリームを生成する作業と、最初の処理順序をビットストリームに書き込む作業とをプロセッサ101に実行させる命令を記憶するように構成される。
本発明のこの実施形態におけるエンコーダ100は、ターゲット画像の全コーディングコストにしたがってターゲット画像中に含まれる複数のコードブロック群の最初の処理順序を決定するとともに、最初の処理順序にしたがって複数のコードブロック群をエンコードし、それにより、ターゲット画像における空間相関を十分に使用することができ、その結果、エンコーディング中の圧縮効率が向上される。
言うまでもなく、本発明のこの実施形態におけるターゲット画像は、エンコードされるべき画像であり、或いは、コード化画像と称されてもよい。ターゲット画像は、複数の重なり合わないコードブロック群に分けられ、この場合、コードブロック群は、HEVCにおけるコーディングツリーユニットCTUに相当してもよく、或いは、H.264/AVCにおけるマクロブロックMB或いは同様のものに相当してもよい。コードブロック群は、コーディングパラメータを独立に決定できる複数のコードブロックに分けられ続けてもよく、この場合、コードブロックは、HEVCにおけるコードユニットCUに相当してもよく、或いは、H.264/AVCにおけるサブマクロブロックSMB或いは同様のものに相当してもよい。
また、エンコーダ100は、受信回路104等を更に含んでもよい。プロセッサ101はエンコーダ100の動作を制御し、また、プロセッサ101はCPU(Central Processing Unit、中央処理ユニット)と更に称されてもよい。メモリ102は、リード・オンリー・メモリ及びランダム・アクセス・メモリを含んでもよく、また、命令及びデータをプロセッサ101に供給する。メモリ102の一部が不揮発性ランダム・アクセス・メモリ(NVRAM)を更に含んでもよい。エンコーダ100の構成要素は、バスシステム103を使用することにより互いに結合され、この場合、バスシステム103は、データバスを含むだけでなく、電力バス、制御バス、状態信号バス、及び、同様のものも更に含んでもよい。しかしながら、明確な描写のため、図中の様々なタイプのバスがバスシステム103としてマーキングされる。
本発明の実施態様において開示される方法は、プロセッサ101に適用されてもよく或いはプロセッサ101により実施される。プロセッサ101は、集積回路チップであってもよく、また、信号処理能力を有する。実施プロセスにおいて、前述の方法のステップは、プロセッサ101内のハードウェアの集積論理回路又はソフトウェア形態の命令を使用することによって実行されてもよい。前述のプロセッサ101は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、又は、他のプログラマブル論理装置、離散ゲート、又は、トランジスタ論理装置、又は、離散ハードウェアコンポーネントであってもよい。プロセッサ101は、本発明の実施形態に開示される方法、ステップ、及び、論理ブロック図を実施又は実行してもよい。汎用プロセッサがマイクロプロセッサであってもよく、或いは、プロセッサが任意の従来のプロセッサ等であってもよい。本発明の実施形態に関連して開示される方法のステップは、ハードウェア・デコーディング・プロセッサを用いて直接に実行されて完了されてもよく、或いは、ハードウェアモジュールとソフトウェアモジュールとの組み合わせをデコーディングプロセッサ内で使用することにより実行されて完了されてもよい。ソフトウェアモジュールは、ランダム・アクセス・メモリ、フラッシュメモリ、リード・オンリー・メモリ、プログラマブル・リード・オンリー・メモリ、電気的に消去可能なプログラマブルメモリ、又は、レジスタなどの当該技術分野における記憶媒体マチュア内に位置されてもよい。記憶媒体はメモリ102内に位置され、また、プロセッサ101は、メモリ102内の情報を読み取って、プロセッサ101のハードウェアと組み合わせて前述の方法におけるステップを完了する。
随意的に、一実施形態において、ターゲット画像の全コーディングコストにしたがってターゲット画像中に含まれる複数のコードブロック群の最初の処理順序を決定することは、複数のコードブロック群の全ての処理順序の各処理順序に対応する全コーディングコストを決定するステップであって、各処理順序に対応する全コーディングコストが、各処理順序にしたがって複数のコードブロック群がエンコードされるときのコーディングコストの和である、ステップと、全ての処理順序に対応する全コーディングコストの最小全コーディングコストに対応する処理順序が最初の処理順序であることを決定するステップとを含む。
随意的に、一実施形態において、最初の処理順序にしたがって複数のコードブロック群のうちの1つのコードブロック群をエンコードしてビットストリームを生成することは、最初の処理順序にしたがってコードブロック群に含まれる複数のコードブロックの処理順序を決定するステップと、最初の処理順序とコードブロック群に含まれる複数のコードブロックの処理順序とにしたがってコードブロック群をエンコードするステップとを含む。
随意的に、一実施形態では、コードブロック群に含まれる複数のコードブロックの処理順序を最初の処理順序にしたがって決定する前に、方法は、コードブロックの複数の候補処理順序を決定するステップと、複数の候補処理順序と複数の位置関係との間の対応関係を決定するステップであって、複数の位置関係が、現在処理されたコードブロック群と現在処理されたコードブロック群に隣り合う既に処理されているコードブロック群との間の複数の相対位置関係である、ステップとを更に含む。
随意的に、一実施形態において、コードブロック群に含まれる複数のコードブロックの処理順序を最初の処理順序にしたがって決定することは、コードブロック群とコードブロック群に隣り合う既に処理されているコードブロック群との間の相対位置関係を最初の処理順序にしたがって決定するステップと、対応関係と相対位置関係とにしたがって、コードブロック群に含まれる複数のコードブロックの処理順序を決定するステップとを含む。
随意的に、一実施形態において、コードブロックの複数の候補処理順序を決定するステップは、コードブロックの事前に設定された複数の候補処理順序を使用するステップを含む。
随意的に、一実施形態において、コードブロック群に含まれる複数のコードブロックの処理順序を最初の処理順序にしたがって決定することは、コードブロック群とコードブロック群に隣り合う既に処理されているコードブロック群との間の相対位置関係を最初の処理順序にしたがって決定するステップと、この相対位置関係と、事前に設定された複数の候補処理順序と複数の位置関係との間の対応関係とにしたがって、コードブロック群に含まれる複数のコードブロックの処理順序を決定するステップであって、複数の位置関係が、現在処理されたコードブロック群と現在処理されたコードブロック群に隣り合う既に処理されているコードブロック群との間の複数の相対位置関係である、ステップとを含む。
随意的に、一実施形態において、最初の処理順序をビットストリームに書き込むことは、最初の処理順序にしたがってコードブロック群のインデックスを配置するステップと、コードブロック群の配置されたインデックスをエンコードして、エンコードされたインデックスをビットストリームに書き込むステップとを含み、或いは、最初の処理順序にしたがってコードブロック群の座標を配置するステップと、コードブロック群の配置された座標をエンコードして、エンコードされた座標をビットストリームに書き込むステップとを含む。
随意的に、一実施形態において、コードブロック群のコーディングコストは、以下のうちの少なくとも1つ、すなわち、コードブロック群をエンコードするために費やされるビットの量、又は、コードブロック群の歪みのうちの少なくとも1つを含む。
本発明のこの実施形態におけるエンコーダ100は、ターゲット画像の全コーディングコストにしたがってターゲット画像中に含まれる複数のコードブロック群の最初の処理順序を決定するとともに、最初の処理順序にしたがって複数のコードブロック群をエンコードし、それにより、ターゲット画像における空間相関を十分に使用することができ、その結果、エンコーディング中の圧縮効率が向上される。
図11は、本発明の他の実施形態に係るデコーダの概略ブロック図である。図11におけるデコーダ110は、プロセッサ111とメモリ112とを含む。プロセッサ111は、バスシステム113を使用することによりメモリ112に接続される。
メモリ112は、以下の作業、すなわち、ターゲット画像の複数のコードブロック群の最初の処理順序をビットストリームから取得する作業と、複数のコードブロック群のうちの1つのコードブロック群に含まれる複数のコードブロックの処理順序を最初の処理順序にしたがって決定する作業と、最初の処理順序とコードブロック群に含まれる複数のコードブロックの処理順序とにしたがってビットストリームをデコードする作業とをプロセッサ111に実行させる命令を記憶するように構成される。
本発明のこの実施形態において、各コードブロック群に含まれるコードブロックの処理順序は、最小全コーディングコストを得ることができ且つエンコーダ側で決定される最初の処理順序にしたがって決定され、また、デコーダ110は、最初の処理順序と各コードブロック群中のコードブロックの処理順序とにしたがってターゲット画像のビットストリームをデコードする。エンコーディングプロセスでは、ターゲット画像の空間相関が十分に利用され、それにより、エンコーディング中の圧縮効率が向上される。
また、デコーダ110は、送信回路114等を更に含んでもよい。プロセッサ111はデコーダ110の動作を制御し、また、プロセッサ111はCPU(Central Processing Unit、中央処理ユニット)と更に称されてもよい。メモリ112は、リード・オンリー・メモリ及びランダム・アクセス・メモリを含んでもよく、また、命令及びデータをプロセッサ111に供給する。メモリ112の一部が不揮発性ランダム・アクセス・メモリ(NVRAM)を更に含んでもよい。デコーダ110の構成要素は、バスシステム113を使用することにより互いに結合され、この場合、バスシステム113は、データバスを含むだけでなく、電力バス、制御バス、状態信号バス、及び、同様のものも更に含んでもよい。しかしながら、明確な描写のため、図中の様々なタイプのバスがバスシステム113としてマーキングされる。
本発明の実施態様において開示される方法は、プロセッサ111に適用されてもよく或いはプロセッサ111により実施されてもよい。プロセッサ111は、集積回路チップであってもよく、また、信号処理能力を有する。実施プロセスにおいて、前述の方法のステップは、プロセッサ111内のハードウェアの集積論理回路又はソフトウェア形態の命令を使用することによって実行されてもよい。前述のプロセッサ111は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、又は、他のプログラマブル論理装置、離散ゲート、又は、トランジスタ論理装置、又は、離散ハードウェアコンポーネントであってもよい。プロセッサ111は、本発明の実施形態に開示される方法、ステップ、及び、論理ブロック図が実施又は実行してもよい。汎用プロセッサがマイクロプロセッサであってもよく、或いは、プロセッサが任意の従来のプロセッサ等であってもよい。本発明の実施形態に関連して開示される方法のステップは、ハードウェア・デコーディング・プロセッサを用いて直接に実行されて完了されてもよく、或いは、ハードウェアモジュールとソフトウェアモジュールとの組み合わせをデコーディングプロセッサ内で使用することにより実行されて完了されてもよい。ソフトウェアモジュールは、ランダム・アクセス・メモリ、フラッシュメモリ、リード・オンリー・メモリ、プログラマブル・リード・オンリー・メモリ、電気的に消去可能なプログラマブルメモリ、又は、レジスタなどの当該技術分野における記憶媒体マチュア内に位置されてもよい。記憶媒体はメモリ112内に位置され、また、プロセッサ111は、メモリ112内の情報を読み取って、プロセッサ111のハードウェアと組み合わせて前述の方法におけるステップを完了する。
随意的に、一実施形態では、複数のコードブロック群のうちの1つのコードブロック群に含まれる複数のコードブロックの処理順序を最初の処理順序にしたがって決定する前に、方法は、コードブロックの複数の候補処理順序を決定するステップと、複数の候補処理順序と複数の位置関係との間の対応関係を決定するステップであって、複数の位置関係が、現在処理されたコードブロック群と現在処理されたコードブロック群に隣り合う既に処理されているコードブロック群との間の複数の相対位置関係である、ステップとを更に含む。
随意的に、一実施形態において、複数のコードブロック群のうちの1つのコードブロック群に含まれる複数のコードブロックの処理順序を最初の処理順序にしたがって決定することは、コードブロック群とコードブロック群に隣り合う既に処理されているコードブロック群との間の相対位置関係を最初の処理順序にしたがって決定するステップと、対応関係と相対位置関係とにしたがって、コードブロック群に含まれる複数のコードブロックの処理順序を決定するステップとを含む。
随意的に、一実施形態において、コードブロックの複数の候補処理順序を決定するステップは、コードブロックの事前に設定された複数の候補処理順序を使用するステップを含む。
随意的に、一実施形態において、コードブロック群に含まれる複数のコードブロックの処理順序を最初の処理順序にしたがって決定することは、コードブロック群とコードブロック群に隣り合う既に処理されているコードブロック群との間の相対位置関係を最初の処理順序にしたがって決定するステップと、この相対位置関係と、事前に設定された複数の候補処理順序と複数の位置関係との間の対応関係とにしたがって、コードブロック群に含まれる複数のコードブロックの処理順序を決定するステップであって、複数の位置関係が、現在処理されたコードブロック群と現在処理されたコードブロック群に隣り合う既に処理されているコードブロック群との間の複数の相対位置関係である、ステップとを含む。
随意的に、一実施形態において、ターゲット画像の複数のコードブロック群の最初の処理順序をビットストリームから取得することは、複数のコードブロック群の配置されたインデックスを得るためにビットストリームをデコードするステップと、複数のコードブロック群のインデックスの配置順序にしたがって最初の処理順序を決定するステップとを含み、或いは、複数のコードブロック群の配置された座標を得るためにビットストリームをデコードするステップと、複数のコードブロック群の座標の配置順序にしたがって最初の処理順序を決定するステップとを含む。
本発明のこの実施形態において、各コードブロック群に含まれるコードブロックの処理順序は、最小全コーディングコストを得ることができ且つエンコーダ側で決定される最初の処理順序にしたがって決定され、また、デコーダ110は、最初の処理順序と各コードブロック群中のコードブロックの処理順序とにしたがってターゲット画像のビットストリームをデコードする。エンコーディングプロセスでは、ターゲット画像の空間相関が十分に利用され、それにより、エンコーディング中の圧縮効率が向上される。
当業者であれば気付くように、方法ステップ及びユニットは、この明細書中に開示される実施形態で説明される例と組み合わせて、電子的なハードウェア、コンピュータソフトウェア、又は、これらの組み合わせによって実施されてもよい。ハードウェアとソフトウェアとの間の互換性を明確に説明するために、以上は、一般に、機能にしたがって各実施形態のステップ及び構成について説明してきた。機能がハードウェアによって果たされるか或いはソフトウェアによって果たされるかどうかは、特定の用途と技術的解決策の設計制約条件とによって決まる。当業者は、それぞれの特定の用途に関して説明される機能を実施するために異なる方法を使用してもよいが、その実施が本発明の範囲を越えると見なされるべきでない。
この明細書中に開示される実施形態で説明される方法又はステップは、ハードウェア、ソフトウェア、プロセッサにより実行されるプログラム、又は、これらの組み合わせによって実施されてもよい。ソフトウェアプログラムは、ランダム・アクセス・メモリ(RAM)、メモリ、リード・オンリー・メモリ(ROM)、電気的にプログラム可能なROM、電気的に消去可能なプログラマブルROM、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、又は、当該技術分野において既知の任意の他の形態の記憶媒体に存在してもよい。
本発明は、添付図面に関連して典型的な実施形態と組み合わせて詳しく説明されるが、本発明はこれらの実施形態に限定されない。本発明の思想及び本質から逸脱することなく本発明の実施形態に対して当業者により様々な等価な変更又は置換を行うことができ、また、変更及び置換は、本発明の範囲内に入るものとする。