(57)【要約】  本技術は、バッファサイズを削減することができるようにする画像処理装置および方法に関する。画像処理装置は、双方向予測を行うか否かについての判定に用いるコストを計算する処理単位をVPDUサイズ相当、またはVPDUサイズ以下の分割処理単位に分割し、分割処理単位に基づいて計算されたコストを用いて判定を行う。本技術は、符号化装置または復号装置に適用することができる。
2020137643.tif 000002
【特許請求の範囲】
【請求項１】
双方向予測を行うか否かについての判定に用いるコストを計算する処理単位をVPDUサイズ相当、またはVPDUサイズ以下の分割処理単位に分割する制御部と、
前記分割処理単位に基づいて計算された前記コストを用いて前記判定を行う判定部と
を備える画像処理装置。
【請求項２】
前記判定部は、前記分割処理単位毎に計算された前記コストを用いて前記判定を行う
請求項１に記載の画像処理装置。
【請求項３】
前記判定部は、最初の前記分割処理単位に対して計算された前記コストを用いて前記最初の前記分割処理単位の前記判定を行い、前記最初の前記分割処理単位の前記判定の結果を用いて他の前記分割処理単位の前記判定を行う
請求項１に記載の画像処理装置。
【請求項４】
前記判定部は、前記分割処理単位内の一部の領域に対して計算された前記コストを用いて前記分割処理単位毎の前記判定を行う
請求項１に記載の画像処理装置。
【請求項５】
前記判定部は、前記分割処理単位毎に対して設定された前記双方向予測を行うか否かを示すフラグに基づいて、前記分割処理単位毎の前記判定を行う
請求項１に記載の画像処理装置。
【請求項６】
前記双方向予測は、BIOを適用した前記双方向予測である
請求項１に記載の画像処理装置。
【請求項７】
前記双方向予測は、FRUCまたはDMVRを適用した前記双方向予測である
請求項１に記載の画像処理装置。
【請求項８】
画像処理装置が、
双方向予測を行うか否かについての判定に用いるコストを計算する処理単位をVPDUサイズ相当、またはVPDUサイズ以下の分割処理単位に分割し、
前記分割処理単位に基づいて計算された前記コストを用いて前記判定を行う
画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、画像処理装置および方法に関し、特に、バッファサイズを削減することができるようにした画像処理装置および方法に関する。
【背景技術】
【０００２】
AVC/H.264やHEVC/H.265に続く次世代コーデックとしてVVCの規格標準化が進められている。【０００３】
VVC規格では、最大128x128の大きなCU(Coding Unit)が採用されているが、特にHW Decoder実装での回路規模や消費電力の増大などを考慮して、VPDU(Virtual Pipeline Data Units)という概念も導入されている。【０００４】
VPDUのサイズは、各パイプラインステージが滞りなく処理可能となるバッファサイズである。VPDUのサイズは、TU(Transform Unit)の最大サイズに合わせる場合が多い。【０００５】
VVCでは64x64が最大TUサイズであり、VPDUにもこの大きさが想定されている。VVCでは１つのCUに１つのPUが対応しており、VPDUより大きなサイズのPUに対してインター予測処理をする必要がある。この場合でもPUを仮想的なvPU(virtual PU)に分割しての処理が可能であり、VPDUとの整合性もよく、後述するBIO(Bi-directional optical flow)が採用されるまではリーズナブルなHWリソースでの実装が可能であった。【０００６】
Optical Flowの手法は動画像中の物体の動きを検出し、ある時間経過後にどの方向に動くかを推定する画像処理手法である。このOptical Flowの手法をコーデックのインター予測のオプションとして追加することで符号化効率が向上する。時間的に前後の1フレームずつを参照するBi予測（双方向予測）でOptical Flowの手法を使うことから、特にBIOと呼ばれている（非特許文献１参照）。【０００７】
通常のBi予測では最適なMVと予測MV(PMV)の間に差異があるため差分MV(MVD)を符号化しているのに対して、BIOを適用したBi予測では予測MV(PMV)で生成した予測ブロック同士に対してOptical Flow手法で勾配(G)や速度(V)を求め、通常のBi予測と同等の結果を得ている。このような場合、差分MV(MVD)の符号化が不要または削減できるので符号化効率が改善される（非特許文献２参照）。【０００８】
一方で、BIOで求めている勾配(G)や速度(V)の計算コストは非常に高い。そのため勾配(G)や速度(V)を計算したものの、その絶対値が小さいなどの理由で通常のBi予測で得られる予測値とほとんど差がない場合は、費用対効果の面でリダクションが特に求められる。【０００９】
様々な提案がされているBIOのリダクション手法の１つに、L0予測ブロックとL1予測ブロックが生成された段階でブロック同士のSAD(Sum of Absolute Difference)を計算して、SAD値がある閾値を下回った場合はBIOを適用せず、通常のBi予測を実行するというものがある。【００１０】
これはSAD値が小さいと速度(V)も小さくなりBIOの効果があまり得られない傾向を考慮したもので、効果が見込めない場合には高コストな計算を省略するアーリーターミネーションとして機能する。
【先行技術文献】
【非特許文献】
【００１１】
【非特許文献１】Jianle Chen , Yan Ye , Seung Hwan Kim、“Algorithm description for Versatile Video Coding and Test Model 3 (VTM 3)”、[online]、平成３０年９月２４日、Experts Team (JVET)、［平成３０年１２月２１日検索］、インターネット, < http://phenix.it-sudparis.eu/jvet/doc_end_user/documents/12_Macao/wg11/JVET-L1002-v1.zip >
【非特許文献２】Xiaoyu Xiu, Yuwen He, Yan Ye、“CE9-related: Complexity reduction and bit-width control for bi-directional optical flow (BIO)”、[online]、平成３０年９月２４日、Experts Team (JVET)、［平成３０年１２月２１日検索］、インターネット, < http://phenix.it-sudparis.eu/jvet/doc_end_user/documents/12_Macao/wg11/JVET-L0256-v3.zip >
【発明の概要】
【発明が解決しようとする課題】
【００１２】
上述したBIOのリダクション手法を適用した場合、PU全体でL0とL1予測ブロックのSADを計算し、閾値と比較してBIO処理の適用可否を判定し、処理が分岐するような流れになっている。そのため、VPDUより大きなPUでインター予測する場合に、PUを仮想的に複数のvPUに分割処理することが困難になってしまった。【００１３】
この場合、勾配計算や速度計算のために必要になるバッファは、PUよりひと回り大きな領域が必要となり、BIOを含むインター予測処理部において、大きなバッファリソースが必要になってしまう。【００１４】
本技術はこのような状況に鑑みてなされたものであり、バッファサイズを削減することができるようにするものである。
【課題を解決するための手段】
【００１５】
本技術の一側面の画像処理装置は、双方向予測を行うか否かについての判定に用いるコストを計算する処理単位をVPDUサイズ相当、またはVPDUサイズ以下の分割処理単位に分割する制御部と、前記分割処理単位に基づいて計算された前記コストを用いて前記判定を行う判定部とを備える。【００１６】
本技術の一側面においては、双方向予測を行うか否かについての判定に用いるコストを計算する処理単位がVPDUサイズ相当、またはVPDUサイズ以下の分割処理単位に分割され、前記分割処理単位に基づいて計算された前記コストを用いて前記判定が行われる。
【図面の簡単な説明】
【００１７】
【図１】VPDUを導入せず、パイプラインを組んだ例を示す図である。
【図２】図１の場合のインターPU処理の１つであるBi予測を説明するフローチャートである。
【図３】VPDUを導入して、効率的にパイプラインを組んだ例を示す図である。
【図４】図３の場合のインターPU処理の１つであるBi予測を説明するフローチャートである。
【図５】通常のBi予測の例を示す図である。
【図６】BIOを適用したBi予測の例を示す図である。
【図７】通常のBi予測の2ブロック分割の例を示す図である。
【図８】BIOを適用したBi予測の2ブロック分割の例を示す図である。
【図９】本技術の一実施形態に係る符号化装置の構成例を示すブロック図である。
【図１０】符号化装置の符号化処理の詳細を説明するフローチャートである。
【図１１】図１０に続く、符号化装置の符号化処理の詳細を説明するフローチャートである。
【図１２】本開示を適用した復号装置の一実施の形態の構成例を示すブロック図である。
【図１３】復号装置の復号処理の詳細を説明するフローチャートである。
【図１４】インター予測部の構成例を示すブロック図である。
【図１５】従来のBIOを含むBi予測を説明するフローチャートである。
【図１６】図１５に続く、従来のBIOを含むBi予測を説明するフローチャートである。
【図１７】本技術の第１の実施の形態のBIOを含むBi予測を説明するフローチャートである。
【図１８】図１７に続く、本技術の第１の実施の形態のBIOを含むBi予測を説明するフローチャートである。
【図１９】PUサイズ、vPU番号、および処理位置とサイズの対応関係を示す図である。
【図２０】従来の動作と、本技術の第１の実施の形態の動作を実施した場合の比較を示す図である。
【図２１】従来の動作と、本技術の第１の実施の形態の動作を実施した場合の比較を示す図である。
【図２２】PUがVPDUより大きい場合に、vPU番号が０のBIO判定結果を他のvPUでも用いた例を示す図である。
【図２３】PUがVPDUより大きい場合に、vPU番号が０のBIO判定結果を他のvPUでも用いた例を示す図である。
【図２４】図２２と図２３の場合のBIOを含むBi予測を説明するフローチャートである。
【図２５】図２４に続く、図２２と図２３の場合のBIOを含むBi予測を説明するフローチャートである。
【図２６】各vPU内の部分的なSAD値でBIOの適用判定を行う例を示す図である。
【図２７】各vPU内の部分的なSAD値でBIOの適用判定を行う例を示す図である。
【図２８】各vPUのBIO_vPU_ONの判定のための部分的なSAD計算領域の判定処理を説明するフローチャートである。
【図２９】図２８に続く、各vPUのBIO_vPU_ONの判定のための部分的なSAD計算領域の判定処理を説明するフローチャートである。
【図３０】本技術の第２の実施の形態の動作例として、インター予測部５１が行うBIOを含むBi予測を説明するフローチャートである。
【図３１】図３０に続く、本技術の第２の実施の形態の動作例として、インター予測部５１が行うBIOを含むBi予測を説明するフローチャートである。
【図３２】BIO_MAX_SAD_BLOCK_SIZEとsPUの対応関係を示す図である。
【図３３】本技術の第３の実施の形態の動作例として、インター予測部５１が行うBIOを含むBi予測を説明するフローチャートである。
【図３４】図３３に続く、本技術の第３の実施の形態の動作例として、インター予測部５１が行うBIOを含むBi予測を説明するフローチャートである。
【図３５】BIO_MAX_SAD_BLOCK_SIZEを２とした場合の各PUのSADを計算する領域の例を示す図である。
【図３６】BIO_MAX_SAD_BLOCK_SIZEを２とした場合の各PUのSADを計算する領域の例を示す図である。
【図３７】本技術の第４の実施の形態の動作例として、インター予測部５１が行うBIOを含むBi予測を説明するフローチャートである。
【図３８】図３７に続く、本技術の第４の実施の形態の動作例として、インター予測部５１が行うBIOを含むBi予測を説明するフローチャートである。
【図３９】本技術の第５の実施の形態の動作例として、インター予測部５１が行うBIOを含むBi予測を説明するフローチャートである。
【図４０】図３９に続く、本技術の第５の実施の形態の動作例として、インター予測部５１が行うBIOを含むBi予測を説明するフローチャートである。
【図４１】コンピュータの構成例を示すブロック図である。
【発明を実施するための形態】
【００１８】
以下、本技術を実施するための形態について説明する。説明は以下の順序で行う。
０．概要
１．第１の実施の形態（vPUによる分割の例）
２．第２の実施の形態（フラグによる動作の共有の例）
３．第３の実施の形態（sPUによる分割の例）
４．第４の実施の形態（BIOの使用禁止の例）
５．第５の実施の形態（常時BIOの適用の例）
６．第６の実施の形態（コンピュータ）
【００１９】
＜０．概要＞
【００２０】
AVC/H.264やHEVC/H.265に続く次世代コーデックとしてVVCの規格標準化が進められている。
【００２１】
VVC規格では、最大128x128の大きなCU(Coding Unit)が採用されているが、HW Decoder実装での回路規模や消費電力の増大などを特に考慮して、VPDU(Virtual Pipeline Data Units)という概念も導入されている。
【００２２】
VPDUのサイズは、各パイプラインステージが滞りなく処理可能となるバッファサイズである。VPDUのサイズは、TU(Transform Unit)の最大サイズに合わせる場合が多い。
【００２３】
VVCでは64x64が最大TUサイズであり、VPDUにもこの大きさが想定されている。VVCでは１つのCUに１つのPUが対応しており、VPDUのサイズより大きなサイズのPUに対してインター予測処理を行う必要がある。この場合でもPUを仮想的なvPU(virtual PU)に分割しての処理が可能でありVPDUとの整合性もよく、後述するBIO(Bi-directional optical flow)が採用されるまでは、図１乃至図４に示すように、バッファを少なくできるため、リーズナブルなHWリソースでの実装が可能であった。
【００２４】
＜VPDUを導入しない場合のパイプラインの例＞
図１は、VPDUを導入せずに、パイプラインを組んだ例を示す図である。
【００２５】
図１の上には、CU、インターPU、およびTUの各ブロックが示されている。
【００２６】
CUの最大サイズは、128×128である。インターPUの最大サイズは、128×128である。VVCにおいては、1つのCUに1つのPUが対応する。TUは、TU0乃至TU3からなり、各TUの最大サイズは64×64である。TUのサイズは、VPDUのサイズでもある。
【００２７】
図１の上側に示されるように、CUは、インターPU処理により生成されたインターPUと、TU処理により得られたTUとが加算されてなる。
【００２８】
図１の下側には、インターPU処理、TU処理、およびローカルデコード処理からなるパイプラインが示されている。
【００２９】
パイプラインにおいては、インターPUの処理とTU0乃至TU3の処理とが並列に行われ、両方が完了したときに、CUのローカルデコード処理が開始される。したがって、インターPUの処理では、128×128のバッファが必要であり、TUの処理では、PUとの待ち合わせ用に128×128のバッファが必要である。
【００３０】
図２は、図１の場合のインターPUの処理の１つであるBi予測（双方向予測）を説明するフローチャートである。
【００３１】
ステップＳ１において、インター予測のパラメータが取得される。
【００３２】
ステップＳ２において、L0予測ブロックが生成される。
【００３３】
ステップＳ３において、L1予測ブロックが生成される。
【００３４】
ステップＳ４において、L0予測ブロックとL1予測ブロックとから、Bi予測ブロックPUが生成される。
【００３５】
なお、ステップＳ２乃至Ｓ４においては、最大バッファサイズとして、PUのサイズが必要となる。
【００３６】
＜VPDUを導入した場合のパイプラインの例＞
図３は、VPDUを導入して、効率的にパイプラインを組んだ例を示す図である。
【００３７】
なお、図３において、図１の説明と共通する点については、適宜、省略される。
【００３８】
図３の上側には、CU、インターPU、およびTUの各ブロックが示されている。CUは、図１と異なり、PUがvPUに仮想的に分割されて処理されたことで、分割されたCU(0)乃至CU(3)で構成されている。PUは、仮想的なvPU(0)乃至vPU(3)で構成されている。
【００３９】
図３の下側には、インターPU処理、TU処理、およびローカルデコード処理からなるパイプラインが示されている。
【００４０】
パイプラインにおいては、インターPUにおけるvPU(0)乃至vPU(3)の処理とTU0乃至TU3の処理とが並列に行われる。したがって、vPU(0)の処理とTU0の処理が完了したときに、CU(0)のローカルデコード処理が開始される。vPU(1)の処理とTU1の処理が完了したときに、CU(1)のローカルデコード処理が開始される。vPU(2)の処理とTU2の処理が完了したときに、CU(2)のローカルデコード処理が開始される。vPU(3)の処理とTU3の処理が完了したときに、CU(3)のローカルデコード処理が開始される。
【００４１】
このようにパイプラインを組むことで、インターPU処理においては、64×64のバッファがあればよく、TU処理におけるvPU待ち合わせ用バッファのサイズは、64×64で十分足りる。
【００４２】
図４は、図３の場合のインターPUの処理の１つであるBi予測を説明するフローチャートである。
【００４３】
ステップＳ１１において、インター予測のパラメータが取得される。
【００４４】
ステップＳ１２において、PU内に含まれるvPU数が取得される。
【００４５】
ステップＳ１３において、vPU番号に０が設定される。
【００４６】
ステップＳ１４において、vPU番号がvPU数より小さいか否かが判定される。ステップＳ１４において、vPU番号がvPU数より小さいと判定された場合、処理は、ステップＳ１５に進む。
【００４７】
ステップＳ１５において、vPU番号からPU内のvPUの位置とサイズが取得される。
【００４８】
ステップＳ１６において、vPUの領域のL0予測ブロックが生成される。
【００４９】
ステップＳ１７において、vPUの領域のL1予測ブロックが生成される。
【００５０】
ステップＳ１８において、L0予測ブロックとL1予測ブロックとから、Bi予測ブロックvPUが生成される。
【００５１】
ステップＳ１９において、vPU番号がインクリメントされ、その後、ステップＳ１４に戻り、それ以降の処理が繰り返される。
【００５２】
また、ステップＳ１４において、vPU番号がvPU数以上であると判定された場合、Bi予測は終了される。
【００５３】
なお、ステップＳ１６乃至Ｓ１７においては、最大バッファサイズとして、PUよりも小さいVPDUのサイズがあればよい。
【００５４】
Optical Flowの手法は動画像中の物体の動きを検出し、ある時間経過後にどの方向に動くかを推定する画像処理手法である。このOptical Flowの手法をコーデックのインター予測のオプションとして追加することで符号化効率が向上する。時間的に前後の1フレームずつを参照するBi予測でOptical Flowの手法を使うことから、特にBIOと呼ばれている。
【００５５】
＜通常のBi予測の例＞
図５は、通常のBi予測の例を示す図である。
【００５６】
図５においては、左から右への矢印が表示順の時間を表している。また、BピクチャにおけるBi予測ブロックのBi予測値について、L0方向の参照面0と、L1方向の参照面1において、最適なMVを求める例が示されている。以下の図についても同様である。
【００５７】
Bi予測値には、参照面0におけるL0予測ブロックの画素L0と、参照面1におけるL1予測ブロックの画素L1が対応しており、Bi予測値は、(L0＋L1)/2で求められる。
【００５８】
図５に示すように、通常のBi予測では、最適なMV(MV_L0,MV_L1)と予測MV(MVP_L0,MVP_L1)の間に差異があるため、差分MV(MVD_L0,MVD_L1)を符号化する必要がある。
【００５９】
＜BIOを適用したBi予測の例＞
図６は、BIOを適用したBi予測の例を示す図である。
【００６０】
図６においては、BIOを適用したBi予測として、予測MV(MVP_L0,MVP_L1)で生成した予測ブロック同士に対してOptical Flow手法で勾配(G)や速度(V)を求める例が示されている。予測ブロック同士に対してOptical Flow手法で勾配(G)や速度(V)を求めることで、通常のBi予測と同等の結果が得られる。
【００６１】
BIOを適用したBi予測の場合、予測MV(MVP_L0,MVP_L1)をそのままMV(MV_L0,MV_L1)とするので、差分MV(MVD_L0,MVD_L1)を符号化する必要がないため、符号化効率が改善する。
【００６２】
Bi予測値には、参照面0におけるL0予測ブロックの画素L0’と、参照面1におけるL1予測ブロックの画素L1’がほぼ対応しており、Bi予測値は、(L0’＋L1’＋B)/2で求められる。すなわち、L0予測ブロックとL1予測ブロックから勾配(G:Gx,Gy)と速度(V:Vx,Vy)を計算し、補正値B=Vx*Gx+Vy*Gyを求める必要がある。
【００６３】
＜Bi予測の２ブロック分割の例＞
図７は、通常のBi予測の２ブロック分割の例を示す図である。
【００６４】
通常のBi予測では、２つのブロックに分割しているため、図７に示すように、２つのブロック分のブロック分割情報と２つの差分MV(MVD)がそれぞれ求められる。したがって、２つのブロック分のブロック分割情報と２つの差分MV(MVD)を符号化する必要がある。
【００６５】
＜BIOを適用したBi予測の２ブロック分割の例＞
図８は、BIOを適用したBi予測の２ブロック分割の例を示す図である。
【００６６】
BIOを適用したBi予測では、２つのブロックがあっても、図８に示すように、ブロックを分割せずにOptical Flow手法で勾配(G)と速度(V)が求められるので、通常Bi予測と同等の結果が得られる。
【００６７】
以上のように、図８のBIOを適用したBi予測では、図７のBi予測で必要であったブロック分割情報の符号化の不要または削減が可能となったり、図７のBi予測で必要であった差分MV(MVD)の符号化が不要または削除が可能となったりするので、符号化効率を改善することができる。
【００６８】
一方で、BIOで求めている勾配(G)および速度(V)の計算コストは非常に高い。そのため勾配(G) および速度(V)を計算したにもかかわらず、その絶対値が小さいなどの理由で通常のBi予測で得られる予測値とほとんど差がない場合は、費用対効果の面でリダクションが特に求められる。
【００６９】
様々な提案がされているBIOのリダクション手法の１つに、L0予測ブロックとL1予測ブロックが生成された段階でブロック同士のSAD(Sum of Absolute Difference)を計算して、SAD値がある閾値を下回った場合はBIOを適用せず、通常のBi予測を実行するというものがある。
【００７０】
これはSAD値が小さいと速度(V)も小さくなりBIOの効果があまり得られない傾向を考慮したもので、効果が見込めない場合には高コストな計算を省略するアーリーターミネーションとして機能する。
【００７１】
上述したBIOのリダクション手法を適用した場合、PU全体でL0とL1予測ブロックのSADを計算し、閾値と比較してBIO処理の適用可否を判定し、処理が分岐するような流れになっている。そのため、VPDUより大きなPUでインター予測する場合に、PUを仮想的に複数のvPUに分割処理することが困難になってしまった。
【００７２】
この場合、勾配計算や速度計算のために必要になるバッファは、PUよりひと回り大きな領域が必要となり、BIOを含むインター予測を行う部において、大きなバッファリソースが必要になってしまう。
【００７３】
また、上述したBIOのリダクション手法をHW実装した場合、BIOを含むインター予測のパイプライン遅延とTU処理のパイプライン遅延が大きく異なるため、スループットを維持するためのHW実装難易度も高くなってしまう。
【００７４】
そこで、本技術においては、BIOなどの双方向予測を行うか否かについての判定に用いるコストを計算する処理単位(例えば、PU)がVPDUサイズ相当の分割処理単位(例えば、vPU)またはVPDUサイズ以下の分割処理単位(例えば、後述するsPU)に分割され、分割処理単位に基づいて計算されたコストを用いて判定が行われる。なお、VPDUサイズ相当は、VPDUのサイズより一回り大きいサイズを表す。
【００７５】
なお、本明細書において、ブロックサイズについての「ＡがＢより大きい」は、「Ａの水平サイズがＢの水平サイズより大きい」または「Ａの垂直サイズがＢの垂直サイズより大きい」ことを意味する。
【００７６】
また、ブロックサイズについての「ＡがＢ以下である」は、「Ａの水平サイズがＢの水平サイズ以下であり、かつ、Ａの垂直サイズがＢの垂直サイズ以下である」ことを意味する。
【００７７】
以下、本技術について詳しく説明する。
【００７８】
＜１．第１の実施の形態（vPUによる分割の例）＞
＜符号化装置の構成例＞
【００７９】
図９は、本技術の一実施形態に係る符号化装置の構成例を示すブロック図である。
【００８０】
図９の符号化装置１は、A/D変換部３１、画面並べ替えバッファ３２、演算部３３、直交変換部３４、量子化部３５、可逆符号化部３６、蓄積バッファ３７、逆量子化部３８、逆直交変換部３９、および加算部４０を有する。また、符号化装置１は、デブロックフィルタ４１、適応オフセットフィルタ４２、適応ループフィルタ４３、フレームメモリ４４、スイッチ４５、イントラ予測部４６、動き予測・補償部４７、予測画像選択部４８、およびレート制御部４９を有する。
【００８１】
A/D変換部３１は、入力される符号化対象のフレーム単位の画像をA/D変換する。A/D変換部３１は、変換後のデジタル信号である画像を画面並べ替えバッファ３２に出力して記憶させる。
【００８２】
画面並べ替えバッファ３２は、表示順のフレーム単位の画像を、GOP構造に応じて、符号化順に並べ替える。画面並べ替えバッファ３２は、並べ替え後の画像を、演算部３３、イントラ予測部４６、および動き予測・補償部４７に出力する。
【００８３】
演算部３３は、画面並べ替えバッファ３２から供給される画像から、予測画像選択部４８から供給される予測画像を減算することにより符号化を行う。演算部３３は、減算後の画像を、残差情報(差分)として直交変換部３４に出力する。なお、予測画像選択部４８から予測画像が供給されない場合、演算部３３は、画面並べ替えバッファ３２から読み出された画像をそのまま残差情報として直交変換部３４に出力する。
【００８４】
直交変換部３４は、演算部３３からの残差情報に対して直交変換処理を行う。直交変換部３４は、直交変換処理後の画像を量子化部３５に出力する。
【００８５】
量子化部３５は、直交変換部３４から供給される直交変換処理後の画像を量子化する。量子化部３５は、量子化後の量子化値を可逆符号化部３６に出力する。
【００８６】
可逆符号化部３６は、最適イントラ予測モードを示す情報であるイントラ予測モード情報をイントラ予測部４６から取得する。また、可逆符号化部３６は、最適インター予測モードを示す情報であるインター予測モード情報と、動き情報および参照画像情報などのインター予測のパラメータとを動き予測・補償部４７から取得する。
【００８７】
また、可逆符号化部３６は、適応オフセットフィルタ４２からオフセットフィルタに関するオフセットフィルタ情報を取得し、適応ループフィルタ４３からフィルタ係数を取得する。
【００８８】
可逆符号化部３６は、量子化部３５から供給される量子化値に対して、可変長符号化（例えば、CAVLC（Context-Adaptive Variable Length Coding））、算術符号化（例えば、CABAC（Context-Adaptive Binary Arithmetic Coding））などの可逆符号化を行う。
【００８９】
また、可逆符号化部３６は、イントラ予測モード情報、または、インター予測モード情報、インター予測のパラメータ、オフセットフィルタ情報、並びにフィルタ係数を、符号化に関する符号化情報として可逆符号化する。可逆符号化部３６は、可逆符号化された符号化情報と量子化値を、符号化データとして蓄積バッファ３７に出力し、蓄積させる。
【００９０】
蓄積バッファ３７は、可逆符号化部３６から供給される符号化データを、一時的に記憶する。また、蓄積バッファ３７は、記憶している符号化データを、符号化ストリームとして後段に出力する。
【００９１】
また、量子化部３５より出力された量子化値は、逆量子化部３８にも入力される。逆量子化部３８は、量子化値を逆量子化する。逆量子化部３８は、逆量化後の直交変換処理結果を逆直交変換部３９に出力する。
【００９２】
逆直交変換部３９は、逆量子化部３８から供給される直交変換処理結果に対して逆直交変換処理を行う。逆直交変換の方式としては、例えば、IDCT(逆離散コサイン変換)とIDST(逆離散サイン変換)がある。逆直交変換部３９は、逆直交変換処理の結果得られる残差情報を加算部４０に出力する。
【００９３】
加算部４０は、逆直交変換部３９から供給される残差情報と、予測画像選択部４８から供給される予測画像を加算し、復号を行う。加算部４０は、復号された画像をデブロックフィルタ４１とフレームメモリ４４に出力する。
【００９４】
デブロックフィルタ４１は、加算部４０から供給される復号された画像に対して、ブロック歪を除去するデブロックフィルタ処理を行う。デブロックフィルタ４１は、デブロックフィルタ処理後の画像を適応オフセットフィルタ４２に出力する。
【００９５】
適応オフセットフィルタ４２は、デブロックフィルタ４１によるデブロックフィルタ処理後の画像に対して、主にリンギングを除去する適応オフセットフィルタ（SAO(Sample adaptive offset)）処理を行う。
【００９６】
適応オフセットフィルタ４２は、適応オフセットフィルタ処理後の画像を適応ループフィルタ４３に出力する。また、適応オフセットフィルタ４２は、適応オフセットフィルタ処理の種類とオフセットを示す情報を、オフセットフィルタ情報として可逆符号化部３６に出力する。
【００９７】
適応ループフィルタ４３は、例えば、2次元のウィナーフィルタ（Wiener Filter）により構成される。適応ループフィルタ４３は、適応オフセットフィルタ処理後の画像に対して、適応ループフィルタ（ALF(Adaptive Loop Filter)）処理を行う。
【００９８】
適応ループフィルタ４３は、適応ループフィルタ処理後の画像をフレームメモリ４４に出力する。また、適応ループフィルタ４３は、適応ループフィルタ処理に用いられたフィルタ係数を可逆符号化部３６に出力する。
【００９９】
フレームメモリ４４は、適応ループフィルタ４３から供給される画像と、加算部４０から供給される画像を蓄積する。フレームメモリ４４に蓄積されたフィルタ処理が行われていない画像のうちのCUに隣接する画像は、周辺画像としてスイッチ４５を介してイントラ予測部４６に出力される。一方、フレームメモリ４４に蓄積されたフィルタ処理が行われた画像は、参照画像としてスイッチ４５を介して動き予測・補償部４７に出力される。
【０１００】
イントラ予測部４６は、PU単位で、フレームメモリ４４からスイッチ４５を介して読み出された周辺画像を用いて、候補となる全てのイントラ予測モードのイントラ予測処理を行う。
【０１０１】
また、イントラ予測部４６は、画面並べ替えバッファ３２から読み出された画像と、イントラ予測処理により予測された予測画像とに基づいて、候補となる全てのイントラ予測モードに対してRDコストを算出する。イントラ予測部４６は、算出したRDコストが最小となるイントラ予測モードを、最適イントラ予測モードに決定する。
【０１０２】
イントラ予測部４６は、最適イントラ予測モードで生成された予測画像を、予測画像選択部４８に出力する。イントラ予測部４６は、最適イントラ予測モードで生成された予測画像の選択が通知された場合、イントラ予測モード情報を可逆符号化部３６に出力する。なお、イントラ予測モードとはPUのサイズ、予測方向などを表すモードである。
【０１０３】
動き予測・補償部４７は、候補となる全てのインター予測モードの動き予測・補償処理を行う。動き予測・補償部４７は、予測した動きを補償し、予測画像を生成するインター予測部５１を含む。
【０１０４】
動き予測・補償部４７は、画面並べ替えバッファ３２から供給される画像と、フレームメモリ４４からスイッチ４５を介して読み出される参照画像に基づいて、候補となる全てのインター予測モードの動き情報（動きベクトル）を検出する。
【０１０５】
動き予測・補償部４７は、インター予測部５１に、検出した動き情報に対応する、フレーム内のPU位置、PUサイズ、予測方向、参照画像情報、動き情報などを、インター予測のパラメータとして供給する。
【０１０６】
インター予測部５１は、動き予測・補償部４７から供給されるインター予測のパラメータを用いて、BIO処理を含むBi予測などにより予測画像を生成する。
【０１０７】
動き予測・補償部４７は、画面並べ替えバッファ３２から供給される画像と、インター予測部５１により生成された予測画像とに基づいて、候補となる全てのインター予測モードに対してRDコストを算出する。動き予測・補償部４７は、RDコストが最小となるインター予測モードを、最適インター予測モードに決定する。
【０１０８】
決定された最適インター予測モードのRDコストと予測画像は、予測画像選択部４８に出力される。決定された最適インター予測モードに対応するインター予測のパラメータは、可逆符号化部３６に出力される。
【０１０９】
予測画像選択部４８は、イントラ予測部４６から供給される最適イントラ予測モードと動き予測・補償部４７から供給される最適インター予測モードのうちの、対応するRDコストが小さい方を、最適予測モードに決定する。そして、予測画像選択部４８は、最適予測モードの予測画像を、演算部３３および加算部４０に出力する。
【０１１０】
レート制御部４９は、蓄積バッファ３７に蓄積された符号化データに基づいて、オーバーフローあるいはアンダーフローが発生しないように、量子化部３５の量子化動作のレートを制御する。
【０１１１】
＜符号化装置の動作＞
図１０および図１１は、符号化装置の符号化処理の詳細を説明するフローチャートである。
【０１１２】
図１０のステップＳ３１において、A/D変換部３１は、符号化対象として入力されたフレーム単位の画像をA/D変換する。A/D変換部３１は、変換後のデジタル信号である画像を画面並べ替えバッファ３２に出力して記憶させる。
【０１１３】
ステップＳ３２において、画面並べ替えバッファ３２は、表示順のフレームの画像を、GOP構造に応じて、符号化順に並べ替える。画面並べ替えバッファ３２は、並べ替え後のフレーム単位の画像を、演算部３３、イントラ予測部４６、および動き予測・補償部４７に出力する。
【０１１４】
ステップＳ３３において、イントラ予測部４６は、候補となる全てのイントラ予測モードのイントラ予測処理を行う。また、イントラ予測部４６は、画面並べ替えバッファ３２から読み出された画像と、イントラ予測処理により予測された予測画像とに基づいて、候補となる全てのイントラ予測モードに対してRDコストを算出する。イントラ予測部４６は、RDコストが最小となるイントラ予測モードを、最適イントラ予測モードに決定する。イントラ予測部４６は、最適イントラ予測モードで生成された予測画像を予測画像選択部４８に出力する。
【０１１５】
ステップＳ３４において、動き予測・補償部４７は、候補となる全てのインター予測モードの動き予測・補償処理を行う。
【０１１６】
動き予測・補償部４７は、画面並べ替えバッファ３２から供給される画像と、フレームメモリ４４からスイッチ４５を介して読み出される参照画像に基づいて、候補となる全てのインター予測モードの動き情報（動きベクトル）を検出する。
【０１１７】
インター予測部５１は、動き予測・補償部４７から供給されるインター予測のパラメータを用いて、BIO処理を含むBi予測などにより予測画像を生成する。
【０１１８】
動き予測・補償部４７は、画面並べ替えバッファ３２から供給される画像と、インター予測部５１により生成された予測画像とに基づいて、候補となる全てのインター予測モードに対してRDコストを算出する。動き予測・補償部４７は、RDコストが最小となるインター予測モードを、最適インター予測モードに決定する。
【０１１９】
決定された最適インター予測モードのRDコストと予測画像は、予測画像選択部４８に出力される。決定された最適インター予測モードにおけるインター予測のパラメータは、可逆符号化部３６に出力される。
【０１２０】
ステップＳ３５において、予測画像選択部４８は、最適イントラ予測モードおよび最適インター予測モードのRDコストに基づいて、RDコストが最小となる方を、最適予測モードに決定する。そして、予測画像選択部４８は、最適予測モードの予測画像を、演算部３３および加算部４０に出力する。
【０１２１】
ステップＳ３６において、予測画像選択部４８は、最適予測モードが最適インター予測モードであるかどうかを判定する。ステップＳ３６で最適予測モードが最適インター予測モードであると判定された場合、予測画像選択部４８は、最適インター予測モードで生成された予測画像の選択を動き予測・補償部４７に通知する。
【０１２２】
そして、ステップＳ３７において、動き予測・補償部４７は、インター予測モード情報とインター予測のパラメータとを可逆符号化部３６に出力する。その後、処理は、ステップＳ３９に進む。
【０１２３】
一方、ステップＳ３６で最適予測モードが最適イントラ予測モードである場合、予測画像選択部４８は、最適イントラ予測モードで生成された予測画像の選択をイントラ予測部４６に通知する。そして、ステップＳ３８において、イントラ予測部４６は、イントラ予測モード情報を可逆符号化部３６に出力する。その後、処理は、ステップＳ３９に進む。
【０１２４】
ステップＳ３９において、演算部３３は、画面並べ替えバッファ３２から供給される画像から、予測画像選択部４８から供給される予測画像を減算することにより符号化を行う。演算部３３は、減算後の画像を、残差情報として直交変換部３４に出力する。
【０１２５】
ステップＳ４０において、直交変換部３４は、残差情報に対して直交変換処理を行う。直交変換部３４は、直交変換処理後の直交変換処理結果を量子化部３５に出力する。
【０１２６】
ステップＳ４１において、量子化部３５は、直交変換部３４から供給される直交変換処理結果を量子化する。量子化部３５は、量子化後の量子化値を可逆符号化部３６と逆量子化部３８に出力する。
【０１２７】
図１１のステップＳ４２において、逆量子化部３８は、量子化部３５からの量子化値に対して逆量子化を行う。逆量子化部３８は、逆量化後の直交変換処理結果を逆直交変換部３９に出力する。
【０１２８】
ステップＳ４３において、逆直交変換部３９は、直交変換処理結果に対して逆直交変換処理を行う。逆直交変換部３９は、逆直交変換処理後の残差情報を加算部４０に出力する。
【０１２９】
ステップＳ４４において、加算部４０は、逆直交変換部３９から供給される残差情報と、予測画像選択部４８から供給される予測画像を加算し、復号を行う。加算部４０は、復号された画像をデブロックフィルタ４１とフレームメモリ４４に出力する。
【０１３０】
ステップＳ４５において、デブロックフィルタ４１は、加算部４０から供給される画像に対して、デブロックフィルタ処理を行う。デブロックフィルタ４１は、デブロックフィルタ処理後の画像を適応オフセットフィルタ４２に出力する。
【０１３１】
ステップＳ４６において、適応オフセットフィルタ４２は、デブロックフィルタ処理後の画像に対して適応オフセットフィルタ処理を行う。適応オフセットフィルタ４２は、適応オフセットフィルタ処理後の画像を適応ループフィルタ４３に出力する。また、適応オフセットフィルタ４２は、オフセットフィルタ情報を可逆符号化部３６に出力する。
【０１３２】
ステップＳ４７において、適応ループフィルタ４３は、適応オフセットフィルタ処理後の画像に対して、適応ループフィルタ処理を行う。適応ループフィルタ４３は、適応ループフィルタ処理後の画像をフレームメモリ４４に出力する。また、適応ループフィルタ４３は、適応ループフィルタ処理で用いられたフィルタ係数を可逆符号化部３６に出力する。
【０１３３】
ステップＳ４８において、フレームメモリ４４は、適応ループフィルタ４３から供給される画像と加算部４０から供給される画像を蓄積する。フレームメモリ４４に蓄積されたフィルタ処理が行われていない画像のうちのCUに隣接する画像は、周辺画像としてスイッチ４５を介してイントラ予測部４６に出力される。一方、フレームメモリ４４に蓄積されたフィルタ処理が行われた画像は、参照画像としてスイッチ４５を介して動き予測・補償部４７に出力される。
【０１３４】
ステップＳ４９において、可逆符号化部３６は、イントラ予測モード情報、または、インター予測モード情報、インター予測のパラメータ、オフセットフィルタ情報、並びにフィルタ係数を、符号化情報として可逆符号化する。
【０１３５】
ステップＳ５０において、可逆符号化部３６は、量子化部３５から供給される量子化値を可逆符号化する。そして、可逆符号化部３６は、ステップＳ４９の処理で可逆符号化された符号化情報と可逆符号化された量子化値から、符号化データを生成し、蓄積バッファ３７に出力する。
【０１３６】
ステップＳ５１において、蓄積バッファ３７は、可逆符号化部３６から供給される符号化データを、一時的に蓄積する。
【０１３７】
ステップＳ５２において、レート制御部４９は、蓄積バッファ３７に蓄積された符号化データに基づいて、オーバーフローあるいはアンダーフローが発生しないように、量子化部３５の量子化動作のレートを制御する。その後、符号化処理は終了される。
【０１３８】
なお、図１０および図１１の符号化処理では、説明を簡単化するため、常に、イントラ予測処理と動き予測・補償処理が行われるようにしたが、実際には、ピクチャタイプ等によっていずれか一方のみが行われる場合もある。
【０１３９】
＜復号装置の構成例＞
図１２は、図９の符号化装置から伝送される符号化ストリームを復号する、本開示を適用した復号装置の一実施の形態の構成例を示すブロック図である。
【０１４０】
図１２の復号装置１０１は、蓄積バッファ１３１、可逆復号部１３２、逆量子化部１３３、逆直交変換部１３４、加算部１３５、デブロックフィルタ１３６、適応オフセットフィルタ１３７、適応ループフィルタ１３８、および画面並べ替えバッファ１３９を有する。また、復号装置１０１は、D/A変換部１４０、フレームメモリ１４１、スイッチ１４２、イントラ予測部１４３、インター予測部５１、およびスイッチ１４４を有する。
【０１４１】
復号装置１０１の蓄積バッファ１３１は、図９の符号化装置１から伝送される符号化ストリームの符号化データを受け取り、蓄積する。蓄積バッファ１３１は、蓄積されている符号化データを可逆復号部１３２に出力する。
【０１４２】
可逆復号部１３２は、蓄積バッファ１３１からの符号化データに対して、可変長復号や、算術復号などの可逆復号を施すことで、量子化値と符号化情報を得る。可逆復号部１３２は、量子化値を逆量子化部１３３に出力する。符号化情報は、イントラ予測モード情報、インター予測モード情報、インター予測のパラメータ、オフセットフィルタ情報、フィルタ係数などで構成される。
【０１４３】
また、可逆復号部１３２は、イントラ予測モード情報などをイントラ予測部１４３に出力する。可逆復号部１３２は、インター予測のパラメータ、インター予測モード情報などをインター予測部５１に出力する。
【０１４４】
可逆復号部１３２は、イントラ予測モード情報またはインター予測モード情報をスイッチ１４４に出力する。可逆復号部１３２は、オフセットフィルタ情報を適応オフセットフィルタ１３７に出力する。可逆復号部１３２は、フィルタ係数を適応ループフィルタ１３８に出力する。
【０１４５】
逆量子化部１３３、逆直交変換部１３４、加算部１３５、デブロックフィルタ１３６、適応オフセットフィルタ１３７、適応ループフィルタ１３８、フレームメモリ１４１、スイッチ１４２、イントラ予測部１４３、およびインター予測部５１は、図９の逆量子化部３８、逆直交変換部３９、加算部４０、デブロックフィルタ４１、適応オフセットフィルタ４２、適応ループフィルタ４３、フレームメモリ４４、スイッチ４５、イントラ予測部４６、および動き予測・補償部４７とそれぞれ同様の処理を行う。これにより、画像が復号される。
【０１４６】
具体的には、逆量子化部１３３は、図９の逆量子化部３８と同様に構成される。逆量子化部１３３は、可逆復号部１３２からの量子化値を逆量子化する。逆量子化部１３３は、逆量子化後の直交変換処理結果を逆直交変換部１３４に出力する。
【０１４７】
逆直交変換部１３４は、図９の逆直交変換部３９と同様に構成される。逆直交変換部１３４は、逆量子化部１３３から供給される直交変換処理結果に対して逆直交変換処理を行う。逆直交変換部１３４は、逆直交変換処理後の残差情報を加算部１３５に出力する。
【０１４８】
加算部１３５は、逆直交変換部１３４から供給される残差情報と、スイッチ１４４から供給される予測画像を加算することにより、復号を行う。加算部１３５は、復号された画像をデブロックフィルタ１３６とフレームメモリ１４１に出力する。
【０１４９】
デブロックフィルタ１３６は、加算部１３５から供給される画像に対してデブロックフィルタ処理を行い、デブロックフィルタ処理後の画像を適応オフセットフィルタ１３７に出力する。
【０１５０】
適応オフセットフィルタ１３７は、可逆復号部１３２からのオフセットフィルタ情報が表すオフセットを用いて、デブロックフィルタ処理後の画像に対して、オフセットフィルタ情報が表す種類の適応オフセットフィルタ処理を行う。適応オフセットフィルタ１３７は、適応オフセットフィルタ処理後の画像を、適応ループフィルタ１３８に出力する。
【０１５１】
適応ループフィルタ１３８は、適応オフセットフィルタ１３７から供給される画像に対して、可逆復号部１３２から供給されるフィルタ係数を用いて、適応ループフィルタ処理を行う。適応ループフィルタ１３８は、適応ループフィルタ処理後の画像をフレームメモリ１４１および画面並べ替えバッファ１３９に出力する。
【０１５２】
画面並べ替えバッファ１３９は、適応ループフィルタ処理後の画像をフレーム単位で記憶する。画面並べ替えバッファ１３９は、符号化順のフレーム単位の画像を、元の表示順に並び替え、D/A変換部１４０に出力する。
【０１５３】
D/A変換部１４０は、画面並べ替えバッファ１３９から供給されるフレーム単位の画像をD/A変換し、出力する。
【０１５４】
フレームメモリ１４１は、適応ループフィルタ処理後の画像と加算部１３５から供給される画像を蓄積する。フレームメモリ１４１に蓄積されたフィルタ処理が行われていない画像のうちのCUに隣接する画像は、周辺画像としてスイッチ１４２を介してイントラ予測部１４３に供給される。一方、フレームメモリ１４１に蓄積されたフィルタ処理が行われた画像は、参照画像として、スイッチ１４２を介してインター予測部５１に出力される。
【０１５５】
イントラ予測部１４３は、フレームメモリ１４１からスイッチ１４２を介して読み出された周辺画像を用いて、可逆復号部１３２から供給されるイントラ予測モード情報が示す最適イントラ予測モードのイントラ予測処理を行う。イントラ予測部１４３は、その結果生成される予測画像をスイッチ１４４に出力する。
【０１５６】
インター予測部５１は、図９と同様に構成される。インター予測部５１は、可逆復号部１３２から供給されるインター予測のパラメータを用いて、インター予測モード情報が示す最適インター予測モードのインター予測を行い、予測画像を生成する。
【０１５７】
インター予測部５１は、フレームメモリ１４１からスイッチ１４２を介して、可逆復号部１３２から供給されるインター予測のパラメータの参照画像情報により特定される参照画像を読み出す。インター予測部５１は、可逆復号部１３２から供給されるインター予測のパラメータの動き情報および読み出した参照画像を用いて、BIO処理を含むBi予測などにより予測画像を生成する。生成された予測画像は、スイッチ１４４に出力される。
【０１５８】
スイッチ１４４は、可逆復号部１３２からイントラ予測モード情報が供給された場合、イントラ予測部１４３から供給される予測画像を加算部１３５に出力する。一方、可逆復号部１３２からインター予測モード情報が供給された場合、スイッチ１４４は、インター予測部５１から供給される予測画像を加算部１３５に出力する。
【０１５９】
＜復号装置の動作＞
図１３は、復号装置の復号処理の詳細を説明するフローチャートである。
【０１６０】
図１３のステップＳ１３１において、復号装置１０１の蓄積バッファ１３１は、図示せぬ前段から供給されるフレーム単位の符号化データを受け取り、蓄積する。蓄積バッファ１３１は、蓄積されている符号化データを可逆復号部１３２に出力する。
【０１６１】
ステップＳ１３２において、可逆復号部１３２は、蓄積バッファ１３１からの符号化データを可逆復号し、量子化値と符号化情報を得る。可逆復号部１３２は、量子化値を逆量子化部１３３に出力する。
【０１６２】
可逆復号部１３２は、イントラ予測モード情報などをイントラ予測部１４３に出力する。可逆復号部１３２は、インター予測のパラメータ、インター予測モード情報などをインター予測部５１に出力する。
【０１６３】
また、可逆復号部１３２は、イントラ予測モード情報またはインター予測モード情報をスイッチ１４４に出力する。可逆復号部１３２は、オフセットフィルタ情報を適応オフセットフィルタ１３７に供給し、フィルタ係数を適応ループフィルタ１３８に出力する。
【０１６４】
ステップＳ１３３において、逆量子化部１３３は、可逆復号部１３２から供給される量子化値を逆量子化する。逆量子化部１３３は、逆量子化後の直交変換処理結果を逆直交変換部１３４に出力する。
【０１６５】
ステップＳ１３４において、逆直交変換部１３４は、逆量子化部１３３から供給される直交変換処理結果に対して直交変換処理を行う。
【０１６６】
ステップＳ１３５において、インター予測部５１は、可逆復号部１３２からインター予測モード情報が供給されたかどうかを判定する。ステップＳ１３５でインター予測モード情報が供給されたと判定された場合、処理はステップＳ１３６に進む。
【０１６７】
ステップＳ１３６において、インター予測部５１は、可逆復号部１３２から供給される参照画像特定情報に基づいて参照画像を読み出し、動き情報と参照画像を用いて、インター予測モード情報が示す最適インター予測モードの動き補償処理を行う。例えば、インター予測部５１は、BIO処理を含むBi予測などにより予測画像を生成する。インター予測部５１は、生成した予測画像を、スイッチ１４４を介して加算部１３５に出力する。その後、処理は、ステップＳ１３８に進む。
【０１６８】
一方、ステップＳ１３５でインター予測モード情報が供給されていないと判定された場合、すなわち、イントラ予測モード情報がイントラ予測部１４３に供給された場合、処理はステップＳ１３７に進む。
【０１６９】
ステップＳ１３７において、イントラ予測部１４３は、フレームメモリ１４１からスイッチ１４２を介して読み出された周辺画像を用いて、イントラ予測モード情報が示すイントラ予測モードのイントラ予測処理を行う。イントラ予測部１４３は、イントラ予測処理の結果生成される予測画像を、スイッチ１４４を介して加算部１３５に出力する。その後、処理は、ステップＳ１３８に進む。
【０１７０】
ステップＳ１３８において、加算部１３５は、逆直交変換部１３４から供給される残差情報と、スイッチ１４４から供給される予測画像を加算することにより、復号を行う。加算部１３５は、復号された画像をデブロックフィルタ１３６とフレームメモリ１４１に出力する。
【０１７１】
ステップＳ１３９において、デブロックフィルタ１３６は、加算部１３５から供給される画像に対してデブロックフィルタ処理を行い、ブロック歪を除去する。デブロックフィルタ１３６は、デブロックフィルタ処理後の画像を適応オフセットフィルタ１３７に出力する。
【０１７２】
ステップＳ１４０において、適応オフセットフィルタ１３７は、可逆復号部１３２から供給されるオフセットフィルタ情報に基づいて、デブロックフィルタ処理後の画像に対して、適応オフセットフィルタ処理を行う。適応オフセットフィルタ１３７は、適応オフセットフィルタ処理後の画像を、適応ループフィルタ１３８に出力する。
【０１７３】
ステップＳ１４１において、適応ループフィルタ１３８は、適応オフセットフィルタ１３７から供給される画像に対して、可逆復号部１３２から供給されるフィルタ係数を用いて、適応ループフィルタ処理を行う。適応ループフィルタ１３８は、適応ループフィルタ処理後の画像をフレームメモリ１４１および画面並べ替えバッファ１３９に供給する。
【０１７４】
ステップＳ１４２において、フレームメモリ１４１は、加算部１３５から供給される画像と、適応ループフィルタ１３８から供給される画像を蓄積する。フレームメモリ１４１に蓄積されたフィルタ処理が行われていない画像のうちのCUに隣接する画像は、周辺画像としてスイッチ１４２を介してイントラ予測部１４３に供給される。一方、フレームメモリ１４１に蓄積されたフィルタ処理が行われた画像は、参照画像として、スイッチ１４２を介してインター予測部５１に供給される。
【０１７５】
ステップＳ１４３において、画面並べ替えバッファ１３９は、適応ループフィルタ１３８から供給される画像をフレーム単位で記憶し、符号化順のフレーム単位の画像を、元の表示順に並び替え、D/A変換部１４０に出力する。
【０１７６】
ステップＳ１４４において、D/A変換部１４０は、適応ループフィルタ処理後の画像をD/A変換し、出力する。
【０１７７】
＜インター予測部の構成例＞
図１４は、インター予測部の構成例を示すブロック図である。
【０１７８】
図１４において、インター予測部５１は、インター予測制御部２０１、L0予測ブロック生成部２０２、L1予測ブロック生成部２０３、BIOコスト計算部２０４、BIO適用判定部２０５、Bi予測ブロック生成部２０６、BIO処理を含むBi予測ブロック生成部２０７、Bi予測ブロック選択部２０８、および予測ブロック選択部２０９から構成される。
【０１７９】
インター予測制御部２０１には、符号化装置１の場合、動き予測・補償部４７から（復号装置１０１の場合、可逆復号部１３２から）インター予測のパラメータが供給される。
【０１８０】
インター予測のパラメータは、フレーム内のPU位置、PUサイズ、予測方向(L0,L1,Biのうちいずれか１つが設定される)、参照画像情報、動き情報などからなる。
【０１８１】
インター予測制御部２０１は、例えば、CPU(Central Processing Unit)やマイクロプロセッサなどから構成される。インター予測制御部２０１は、CPUにより所定のプログラムを実行し、インター予測パラメータの内容に応じて、各部を制御する。
【０１８２】
インター予測制御部２０１は、L0予測のパラメータをL0予測ブロック生成部２０２に供給し、L0予測ブロック生成部２０２を制御する。L0予測のパラメータは、PU位置、PUサイズ、参照画像情報REFIDX_L0、動き情報MV_L0からなる。
【０１８３】
インター予測制御部２０１は、L1予測のパラメータをL1予測ブロック生成部２０３に供給し、L1予測ブロック生成部２０３を制御する。L1予測のパラメータは、PU位置、PUサイズ、参照画像情報REFIDX_L1、動き情報MV_L1からなる。
【０１８４】
インター予測制御部２０１は、Bi予測のパラメータを、BIOコスト計算部２０４、Bi予測ブロック生成部２０６、およびBIO処理を含むBi予測ブロック生成部２０７に供給し、BIOコスト計算部２０４、Bi予測ブロック生成部２０６、およびBIO処理を含むBi予測ブロック生成部２０７を制御する。Bi予測のパラメータは、PUサイズなどからなる。
【０１８５】
インター予測制御部２０１は、BIO閾値をBIO適用判定部２０５に供給し、BIO適用判定部２０５を制御する。
【０１８６】
インター予測制御部２０１は、予測方向を予測ブロック選択部２０９に供給し、予測ブロック選択部２０９を制御する。
【０１８７】
L0予測ブロック生成部２０２は、予測方向がL0またはBiのときに動作する。L0予測ブロック生成部２０２は、インター予測制御部２０１から供給されるL0予測のパラメータに基づいて、フレームメモリ４４にアクセスし、参照画像からL0予測画像を生成する。生成されたL0予測画像は、L0予測ブロック生成部２０２から、BIOコスト計算部２０４、BIO適用判定部２０５、Bi予測ブロック生成部２０６、BIO処理を含むBi予測ブロック生成部２０７、および予測ブロック選択部２０９に供給される。
【０１８８】
L1予測ブロック生成部２０３は、予測方向がL1またはBiのときに動作する。L1予測ブロック生成部２０３は、インター予測制御部２０１から供給されるL1予測のパラメータに基づいて、フレームメモリ４４にアクセスし、参照画像からL1予測画像を生成する。生成されたL1予測画像は、L1予測ブロック生成部２０３から、BIOコスト計算部２０４、BIO適用判定部２０５、Bi予測ブロック生成部２０６、BIO処理を含むBi予測ブロック生成部２０７、および予測ブロック選択部２０９に供給される。
【０１８９】
BIOコスト計算部２０４は、予測方向がBiのとき動作する。BIOコスト計算部２０４は、インター予測制御部２０１から供給されるBi予測のパラメータに基づいて、L0予測ブロック生成部２０２から供給されるL0予測画像とL1予測ブロック生成部２０３から供給されるL1予測画像とのSADを計算する。計算されたSADは、BIOコスト計算部２０４からBIO適用判定部２０５に供給される。
【０１９０】
BIO適用判定部２０５は、予測方向がBiのとき動作する。BIO適用判定部２０５は、インター予測制御部２０１から供給されるBIO閾値と、BIOコスト計算部２０４から供給されるSADとを比較し、BIO_ONフラグを決定する。BIO閾値よりもSADが大きいとき、BIO_ONフラグが、BIO適用を示すBIO_ON=1に決定され、BIO閾値よりもSADが小さいとき、BIO_ONフラグが、BIO不適用を示すBIO_ON=0に決定される。
【０１９１】
決定されたBIO_ONフラグは、BIO適用判定部２０５から、Bi予測ブロック生成部２０６、BIO処理を含むBi予測ブロック生成部２０７、Bi予測ブロック選択部２０８に供給される。
【０１９２】
Bi予測ブロック生成部２０６は、BIO適用判定部２０５から供給されるBIO_ONフラグに基づいて、予測方向がBiで、BIO_ON=0のとき動作する。Bi予測ブロック生成部２０６は、インター予測制御部２０１から供給されるBi予測のパラメータに基づいて、L0予測ブロック生成部２０２から供給されるL0予測画像とL1予測ブロック生成部２０３から供給されるL1予測画像とから、Bi予測画像を生成する。生成されたBi予測画像は、Bi予測ブロック生成部２０６からBi予測ブロック選択部２０８に供給される。
【０１９３】
BIO処理を含むBi予測ブロック生成部２０７は、BIO適用判定部２０５から供給されるBIO_ONフラグに基づいて、予測方向がBiで、BIO_ON=1のとき動作する。Bi予測ブロック生成部２０６は、インター予測制御部２０１から供給されるBi予測のパラメータに基づいて、L0予測ブロック生成部２０２から供給されるL0予測画像とL1予測ブロック生成部２０３から供給されるL1予測画像とから、BIO処理を含むBi予測画像を生成する。生成されたBIO処理を含むBi予測画像は、BIO処理を含むBi予測ブロック生成部２０７からBi予測ブロック選択部２０８に供給される。
【０１９４】
Bi予測ブロック選択部２０８は、BIO適用判定部２０５から供給されるBIO_ONフラグに基づいて、Bi予測画像を選択する。Bi予測ブロック選択部２０８は、BIO_ON=0の場合、Bi予測ブロック生成部２０６から供給されるBi予測画像を選択し、BIO_ON=1の場合、BIO処理を含むBi予測ブロック生成部２０７から供給されるBIO処理を含むBi予測画像を選択する。選択されたBi予測画像は、Bi予測ブロック選択部２０８から予測ブロック選択部２０９に供給される。
【０１９５】
予測ブロック選択部２０９は、インター予測制御部２０１から供給される予測方向に応じて、予測画像を選択し、選択した予測画像を、インター予測の予測画像として、後段の図９の予測画像選択部４８（または図１２のスイッチ１４４）に出力する。
【０１９６】
予測ブロック選択部２０９は、予測方向がL0である場合、L0予測ブロック生成部２０２から供給されるL0予測画像を選択し、予測方向がL1である場合、L1予測ブロック生成部２０３から供給されるL1予測画像を選択する。予測ブロック選択部２０９は、予測方向がBiである場合、Bi予測ブロック選択部２０８から供給されるBi予測画像を選択する。
【０１９７】
＜インター予測部の動作例＞
図１５および図１６は、インター予測部５１が行うBIOを含むBi予測を説明するフローチャートである。
【０１９８】
なお、この処理は、後述する本技術のBIOを含むBi予測処理と比較するための従来のBIOを含むBi予測処理である。また、このBIOを含むBi予測処理は、符号化側と復号側の両方で行われる処理であり、図１０のステップＳ３４で行われる動き予測・補償処理の一部の処理であり、図１３のステップＳ１３６で行われるインター予測処理の一部の処理である。
【０１９９】
図１５のステップＳ３０１において、インター予測制御部２０１は、動き予測・補償部４７から供給されるインター予測のパラメータを取得する。なお、復号装置１０１の場合、インター予測のパラメータは、可逆復号部１３２から供給される。
【０２００】
インター予測のパラメータは、フレーム内のPU位置、PUサイズ、予測方向(L0,L1,Biのうちいずれか１つが設定される)、参照画像情報、動き情報などからなる。
【０２０１】
インター予測制御部２０１は、L0予測のパラメータをL0予測ブロック生成部２０２に供給する。L0予測のパラメータは、PU位置、PUサイズ、参照画像情報REFIDX_L0、動き情報MV_L0からなる。インター予測制御部２０１は、L1予測のパラメータをL1予測ブロック生成部２０３に供給する。L1予測のパラメータは、PU位置、PUサイズ、参照画像情報REFIDX_L1、動き情報MV_L1からなる。
【０２０２】
インター予測制御部２０１は、Bi予測のパラメータを、BIOコスト計算部２０４、Bi予測ブロック生成部２０６、およびBIO処理を含むBi予測ブロック生成部２０７に供給する。Bi予測のパラメータは、PUサイズを示す情報である。
【０２０３】
インター予測制御部２０１は、BIO閾値をBIO適用判定部２０５に供給する。インター予測制御部２０１は、予測方向を予測ブロック選択部２０９に供給し、予測ブロック選択部２０９を制御する。
【０２０４】
ステップＳ３０２において、L0予測ブロック生成部２０２は、インター予測制御部２０１から供給されるL0予測のパラメータに基づいて、フレームメモリ４４にアクセスし、参照画像からL0予測ブロックを生成する。なお、復号装置１０１の場合、参照画像は、フレームメモリ１４１にアクセスされて参照される。
【０２０５】
ステップＳ３０３において、L1予測ブロック生成部２０３は、インター予測制御部２０１から供給されるL1予測のパラメータに基づいて、フレームメモリ４４にアクセスし、参照画像からL1予測ブロックを生成する。
【０２０６】
ステップＳ３０２およびＳ３０３の処理における最大バッファサイズは、PU´サイズである。PU´サイズは、PUのサイズ相当のサイズであり、PUのサイズより一回り大きいサイズを表す。
【０２０７】
ステップＳ３０４において、BIOコスト計算部２０４は、4×4単位に、L0予測ブロック生成部２０２から供給されるL0予測画像とL1予測ブロック生成部２０３から供給されるL1予測画像とのSADを計算する。4×4単位にSADを計算し、積み上げることで、SADの総和であるSAD_4×4ブロックが取得される。
【０２０８】
ステップＳ３０５において、BIOコスト計算部２０４は、PU単位に、L0予測ブロック生成部２０２から供給されるL0予測画像とL1予測ブロック生成部２０３から供給されるL1予測画像とのSADを計算する。PU単位にSADを計算し、積み上げることで、SADの総和であるSAD_PUが取得される。取得されたSAD_PUは、BIOコスト計算部２０４からBIO適用判定部２０５に供給される。
【０２０９】
ステップＳ３０６において、BIO適用判定部２０５は、BIO_PU_ONフラグを、BIOコスト計算部２０４から供給されるSAD_PU＞＝インター予測制御部２０１から供給されるBIO閾値_PUに基づいて決定する。決定されたBIO_PU_ONフラグは、BIO適用判定部２０５から、Bi予測ブロック生成部２０６、BIO処理を含むBi予測ブロック生成部２０７、Bi予測ブロック選択部２０８に供給される。
【０２１０】
BIO閾値よりもSADが大きいとき、BIO_PU_ONフラグが、BIO適用を示すBIO_PU_ON=1に決定され、BIO閾値よりもSADが小さいとき、BIO_PU_ONフラグが、BIO不適用を示すBIO_PU_ON=0に決定される。
【０２１１】
ステップＳ３０７において、Bi予測ブロック生成部２０６およびBIO処理を含むBi予測ブロック生成部２０７は、BIO_PU_ONフラグが1であるか否かを判定する。
【０２１２】
ステップＳ３０７において、BIO_PU_ONフラグが1ではないと判定された場合、処理は、ステップＳ３０８に進む。
【０２１３】
ステップＳ３０８において、Bi予測ブロック生成部２０６は、L0予測ブロック生成部２０２から供給されるL0予測画像とL1予測ブロック生成部２０３から供給されるL1予測画像とから、Bi予測ブロックPUを生成する。生成されたBi予測ブロックPUは、Bi予測ブロック生成部２０６からBi予測ブロック選択部２０８に供給される。その後、BIOを含むBi予測処理は終了される。
【０２１４】
ステップＳ３０８の処理における最大バッファサイズは、PUサイズである。
【０２１５】
一方、ステップＳ３０７において、BIO_PU_ONフラグが1であると判定された場合、処理は、ステップＳ３０９に進む。
【０２１６】
以降のステップＳ３０９乃至Ｓ３２０においては、BIO処理を含むBi予測ブロック生成部２０７により、BIO処理を含むBi予測画像の生成処理が行われる。
【０２１７】
ステップＳ３０９において、BIO処理を含むBi予測ブロック生成部２０７は、L0予測ブロック生成部２０２から供給されるL0予測画像とL1予測ブロック生成部２０３から供給されるL1予測画像とから、複数の勾配を計算する。ステップＳ３０９の処理における最大バッファサイズは、PU´サイズ×9個である。
【０２１８】
ステップＳ３１０において、BIO処理を含むBi予測ブロック生成部２０７は、PU内に含まれる4×4ブロック数を取得する。
【０２１９】
ステップＳ３１１において、BIO処理を含むBi予測ブロック生成部２０７は、4×4ブロック番号に0を設定する。
【０２２０】
図１６のステップＳ３１２において、BIO処理を含むBi予測ブロック生成部２０７は、4×4ブロック番号が4×4ブロック数より小さいか否かを判定する。
【０２２１】
ステップＳ３１２において、4×4ブロック番号が4×4ブロック数より小さいと判定された場合、処理は、ステップＳ３１３に進む。
【０２２２】
ステップＳ３１３において、BIO処理を含むBi予測ブロック生成部２０７は、4×4ブロック番号からPU内の位置とSAD_4×4を取得する。
【０２２３】
ステップＳ３１４において、BIO処理を含むBi予測ブロック生成部２０７は、BIO_4×4_ONをSAD_4×4＞＝BIO閾値_4×4に基づいて決定する。
【０２２４】
ステップＳ３１５において、BIO処理を含むBi予測ブロック生成部２０７は、BIO_4×4_ONフラグが1であるか否かを判定する。
【０２２５】
ステップＳ３１５において、BIO_4×4_ONフラグが1ではないと判定された場合、処理は、ステップＳ３１６に進む。
【０２２６】
ステップＳ３１６において、BIO処理を含むBi予測ブロック生成部２０７は、4×4ブロック番号の領域のL0予測画像とL1予測画像からBi予測値を生成する。
【０２２７】
ステップＳ３１５において、BIO_4×4_ONフラグが1であると判定された場合、処理は、ステップＳ３１７に進む。
【０２２８】
ステップＳ３１７において、BIO処理を含むBi予測ブロック生成部２０７は、4×4ブロック番号の領域の複数の勾配から速度を計算する。
【０２２９】
ステップＳ３１８において、BIO処理を含むBi予測ブロック生成部２０７は、4×4ブロック番号の領域のL0予測画像、L1予測画像、勾配、および速度からBIO予測値を生成する。
【０２３０】
ステップＳ３１６およびＳ３１８の後、処理は、ステップＳ３１９に進む。
【０２３１】
ステップＳ３１９において、BIO処理を含むBi予測ブロック生成部２０７は、予測値を、バッファにおける4×4ブロック番号の位置に保存する。ステップ３１９の処理における最大バッファサイズは、PUサイズである。
【０２３２】
ステップＳ３２０において、BIO処理を含むBi予測ブロック生成部２０７は、4×4ブロック番号をインクリメントする。その後、ステップＳ３１２に戻り、それ以降の処理が繰り返される。
【０２３３】
ステップＳ３０８の後、または、ステップＳ３１２において、4×4ブロック番号が4×4ブロック数より小さくないと判定された場合、BIOを含むBi予測は終了される。
【０２３４】
なお、上述したBIOを含むBi処理においては、ステップＳ３０５で、PU全体でL0予測ブロックとL1予測ブロックのSADが計算され、ステップＳ３０６において、SADと閾値とを比較してBIO処理の適用可否が判定されて、ステップＳ３０７において、処理が分岐されている。
【０２３５】
そのため、VPDUより大きなPUでインター予測する場合に、PUを仮想的に複数のvPUに分割処理することが困難になってしまった。その結果、ステップＳ３０２、Ｓ３０３、およびＳ３０９で必要になるバッファは、ステップＳ３０９の勾配計算やステップＳ３１７の速度計算のためにPUより一回り大きな領域であるPU´が必要となっている。PU´の最大サイズは、PUの水平サイズと垂直サイズとをそれぞれ2加算した結果である130×130のサイズである。
【０２３６】
さらに、ステップＳ３０８では、PUサイズのバッファが必要となる。これらのことは、BIOを含むインター予測部５１では、大きなバッファリソースが必要となることを意味する。
【０２３７】
また、このバッファを必要とするインター予測部５１をHW(ハードウェア)実装した場合、BIOを含むインター予測のパイプライン遅延とTU処理のパイプライン遅延が大きく異なるため、スループットを維持するためのHW実装難易度も高くなってしまう。
【０２３８】
これは、符号化側、復号側の両方に関わる。符号化側では、CUを常に64×64以下に分解するなどの自己制約で回避することは可能であるが、符号化側の自由度を確保するためにも解決方法があると望ましい。規格適合が求められる復号側では、大きなHWリソースが必要不可欠である。
【０２３９】
そこで、上述したように、本技術においては、BIOなどの双方向予測を行うか否かについての判定に用いるコストを計算する処理単位をVPDUサイズ相当の分割処理単位またはVPDUサイズ以下の分割処理単位に分割し、分割処理単位に基づいて計算されたコストを用いて判定を行うようにした。
【０２４０】
VPDUサイズ相当は、VPDUサイズより一回り大きな領域であるVPDU´サイズを表す。
【０２４１】
＜インター予測部の動作例＞
図１７および図１８は、本技術の第１の実施の形態の動作例として、インター予測部５１が行うBIOを含むBi予測を説明するフローチャートである。
【０２４２】
図１７および図１８においては、符号化装置１の場合について説明するが、復号装置１０１の場合も同様の処理が行われるので、その説明については省略される。
【０２４３】
ステップＳ４０１において、インター予測制御部２０１は、動き予測・補償部４７から供給されるインター予測のパラメータを取得する。
【０２４４】
ステップＳ４０２において、インター予測制御部２０１は、PU内に含まれるvPU数を取得する。すなわち、PUがVPDUより大きい場合、PUは、仮想的に複数のvPUに分割されている。PUが128×128である場合、vPU数には４が設定される。PUが128×64または64×128である場合、vPU数には２が設定される。PUが64×64以下である場合、vPU数には１が設定される。vPU数が１である場合は、仮想的な分割はなされず、実質的に、図１５および図１６と同様の処理が行われる。
【０２４５】
ステップＳ４０３において、インター予測制御部２０１は、最初に処理するvPU番号として０を設定する。
【０２４６】
ステップＳ４０４において、インター予測制御部２０１は、vPU番号がvPU数より小さいか否かを判定する。
【０２４７】
ステップＳ４０４において、vPU番号がvPU数より小さいと判定された場合、処理は、ステップＳ４０５に進む。
【０２４８】
ステップＳ４０５において、インター予測制御部２０１は、PUサイズとvPU番号から、PU内のどの領域を処理するかを示すvPUの位置とサイズを取得する。
【０２４９】
図１９は、PUサイズ、vPU番号、および処理位置とサイズの対応関係を示す図である。
【０２５０】
PUサイズが128×128において、vPU番号が０のとき、処理する位置が左上であり、サイズが64×64である。vPU番号が１のとき、処理する位置が右上であり、サイズが64×64である。vPU番号が２のとき、処理する位置が左下であり、サイズが64×64である。vPU番号が３のとき、処理する位置が右下であり、サイズが64×64である。
【０２５１】
PUサイズが128×64において、vPU番号が０のとき、処理する位置が左であり、サイズが64×64である。vPU番号が１のとき、処理する位置が右であり、サイズが64×64である。
【０２５２】
PUサイズが64×128において、vPU番号が０のとき、処理する位置が上であり、サイズが64×64である。vPU番号が１のとき、処理する位置が下であり、サイズが64×64である。
【０２５３】
PUサイズが64×64以下において、vPU番号が０のとき、処理する位置がPUそのものである。
【０２５４】
図１７に戻って、ステップＳ４０５で取得されたvPUの位置とサイズは、L0予測ブロック生成部２０２およびL1予測ブロック生成部２０３に供給される。
【０２５５】
ステップＳ４０６において、L0予測ブロック生成部２０２は、vPU番号の領域のL0予測ブロックを生成する。
【０２５６】
ステップＳ４０７において、L1予測ブロック生成部２０３は、vPU番号の領域のL1予測ブロックを生成する。
【０２５７】
ステップ４０６およびＳ４０７の処理における最大バッファサイズは、例えば、ステップＳ４１３の勾配計算やステップＳ４２１の速度計算で必要となる一回り大きな領域が含まれるVPDU´サイズである。VPDU´サイズは、VPDUのサイズより一回り大きいサイズである、上述したVPDUサイズ相当を表し、例えば、水平・垂直サイズをそれぞれ2を加算した結果である66×66とされる。
【０２５８】
後段のBIO適用判定は最大でもVPDUサイズのSAD値で行われるため、ここで生成されたL0予測ブロックやL1予測ブロックを保存しておくバッファサイズも、VPDUサイズをベースとすることができる。
【０２５９】
ステップＳ４０８において、BIOコスト計算部２０４は、vPU内の4×4単位に、L0予測ブロック生成部２０２から供給されるL0予測画像とL1予測ブロック生成部２０３から供給されるL1予測画像とのSADを計算する。4×4単位にSADを計算し、積み上げることで、SADの総和であるSAD_4×4ブロックが取得される。
【０２６０】
後段において、速度計算の単位である4×4ブロックでも、再度BIOの適用判定を行い、効果が見込めない場合のアーリーターミネーションとするため、このSAD_4×4ブロックも保存しておく必要がある。ただし、SAD_4×4ブロックの保存のためのバッファサイズは、図１５のステップＳ３０４と比較して、1/4のサイズに削減することができる。
【０２６１】
ステップＳ４０９において、BIOコスト計算部２０４は、vPU単位に、L0予測ブロック生成部２０２から供給されるL0予測画像とL1予測ブロック生成部２０３から供給されるL1予測画像とのSADを計算する。vPU単位にSADを計算し、積み上げることで、SADの総和であるSAD_vPUが取得される。取得されたSAD_vPUは、BIOコスト計算部２０４からBIO適用判定部２０５に供給される。
【０２６２】
ステップＳ４１０において、BIO適用判定部２０５は、BIO_vPU_ONフラグを、BIOコスト計算部２０４から供給されるSAD_vPU＞＝インター予測制御部２０１から供給されるBIO閾値_vPUに基づいて決定する。BIO閾値_vPUは、BIO閾値_PUが、ステップＳ４０５で求めたvPUのサイズに応じた値にスケールされた値である。
【０２６３】
決定されたBIO_vPU_ONフラグは、BIO適用判定部２０５から、Bi予測ブロック生成部２０６、BIO処理を含むBi予測ブロック生成部２０７、Bi予測ブロック選択部２０８に供給される。
【０２６４】
ステップＳ４１１において、Bi予測ブロック生成部２０６およびBIO処理を含むBi予測ブロック生成部２０７は、BIO_vPU_ONフラグが1であるか否かを判定する。
【０２６５】
ステップＳ４１１において、BIO_vPU_ONフラグが1ではないと判定された場合、vPU全体に対してBIOの効果がないとして、処理は、ステップＳ４１２に進む。
【０２６６】
ステップＳ４１２において、Bi予測ブロック生成部２０６は、L0予測ブロック生成部２０２から供給されるL0予測画像とL1予測ブロック生成部２０３から供給されるL1予測画像とから、Bi予測ブロックvPUを生成する。生成されたBi予測ブロックvPUは、バッファに保存されるとともに、Bi予測ブロック生成部２０６からBi予測ブロック選択部２０８に供給される。
【０２６７】
HW実装時にパイプラインを組む場合、vPUのインター予測と並列にVPDU単位のTU処理も実行されており、このタイミングで次の処理が開始できるようになる。そのため、ここに用意しておくBi予測を保存しておくバッファも最大VPDUサイズであればよい。その後、処理は、図１８のステップＳ４２５に進む。
【０２６８】
一方、ステップＳ４１１において、BIO_vPU_ONフラグが1であると判定された場合、処理は、ステップＳ４１３に進む。
【０２６９】
ステップＳ４１３において、BIO処理を含むBi予測ブロック生成部２０７は、L0予測ブロック生成部２０２から供給されるL0予測ブロックとL1予測ブロック生成部２０３から供給されるL1予測ブロックとから、複数の勾配を計算する。
【０２７０】
ステップＳ４１３では、L0予測ブロックとL1予測ブロックとから9種類の中間パラメータが計算される。L0予測ブロックとL1予測ブロック同士の変化量やそれぞれの予測ブロックでの水平・垂直方向でのそれぞれの画素値の変化量が計算されるので、それらをまとめて勾配と呼ぶ。勾配は、予測ブロックと同じ画素数ずつ計算する必要があるため、ここで、必要となるバッファは最大VPDU´サイズ×9個でよい。
【０２７１】
図１８のステップＳ４１４において、BIO処理を含むBi予測ブロック生成部２０７は、vPU内に含まれる4×4ブロック数を取得する。例えば、vPUが64×64の場合、4×4ブロック数は256個となる。Optical flowでは、ピクセル単位で速度を求めて予測値を計算するのが最も予測精度がよいが、それには、膨大な計算が必要となる。BIOでは、性能とコストのトレードオフで、4×4ブロック単位に速度を計算することで、バランスをとっている。
【０２７２】
ステップＳ４１５において、BIO処理を含むBi予測ブロック生成部２０７は、最初に処理する4×4ブロック番号として0を設定する。
【０２７３】
ステップＳ４１６において、BIO処理を含むBi予測ブロック生成部２０７は、4×4ブロック番号が4×4ブロック数より小さいか否かを判定する。
【０２７４】
ステップＳ４１６において、4×4ブロック番号が4×4ブロック数より小さいと判定された場合、処理は、ステップＳ４１７に進む。
【０２７５】
ステップＳ４１７において、BIO処理を含むBi予測ブロック生成部２０７は、4×4ブロック番号からvPU内の位置とSAD_4×4を取得する。4×4ブロックは、ラスタスキャン順で処理されていく。
【０２７６】
ステップＳ４１８において、BIO処理を含むBi予測ブロック生成部２０７は、BIO_4×4_ONをSAD_4×4＞＝BIO閾値_4×4に基づいて決定する。
【０２７７】
ステップＳ４１９において、BIO処理を含むBi予測ブロック生成部２０７は、BIO_4×4_ONフラグが1であるか否かを判定する。
【０２７８】
ステップＳ４１９において、BIO_4×4_ONフラグが1ではないと判定された場合、4×4ブロックに対してBIOの効果が見込めないとし、処理は、ステップＳ４２０に進む。
【０２７９】
ステップＳ４２０において、BIO処理を含むBi予測ブロック生成部２０７は、4×4ブロック番号の領域のL0予測画像とL1予測画像との平均を計算することで、Bi予測値を生成する。
【０２８０】
ステップＳ４１９において、BIO_4×4_ONフラグが1であると判定された場合、処理は、ステップＳ４２１に進む。
【０２８１】
ステップＳ４２１において、BIO処理を含むBi予測ブロック生成部２０７は、4×4ブロック番号の領域の複数の勾配から速度を計算する。
【０２８２】
ステップＳ４２２において、BIO処理を含むBi予測ブロック生成部２０７は、4×4ブロック番号の領域のL0予測画像、L1予測画像、勾配、および速度からBIO予測値を生成する。
【０２８３】
ステップＳ４２０およびＳ４２２の後、処理は、ステップＳ４２３に進む。
【０２８４】
ステップＳ４２３において、BIO処理を含むBi予測ブロック生成部２０７は、ステップＳ４２０またはステップＳ４２２で生成された予測値を、バッファにおける4×4ブロック番号の位置に保存する。ステップ４２３の処理における最大バッファサイズは、VPDUサイズである。バッファは、Ｓ４１２の処理で用いるバッファと共通化してもよい。
【０２８５】
ステップＳ４２４において、BIO処理を含むBi予測ブロック生成部２０７は、4×4ブロック番号をインクリメントする。その後、ステップＳ４１６に戻り、それ以降の処理が繰り返される。
【０２８６】
ステップＳ４１２の後、または、ステップＳ４１６において、4×4ブロック番号が4×4ブロック数以上であると判定された場合、処理は、ステップＳ４２５に進む。
【０２８７】
ステップＳ４２５において、インター予測制御部２０１は、vPU番号をインクリメントし、ステップＳ４０４に戻り、それ以降の処理が繰り返される。
【０２８８】
ステップＳ４０４において、vPU番号がvPU数以上であると判定された場合、BIO処理を含むBi予測は終了される。
【０２８９】
図２０および図２１は、従来の動作と、本技術の第１の実施の形態の動作を実施した場合の比較を示す図である。
【０２９０】
図２０の上側においては、CU(PU)128×128で、VPDU＝64×64の場合における最初にBIOの適用判定のためにSADを計算した範囲が、従来の動作と本技術の第１の実施の形態の動作の場合についてそれぞれ示されている。CU(PU)128×128の場合、CU(PU)は、BIO_vPU_ON判定のためのSAD計算領域であるvPUが４つに分割されている。
【０２９１】
図２０の下側においては、CU(PU)128×64で、VPDU＝64×64の場合における最初にBIOの適用判定のためにSADを計算した範囲が、従来の動作と本技術の第１の実施の形態の動作の場合についてそれぞれ示されている。CU(PU)128×64の場合、CU(PU)は、BIO_vPU_ON判定のためのSAD計算領域であるvPUが左右の２つに分割されている。
【０２９２】
図２１の上側においては、CU(PU)64×128で、VPDU＝64×64の場合における最初にBIOの適用判定のためにSADを計算した範囲が、従来の動作と本技術の第１の実施の形態の動作の場合についてそれぞれ示されている。CU(PU)64×128の場合、CU(PU)は、BIO_vPU_ON判定のためのSAD計算領域であるvPUが上下の２つに分割されている。
【０２９３】
図２１の下側においては、CU(PU)64×64以下で、VPDU＝64×64の場合における最初にBIOの適用判定のためにSADを計算した範囲が、従来の動作と本技術の第１の実施の形態の動作の場合についてそれぞれ示されている。CU(PU)64×64以下の場合、CU(PU)は、BIO_vPU_ON判定のためのSAD計算領域であるvPUが分割されず、１つで構成される。
【０２９４】
従来動作では、PU全体のSADが必要なため、広範囲のL0予測ブロックとL1予測ブロックとを予め準備、保存しておく必要があるが、本技術では、VPDUより大きなPUでは仮想的に分割したvPU毎にBIOの適用判定を行うため、予め準備、保存しておくL0予測ブロックとL1予測ブロックのバッファを削減することが可能である。
【０２９５】
また、図１５および図１６のステップＳ３０８、Ｓ３０９、およびＳ３１９で用いるバッファと比較して、図１７および図１８のステップＳ４１２、Ｓ４１３、およびＳ４２３で用いるバッファも1/4の削減が可能となる。
【０２９６】
BIOのような復号側で２つの予測ブロックを生成し、コスト計算から判定を行い、インター予測の符号化効率を改善させるツールとして、FRUC(Frame Rate Up-Conversion)やDMVR(Decoder-side motion vector refinement)がある。BIOのアーリーターミネーション目的と異なり、FRUCやDMVRでは、MV補正を目的としてPUサイズより大きなL0予測ブロックとL1予測ブロックとが生成され、SADまたは類似するコスト計算が行われている。
【０２９７】
PUがVPDUより大きい場合には、本技術と同様の対応が必要となる。FRUCやDMVRでも本技術のように、PUがVPDUより大きい場合、仮想的に複数のvPUに分割し、vPU毎にMV補正することで対応することができる。
【０２９８】
ここまで上述してきた従来動作のPU全体でのSAD計算とBIOの適用判定、または、本技術のvPU毎のSAD計算とBIOの適用判定は、大枠でのアーリーターミネーションが主な目的であるため、さらなる削減を行うことができる。
【０２９９】
＜変形例１＞
上述した第１の実施の形態では、PUがVPDUより大きい場合に、仮想的に複数のvPUに分割し、vPU毎にSAD計算をしてBIOの適用判定する例を説明した。PUを構成するvPUは、元々同じPUに含まれているということで、ある部分的な傾向が異なる部分の傾向と似ているのではないかと考えられる。
【０３００】
図２２および図２３は、上述した傾向を前提とし、変形例１として、PUがVPDUより大きい場合に、vPU番号が０のBIO判定結果を、他のvPUでも用いた例を示す図である。
【０３０１】
図２２の上側においては、CU(PU)128×128で、VPDU＝64×64の場合における最初にBIOの適用判定のためにSADを計算した範囲が示されている。CU(PU)128×128の場合、CU(PU)は、４つに分割されたBIO_vPU_ON判定のためのSAD計算領域であるvPUのうち、左上(vPU番号＝０)のvPUについてSADが計算され、残りのvPU（右上、左下、右上）においては、vPU番号＝０のvPUの結果がコピーして用いられる。
【０３０２】
図２２の下側においては、CU(PU)128×64で、VPDU＝64×64の場合における最初にBIOの適用判定のためにSADを計算した範囲が示されている。CU(PU)128×64の場合、CU(PU)は、２つに分割されたBIO_vPU_ON判定のためのSAD計算領域であるvPUのうち、左(vPU番号＝０)のvPUについてSADが計算され、残りのvPU（右）においては、vPU番号＝０のvPUの結果がコピーして用いられる。
【０３０３】
図２３の上側においては、CU(PU)64×128で、VPDU＝64×64の場合における最初にBIOの適用判定のためにSADを計算した範囲が示されている。CU(PU)128×64の場合、CU(PU)は、２つに分割されたBIO_vPU_ON判定のためのSAD計算領域であるvPUのうち、上(vPU番号＝０)のvPUについてSADが計算され、残りのvPU（下）においては、vPU番号＝０のvPUの結果がコピーして用いられる。
【０３０４】
図２３の下側においては、CU(PU)64×64以下で、VPDU＝64×64の場合における最初にBIOの適用判定のためにSADを計算した範囲が示されている。CU(PU)64×64以下の場合、CU(PU)は、BIO_vPU_ON判定のためのSAD計算領域であるvPUが分割されず、１つで構成される。
【０３０５】
＜インター予測部の動作例＞
図２４および図２５は、図２３の場合のBIOを含むBi予測を説明するフローチャートである。
【０３０６】
図２４および図２５のステップＳ５０１乃至Ｓ５０８と、ステップＳ５１０乃至Ｓ５２６は、図１７および図１８のステップＳ４０１乃至Ｓ４２５と基本的に同様の処理を行うので、その説明は繰り返しになるので、適宜、省略される。
【０３０７】
図２５のステップＳ５０８において、BIOコスト計算部２０４は、vPU内の4×4単位に、L0予測ブロック生成部２０２から供給されるL0予測画像とL1予測ブロック生成部２０３から供給されるL1予測画像とのSADを計算する。4×4単位にSADを計算し、積み上げることで、SADの総和であるSAD_4×4ブロックが取得される。
【０３０８】
ステップＳ５０９において、BIOコスト計算部２０４は、vPU番号が０であるか否かを判定する。
【０３０９】
ステップＳ５０９において、vPU番号が０であると判定された場合、ステップＳ５１０に進む。
【０３１０】
ステップＳ５１０において、BIOコスト計算部２０４は、vPU単位に、L0予測ブロック生成部２０２から供給されるL0予測画像とL1予測ブロック生成部２０３から供給されるL1予測画像とのSADを計算する。vPU単位にSADを計算し、積み上げることで、SADの総和であるSAD_vPUが取得される。取得されたSAD_vPUは、BIOコスト計算部２０４からBIO適用判定部２０５に供給される。
【０３１１】
ステップＳ５１１において、BIO適用判定部２０５は、BIO_vPU_ONフラグを、BIOコスト計算部２０４から供給されるSAD_vPU＞＝インター予測制御部２０１から供給されるBIO閾値_vPUに基づいて決定する。その後、処理は、ステップＳ５１２に進む。
【０３１２】
一方、vPU番号が０ではないと判定された場合、ステップＳ５１０およびＳ５１１はスキップされ、処理は、ステップＳ５１２に進む。
【０３１３】
以上のように、PUにおいて、ラスタスキャン順に最初に位置するvPUのときだけ、vPUのSADの積み上げとBIOの判定を行うようにしたので、アーリーターミネーションに係る処理や処理時間を短縮することができる。
【０３１４】
＜変形例２＞
図２６および図２７は、変形例２として、各vPU内の部分的なSAD値でBIOの適用判定を行う例を示す図である。
【０３１５】
図２６の上側においては、CU(PU)128×128で、VPDU＝64×64の場合における最初にBIOの適用判定のためにSADを計算した範囲が示されている。CU(PU)128×128の場合、CU(PU)は、２つに分割されたBIO_vPU_ON判定のためのSAD計算領域である各vPUにおいて、左上の一部分の領域(32×32)についてSADが計算される。
【０３１６】
図２６の下側においては、CU(PU)128×64で、VPDU＝64×64の場合における最初にBIOの適用判定のためにSADを計算した範囲が示されている。CU(PU)128×64の場合、CU(PU)は、２つに分割されたBIO_vPU_ON判定のためのSAD計算領域である各vPUにおいて、左上の一部分の領域(32×32)についてSADが計算される。
【０３１７】
図２７の上側においては、CU(PU)64×128で、VPDU＝64×64の場合における最初にBIOの適用判定のためにSADを計算した範囲が示されている。CU(PU)128×64の場合、CU(PU)は、２つに分割されたBIO_vPU_ON判定のためのSAD計算領域である各vPUにおいて、左上の一部分の領域(32×32)についてSADが計算される。
【０３１８】
図２７の下側においては、CU(PU)64×64以下で、VPDU＝64×64の場合における最初にBIOの適用判定のためにSADを計算した範囲が示されている。CU(PU)64×64以下の場合、CU(PU)は、BIO_vPU_ON判定のためのSAD計算領域であるvPUが分割されず、左上の一部分の領域(32×32)についてSADが計算される。
【０３１９】
以上のように、図２６および図２７においては、各vPUの左上1/4の領域でBIOの適用判定を行う例が示されているが、左上1/4の領域はHWでパイプラインを組む場合との相性も考慮されている。BIOの適用判定が可能となるのは、左上1/4領域のL0予測ブロックとL1予測ブロックが準備できたときだからである。
【０３２０】
各vPUの一部の領域のみ、BIOの適用判定に用いるようにすることで、各パイプラインステージに用意しておくバッファをVPDUサイズからさらに削減することができる。
【０３２１】
なお、一部の領域は、どんな大きさでもよく、例えば、0×0のサイズでコスト計算（SAD）をすることも可能である。すなわち、0ということは、コスト計算しないで、アーリーターミネーションをスキップすることと同意である。
【０３２２】
さらに、各vPUのBIO_vPU_ONの判定するために必要なSADを計算する領域を動的に変更することも可能である。
【０３２３】
＜インター予測部の動作例＞
図２８および図２９は、各vPUのBIO_vPU_ONの判定のための部分的なSAD計算領域の判定処理を説明するフローチャートである。
【０３２４】
図２８および図２９では、L0予測ブロックとL1予測ブロックを生成するための２つのMVを水平成分と垂直成分の４つに分けて、参照位置が一番離れているものが動き情報として精度が悪いと仮定して、その領域をBIOで補正する効果があるかが判定される。この処理は、例えば、図２５のステップＳ５０９の前に行われる。この場合、ステップＳ５０９においては、設置された領域であるか否かが判定され、ステップＳ５１０およびＳ５１１の処理は、設定された領域のみ行われるようなフローが考えられる。
【０３２５】
ステップＳ６０１において、インター予測制御部２０１は、L0予測のMVL0x、MVL0yとL1予測のMVL1x、MVL1yとを取得する。
【０３２６】
ステップＳ６０２において、インター予測制御部２０１は、４つのMVから絶対値最大のMVを選択してMV_MAXに代入する。
【０３２７】
ステップＳ６０３において、インター予測制御部２０１は、|MV_MAX|＜MV_閾値であるか否かを判定する。
【０３２８】
ステップＳ６０３において、|MV_MAX|＜MV_閾値であると判定された場合、処理は、ステップＳ６０４に進む。
【０３２９】
ステップＳ６０４において、インター予測制御部２０１は、vPUの中心部をSAD計算領域に設定する。
【０３３０】
ステップＳ６０５において、インター予測制御部２０１は、PUサイズ＜vPUサイズであるか否かを判定する。
【０３３１】
ステップＳ６０５において、PUサイズ＜vPUサイズであると判定された場合、処理は、ステップＳ６０６に進む。
【０３３２】
ステップＳ６０６において、インター予測制御部２０１は、水平サイズ＝水平PUサイズ／２とし、垂直サイズ＝垂直PUサイズ／２とする。
【０３３３】
ステップＳ６０５において、PUサイズ＜vPUサイズではないと判定された場合、処理は、ステップＳ６０７に進む。
【０３３４】
ステップＳ６０７において、インター予測制御部２０１は、水平サイズ＝水平vPUサイズ／２とし、垂直サイズ＝垂直vPUサイズ／２とする。
【０３３５】
一方、ステップＳ６０３において、|MV_MAX|＜MV_閾値ではないと判定された場合、処理は、ステップＳ６０８に進む。
【０３３６】
ステップＳ６０８において、インター予測制御部２０１は、MV_MAX==MVL0x||MV_MAX==MVL1xであるか否かを判定する。
【０３３７】
ステップＳ６０８において、MV_MAX==MVL0x||MV_MAX==MVL1xであると判定された場合、処理は、ステップＳ６０９に進む。
【０３３８】
ステップＳ６０９において、インター予測制御部２０１は、MV_MAXが０より小さいか否かを判定する。
【０３３９】
ステップＳ６０９において、MV_MAXが０より小さいと判定された場合、処理は、ステップＳ６１０に進む。
【０３４０】
ステップＳ６１０において、インター予測制御部２０１は、vPUの左側をSAD計算領域に設定する。
【０３４１】
ステップＳ６０９において、MV_MAXが０以上であると判定された場合、処理は、ステップＳ６１１に進む。
【０３４２】
ステップＳ６１１において、インター予測制御部２０１は、vPUの右側をSAD計算領域に設定する。
【０３４３】
ステップＳ６１０またはＳ６１１の後、処理は、ステップＳ６１２に進む。
【０３４４】
ステップＳ６１２において、インター予測制御部２０１は、PUサイズ＜vPUサイズであるか否かを判定する。
【０３４５】
ステップＳ６１２において、PUサイズ＜vPUサイズであると判定された場合、処理は、ステップＳ６１３に進む。
【０３４６】
ステップＳ６１３において、インター予測制御部２０１は、水平サイズ＝水平PUサイズ／４とし、垂直サイズ＝垂直PUサイズとする。
【０３４７】
ステップＳ６１２において、PUサイズ＜vPUサイズではないと判定された場合、処理は、ステップＳ６１４に進む。
【０３４８】
ステップＳ６１４において、インター予測制御部２０１は、水平サイズ＝水平vPUサイズ／４とし、垂直サイズ＝垂直vPUサイズとする。
【０３４９】
また、ステップＳ６０８において、MV_MAX==MVL0x||MV_MAX==MVL1xではないと判定された場合、処理は、ステップＳ６１５に進む。
【０３５０】
ステップＳ６１５において、インター予測制御部２０１は、MV_MAX＜０であるか否かを判定する。
【０３５１】
ステップＳ６１５において、MV_MAX＜０であると判定された場合、処理は、ステップＳ６１６に進む。
【０３５２】
ステップＳ６１６において、インター予測制御部２０１は、vPUの上側をSAD計算領域に設定する。
【０３５３】
ステップＳ６１５において、MV_MAX＜０ではないと判定された場合、処理は、ステップＳ６１７に進む。
【０３５４】
ステップＳ６１７において、インター予測制御部２０１は、vPUの下側をSAD計算領域に設定する。
【０３５５】
ステップＳ６１６またはＳ６１７の後、処理は、ステップＳ６１８に進む。
【０３５６】
ステップＳ６１８において、インター予測制御部２０１は、PUサイズ＜vPUサイズであるか否かを判定する。
【０３５７】
ステップＳ６１８において、PUサイズ＜vPUサイズであると判定された場合、処理は、ステップＳ６１９に進む。
【０３５８】
ステップＳ６１９において、インター予測制御部２０１は、水平サイズ＝水平PUサイズとし、垂直サイズ＝垂直PUサイズ／４とする。
【０３５９】
ステップＳ６１８において、PUサイズ＜vPUサイズではないと判定された場合、処理は、ステップＳ６２０に進む。
【０３６０】
ステップＳ６２０において、インター予測制御部２０１は、水平サイズ＝水平vPUサイズとし、垂直サイズ＝垂直vPUサイズ／４とする。
【０３６１】
ステップＳ６０６、ステップＳ６０７、ステップＳ６１３、ステップＳ６１４、ステップＳ６１９、およびステップＳ６２０の後、処理は、図２９のステップＳ６２１に進む。
【０３６２】
ステップＳ６２１において、インター予測制御部２０１は、水平サイズ＜４であるか否かを判定する。
【０３６３】
ステップＳ６２１において、水平サイズ＜４であると判定された場合、処理は、ステップＳ６２２に進む。
【０３６４】
ステップＳ６２２において、インター予測制御部２０１は、水平サイズ＝４とし、処理は、ステップＳ６２３に進む。
【０３６５】
ステップＳ６２１において、水平サイズ＜４ではないと判定された場合、ステップＳ６２２はスキップされ、処理は、ステップＳ６２３に進む。
【０３６６】
ステップＳ６２３において、インター予測制御部２０１は、垂直サイズ＜４であるか否かを判定する。
【０３６７】
ステップＳ６２３において、垂直サイズ＜４であると判定された場合、処理は、ステップＳ６２４に進む。
【０３６８】
ステップＳ６２４において、インター予測制御部２０１は、垂直サイズ＝４とし、BIO_vPU_ON判定のための部分的なSAD計算領域の判定処理は終了される。
【０３６９】
ステップＳ６２３において、垂直サイズ＜４ではないと判定された場合、ステップＳ６２４はスキップされ、BIO_vPU_ON判定のための部分的なSAD計算領域の判定処理は終了される。
【０３７０】
以上のような部分的にSAD計算を行ってのBIOの適用判定を行うような処理も、FRUCやDMVRに適用することは可能である。しかしながら、BIOのアーリーターミネーション目的とは異なり、FRUCやDMVRでは、SADまたは類似のコスト計算とその後の判定が、ダイレクトにインター予測精度に反映される。したがって、コスト計算を省略した場合のペナルティが大きくなる恐れがあるため、部分的にSAD計算を行い、BIOの適用判定を行うような処理は、BIO特有の処理といえる。
【０３７１】
＜２．第２の実施の形態（フラグによる動作の共有の例）＞
第２の実施の形態では、第１の実施の形態と同様に、PUがVPDUより大きい場合、PUが仮想的にvPUに分割され、vPU単位で処理が行われる。
【０３７２】
第１の実施の形態との違いとしては、第２の実施の形態においては、符号化装置１と復号装置１０１の間で送受信されるビットストリームに、BIO_PU_ONフラグを1ビット含ませることで、符号化装置１と復号装置１０１で動作を共有させることができる。
【０３７３】
＜インター予測部の動作例＞
図３０および図３１は、本技術の第２の実施の形態の動作例として、インター予測部５１が行うBIOを含むBi予測を説明するフローチャートである。
【０３７４】
図３０および図３１のステップＳ７０１乃至Ｓ７０８と、ステップＳ７１５乃至Ｓ７２８は、図１７および図１８のステップＳ４０１乃至Ｓ４０８と、ステップＳ４１２乃至Ｓ４２５と基本的に同様の処理を行うので、その説明は繰り返しになるので、適宜、省略される。
【０３７５】
図３０のステップＳ７０８において、BIOコスト計算部２０４は、vPU内の4×4単位に、L0予測ブロック生成部２０２から供給されるL0予測画像とL1予測ブロック生成部２０３から供給されるL1予測画像とのSADを計算する。4×4単位にSADを計算し、積み上げることで、SADの総和であるSAD_4×4ブロックが取得される。
【０３７６】
ステップＳ７０９において、インター予測制御部２０１は、vPU数が１であるか否かを判定する。
【０３７７】
ステップＳ７０９において、vPU数が１であると判定された場合、処理は、ステップＳ７１０に進む。ステップＳ７１０およびＳ７１１においては、PU単位と同様な処理が行われる。
【０３７８】
ステップＳ７１０において、BIOコスト計算部２０４は、BIOコスト計算部２０４は、vPU単位に、L0予測ブロック生成部２０２から供給されるL0予測画像とL1予測ブロック生成部２０３から供給されるL1予測画像とのSADを計算する。vPU単位にSADを計算し、積み上げることで、SADの総和であるSAD_PUが取得される。取得されたSAD_PUは、BIOコスト計算部２０４からBIO適用判定部２０５に供給される。
【０３７９】
ステップＳ７１１において、BIO適用判定部２０５は、BIO_PU_ONフラグを、BIOコスト計算部２０４から供給されるSAD_PU＞＝インター予測制御部２０１から供給されるBIO閾値_PUに基づいて決定する。その後、処理は、ステップＳ７１４に進む。
【０３８０】
ステップＳ７０９において、vPU番号が１ではないと判定された場合、処理は、ステップＳ７１２に進む。
【０３８１】
ステップＳ７１２において、インター予測制御部２０１は、vPU番号が０であるか否かを判定する。
【０３８２】
ステップＳ７０９において、vPU番号が０であると判定された場合、処理は、ステップＳ７１３に進む。
【０３８３】
ステップＳ７１３において、インター予測制御部２０１は、BIO_PU_ONを設定する。符号化装置１の場合、動き探索(ME)結果などから決定されたBIO_PU_ONが設定される。復号装置１０１の場合、ストリームから取得されたBIO_PU_ONが設定される。
【０３８４】
ステップＳ７１２において、vPU番号が０ではいと判定された場合、ステップＳ７１３をスキップし、処理は、図３１のステップＳ７１４に進む。
【０３８５】
ステップＳ７１４において、BIO_PU_ONフラグが1であるか否かが判定される。
【０３８６】
ステップＳ７１４において、BIO_PU_ONフラグが1ではないと判定された場合、PU全体に対してBIOの効果がないとして、処理は、ステップＳ７１５に進む。
【０３８７】
ステップＳ７１５において、Bi予測ブロック生成部２０６は、L0予測ブロック生成部２０２から供給されるL0予測画像とL1予測ブロック生成部２０３から供給されるL1予測画像とから、Bi予測ブロックvPUを生成する。生成されたBi予測ブロックvPUは、バッファに保存するとともに、Bi予測ブロック生成部２０６からBi予測ブロック選択部２０８に供給される。
【０３８８】
一方、ステップＳ７１４において、BIO_PU_ONフラグが1であると判定された場合、処理は、ステップＳ７１６に進む。
【０３８９】
ステップＳ７１６において、BIO処理を含むBi予測ブロック生成部２０７は、L0予測ブロック生成部２０２から供給されるL0予測ブロックとL1予測ブロック生成部２０３から供給されるL1予測ブロックとから、複数の勾配を計算する。
【０３９０】
以上のように、ビットストリームに、BIO_PU_ONフラグを含ませることにより、符号化装置１と復号装置１０１で動作を共有化することが可能となる。
【０３９１】
なお、ビットストリームにフラグを含ませることは、符号化効率の悪化が懸念されるので、BIO_PU_ONフラグは、すべてのレイヤーに含ませるのではなく、１ビットの価値が相対的に小さいPUがVPDUより大きい場合に限定する。PUがVPDUより大きい以外の場合のPUでは、図３０のステップＳ７０９乃至Ｓ７１３に示すように、第１の実施の形態の場合と同様に、PUでSAD値を計算して、BIO適用判定するようにする。
【０３９２】
BIO_PU_ONフラグがビットストリームに含まれる場合は、符号化装置１が自由に０または１にしてよい。符号化装置１が十分に高性能であれば、BIO_PU_ONフラグを０と１の両方で動き補償して、良好な結果が得られた方を決定するような判定方法もある。また、PUサイズに応じて128×128は、BIO_PU_ONフラグを０、それ以外は１に決めうちする判定方法でもよい。
【０３９３】
一方、復号装置１０１では、PUがVPDUより大きいBi予測モードのCUのPUレイヤーでBIO_PU_ONフラグが復号されているので、vPU番号が０のとき、ステップＳ７１３でBIO_PU_ONフラグを取得して、処理が進められる。vPU番号が１以降のvPUでは、BIO_PU_ONフラグが設定済みのため、処理は、ステップＳ７１３をスキップし、ステップＳ７１２から、ステップＳ７１４に進む。
【０３９４】
上述した第２の実施の形態と同様の手法をFRUCやDMVRに適用するのは、不可能ではないが、殆ど意味がない。なぜならば、MV補正のためのデータをビットストリームでもつのは、差分MV(MVD)を符号化することと同義であるからである。
【０３９５】
＜３．第３の実施の形態（sPUによる分割の例）＞
第３の実施の形態では、第１の実施の形態と仮想的な分割のサイズが異なり、PUがVPDUより大きい場合、PUが仮想的にsPUに分割され、sPU単位で処理が行われる。
【０３９６】
すなわち、SAD計算して、BIOの適用判定する処理単位は、VPDU境界を跨がすVPDUサイズ以下であればよいので、第３の実施の形態では、別途、与えられた情報でPUが複数のsPUに仮想的に分割され、sPU毎にBIOの適用判定が行われる。
【０３９７】
情報の与え方としては、BIO_MAX_SAD_BLOCK_SIZEのような変数をビットストリームに追加し含めることで、符号化装置１と復号装置１０１で共有する。
【０３９８】
図３２は、BIO_MAX_SAD_BLOCK_SIZEとsPUの対応関係を示す図である。
【０３９９】
BIO_MAX_SAD_BLOCK_SIZEが１の場合、sPUサイズは、8×8とされる。BIO_MAX_SAD_BLOCK_SIZEが２の場合、sPUサイズは、16×16とされる。BIO_MAX_SAD_BLOCK_SIZEが３の場合、sPUサイズは、32×32とされる。BIO_MAX_SAD_BLOCK_SIZEが４の場合、sPUサイズは、64×64とされる。
【０４００】
BIO_MAX_SAD_BLOCK_SIZEの値は、個々の符号化装置１の性能によって任意の値を設定してもよいし、規格として、Profile／Level制約として決めておいてもよい。扱うピクチャサイズに応じて、SD以下で0、HDで1、4Kで2、8kで3のようなLevel制約である。
【０４０１】
＜インター予測部の動作例＞
図３３および図３４は、本技術の第３の実施の形態の動作例として、インター予測部５１が行うBIOを含むBi予測を説明するフローチャートである。
【０４０２】
なお、図３３および図３４のステップＳ８０１乃至Ｓ８２５は、vPUが、サイズの異なるsPUと入れ替わっただけであり、図１７および図１８のステップＳ４０１乃至Ｓ４２５と基本的に同様の処理を行うので、その説明は繰り返しになるので、適宜、省略される。
【０４０３】
図３５および図３６は、BIO_MAX_SAD_BLOCK_SIZEを２とした場合の各PUのSADを計算する領域の例を示す図である。
【０４０４】
図３５の上側においては、CU(PU)128×128で、VPDU＝64×64で、BIO_MAX_SAD_BLOCK_SIZEを２（sPU=32×32）とした場合の各sPUのSADを計算する領域が示されている。図３５の上側の場合、sPUは、VPDUの境界を跨がず、PUを16分割している。
【０４０５】
図３５の下側においては、CU(PU)128×64で、VPDU＝64×64で、BIO_MAX_SAD_BLOCK_SIZEを２（sPU=32×32）とした場合の各sPUのSADを計算する領域が示されている。図３５の下側の場合、sPUは、VPDUの境界を跨がず、PUを8分割している。
【０４０６】
図３６の上側においては、CU(PU)64×128で、VPDU＝64×64で、BIO_MAX_SAD_BLOCK_SIZEを２（sPU=32×32）とした場合の各sPUのSADを計算する領域が示されている。図３６の上側の場合、sPUは、VPDUの境界を跨がず、PUを8分割している。
【０４０７】
図３６の下側においては、CU(PU)64×64以下で、VPDU＝64×64で、BIO_MAX_SAD_BLOCK_SIZEを2（sPU=32×32）とした場合の各sPUのSADを計算する領域が示されている。図３６の上側の場合、sPUは、VPDUの境界を跨がず、PUを4分割している。
【０４０８】
以上のように、本技術の第３の実施の形態においては、別途、与えられた情報でPUが複数のsPUに仮想的に分割され、sPU毎にBIOの適用判定が行われる。これにより、vPUの場合のバッファサイズより、バッファサイズをさらに小さくすることができる。
【０４０９】
＜４．第４の実施の形態（BIOの使用禁止の例）＞
第４の実施の形態では、PUがVPDUより大きい場合、BIOを使用しないように制約される。これにより、バッファサイズが削減可能である。
【０４１０】
＜インター予測部の動作例＞
図３７および図３８は、本技術の第４の実施の形態の動作例として、インター予測部５１が行うBIOを含むBi予測を説明するフローチャートである。
【０４１１】
図３７および図３８のステップＳ９０１乃至Ｓ９０７、およびＳ９２６は、図１７および図１８のステップＳ４０１乃至Ｓ４０７、およびＳ４２５と基本的に同様の処理を行うので、その説明は繰り返しになるので、適宜、省略される。また、図３７および図３８のステップＳ９０９乃至Ｓ９２５は、図１５および図１６のステップＳ３０４乃至Ｓ３２０と基本的に同様の処理を行うので、その説明は繰り返しになるので、適宜、省略される。
【０４１２】
ステップＳ９０７において、L1予測ブロック生成部２０３は、vPU番号の領域のL1予測ブロックを生成する。
【０４１３】
ステップＳ９０８において、インター予測制御部２０１は、１＜vPU数であるか否かを判定する。
【０４１４】
ステップＳ９０８において、１＜vPU数ではないと判定された場合、ステップＳ９０９に進む。vPU数が１である場合、すなわち、vPU=PUであり、ステップＳ９０９以降においては、図１５のステップＳ３０９以降の処理と同様の処理が行われる。
【０４１５】
ステップＳ９０８において、１＜vPU数であると判定された場合、図３８のステップＳ９１３に進む。
【０４１６】
また、ステップＳ９１２において、BIO_vPU_ONフラグが1ではないと判定された場合、vPU全体に対してBIOの効果がないとして、処理は、ステップＳ９１３に進む。
【０４１７】
ステップＳ９１３において、Bi予測ブロック生成部２０６は、L0予測ブロック生成部２０２から供給されるL0予測画像とL1予測ブロック生成部２０３から供給されるL1予測画像とから、Bi予測ブロックvPUを生成する。生成されたBi予測ブロックvPUは、バッファに保存するとともに、Bi予測ブロック生成部２０６からBi予測ブロック選択部２０８に供給される。
【０４１８】
以上のように、図３７および図３８においては、ステップＳ９０７乃至Ｓ９１３に、複数のvPUがあるか否か、すなわち、PUがVPDUより大きいか否かを判定する条件分岐ステップとして、ステップＳ９０８が追加されている。
【０４１９】
PUがVPDUより大きい場合は、ステップＳ９０８からステップＳ９１３の通常のBi予測に分岐されるので、BIOを使用しないため、PU全体でのSAD値を計算する必要がなく、図４と同様に、PUを仮想的なvPUに分割しての処理が可能となる。
【０４２０】
ステップＳ９０８からステップＳ９０９に分岐してからのステップＳ９０９乃至Ｓ９２５は、従来のBIOを含むBi予測（図１５および図１６のＳ３０４乃至Ｓ３２０）と同様の処理である。ただし、ステップＳ９０９に分岐するのは、PUがVPDU以下の場合であるので、PU全体でSAD計算する場合、VPDU以下のリソースがあれば十分足りる。
【０４２１】
＜５．第５の実施の形態（常時BIOの適用の例）＞
第５の実施の形態では、PUがVPDUより大きい場合、常時BIOを適用するようにすることで、バッファサイズを削減するようにした。
【０４２２】
＜インター予測部の動作例＞
図３９および図４０は、本技術の第５の実施の形態の動作例として、インター予測部５１が行うBIOを含むBi予測を説明するフローチャートである。
【０４２３】
図３９および図４０のステップＳ１００１乃至Ｓ１００８、およびＳ１０２６は、図１７および図１８のステップＳ４０１乃至Ｓ４０８、およびＳ４２５と基本的に同様の処理を行うので、その説明は繰り返しになるので、適宜、省略される。また、図３９および図４０のステップＳ１０１４乃至Ｓ１０２５は、図１５および図１６のステップＳ３０９乃至Ｓ３２０と基本的に同様の処理を行うので、その説明は繰り返しになるので、適宜、省略される。
【０４２４】
ステップＳ１００８において、BIOコスト計算部２０４は、vPU内の4×4単位に、L0予測ブロック生成部２０２から供給されるL0予測画像とL1予測ブロック生成部２０３から供給されるL1予測画像とのSADを計算する。4×4単位にSADを計算し、積み上げることで、SADの総和であるSAD_4×4ブロックが取得される。
【０４２５】
ステップＳ１００９において、インター予測制御部２０１は、１＜vPU数であるか否かを判定する。
【０４２６】
ステップＳ１００９において、１＜vPU数ではないと判定された場合、処理は、ステップＳ１０１０に進む。
【０４２７】
ステップＳ１０１０において、BIOコスト計算部２０４は、PU単位に、L0予測ブロック生成部２０２から供給されるL0予測画像とL1予測ブロック生成部２０３から供給されるL1予測画像とのSADを計算する。PU単位にSADを計算し、積み上げることで、SADの総和であるSAD_PUが取得される。取得されたSAD_PUは、BIOコスト計算部２０４からBIO適用判定部２０５に供給される。
【０４２８】
ステップＳ１０１１において、BIO適用判定部２０５は、BIO_PU_ONフラグを、BIOコスト計算部２０４から供給されるSAD_PU＞＝インター予測制御部２０１から供給されるBIO閾値_PUに基づいて決定する。
【０４２９】
ステップＳ１０１２において、BIO_PU_ONフラグが1であるか否かが判定される。
【０４３０】
ステップＳ１０１２において、BIO_PU_ONフラグが1ではないと判定された場合、vPU全体に対してBIOの効果がないとして、処理は、図４０のステップＳ１０１３に進む。
【０４３１】
ステップＳ１０１３において、Bi予測ブロック生成部２０６は、L0予測ブロック生成部２０２から供給されるL0予測画像とL1予測ブロック生成部２０３から供給されるL1予測画像とから、Bi予測ブロックvPUを生成する。生成されたBi予測ブロックvPUは、バッファに保存するとともに、Bi予測ブロック生成部２０６からBi予測ブロック選択部２０８に供給される。
【０４３２】
ステップＳ１０１２において、BIO_PU_ONフラグが1であると判定された場合、処理は、図４０のステップＳ１０１４に進む。
【０４３３】
また、ステップＳ１００９において、１＜vPU数であると判定された場合、ステップＳ１０１４に進む。
【０４３４】
ステップＳ１０１４以降においては、図１５のステップＳ３０９乃至Ｓ３２０と同様のBIO処理が行われる。
【０４３５】
以上のように、図３９および図４０においては、ステップＳ１００９において、複数のvPUがあるか否か、すなわち、PUがVPDUより大きいか否かを判定する条件分岐が追加される。
【０４３６】
PUがVPDUより大きい場合は、Ｓ１０１０乃至Ｓ１０１２のSAD計算から閾値判定までをバイパスして、ステップＳ１０１４以降のBIOを適用する処理に入るため、PU全体でSADの計算をする必要がなく、図４と同様に、PUを仮想的なvPUに分割しての処理が可能となる。
【０４３７】
ステップＳ１０１０乃至Ｓ１０１２に入るのは、PUがVPDU以下の場合のため、PU全体でSAD計算するにしてもVPDU以下のリソースがあれば十分足りる。
【０４３８】
なお、第５の実施の形態は、FRUCやDMVRに適用することはできない。BIOのSAD計算はアーリーターミネーション目的のため、第５の実施の形態のようにPUサイズのようなほかの判定基準にてコスト計算を回避することが可能である。FRUCやDMVRのコスト計算はMV補正の根幹処理であり、回避することが困難であるからである。
【０４３９】
以上、本技術によれば、BIOなどの双方向予測を行うか否かについての判定に用いるコストを計算する処理単位をVPDUサイズ相当の分割処理単位（例えば、vPU）またはVPDUサイズ以下の分割処理単位（例えば、sPU）に分割し、分割された処理単位に基づいて計算されたコストを用いて判定を行うようにした。これにより、バッファサイズを削減することができる。
【０４４０】
VVCでBIOを実施可能であるため、必要な各種バッファのサイズを、従来のバッファサイズの1/4に削減することができる。
【０４４１】
また、HW構成を最適化することも可能となり、一部のバッファを、従来の１/4より大幅に削減しつつ、BIOを実装することが可能となる。
【０４４２】
＜６．第６の実施の形態（コンピュータ）＞
＜コンピュータの構成例＞
上述した一連の処理は、ハードウェアにより実行することもできるし、ソフトウェアにより実行することもできる。一連の処理をソフトウェアにより実行する場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または汎用のパーソナルコンピュータなどに、プログラム記録媒体からインストールされる。
【０４４３】
図４１は、上述した一連の処理をプログラムにより実行するコンピュータのハードウェアの構成例を示すブロック図である。
【０４４４】
CPU(Central Processing Unit)３０１、ROM(Read Only Memory)３０２、RAM(Random Access Memory)３０３は、バス３０４により相互に接続されている。
【０４４５】
バス３０４には、さらに、入出力インタフェース３０５が接続されている。入出力インタフェース３０５には、キーボード、マウスなどよりなる入力部３０６、ディスプレイ、スピーカなどよりなる出力部３０７が接続される。また、入出力インタフェース３０５には、ハードディスクや不揮発性のメモリなどよりなる記憶部３０８、ネットワークインタフェースなどよりなる通信部３０９、リムーバブルメディア３１１を駆動するドライブ３１０が接続される。
【０４４６】
以上のように構成されるコンピュータでは、CPU３０１が、例えば、記憶部３０８に記憶されているプログラムを入出力インタフェース３０５及びバス３０４を介してRAM３０３にロードして実行することにより、上述した一連の処理が行われる。
【０４４７】
CPU３０１が実行するプログラムは、例えばリムーバブルメディア３１１に記録して、あるいは、ローカルエリアネットワーク、インターネット、デジタル放送といった、有線または無線の伝送媒体を介して提供され、記憶部３０８にインストールされる。
【０４４８】
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
【０４４９】
なお、本明細書において、システムとは、複数の構成要素（装置、モジュール（部品）等）の集合を意味し、すべての構成要素が同一筐体中にあるか否かは問わない。したがって、別個の筐体に収納され、ネットワークを介して接続されている複数の装置、及び、１つの筐体の中に複数のモジュールが収納されている１つの装置は、いずれも、システムである。
【０４５０】
なお、本明細書に記載された効果はあくまで例示であって限定されるものでは無く、また他の効果があってもよい。
【０４５１】
本技術の実施の形態は、上述した実施の形態に限定されるものではなく、本技術の要旨を逸脱しない範囲において種々の変更が可能である。
【０４５２】
例えば、本技術は、１つの機能をネットワークを介して複数の装置で分担、共同して処理するクラウドコンピューティングの構成をとることができる。
【０４５３】
また、上述のフローチャートで説明した各ステップは、１つの装置で実行する他、複数の装置で分担して実行することができる。
【０４５４】
さらに、１つのステップに複数の処理が含まれる場合には、その１つのステップに含まれる複数の処理は、１つの装置で実行する他、複数の装置で分担して実行することができる。
【０４５５】
＜構成の組み合わせ例＞
本技術は、以下のような構成をとることもできる。
（１）  双方向予測を行うか否かについての判定に用いるコストを計算する処理単位をVPDUサイズ相当、またはVPDUサイズ以下の分割処理単位に分割する制御部と、
前記分割処理単位に基づいて計算された前記コストを用いて前記判定を行う判定部と
を備える画像処理装置。
（２）  前記判定部は、前記分割処理単位毎に計算された前記コストを用いて前記判定を行う
前記（１）に記載の画像処理装置。
（３）  前記判定部は、最初の前記分割処理単位に対して計算された前記コストを用いて前記最初の前記分割処理単位の前記判定を行い、前記最初の前記分割処理単位の前記判定の結果を用いて他の前記分割処理単位の前記判定を行う
前記（１）に記載の画像処理装置。
（４）  前記判定部は、前記分割処理単位内の一部の領域に対して計算された前記コストを用いて前記分割処理単位毎の前記判定を行う
前記（１）に記載の画像処理装置。
（５）  前記判定部は、前記分割処理単位毎に対して設定された前記双方向予測を行うか否かを示すフラグに基づいて、前記分割処理単位毎の前記判定を行う
前記（１）に記載の画像処理装置。
（６）  前記双方向予測は、BIOを適用した前記双方向予測である
前記（１）乃至（５）のいずれかに記載の画像処理装置。
（７）  前記双方向予測は、FRUCまたはDMVRを適用した前記双方向予測である
前記（１）または（２）に記載の画像処理装置。
（８）  画像処理装置が、
双方向予測を行うか否かについての判定に用いるコストを計算する処理単位をVPDUサイズ相当、またはVPDUサイズ以下の分割処理単位に分割し、
前記分割処理単位に基づいて計算された前記コストを用いて前記判定を行う
画像処理方法。
【符号の説明】
【０４５６】
１  符号化装置，  ３６  可逆符号化部，  ４７  動き予測・補償部，  ５１  インター予測部，  １０１  復号装置，  １３２  可逆復号部，２０１  インター予測制御部，  ２０２  L0予測ブロック生成部，  ２０３  L1予測ブロック生成部，  ２０４  BIOコスト計算部，  ２０５  BIO適用判定部，  ２０６  Bi予測ブロック生成部，  ２０７  BIO処理を含むBi予測ブロック生成部，  ２０８  Bi予測ブロック選択部，  ２０９  予測ブロック選択部
【図１】
2020137643.tif 000003
【図２】
2020137643.tif 000004
【図３】
2020137643.tif 000005
【図４】
2020137643.tif 000006
【図５】
2020137643.tif 000007
【図６】
2020137643.tif 000008
【図７】
2020137643.tif 000009
【図８】
2020137643.tif 000010
【図９】
2020137643.tif 000011
【図１０】
2020137643.tif 000012
【図１１】
2020137643.tif 000013
【図１２】
2020137643.tif 000014
【図１３】
2020137643.tif 000015
【図１４】
2020137643.tif 000016
【図１５】
2020137643.tif 000017
【図１６】
2020137643.tif 000018
【図１７】
2020137643.tif 000019
【図１８】
2020137643.tif 000020
【図１９】
2020137643.tif 000021
【図２０】
2020137643.tif 000022
【図２１】
2020137643.tif 000023
【図２２】
2020137643.tif 000024
【図２３】
2020137643.tif 000025
【図２４】
2020137643.tif 000026
【図２５】
2020137643.tif 000027
【図２６】
2020137643.tif 000028
【図２７】
2020137643.tif 000029
【図２８】
2020137643.tif 000030
【図２９】
2020137643.tif 000031
【図３０】
2020137643.tif 000032
【図３１】
2020137643.tif 000033
【図３２】
2020137643.tif 000034
【図３３】
2020137643.tif 000035
【図３４】
2020137643.tif 000036
【図３５】
2020137643.tif 000037
【図３６】
2020137643.tif 000038
【図３７】
2020137643.tif 000039
【図３８】
2020137643.tif 000040
【図３９】
2020137643.tif 000041
【図４０】
2020137643.tif 000042
【図４１】
2020137643.tif 000043
【国際調査報告】
2020137643.tif 000044
2020137643.tif 000045
2020137643.tif 000046
2020137643.tif 000047
2020137643.tif 000048
2020137643.tif 000049