以下、各実施形態について添付の図面を参照しながら説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複した説明を省略する。
[第1の実施形態]
<1.エンコーダ及びデコーダの適用例>
はじめに、エンコーダ(符号化装置)及びデコーダ(復号装置)の適用例について説明する。図1は、エンコーダ及びデコーダの適用例を示す図である。
図1に示すように、エンコーダ110を送信装置に、デコーダ120を受信装置にそれぞれ配し、ネットワーク160を介して接続することで、エンコーダ110及びデコーダ120を適用した画像処理システム100を形成することができる。
画像処理システム100において、送信装置に配されたエンコーダ110は、入力された画像データを符号化することでデータストリーム(符号化列)を生成する。また、送信装置は生成されたデータストリームを、ネットワーク160を介して受信装置に送信する。
受信装置はデータストリームを受信する。また、受信装置に配されたデコーダ120は、データストリームを復号することで画像データを生成し、表示する。
かかる画像処理システム100を形成することで、画像データを送信する際の送信負荷を低減できるため、例えば、インタネット分野、放送分野、通信分野等の種々の分野に適用することができる。
適用例100aは、画像処理システム100をインタネット分野に適用した例を示している。適用例100aの場合、送信装置110の一例であるサーバ装置111より送信されたデータストリームを、受信装置110の一例であるパーソナルコンピュータ121a、スマート端末121b等が受信し、表示する。これにより、パーソナルコンピュータ121aやスマート端末121bのユーザは、サーバ装置111が保持する動画像データをインタネットを介して視聴することができる。
適用例100bは、画像処理システム100を放送分野に適用した例を示している。適用例100bの場合、送信装置110の一例である放送用送信機112より送信されたデータストリームを、受信装置110の一例であるテレビ122が受信し、表示する。これにより、例えば、テレビ122のユーザは、放送用送信機112が送信する放送内容を視聴することができる。
適用例100cは、画像処理システム100を通信分野に適用した例を示している。適用例100cの場合、送信装置110の一例であるテレビ電話機113より送信されたデータストリームを、受信装置110の一例であるテレビ電話機123が受信し、表示する。これにより、テレビ電話機123のユーザは、通話相手の顔を見ながら通話することができる。
図2は、エンコーダ及びデコーダの他の適用例を示す図である。図2に示すように、エンコーダ110とデコーダ120とを一体的に構成することで、エンコーダ110及びデコーダ120を適用した蓄積装置200を形成することができる。
蓄積装置200は、入力された画像データをエンコーダ110が符号化し、生成したデータストリームを記録媒体に格納する。また、蓄積装置200は、記録媒体に格納されたデータストリームを、デコーダ120が復号することで画像データを生成し、表示する。
かかる蓄積装置200を形成することで、画像データを格納する際の容量を低減できるため、例えば、蓄積分野に適用することができる。適用例200aは蓄積装置200を蓄積分野に適用した例を示している。適用例200aの場合、蓄積装置200の一例であるビデオレコーダ211は、内蔵するエンコーダ110が、画像データを符号化することで生成したデータストリームを記録媒体212に格納する。また、ビデオレコーダ211は、内蔵するデコーダ120が、記録媒体212より読み出したデータストリームを復号することで画像データを生成し、モニタ213に表示する。これにより、ビデオレコーダ211のユーザは、取得した動画像データを効率的に蓄積することができる。
<2.エンコーダ及びデコーダのハードウェア構成>
次に、エンコーダ及びデコーダのハードウェア構成について説明する。なお、エンコーダ110及びデコーダ120は、同様のハードウェア構成を有していることから、ここでは、エンコーダ110のハードウェア構成について説明する。
図3は、エンコーダのハードウェア構成の一例を示す図である。図3に示すように、エンコーダ110は、CPU(Central Processing Unit)301、ROM(Read Only Memory)302、RAM(Random Access Memory)303を有する。CPU301、ROM302、RAM303は、いわゆるコンピュータを形成する。また、エンコーダ110は、補助記憶装置304、入力装置305、表示装置306、接続装置307、ドライブ装置308を有する。なお、エンコーダ110の各ハードウェアは、バス309を介して相互に接続される。
CPU301は、補助記憶装置304にインストールされた各種プログラム(例えば、符号化プログラム等)を実行する。
ROM302は、不揮発性メモリである。ROM302は、補助記憶装置304にインストールされた各種プログラムをCPU301が実行するために必要な各種プログラム、データ等を記憶する、主記憶デバイスとして機能する。具体的には、ROM302はBIOS(Basic Input/Output System)やEFI(Extensible Firmware Interface)等のブートプログラム等を記憶する。
RAM303は、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)等の揮発性メモリである。RAM303は、補助記憶装置304にインストールされた各種プログラムがCPU301によって実行される際に展開される作業領域を提供する、主記憶デバイスとして機能する。
補助記憶装置304は、インストールされた各種プログラムや、各種プログラムを実行する際に用いる情報を記憶する補助記憶デバイスである。
入力装置305は、エンコーダ110に対して各種指示を入力する際に用いる入力デバイスである。
表示装置306は、エンコーダ110の内部情報を表示する表示デバイスである。接続装置307は、エンコーダ110が外部からの画像データを受け付けたり、エンコーダ110がデコーダ120と接続し、通信を行うための通信デバイスである。
ドライブ装置308はコンピュータ読み取り可能な記録媒体310をセットするためのデバイスである。ここでいう記録媒体310には、CD-ROM、フレキシブルディスク、光磁気ディスク等のように情報を光学的、電気的あるいは磁気的に記録する媒体が含まれる。あるいは、記録媒体310には、ROM、フラッシュメモリ等のように情報を電気的に記録する半導体メモリ等が含まれてもよい。
なお、補助記憶装置304にインストールされる各種プログラムは、例えば、配布された記録媒体310がドライブ装置308にセットされ、該記録媒体310に記録された各種プログラムがドライブ装置308により読み出されることでインストールされてもよい。あるいは、補助記憶装置304にインストールされる各種プログラムは、接続装置307を介してネットワーク160からダウンロードされることでインストールされてもよい。
なお、図3に示すハードウェア構成は、あくまで一例にすぎず、適用形態によっては、図3に示すハードウェアの一部を除外して、あるいは他のハードウェアに置き換えてもよいことはいうまでもない。
<3.エンコーダの機能構成>
次に、エンコーダ110の機能構成について説明する。図4は、エンコーダの機能構成の一例を示す図である。図4に示すように、エンコーダ110は、ブロック分割部401、直交変換部402、量子化部403、エントロピ符号化部404を有する。また、エンコーダ110は、逆量子化部405、逆直交変換部406、ループフィルタ部407、復号画像記憶部408、イントラ/インタ予測部409を有する。
ブロック分割部401は、入力された画像データに含まれる各画面(入力画面または入力フレームと称す)を取得する。また、ブロック分割部401は、入力画面(入力フレーム)をストリームで固定サイズのブロックに分割する。更に、ブロック分割部401は、固定サイズのブロックそれぞれを、更に再帰的に、符号化単位のブロックに分割する。なお、H.265/HEVCにおけるブロック分割部では、入力画面をストリームで固定サイズのブロックであるCTU(Coding Tree Unit)に分割する。また、H.265/HEVCにおけるブロック分割部では、各CTUのブロックを符号化単位のブロックであるCU(Coding Unit)に分割する。更に、H.265/HEVCにおけるブロック分割部では、各CUのブロックを予測ユニット(PU(Prediction Unit))と変換ユニット(TU(Transform Unit))のブロックに分割する。
しかしながら、H.265/HEVCに続く次世代コーデックの国際標準では、PU、TUを廃止し、全てCUのブロックに分割することが見込まれている。このため、本実施形態では、ブロック分割部401が、CTUのブロックを、全てCUのブロックに分割するものとして説明する。なお、H.265/HEVCに続く次世代コーデックにおいて検討されている内容によれば、CTUのブロックのサイズは、最大128画素×128画素であるので、以下では、CTUのブロックのサイズは、128画素×128画素として説明する。
ブロック分割部401によりCUのブロックに分割された画像データの各入力画面(入力フレーム)は、イントラ/インタ予測部409に通知されるとともに、予測残差信号の算出に用いられる。
直交変換部402は、入力画面の各CUのブロック内の入力画像と、対応する各CUのブロック内の予測画像との差分に基づいて算出された予測残差信号に対して直交変換処理を実行する。
量子化部403は、直交変換処理が実行された予測残差信号を量子化することで量子化信号を生成し、エントロピ符号化部404及び逆量子化部405に出力する。
エントロピ符号化部404は、量子化信号をエントロピ符号化することで、データストリームを生成し、出力する。
逆量子化部405は、量子化信号を逆量子化し、逆直交変換部406に出力する。逆直交変換部406は、逆量子化された量子化信号に対して逆直交変換処理を実行する。逆直交変換部406により得られた信号に対しては、例えば、イントラ/インタ予測部409が生成した予測画像が加算されることで復号画像が生成され、ループフィルタ部407に入力される。
ループフィルタ部407は、入力された復号画像の符号化ノイズを低減するフィルタ処理を行う。復号画像記憶部408は、ループフィルタ部407によりフィルタ処理された復号画像を画面ごと(フレームごと)に記憶する。
イントラ/インタ予測部409は、復号中の画面内の各CUのブロックの復号画像を用いて処理対象のCUのブロックの予測画像を生成するイントラ予測(画面内予測)を行う。また、イントラ/インタ予測部409は、参照画面内の各CUのブロックの復号画像を用いて画面間で動き補償を行い、処理対象のCUのブロックの予測画像を生成する動き補償インタ予測(画面間予測)を行う。
更に、イントラ/インタ予測部409は、イントラ予測により生成された各CUのブロックの予測画像であるイントラ予測画像または動き補償インタ予測により生成された各CUのブロックの予測画像であるインタ予測画像のいずれか一方を出力する。
イントラ/インタ予測部409より出力された各CUのブロックの予測画像は、入力画面内の各CUのブロックの入力画像との残差計算に用いられ、算出された予測残差信号は、直交変換部402に入力される。また、イントラ/インタ予測部409より出力された予測画像は、逆直交変換部406により得られた信号に加算され、復号画像としてループフィルタ部407に入力される。
<4.エンコーダのイントラ/インタ予測部の詳細>
続いて、エンコーダのイントラ/インタ予測部409における、テンプレートマッチングによるインタ予測処理の詳細について説明する。なお、以下では、まず、対比として次世代コーデックにおいて検討中のインタ予測モードにおける、テンプレートマッチングによるインタ予測処理について説明する(以下、<4.1>参照)。続いて、第1の実施形態に係るエンコーダのインタ予測モードにおける、テンプレートマッチングによるインタ予測処理について説明する(以下、<4.2>参照)。
<4.1 次世代コーデックにおいて検討中のインタ予測モードにおける、テンプレートマッチングによるインタ予測処理>
(1)復号対象の矩形領域(subCU)及びテンプレート領域の説明
はじめに、次世代コーデックにおいて検討中のインタ予測モードで、テンプレートマッチングによるインタ予測処理を行う場合の、復号対象の矩形領域及びテンプレート領域について説明する。図5は、次世代コーデックにおいて検討中のインタ予測モードにおける、復号対象の矩形領域及びテンプレート領域を説明するための図である。
図5に示すように、入力画面(入力フレーム)500のうち、128画素×128画素のCTU510が、CUのブロックに分割され、当該CUのブロックについて、テンプレートマッチングによるインタ予測処理が行われる。
なお、CTU510に示すように、CTUのブロックは、インタ予測の際、様々なブロックサイズのCUに分割される。図5に示す例では、正方形のCUのブロック(8×8、16×16、32×32、64×64。単位は全て[画素])に分割された場合が含まれる。更に、図5に示す例では、長方形のCUのブロック(4×8、8×4、8×16、16×8、16×32、32×16、32×64、64×32、64×128、128×64。単位は全て[画素])に分割された場合が含まれる。
CUのブロック520は、このうち、64画素×64画素に分割された正方形のブロックを拡大して示したものである。CUのブロック520に示すように、次世代コーデックにおいては、インタ予測モードにおいて、subCU530、540、550等の矩形領域が生成され、subCUを復号対象として、subCUごとに、順次、予測画像及び復号画像が生成される。
図5の例において、復号対象のsubCU530について、テンプレートマッチングによるインタ予測処理を行うことで予測画像及び復号画像を生成する場合、
・subCU530の上側に隣接するsubCU540と、
・subCU530の左側に隣接するsubCU550と、
が用いられる。つまり、subCU530についてテンプレートマッチングによるインタ予測処理を行うことで予測画像及び復号画像を生成するにあたっては、subCU540、550についての予測画像及び復号画像の生成が、いずれも完了していることが前提となる。
図5の例によれば、subCU540の復号画像の一部と、subCU550の復号画像の一部とが、テンプレート領域541、551として設定される。そして、設定されたテンプレート領域541、551の復号画像を用いて、テンプレートマッチングによるインタ予測処理が行われる。
(2)テンプレートマッチングの概要
続いて、次世代コーデックにおいて検討中のインタ予測モードにおける、テンプレートマッチングの概要について説明する。図6は、次世代コーデックにおいて検討中のインタ予測モードにおける、テンプレートマッチングの概要を示す図である。
図6において、画面620は、イントラ/インタ予測部409によって復号中の画面(フレーム)である。図6の例は、復号対象のsubCU530について、テンプレート領域541、551が設定された様子を示している。
また、図6において、画面610は、復号中の画面620において設定されたテンプレート領域とのマッチングが行われる参照画面(復号中の画面620とは時間的に異なる復号画面)である。
図6の例は、設定されたテンプレート領域541、551(第1のテンプレート領域)に相当する画面610内の領域として、テンプレート領域615、616(第2のテンプレート領域)が設定された様子を示している。
また、図6の例は、テンプレート領域615、616が、画面610内で所定のベクトル分移動(ベクトル614分移動)されることで、テンプレート領域612、613(第3のテンプレート領域)が設定された様子を示している。
更に、図6の例は、テンプレート領域612、613とテンプレート領域541、551との間で算出された画像の相関値(マッチング度)が最大であったことにより、ベクトル614が、復号対象のsubCU530の動きベクトルとして決定された様子を示している。
このように、復号対象のsubCU530に隣接するsubCUの復号画像の一部をテンプレート領域541、551として設定し、画面610内においてマッチングを行うことで、動き補償インタ予測に用いられる動きベクトル614を決定することができる。
(3)イントラ/インタ予測部の機能構成(エンコーダ)
続いて、次世代コーデックにおいて検討中のインタ予測モードで、テンプレートマッチングによるインタ予測処理を実現するための機能構成(エンコーダ)について説明する。図7は、次世代コーデックにおいて検討中のインタ予測モードで、テンプレートマッチングによるインタ予測処理を実現するための機能構成の一例を示す図である。
図7に示すように、次世代コーデックにおいて検討中のインタ予測モードの場合、イントラ/インタ予測部409は、動き探索処理部701、コスト判定部702、テンプレート領域設定部703、復号中画面取得部704を有する。また、イントラ/インタ予測部409は、参照画面取得部705、マッチング部706、動きベクトル算出部707、予測画像生成部708、動きベクトル格納部709、テンプレート探索点設定部710を有する。
動き探索処理部701は、ブロック分割部401より、入力画面(入力フレーム)のCTUのうち、所定のCTUを分割することで得られるCUのブロックであって、処理対象のCU(復号対象のsubCUが含まれるCU)のブロックの入力画像を取得する。
また、動き探索処理部701は、復号画像記憶部408に記憶された復号画面の中から、参照画面取得部705により参照画面として読み出された復号画面を取得する。更に、動き探索処理部701は、処理対象のCUのブロックの入力画像について、参照画面に対する非テンプレートマッチング処理(テンプレートマッチング処理以外の一般的な探索処理)を実行する。これにより、動き探索処理部701は、CUレベルの非テンプレートマッチングにおける動きベクトルと、非テンプレートマッチングにおけるコストとを算出し、コスト判定部702に通知する。
コスト判定部702は、動き探索処理部701より通知される、CUレベルの非テンプレートマッチングにおける動きベクトルと、非テンプレートマッチングにおけるコストとを取得する。また、コスト判定部702は、後述する動きベクトル算出部707より通知される、CUレベルのテンプレートマッチングにおける動きベクトルと、テンプレートマッチングにおけるコストとを取得する。
更に、コスト判定部702は、取得したコストを比較することで、CUの予測モードを決定し、インタ予測結果情報として出力する。また、コスト判定部702は、CUの予測モードを、非テンプレートマッチングの動きベクトルを利用するモードに決定した場合にあっては、当該動きベクトルを、CUレベルの動きベクトルとして、予測画像生成部708に通知する。また、コスト判定部702は、決定したCUの予測モードを予測画像生成部708に通知する。
一方、CUの予測モードを、テンプレートマッチングの動きベクトルを利用するモードに決定した場合にあっては、コスト判定部702は、決定したCUの予測モードを予測画像生成部708に通知する。なお、以下では、説明の簡略化のため、CUの予測モードがテンプレートマッチングの動きベクトルを利用するモードに決定されるものとして説明する。
テンプレート領域設定部703は、CUレベルの動き探索にあっては、復号中画面取得部704が取得した復号中の画面において、復号対象のCUのブロックに対して、CUレベルのテンプレート領域を設定する。また、テンプレート領域設定部703は、subCUレベルの動き探索にあっては、復号中画面取得部704が取得した復号中の画面において、復号対象のsubCUに対して、subCUレベルのテンプレート領域を設定する。
更に、テンプレート領域設定部703は、CUレベルの動き探索にあっては、参照画面取得部705が取得した参照画面内において、復号対象のCUのブロックについて設定されたCUレベルのテンプレート領域に相当するテンプレート領域を設定する。また、テンプレート領域設定部703は、subCUレベルの動き探索にあっては、参照画面取得部705が取得した参照画面内において、復号対象のsubCUについて設定されたsubCUレベルのテンプレート領域に相当するテンプレート領域を設定する。
復号中画面取得部704は取得手段の一例である。復号中画面取得部704は、復号画像記憶部408より、復号中の画面を読み出す。また、復号中画面取得部704は、CUレベルの動き探索にあっては、復号対象のCUのブロックについて、テンプレート領域設定部703により設定されたCUレベルのテンプレート領域の復号画像を、マッチング部706に通知する。
更に、復号中画面取得部704は、subCUレベルの動き探索にあっては、復号対象のsubCUについて、テンプレート領域設定部703により設定されたsubCUレベルのテンプレート領域の復号画像を、マッチング部706に通知する。
参照画面取得部705は第2の設定手段の一例である。参照画面取得部705は、復号画像記憶部408に記憶された復号画面のうち、所定の復号画面(時間的に異なる復号画面)を参照画面として読み出す。また、参照画面取得部705は、読み出した参照画面を動き探索処理部701に通知する。
また、参照画面取得部705は、読み出した参照画面内において、テンプレート探索点設定部710により設定されたCUレベルのテンプレート領域の参照画像を抽出する。
なお、テンプレート探索点設定部710では、テンプレート領域設定部703により設定された参照画面内のCUレベルのテンプレート領域に対して、CUレベルの複数の動きベクトル候補に応じた位置それぞれに、テンプレート領域を設定する。そして、参照画面取得部705は、複数の動きベクトル候補に応じた位置に設定されたCUレベルのテンプレート領域の参照画像を抽出して、マッチング部706に通知する。
また、テンプレート探索点設定部710では、CUレベルの1の動きベクトル候補に対して、CUレベルのテンプレート探索点用動きベクトルに応じた位置それぞれにテンプレート領域を設定する。CUレベルのテンプレート探索点用動きベクトルとは、CUレベルの基点となる1の動きベクトル候補の周辺位置の動きベクトルである。そして、参照画面取得部705は、テンプレート探索点用動きベクトルに応じた位置に設定されたCUレベルのテンプレート領域の参照画像を抽出して、マッチング部706に通知する。
また、参照画面取得部705は、テンプレート探索点設定部710により設定されたCUレベルの1のテンプレート探索点用動きベクトル(決定されたCUレベルの1の動きベクトル)に応じた位置のCUのブロックを、参照画面内において特定する。
また、参照画面取得部705は、特定した参照画面内のCUのブロックから、テンプレート探索点設定部710により設定されたsubCUレベルのテンプレート領域の参照画像を抽出する。
なお、テンプレート探索点設定部710は、特定した参照画面内のCUのブロックにおいて、テンプレート領域設定部703により設定されたsubCUレベルのテンプレート領域に対して、subCUレベルの複数の動きベクトル候補に応じた位置それぞれに、テンプレート領域を設定する。そして、参照画面取得部705は、複数の動きベクトル候補に応じた位置に設定されたsubCUレベルのテンプレート領域の参照画像を抽出して、マッチング部706に通知する。
また、テンプレート探索点設定部710では、subCUレベルの1の動きベクトル候補に対して、subCUレベルのテンプレート探索点用動きベクトルに応じた位置それぞれにテンプレート領域を設定する。subCUレベルのテンプレート探索点用動きベクトルとは、subCUレベルの基点となる1の動きベクトル候補の周辺位置の複数の動きベクトルである。そして、参照画面取得部705は、テンプレート探索点用動きベクトルに応じた位置に設定されたsubCUレベルのテンプレート領域の参照画像を抽出して、マッチング部706に通知する。
マッチング部706は、CUレベルの動き探索にあっては、復号中画面取得部704より通知された、CUレベルのテンプレート領域の復号画像と、参照画面取得部705より通知された、CUレベルのテンプレート領域の参照画像とのマッチング度を算出する。
なお、参照画面取得部705より通知されるCUレベルのテンプレート領域の参照画像には、CUレベルの複数の動きベクトル候補に基づいて抽出された参照画像と、CUレベルのテンプレート探索点用動きベクトルに基づいて抽出された参照画像とが含まれる。マッチング部706では、算出したそれぞれのマッチング度を動きベクトル算出部707に通知する。
また、マッチング部706は、subCUレベルの動き探索にあっては、subCUレベルのテンプレート領域の復号画像と、subCUレベルのテンプレート領域の参照画像とのマッチング度を算出する。
なお、subCUレベルのテンプレート領域の復号画像は、復号中画面取得部704より通知される。また、subCUレベルのテンプレート領域の参照画像は、参照画面取得部705より通知される。参照画面取得部705より通知されるsubCUレベルのテンプレート領域の参照画像には、subCUレベルの複数の動きベクトル候補に基づいて抽出された参照画像と、subCUレベルのテンプレート探索点用動きベクトルに基づいて抽出された参照画像とが含まれる。マッチング部706では、算出したそれぞれのマッチング度を動きベクトル算出部707に通知する。
動きベクトル算出部707は、マッチング部706より通知されたマッチング度のうち、CUレベルの複数の動きベクトル候補に応じた位置に設定されたテンプレート領域の参照画像とのマッチング度の中から、最大のマッチング度を特定する。
また、動きベクトル算出部707は、特定した最大のマッチング度に対応する、CUレベルの動きベクトル候補を、CUレベルの基点となる1の動きベクトル候補として、動きベクトル格納部709に格納する。
また、動きベクトル算出部707は、CUレベルの基点となる1の動きベクトル候補を動きベクトル格納部709に格納したことに応じて、マッチング部706より通知されたCUレベルのマッチング度を取得する。このとき動きベクトル算出部707が取得するマッチング度は、CUレベルのテンプレート探索点用動きベクトル(CUレベルの基点となる1の動きベクトル候補の周辺の複数の動きベクトル)に応じた位置に設定されたテンプレート領域の参照画像とのマッチング度である。
更に、動きベクトル算出部707は、取得したマッチング度に基づいて、CUレベルのテンプレートマッチングにおける動きベクトルを決定し、決定したCUレベルの動きベクトルを動きベクトル格納部709に格納する。
また、動きベクトル算出部707は、決定したCUレベルの動きベクトルによるテンプレートマッチングにおけるコストを算出する。また、動きベクトル算出部707は、決定したCUレベルの動きベクトルとコストとをコスト判定部702に通知する。
また、動きベクトル算出部707は、決定したCUレベルの動きベクトルを動きベクトル格納部709に格納したことに応じて、マッチング部706より通知されたsubCUレベルのマッチング度を取得する。また、動きベクトル算出部707は、取得したマッチング度のうち、subCUレベルの複数の動きベクトル候補に応じた位置に設定されたテンプレート領域の参照画像とのマッチング度の中から、最大のマッチング度を特定する。
また、動きベクトル算出部707は、特定した最大のマッチング度に対応する、subCUレベルの1の動きベクトル候補を、subCUレベルの基点となる1の動きベクトル候補として、動きベクトル格納部709に格納する。
また、動きベクトル算出部707は、subCUレベルの基点となる1の動きベクトル候補を動きベクトル格納部709に格納したことに応じて、マッチング部706より通知されたsubCUレベルのマッチング度を取得する。このとき動きベクトル算出部707が取得するマッチング度は、subCUレベルのテンプレート探索点用動きベクトル(subCUレベルの基点となる1の動きベクトル候補の周辺の複数の動きベクトル)に応じた位置に設定されたテンプレート領域の参照画像とのマッチング度である。更に、動きベクトル算出部707は、取得したマッチング度に基づいて、subCUレベルのテンプレートマッチングにおける動きベクトルを決定し、予測画像生成部708に通知する。
予測画像生成部708は生成手段の一例である。予測画像生成部708は、コスト判定部702より、CUの予測モードとして、非テンプレートマッチングの動きベクトルを利用するモードが通知された場合、コスト判定部702より、非テンプレートマッチングの動きベクトルを取得する。この場合、予測画像生成部708は、参照画面取得部705より通知された参照画面内において、非テンプレートマッチングの動きベクトルに対応する参照画像を特定する。また、予測画像生成部708は、特定した参照画像を用いて予測画像を生成することで動き補償インタ予測を行う。更に、予測画像生成部708は、生成したCUのブロックの予測画像を、インタ予測画像として出力する。
一方、コスト判定部702より、CUの予測モードとして、テンプレートマッチングの動きベクトルを利用するモードが通知された場合、予測画像生成部708は、動きベクトル算出部707より順次通知される、決定されたsubCUレベルの動きベクトルを取得する。
また、予測画像生成部708は、参照画面取得部705より通知された参照画面内において、動きベクトル算出部707より順次通知された、決定されたsubCUレベルの動きベクトルに対応する参照画像を特定し、復号対象のsubCUの予測画像として、順次、出力する。更に、予測画像生成部708は、特定した各参照画像を用いてCUのブロックの予測画像を生成する。更に、予測画像生成部708は、生成したCUのブロックの予測画像を、インタ予測画像として出力する。
動きベクトル格納部709は、CUレベルの基点となる1の動きベクトル候補を格納する。また、動きベクトル格納部709は、決定したCUレベルの動きベクトルを格納する。また、動きベクトル格納部709は、subCUレベルの基点となる1の動きベクトル候補を格納する。
テンプレート探索点設定部710は、テンプレート領域設定部703により設定された参照画面内のCUレベルのテンプレート領域に対して、CUレベルの複数の動きベクトル候補に応じた位置それぞれに、テンプレート領域を設定する。
また、テンプレート探索点設定部710は、動きベクトル格納部709に格納された、CUレベルの基点となる1の動きベクトル候補に基づいて、CUレベルのテンプレート探索点用動きベクトルを決定する。また、テンプレート探索点設定部710は、参照画面内において、CUレベルのテンプレート探索点用動きベクトルに応じた位置それぞれに、テンプレート領域を設定する。
また、テンプレート探索点設定部710は、特定された参照画面内のCUのブロックにおいて、テンプレート領域設定部703により設定されたsubCUレベルのテンプレート領域に対して、subCUレベルの複数の動きベクトル候補に応じた位置それぞれに、テンプレート領域を設定する。
また、テンプレート探索点設定部710は、動きベクトル格納部709に格納された、subCUレベルの基点となる1の動きベクトル候補に基づいて、subCUレベルのテンプレート探索点用動きベクトルを決定する。また、テンプレート探索点設定部710は、参照画面内において、subCUレベルのテンプレート探索点用動きベクトルに応じた位置それぞれに、テンプレート領域を設定する。
(4)インタ予測処理の流れ
続いて、次世代コーデックにおいて検討中のインタ予測モードにおける、テンプレートマッチングによるインタ予測処理の流れについて説明する。図8は、次世代コーデックにおいて検討中のインタ予測モードにおける、テンプレートマッチングによるインタ予測処理の流れを示すフローチャートである。
ステップS801において、イントラ/インタ予測部409は、CUレベルの動き探索処理を実行し、CUレベルの動きベクトルを決定する。
ステップS802において、イントラ/インタ予測部409は、ステップS801において決定したCUレベルの動きベクトルに基づいて、subCUレベルの動き探索処理を実行し、subCUレベルの動きベクトルを決定する。以下、ステップS801、S802の詳細について説明する。
・CUレベルの動き探索処理の流れ(ステップS801)
図9は、ステップS801を詳細化した、CUレベルの動き探索処理の流れを示すフローチャートである。
ステップS901において、テンプレート領域設定部703は、復号中の画面内において、復号対象のCUのブロックに対して、CUレベルのテンプレート領域を設定する。
ステップS902において、テンプレート探索点設定部710は、参照画面内において、CUレベルの複数の動きベクトル候補に応じた位置それぞれにテンプレート領域を設定する。
ステップS903において、マッチング部706は、ステップS901において設定されたCUレベルのテンプレート領域の復号画像と、ステップS902において設定されたCUレベルのテンプレート領域の参照画像とのマッチング度を算出する。また、動きベクトル算出部707は、算出されたマッチング度のうち、最大のマッチング度を特定する。更に、動きベクトル算出部707は、特定した最大のマッチング度に対応する、CUレベルの動きベクトル候補を、CUレベルの基点となる1の動きベクトル候補に決定する。
ステップS904において、テンプレート探索点設定部710は、CUレベルの基点となる1の動きベクトル候補に対して、CUレベルのテンプレート探索点用動きベクトルに応じた位置それぞれにテンプレート領域を設定する。
ステップS905において、マッチング部706は、ステップS901において設定されたCUレベルのテンプレート領域の復号画像と、CUレベルのテンプレート探索点用動きベクトルに応じた位置に設定されたテンプレート領域の参照画像とのマッチング度を算出する。
ステップS906において、動きベクトル算出部707は、算出されたマッチング度に基づいて、CUレベルのテンプレートマッチングにおける動きベクトルを決定する。これにより、参照画面取得部705では、決定されたCUレベルの1の動きベクトルに応じた位置のCUのブロック(復号対象のCUのブロックに対応する、参照画面内のCUのブロック)を特定することができる。
・subCUレベルの動き探索処理の流れ(ステップS802)
図10は、ステップS802を詳細化した、subCUレベルの動き探索処理の流れを示すフローチャートである。
ステップS1001において、テンプレート領域設定部703は、復号中の画面内において、復号対象のsubCUに対して、subCUレベルのテンプレート領域を設定する。
ステップS1002において、テンプレート探索点設定部710は、参照画面取得部705により特定された参照画面内のCUのブロックにおいて、subCUレベルの複数の動きベクトル候補に応じた位置それぞれにテンプレート領域を設定する。
ステップS1003において、マッチング部706は、ステップS1001において設定されたsubCUレベルのテンプレート領域の復号画像と、ステップS1002において設定されたsubCUレベルのテンプレート領域の参照画像とのマッチング度を算出する。また、動きベクトル算出部707は、算出されたマッチング度のうち、最大のマッチング度を特定する。更に、動きベクトル算出部707は、特定した最大のマッチング度に対応する、subCUレベルの動きベクトル候補を、subCUレベルの基点となる1の動きベクトル候補に決定する。
ステップS1004において、テンプレート探索点設定部710は、subCUレベルの基点となる1の動きベクトル候補に対して、subCUレベルのテンプレート探索点用動きベクトルに応じた位置それぞれにテンプレート領域を設定する。
ステップS1005において、マッチング部706は、ステップS1001において設定されたsubCUレベルのテンプレート領域の復号画像と、subCUレベルのテンプレート探索点用動きベクトルに応じた位置に設定されたテンプレート領域の参照画像とのマッチング度を算出する。
ステップS1006において、動きベクトル算出部707は、算出されたマッチング度に基づいて、subCUレベルのテンプレートマッチングにおける動きベクトルを決定する。
ステップS1007において、予測画像生成部708は、決定されたsubCUレベルの動きベクトルに対応する参照画像を特定し、復号対象のsubCUの予測画像として出力する。更に、予測画像生成部708は、特定した各参照画像を用いてCUのブロックの予測画像を生成し、インタ予測画像として出力する。
なお、予測画像生成部708により出力されたsubCUの予測画像は、逆直交変換部406より得られた信号に加算され、subCUの復号画像としてループフィルタ部407に入力される。
ステップS1008において、復号中画面取得部704は、復号中の画面内の処理対象のCUに含まれる全てのsubCUについて、予測画像を出力したか否かを判定する。ステップS1008において、予測画像を出力していないsubCUがあると判定した場合には(ステップS1008においてNOの場合には)、ステップS1001に戻る。一方、ステップS1008において、復号中の画面内の処理対象のCUに含まれる全てのsubCUについて予測画像を出力したと判定した場合には(ステップS1008においてYESの場合には)、subCUレベルの動き探索処理を終了する。
(5)subCUごとの処理のタイミングチャート
続いて、次世代コーデックにおいて検討中のインタ予測モードにおける、subCUごとの処理内容及び処理タイミングについて説明する。図11は、次世代コーデックにおいて検討中のインタ予測モードにおける、subCUごとの処理内容及び処理タイミングを示す図である。
このうち、図11(a)は、復号対象の各subCUが含まれるCUのブロックの一例を示している。図11(a)の例は、復号対象のsubCUが含まれるCUのブロックが"CUn"であり、当該CUのブロックには、4つのsubCU("sub0"、"sub1"、"sub2"、"sub3")が含まれることを示している。また、図11(a)の例は、"CUn"に隣接する上側のCUのブロック及び左側のCUのブロックについては、いずれも、復号画像が生成されていることを示している。更に、図11(a)の例は、当該隣接するCUのブロックの復号画像の一部が、テンプレート領域1101~1112として設定されていることを示している。
図11(b)は、"CUn"に含まれる4つのsubCUについて、イントラ/インタ予測部409が処理を実行する際の処理タイミングを示した図である。図11(b)の例では、イントラ/インタ予測部409が実行する処理を、
・CUレベルの動きベクトル候補の設定と基点となる1の動きベクトル候補の決定、
・CUレベルの動きベクトルの決定、
・subCUレベルの動きベクトル候補の設定と基点となる1の動きベクトル候補の決定、
・subCUレベルの動きベクトルの決定、
・subCUレベルの予測画像の生成、
・subCUレベルの復号画像の取得、
に分けて示している。なお、図11(b)の例では、紙面の都合上、処理タイミング="Tm"~"Tm+6"までを示している。
図11(b)に示すように、はじめに、処理タイミング="Tm"において、"CUn"について、CUレベルの動きベクトル候補に応じた位置それぞれにテンプレート領域が設定され、CUレベルの基点となる1の動きベクトル候補が決定される。続いて、処理タイミング="Tm+1"において、"CUn"について、CUレベルの動きベクトルが決定される。
続いて、処理タイミング"Tm+2"において、"subCU0"について、subCUレベルの動きベクトル候補に応じた位置それぞれにテンプレート領域が設定され、subCUレベルの基点となる1の動きベクトル候補が決定される。続いて、処理タイミング="Tm+3"において、"subCU0"について、subCUレベルの動きベクトルが決定される。なお、"subCU0"の動きベクトルの決定に際しては、テンプレート領域1101、1111の復号画像が用いられる。
続いて、処理タイミング="Tm+4"において、"subCU0"について予測画像が生成され、予測画像が出力される。更に、予測画像が出力されたことで復号画像が生成され、処理タイミング="Tm+5"において、"subCU0"について生成された復号画像が取得される。
subCU0についての復号画像が取得されると、"subCU1"について、subCUレベルの動きベクトルを決定する際に用いられるテンプレート領域1131を設定することが可能となる。
そこで、処理タイミング="Tm+5"において、"subCU0"について決定されたsubCUレベルの動きベクトルに対して、"subCU1"について、subCUレベルの動きベクトル候補に応じた位置それぞれにテンプレート領域が設定され、subCUレベルの基点となる1の動きベクトル候補が決定される。その後、処理タイミング="Tm+6"において、"subCU1"について、subCUレベルの動きベクトルが決定される。なお、"subCU1"の動きベクトルの決定に際しては、テンプレート領域1102、1131の復号画像が用いられる。
このように、次世代コーデックにおいて検討中のインタ予測モードの場合、復号対象のsubCUに隣接する上側及び左側のsubCUの復号画像が生成されていることが、subCUレベルの動きベクトルを決定する際の前提となる(図11(b)の点線矢印参照)。このため、次世代コーデックのエンコーダにおいて検討中のインタ予測モードは、処理効率が高いとはいえない。
<4.2 第1の実施形態に係るエンコーダのインタ予測モードにおける、テンプレートマッチングによるインタ予測処理>
次に、第1の実施形態に係るエンコーダのインタ予測モードにおける、テンプレートマッチングによるインタ予測処理について説明する。
(1)復号対象の矩形領域(subCU)及びテンプレート領域の説明
はじめに、第1の実施形態に係るエンコーダのインタ予測モードにおいて、テンプレートマッチングによるインタ予測処理を行う場合の、復号対象の矩形領域及びテンプレート領域について説明する。図12は、第1の実施形態に係るエンコーダのインタ予測モードにおける、復号対象の矩形領域及びテンプレート領域を説明するための図である。
図5を用いて説明したとおり、第1の実施形態に係るエンコーダにおいても、入力画面(入力フレーム)500のうち、128画素×128画素のCTU510が、CUのブロックに分割される。また、当該CUのブロックについて、テンプレートマッチングによるインタ予測が行われる(図12参照)。
CUのブロック520は、このうち、64画素×64画素に分割された正方形のブロックを拡大して示したものである。図5を用いて説明したとおり、次世代コーデックにおいては、インタ予測モードにおいて、subCU530、540、550等の矩形領域が生成され、subCUを復号対象として、subCUごとに、予測画像及び復号画像が生成される。
ただし、第1の実施形態に係るエンコーダの場合、複数のsubCUの予測画像及び復号画像の生成を、並列して行う。このために、第1の実施形態に係るエンコーダでは、所定のブロックに隣接するブロックの一部を、テンプレート領域として設定する。所定のブロックとは、復号対象の複数のsubCUを含む復号単位のブロックであり、図12の例では、CUのブロック520を指す。
例えば、復号対象のsubCUがsubCU530であった場合、テンプレートマッチングを行う時点で、
・復号対象のsubCU530が含まれるCUのブロック520の上側に隣接するCUのブロック、及び、
・復号対象のsubCU530が含まれるCUのブロック520の左側に隣接するCUのブロック
は、いずれも、予測画像及び復号画像の生成が完了している。そこで、第1の実施形態に係るエンコーダでは、上側と左側に隣接するCUのブロックの一部をテンプレート領域1202、1213として設定し、復号対象のsubCU530について、テンプレートマッチングを行う。
同様に、例えば、復号対象のsubCUがsubCU540であった場合、テンプレートマッチングを行う時点で、
・復号対象のsubCU540が含まれるCUのブロック520の上側に隣接するCUのブロック、及び、
・復号対象のsubCU540が含まれるCUのブロック520の左側に隣接するCUのブロック
は、いずれも、予測画像及び復号画像の生成が完了している。そこで、第1の実施形態に係るエンコーダでは、上側と左側に隣接するCUのブロックの一部をテンプレート領域1202、1212として設定し、復号対象のsubCU540について、テンプレートマッチングを行う。つまり、subCU530とsubCU540とは、並列してテンプレートマッチングを行うことができる(なお、subCU550等についても同様である)。
このように、復号対象のsubCUが含まれる復号単位(CU)のブロックの上側及び左側のCUのブロックの一部をテンプレート領域として設定することで、複数のsubCUについて、テンプレートマッチングを並列して実行することが可能となる。
(2)テンプレートマッチングの概要
続いて、第1の実施形態に係るエンコーダのインタ予測モードにおける、テンプレートマッチングについて概要を説明する。図13は、第1の実施形態に係るエンコーダのインタ予測モードにおける、テンプレートマッチングの概要を示す図である。
図13において、画面620は、イントラ/インタ予測部409によって復号中の画面(フレーム)である。図13の例は、復号対象のsubCU530について、テンプレート領域1202、1213が設定された様子を示している。
また、図13において、画面610は、復号中の画面620において設定されたテンプレート領域とのマッチングが行われる参照画面(復号中の画面620とは時間的に異なる復号画面)である。
図13の例は、設定されたテンプレート領域1202、1213(第1のテンプレート領域)に相当する画面610内の領域として、テンプレート領域1321、1322(第2のテンプレート領域)が設定された様子を示している。
また、図13の例は、テンプレート領域1321、1322が、画面610内で所定のベクトル分移動(ベクトル614分移動)されることで、テンプレート領域1311、1312(第3のテンプレート領域)が設定された様子を示している。
更に、図13の例は、テンプレート領域1311、1312とテンプレート領域1202、1213との間で算出された画像のマッチング度が最大であったことで、ベクトル614が、復号対象のsubCU530の動きベクトルとして決定された様子を示している。
このように、復号対象のsubCU530が含まれるCUのブロックに隣接するCUのブロックの復号画像の一部をテンプレート領域1202、1213として設定し、画面610内においてマッチングを行うことで、動き補償インタ予測に用いる動きベクトル614を決定することができる。
(3)イントラ/インタ予測部の機能構成(エンコーダ)
続いて、第1の実施形態に係るエンコーダのインタ予測モードで、テンプレートマッチングによるインタ予測処理を実現するための機能構成について説明する。図14は、第1の実施形態に係るエンコーダのインタ予測モードで、テンプレートマッチングによるインタ予測処理を実現するための機能構成の一例を示す図である。
図7との相違点は、図14の場合、テンプレート領域判定部1401、テンプレート領域選択部1402を有する点である。以下、図7との相違点を中心に説明する。
テンプレート領域判定部1401は、復号対象のsubCUが所定の実行条件を満たすか否かを判定する。また、テンプレート領域判定部1401は、所定の実行条件を満たすか否かの判定結果を、テンプレート領域設定部703に通知する。
なお、テンプレート領域設定部703では、テンプレート領域判定部1401より、所定の実行条件を満たさない旨の判定結果が通知された場合、復号中画面取得部704に対して、図5を用いて説明したテンプレート領域を設定する。具体的には、復号対象のsubCUに隣接する上側のsubCUの復号画像の一部と、左側のsubCUの復号画像の一部とを、テンプレート領域として設定する。この場合、復号中画面取得部704は、復号中の画面に含まれる復号画像のうち、テンプレート領域設定部703により設定されたテンプレート領域の復号画像(隣接するsubCUの復号画像の一部)をテンプレート領域選択部1402に通知する。
一方、テンプレート領域判定部1401より、所定の実行条件を満たす旨の判定結果が通知された場合には、テンプレート領域設定部703は、復号中画面取得部704に対して、図12を用いて説明したテンプレート領域を設定する。
具体的には、テンプレート領域設定部703は、復号対象のsubCUが含まれるCUのブロックを特定し、特定したCUのブロックの上側及び左側に隣接するCUのブロックの復号画像の一部を、テンプレート領域として設定する。この場合、復号中画面取得部704は、復号中の画面に含まれる復号画像のうち、テンプレート領域設定部703により設定されたテンプレート領域の復号画像(隣接するCUのブロックの復号画像の一部)をテンプレート領域選択部1402に通知する。
テンプレート領域選択部1402は、所定の実行条件を満たさない旨の判定結果が通知されると、復号中画面取得部704より通知されたテンプレート領域の復号画像(隣接するsubCUの復号画像の一部)を選択する。また、テンプレート領域選択部1402は、選択したテンプレート領域の復号画像を、マッチング部706に通知する。これにより、マッチング部706では、復号対象のsubCUについて、テンプレート領域判定部1401より通知された判定結果に応じたテンプレート領域の復号画像を用いて、参照画面内においてテンプレートマッチングを行うことができる。
また、テンプレート領域選択部1402は、所定の実行条件を満たす旨の判定結果が通知されると、復号中画面取得部704より通知されたテンプレート領域の復号画像(隣接するCUのブロックの復号画像の一部)を選択する。また、テンプレート領域選択部1402は、選択したテンプレート領域の復号画像を、マッチング部706に通知する。これにより、マッチング部706では、復号対象のsubCUについて、テンプレート領域判定部1401より通知された判定結果に応じたテンプレート領域の復号画像を用いて、参照画面内においてテンプレートマッチングを行うことができる。
(4)実行条件情報
続いて、復号対象のsubCUについてテンプレートマッチングが実行される際に、テンプレート領域判定部1401が判定するテンプレートマッチングの実行条件について説明する。図15は、第1の実施形態に係るエンコーダのインタ予測モードにおける、テンプレートマッチングの実行条件を示す図である。
図15に示すように、実行条件情報1500は、情報の項目として、"実行条件の判定項目"、"判定項目の閾値"、"判定理由"を含む。
"実行条件の判定項目"には、復号対象のsubCUについて、実行条件を満たすか否かを判定するための判定項目が格納される。
"判定項目の閾値"には、"実行条件の判定項目"に格納された各判定項目について、実行条件を満たすと判定するための閾値が格納される。"判定理由"には、実行条件を満たすと判定する理由が格納される。
図15の例は、"実行条件の判定項目"として、"subCUのサイズ"が含まれ、復号対象のsubCUのサイズが所定の閾値以下("8画素×8画素以下")であった場合には、実行条件を満たすと判定することを示している。subCUのサイズが小さい場合、隣接するsubCUについて予測画像及び復号画像の生成が完了しないかぎり、次のsubCUの処理に進めないとすると、エンコーダの処理効率が低下するからである。
そこで、第1の実施形態に係るエンコーダでは、所定のサイズ以下のsubCUが復号対象であった場合には、当該subCUが含まれるCUのブロックに隣接するCUのブロックの復号画像の一部をテンプレート領域として設定する。これにより、第1の実施形態に係るエンコーダでは、複数のsubCUについてテンプレートマッチングを並列に行う並列処理を実現することができる。
また、図15の例は、"実行条件の判定項目"として、"ピクチャタイプ"が含まれ、復号対象のsubCUのピクチャタイプが"非参照画面であること"に該当する場合に、実行条件を満たすと判定することを示している。ピクチャタイプが非参照画面であった場合には、テンプレートマッチングにおいて、他の復号中の画面によって参照される画面に該当しない。これは、復号対象のsubCUから離れた領域をテンプレート領域にすることで、符号化誤差が増加しても、その復号画面は参照されないため、符号化誤差自体は累積されない、ということを考慮したものである。
そこで、第1の実施形態に係るエンコーダでは、非参照画面のsubCUが復号対象であった場合には、当該subCUが含まれるCUのブロックに隣接するCUのブロックの復号画像の一部をテンプレート領域として設定する。これにより、第1の実施形態に係るエンコーダでは、複数のsubCUについてテンプレートマッチングを並列に行う並列処理を実現することができる。
このように、実行条件情報1500に定義された実行条件を満たす場合に、並列処理を実行することで、画質に影響を与えることなく、処理効率を向上させることが可能となる。
(5)インタ予測処理の流れ(subCUレベルの動き探索処理の流れ)
続いて、第1の実施形態に係るエンコーダのインタ予測モードにおける、テンプレートマッチングによるインタ予測処理の流れについて説明する。なお、第1の実施形態に係るエンコーダのインタ予測モードにおける、テンプレートマッチングによるインタ予測処理の全体の流れは、図8と同じであるため、ここでは説明を省略する。
また、第1の実施形態に係るエンコーダのインタ予測モードの場合、図8の各工程のうち、図9において詳細を説明した、図8のステップS801(CUレベルの動き探索処理)の流れも同じである。このため、ここでは説明を省略し、図8の各工程のうちステップS802(subCUレベルの動き探索処理)について説明する。
図16は、第1の実施形態に係るエンコーダのインタ予測モードにおける、subCUレベルの動き探索処理の流れを示すフローチャートである。図10との相違点は、ステップS1601からステップS1603である。
ステップS1601において、テンプレート領域判定部1401は、復号対象のsubCUが実行条件情報1500に示す実行条件を満たすか否かを判定する。ステップS1601において、実行条件を満たすと判定した場合には(ステップS1601においてYESの場合には)、ステップS1602に進む。
ステップS1602において、テンプレート領域設定部703は、復号対象のsubCUが含まれるCUのブロックに隣接するCUのブロックの復号画像の一部を、テンプレート領域として設定する。
一方、ステップS1601において、実行条件を満たさないと判定した場合には(ステップS1601においてNOの場合には)、ステップS1603に進む。ステップS1603において、テンプレート領域設定部703は、復号対象のsubCUに隣接するsubCUの復号画像の一部を、テンプレート領域として設定する。
(6)subCUごとの処理のタイミングチャート
続いて、第1の実施形態に係るエンコーダのインタ予測モードにおける、subCUごとの処理内容及び処理タイミングについて説明する。図17は、第1の実施形態に係るエンコーダのインタ予測モードにおける、subCUごとの処理内容及び処理タイミングを示す図である。
このうち、図17(a)は、復号対象の各subCUが含まれるCUのブロックの一例を示している。図17(a)の例は、復号対象のsubCUが含まれるCUのブロックが"CUn"であり、当該CUのブロックには、4つのsubCU("sub0"、"sub1"、"sub2"、"sub3")の領域が含まれることを示している。また、図17(a)の例は、"CUn"に隣接する上側のCUのブロック及び左側のCUのブロックについては、いずれも、復号画像が生成されていることを示している。また、図17(a)の例は、当該隣接するCUのブロックの復号画像の一部が、テンプレート領域1101~1112として設定されていることを示している。
図17(b)は、"CUn"に含まれる4つのsubCUについて、イントラ/インタ予測部409が処理を実行する際の処理タイミングを示した図である。図11(b)同様、図17(b)の例では、イントラ/インタ予測部409が実行する処理を、
・CUレベルの動きベクトル候補の設定と基点となる1の動きベクトル候補の決定、
・CUレベルの動きベクトルの決定、
・subCUレベルの動きベクトル候補の設定と基点となる1の動きベクトル候補の決定、
・subCUレベルの動きベクトルの決定、
・subCUレベルの予測画像の生成、
・subCUレベルの復号画像の取得、
に分けて示している。なお、図11(b)の例では、紙面の都合上、処理タイミング="Tm"~"Tm+7"までを示している。また、ここでは、復号対象のsubCUが、実行条件情報1500に定義された実行条件を満たしているものとして説明する。
図17(b)に示すように、処理タイミング="Tm"において、"CUn"について、CUレベルの動きベクトル候補に応じた位置それぞれにテンプレート領域が設定され、CUレベルの基点となる1の動きベクトル候補が決定される。続いて、処理タイミング="Tm+1"において、"CUn"について、CUレベルの動きベクトルが決定される。
続いて、処理タイミング"Tm+2"において、"subCU0"~"subCU3"について、subCUレベルの動きベクトル候補に応じた位置それぞれにテンプレート領域が設定され、subCUレベルの基点となる1の動きベクトル候補の決定が並列に実行される。続いて、処理タイミング="Tm+3"において、"subCU0"~"subCU3"について、subCUレベルの動きベクトルの決定が並列に実行される。
なお、"subCU0"についてのsubCUレベルの動きベクトルは、テンプレート領域1101、1111の復号画像を用いたテンプレートマッチングにより決定される。また、"subCU1"についてのsubCUレベルの動きベクトルは、テンプレート領域1102、1111の復号画像を用いたテンプレートマッチングにより決定される。また、"subCU2"についてのsubCUレベルの動きベクトルは、テンプレート領域1101、1112の復号画像を用いたテンプレートマッチングにより決定される。更に、"subCU3"についてのsubCUレベルの動きベクトルは、テンプレート領域1102、1112の復号画像を用いたテンプレートマッチングにより決定される。
"subCU0"~"subCU3"それぞれのsubCUレベルの動きベクトルが決定されると、"CUn"の次のCUのブロックである、"CUn+1"についての処理に移行し、CUレベルの動きベクトル候補の設定と基点となる1の動きベクトル候補の決定とが行われる。
具体的には、まず、処理タイミング="Tm+4"において、"CUn+1"について、CUレベルの動きベクトル候補に応じた位置それぞれにテンプレート領域が設定され、CUレベルの基点となる1の動きベクトル候補が決定される。続いて、処理タイミング="Tm+5"において、"CUn+1"について、CUレベルの動きベクトルが決定される。
また、処理タイミング="Tm+4"では、並行して、"subCU0"~"subCU3"の予測画像が生成され、出力される。"subCU0"~"subCU3"それぞれについては、既にsubCUレベルの動きベクトルが決定されているため、予測画像の生成を並列に実行することができる。
更に、予測画像が出力されることで、復号画像が生成され、処理タイミング="Tm+5"において、"subCU0"~"subCU3"それぞれについて生成された復号画像が取得される。"subCU0"~"subCU3"それぞれについては、既に予測画像が出力されているため、復号画像の取得を並列に実行することができる。
"subCU0"~"subCU3"それぞれの復号画像が取得されると、"CUn"の次のCUのブロックである、"CUn+1"に含まれるsubCUについて、動きベクトルを決定することが可能となる。
そこで、まず、処理タイミング="Tm+6"において、"CUn+1"についてのCUレベルの動きベクトル候補に応じた位置それぞれにテンプレート領域が設定され、subCUレベルの基点となる1の動きベクトル候補が決定される。その後、処理タイミング="Tm+7"において、"subCU0"~"subCU3"について、subCUレベルの動きベクトルの決定が並列に実行される。
このように、第1の実施形態に係るエンコーダによれば、複数のsubCUについての並列処理が実行可能となるため、処理効率を向上させることができる。この結果、処理タイミング="Tm"~"Tm+5"の間に、"CUn"に含まれる4つのsubCUについて復号画像を生成することができる。
(7)並列処理の具体例(その1)
続いて、第1の実施形態に係るエンコーダのインタ予測モードにおいて、複数のsubCUについて実行される並列処理の具体例について説明する。図18は、第1の実施形態に係るエンコーダのインタ予測モードにおける、並列処理の具体例を示す第1の図である。図18の例は、128画素×128画素のCTU510を分割することで生成された、8画素×8画素のCUのブロック1800に含まれるsubCUについて実行される並列処理を示している(subCUのサイズが4画素×4画素であるため、並列処理が実行される)。
図18の例では、CUのブロック1800を4つのsubCUに分けている。また、図18の例では、4つのsubCUそれぞれについて、CUのブロック1800の上側及び左側に隣接するCUのブロックの復号画像の一部を、テンプレート領域1801、1802、1811、1812として設定している。これにより、CUのブロック1800に含まれる4つのsubCUについて並列処理を実行することが可能となる。
(8)並列処理の具体例(その2)
図19は、第1の実施形態に係るエンコーダのインタ予測モードにおける、並列処理の具体例を示す第2の図である。図19の例は、128画素×128画素のCTU510を分割することで生成された、64画素×64画素のCUのブロック1900に含まれるsubCUについて実行される並列処理を示している(ピクチャタイプが非参照画像であることで並列処理が実行されるものとする)。
図19の例では、CUのブロック1900を16個のsubCUに分けている。また、図19の例では、16個のsubCUそれぞれについて、CUのブロック1900の上側及び左側に隣接するCUのブロックの復号画像の一部を、テンプレート領域1901~1904、1911~1914として設定している。これにより、CUのブロック1900に含まれる16個のsubCUについて並列処理を実行することが可能となる。
(9)並列処理の具体例(その3)
図20は、第1の実施形態に係るエンコーダのインタ予測モードにおける、並列処理の具体例を示す第3の図である。図20の例は、128画素×128画素のCTU510を分割することで生成された、8画素×4画素のCUのブロック2001~2004を処理する場合を示している。
図20の例では、CUのブロック2001~2004それぞれを、2つのsubCUに分けている。このため、subCUのサイズが4画素×4画素となり、2つのsubCUについて並列処理が実行される。
符号2010は、CUのブロック2001~2004に含まれる各subCUについて、テンプレート領域を設定していく様子を時系列で示したものであり、下から上に向かって時間軸が進むことを示している。
符号2010に示すように、CUのブロック2001に含まれる2つのsubCUそれぞれについて、CUのブロック2001の上側及び左側に隣接するCUの復号画像の一部が、テンプレート領域2011、2012、2021として設定される。これにより、CUのブロック2001に含まれる2つのsubCUについて並列処理を実行することが可能となる。
CUのブロック2001に含まれる2つのsubCUが並列処理されることで、当該subCUについて復号画像が生成されると、続いて、CUのブロック2002の処理に移行する。具体的には、CUのブロック2002に含まれる2つのsubCUについて、CUのブロック2002の上側及び左側に隣接するCUのブロック(CUのブロック2001)の復号画像の一部が、テンプレート領域2013、2014、2022として設定される。これにより、CUのブロック2002に含まれる2つのsubCUについて並列処理を実行することが可能となる。
CUのブロック2002に含まれる2つのsubCUが並列処理されることで、当該subCUについて復号画像が生成されると、続いて、CUのブロック2003の処理に移行する。具体的には、CUのブロック2003に含まれる2つのsubCUについて、CUのブロック2003の上側及び左側に隣接するCUのブロック(CUのブロック2002)の復号画像の一部が、テンプレート領域2015、2016、2023として設定される。これにより、CUのブロック2003に含まれる2つのsubCUについて並列処理を実行することが可能となる。
CUのブロック2003に含まれる2つのsubCUが並列処理されることで、当該subCUについて復号画像が生成されると、続いて、CUのブロック2004の処理に移行する。具体的には、CUのブロック2004に含まれる2つのsubCUについて、CUのブロック2004の上側及び左側に隣接するCUのブロック(CUのブロック2003)の復号画像の一部が、テンプレート領域2017、2018、2024として設定される。これにより、CUのブロック2004に含まれる2つのsubCUについて並列処理を実行することが可能となる。
<5.デコーダの機能構成>
次に、復号プログラムを実行することで実現される、デコーダ120の機能構成について説明する。図21は、デコーダの機能構成の一例を示す図である。図21に示すように、デコーダ120は、エントロピ復号部2101、逆量子化部2102、逆直交変換部2103、ループフィルタ部2104、復号画像記憶部2105、イントラ/インタ予測部2106を有する。
エントロピ復号部2101は、受信したデータストリームを復号し、量子化信号を出力する。また、エントロピ復号部2101は、データストリームより付帯情報を抽出し、イントラ/インタ予測部2106に通知する。
逆量子化部2102は、量子化信号を逆量子化し、逆直交変換部2103に出力する。逆直交変換部2103は、逆量子化された量子化信号に対して逆直交変換処理を実行することで、予測残差信号を得る。
逆直交変換部2103により得られた予測残差信号には、例えば、イントラ/インタ予測部2106が各CUのブロックについて生成した予測画像が加算される。これにより、各CUのブロックの復号画像が生成され、ループフィルタ部2104に入力される。
ループフィルタ部2104は、入力された復号画像の符号化ノイズを低減するフィルタ処理を行う。
また、ループフィルタ部2104は、フィルタ処理した復号画像を復号結果として出力するとともに、復号画像記憶部2105に記憶する。
イントラ/インタ予測部2106は、復号中の画面内の復号画像を用いて予測画像を生成するイントラ予測(画面内予測)を行う。また、イントラ/インタ予測部2106は、参照画面内の復号画像を用いて画面間で動き補償を行い、予測画像を生成する動き補償インタ予測(画面間予測)を行う。
更に、イントラ/インタ予測部2106は、イントラ予測により生成された予測画像または動き補償インタ予測により生成された予測画像のいずれか一方を出力する。出力された予測画像は、逆直交変換部2103により得られた予測残差信号に加算されることで復号画像が生成され、ループフィルタ部2104に入力される。
<6.デコーダのイントラ/インタ予測部の詳細>
続いて、デコーダのイントラ/インタ予測部2106における、テンプレートマッチングによるインタ予測処理の詳細について説明する。なお、デコーダの場合も、以下では、まず、対比として次世代コーデックにおいて検討中のインタ予測モードにおける、テンプレートマッチングによるインタ予測処理について説明する(以下、<6.1>参照)。続いて、第1の実施形態に係るデコーダのインタ予測モードにおける、テンプレートマッチングによるインタ予測処理について説明する(以下、<6.2>参照)。
<6.1 次世代コーデックにおいて検討中のインタ予測モードで、テンプレートマッチングによるインタ予測処理を実現するためのイントラ/インタ予測部の機能構成(デコーダ)>
図22は、次世代コーデックにおいて検討中のインタ予測モードで、テンプレートマッチングによるインタ予測処理を実現するための機能構成(デコーダ)の一例を示す図である。
図22に示すように、次世代コーデックのデコーダにおいて検討中のインタ予測モードの場合、イントラ/インタ予測部2106は、テンプレート領域設定部2201、復号中画面取得部2202、参照画面取得部2203を有する。また、イントラ/インタ予測部2106は、マッチング部2204、動きベクトル算出部2205、予測画像生成部2207、動きベクトル格納部2208、テンプレート探索点設定部2209を有する。
テンプレート領域設定部2201は第1の設定手段の一例である。テンプレート領域設定部2201は、CUレベルの動き探索にあっては、復号中画面取得部2202が取得した復号中の画面において、復号対象のCUのブロックに対して、CUレベルのテンプレート領域を設定する。また、テンプレート領域設定部2201は、subCUレベルの動き探索にあっては、復号中画面取得部2202が取得した復号中の画面において、復号対象のsubCUに対して、subCUレベルのテンプレート領域を設定する。
更に、テンプレート領域設定部2201は、CUレベルの動き探索にあっては、参照画面取得部2203が取得した参照画面内において、復号対象のCUのブロックについて設定されたCUレベルのテンプレート領域に相当するテンプレート領域を設定する。また、テンプレート領域設定部2201は、subCUレベルの動き探索にあっては、参照画面取得部2203が取得した参照画面内において、復号対象のsubCUについて設定されたsubCUレベルのテンプレート領域に相当するテンプレート領域を設定する。
復号中画面取得部2202は取得手段の一例である。復号中画面取得部2202は、復号画像記憶部2105より、復号中の画面を読み出す。また、復号中画面取得部2202は、CUレベルの動き探索にあっては、復号対象のCUのブロックについて、テンプレート領域設定部2201により設定されたCUレベルのテンプレート領域の復号画像を、マッチング部2204に通知する。
更に、復号中画面取得部2202は、subCUレベルの動き探索にあっては、復号対象のsubCUについて、テンプレート領域設定部2201により設定されたsubCUレベルのテンプレート領域の復号画像を、マッチング部2204に通知する。
参照画面取得部2203は第2の設定手段の一例である。参照画面取得部2203は、復号画像記憶部2105に記憶された復号画面のうち、所定の復号画面(時間的に異なる復号画面)を参照画面として読み出す。
また、参照画面取得部2203は、読み出した参照画面内において、テンプレート探索点設定部2209により設定されたCUレベルのテンプレート領域の参照画像を抽出する。
なお、テンプレート探索点設定部2209では、テンプレート領域設定部2201により設定された参照画面内のCUレベルのテンプレート領域に対して、CUレベルの複数の動きベクトル候補に応じた位置それぞれに、テンプレート領域を設定する。そして、参照画面取得部2203は、複数の動きベクトル候補に応じた位置に設定されたCUレベルのテンプレート領域の参照画像を抽出して、マッチング部2204に通知する。
また、テンプレート探索点設定部2209では、CUレベルの1の動きベクトル候補に対して、CUレベルのテンプレート探索点用動きベクトルに応じた位置それぞれにテンプレート領域を設定する。CUレベルのテンプレート探索点用動きベクトルとは、CUレベルの基点となる1の動きベクトル候補の周辺位置の動きベクトルである。そして、参照画面取得部2203は、テンプレート探索点用動きベクトルに応じた位置に設定されたCUレベルのテンプレート領域の参照画像を抽出して、マッチング部2204に通知する。
また、参照画面取得部2203は、テンプレート探索点設定部2209により設定されたCUレベルの1のテンプレート探索点用動きベクトル(決定されたCUレベルの1の動きベクトル)に応じた位置のCUのブロックを、参照画面内において特定する。
また、参照画面取得部2203は、特定した参照画面内のCUのブロックから、テンプレート探索点設定部2209により設定されたsubCUレベルのテンプレート領域の参照画像を抽出する。
なお、テンプレート探索点設定部2209は、特定した参照画面内のCUのブロックにおいて、テンプレート領域設定部2201により設定されたsubCUレベルのテンプレート領域に対して、subCUレベルの複数の動きベクトル候補に応じた位置それぞれに、テンプレート領域を設定する。そして、参照画面取得部2203は、複数の動きベクトル候補に応じた位置に設定されたsubCUレベルのテンプレート領域の参照画像を抽出して、マッチング部2204に通知する。
また、テンプレート探索点設定部2209では、subCUレベルの1の動きベクトル候補に対して、subCUレベルのテンプレート探索点用動きベクトルに応じた位置それぞれにテンプレート領域を設定する。subCUレベルのテンプレート探索点用動きベクトルとは、subCUレベルの基点となる1の動きベクトル候補の周辺位置の複数の動きベクトルである。そして、参照画面取得部2203は、テンプレート探索点用動きベクトルに応じた位置に設定されたsubCUレベルのテンプレート領域の参照画像を抽出して、マッチング部2204に通知する。
マッチング部2204は算出手段の一例である。マッチング部2204は、CUレベルの動き探索にあっては、復号中画面取得部2202より通知された、CUレベルのテンプレート領域の復号画像と、参照画面取得部2203より通知された、CUレベルのテンプレート領域の参照画像とのマッチング度を算出する。
なお、参照画面取得部2203より通知されるCUレベルのテンプレート領域の参照画像には、CUレベルの複数の動きベクトル候補に基づいて抽出された参照画像と、CUレベルのテンプレート探索点用動きベクトルに基づいて抽出された参照画像とが含まれる。マッチング部2204では、算出したそれぞれのマッチング度を動きベクトル算出部2205に通知する。
また、マッチング部2204は、subCUレベルの動き探索にあっては、subCUレベルのテンプレート領域の復号画像と、subCUレベルのテンプレート領域の参照画像とのマッチング度を算出する。
なお、subCUレベルのテンプレート領域の復号画像は、復号中画面取得部2202より通知される。また、subCUレベルのテンプレート領域の参照画像は、参照画面取得部2203より通知される。参照画面取得部2203より通知されるsubCUレベルのテンプレート領域の参照画像には、subCUレベルの複数の動きベクトル候補に基づいて抽出された参照画像と、subCUレベルのテンプレート探索点用動きベクトルに基づいて抽出された参照画像とが含まれる。マッチング部2204では、算出したそれぞれのマッチング度を動きベクトル算出部2205に通知する。
動きベクトル算出部2205は決定手段の一例である。動きベクトル算出部2205は、マッチング部2204より通知されたマッチング度のうち、CUレベルの複数の動きベクトル候補に応じた位置に設定されたテンプレート領域の参照画像とのマッチング度の中から、最大のマッチング度を特定する。
また、動きベクトル算出部2205は、特定した最大のマッチング度に対応する、CUレベルの動きベクトル候補を、CUレベルの基点となる1の動きベクトル候補として、動きベクトル格納部2208に格納する。
また、動きベクトル算出部2205は、CUレベルの基点となる1の動きベクトル候補を動きベクトル格納部2208に格納したことに応じて、マッチング部2204より通知されたCUレベルのマッチング度を取得する。このとき動きベクトル算出部2205が取得するマッチング度は、CUレベルのテンプレート探索点用動きベクトル(CUレベルの基点となる1の動きベクトル候補の周辺の複数の動きベクトル)に応じた位置に設定されたテンプレート領域の参照画像とのマッチング度である。
更に、動きベクトル算出部2205は、取得したマッチング度に基づいて、CUレベルのテンプレートマッチングにおける動きベクトルを決定し、決定したCUレベルの動きベクトルを動きベクトル格納部2208に格納する。
また、動きベクトル算出部2205は、決定したCUレベルの動きベクトルを動きベクトル格納部2208に格納したことに応じて、マッチング部2204より通知されたsubCUレベルのマッチング度を取得する。また、動きベクトル算出部2205は、取得したマッチング度のうち、subCUレベルの複数の動きベクトル候補に応じた位置に設定されたテンプレート領域の参照画像とのマッチング度の中から、最大のマッチング度を特定する。
また、動きベクトル算出部2205は、特定した最大のマッチング度に対応する、subCUレベルの1の動きベクトル候補を、subCUレベルの基点となる1の動きベクトル候補として、動きベクトル格納部2208に格納する。
また、動きベクトル算出部2205は、subCUレベルの基点となる1の動きベクトル候補を動きベクトル格納部2208に格納したことに応じて、マッチング部2204より通知されたsubCUレベルのマッチング度を取得する。このとき動きベクトル算出部2205が取得するマッチング度は、subCUレベルのテンプレート探索点用動きベクトル(subCUレベルの基点となる1の動きベクトル候補の周辺の複数の動きベクトル)に応じた位置に設定されたテンプレート領域の参照画像とのマッチング度である。更に、動きベクトル算出部2205は、取得したマッチング度に基づいて、subCUレベルのテンプレートマッチングにおける動きベクトルを決定し、予測画像生成部2207に通知する。
予測画像生成部2207は生成手段の一例である。予測画像生成部2207は、参照画面取得部2203より通知された参照画面内において、動きベクトル算出部2205より順次通知された、決定されたsubCUレベルの動きベクトルに対応する参照画像を特定する。更に、予測画像生成部2207は、特定した各参照画像を用いてsubCUの予測画像を生成し、出力する。
動きベクトル格納部2208は、CUレベルの基点となる1の動きベクトル候補を格納する。また、動きベクトル格納部2208は、決定したCUレベルの動きベクトルを格納する。また、動きベクトル格納部2208は、subCUレベルの基点となる1の動きベクトル候補を格納する。
テンプレート探索点設定部2209は、テンプレート領域設定部2201により設定された参照画面内のCUレベルのテンプレート領域に対して、CUレベルの複数の動きベクトル候補に応じた位置それぞれに、テンプレート領域を設定する。
また、テンプレート探索点設定部2209は、動きベクトル格納部2208に格納された、CUレベルの基点となる1の動きベクトル候補に基づいて、CUレベルのテンプレート探索点用動きベクトルを決定する。また、テンプレート探索点設定部2209は、参照画面内において、CUレベルのテンプレート探索点用動きベクトルに応じた位置それぞれに、テンプレート領域を設定する。
また、テンプレート探索点設定部2209は、特定された参照画面内のCUのブロックにおいて、テンプレート領域設定部2201により設定されたsubCUレベルのテンプレート領域に対して、subCUレベルの複数の動きベクトル候補に応じた位置それぞれに、テンプレート領域を設定する。
また、テンプレート探索点設定部2209は、動きベクトル格納部2208に格納された、subCUレベルの基点となる1の動きベクトル候補に基づいて、subCUレベルのテンプレート探索点用動きベクトルを決定する。また、テンプレート探索点設定部2209は、参照画面内において、subCUレベルのテンプレート探索点用動きベクトルに応じた位置それぞれに、テンプレート領域を設定する。
<6.2 第1の実施形態に係るデコーダのインタ予測モードで、テンプレートマッチングによるインタ予測処理を実現するためのイントラ/インタ予測部の機能構成>
続いて、第1の実施形態に係るデコーダのインタ予測モードで、テンプレートマッチングによるインタ予測処理を実現するための機能構成について説明する。図23は、第1の実施形態に係るデコーダのインタ予測モードで、テンプレートマッチングによるインタ予測処理を実現するための機能構成の一例を示す図である。
図22との相違点は、図23の場合、テンプレート領域判定部2301、テンプレート領域選択部2302を有する点である。以下、図22との相違点を中心に説明する。
テンプレート領域判定部2301は、復号対象のsubCUが所定の実行条件を満たすか否かを判定する。また、テンプレート領域判定部2301は、所定の実行条件を満たすか否かの判定結果を、テンプレート領域設定部2201に通知する。
なお、テンプレート領域設定部2201では、テンプレート領域判定部2301より、所定の実行条件を満たさない旨の判定結果が通知された場合、復号中画面取得部2202に対して、図5を用いて説明したテンプレート領域を設定する。具体的には、復号対象のsubCUに隣接する上側のsubCUの復号画像の一部と、左側のsubCUの復号画像の一部を、テンプレート領域として設定する。この場合、復号中画面取得部2202は、復号中の画面に含まれる復号画像のうち、テンプレート領域設定部2201により設定されたテンプレート領域の復号画像(隣接するsubCUの復号画像の一部)をテンプレート領域選択部2302に通知する。
一方、テンプレート領域判定部2301より、所定の実行条件を満たす旨の判定結果が通知された場合には、テンプレート領域設定部2201は、復号中画面取得部2202に対して、図12を用いて説明したテンプレート領域を設定する。
具体的には、テンプレート領域設定部2201は、復号対象のsubCUが含まれるCUのブロックを特定し、特定したCUのブロックの上側及び左側に隣接するCUのブロックの復号画像の一部を、テンプレート領域として設定する。この場合、復号中画面取得部2202は、復号中の画面に含まれる復号画像のうち、テンプレート領域設定部2201により設定されたテンプレート領域の復号画像(隣接するCUのブロックの復号画像の一部)をテンプレート領域選択部2302に通知する。
テンプレート領域選択部2302は、所定の実行条件を満たさない旨の判定結果が通知されると、復号中画面取得部2202より通知されたテンプレート領域の復号画像(隣接するsubCUの復号画像の一部)を選択する。また、テンプレート領域選択部2302は、選択したテンプレート領域の復号画像を、マッチング部2204に通知する。これにより、マッチング部2204では、復号対象のsubCUについて、テンプレート領域判定部2301より通知された判定結果に応じたテンプレート領域の復号画像を用いて、参照画面内においてテンプレートマッチングを行うことができる。
また、テンプレート領域選択部2302は、所定の実行条件を満たす旨の判定結果が通知されると、復号中画面取得部2202より通知されたテンプレート領域の復号画像(隣接するCUのブロックの復号画像の一部)を選択する。また、テンプレート領域選択部2302は、選択したテンプレート領域の復号画像を、マッチング部2204に通知する。これにより、マッチング部2204では、復号対象のsubCUについて、テンプレート領域判定部2301より通知された判定結果に応じたテンプレート領域の復号画像を用いて、参照画面内においてテンプレートマッチングを行うことができる。
<7.まとめ>
以上の説明から明らかなように、第1の実施形態に係るエンコーダのイントラ/インタ予測部では、インタ予測モードにおいてテンプレートマッチングによるインタ予測処理を実行する際、
・復号単位(CU)のブロックを複数の矩形領域(subCU)に分ける。
・復号対象の矩形領域が所定の実行条件を満たすか否かを判定し、所定の実行条件を満たすと判定した場合には、当該矩形領域が含まれる復号単位のブロックに隣接するブロックの復号画像の一部を、テンプレート領域として設定する。
・設定したテンプレート領域を用いて、復号単位のブロックに含まれる全ての矩形領域について、並列処理によりテンプレートマッチングを行い、各矩形領域の予測画像を出力する。
これにより、第1の実施形態に係るエンコーダによれば、テンプレートマッチングによるインタ予測において、処理効率を向上させることができる。
また、第1の実施形態に係るデコーダのイントラ/インタ予測部では、インタ予測モードにおいてテンプレートマッチングによるインタ予測処理を実行する際、
・復号単位(CU)のブロックを複数の矩形領域(subCU)に分ける。
・復号対象の矩形領域が所定の実行条件を満たすか否かを判定し、所定の実行条件を満たすと判定した場合には、当該矩形領域が含まれる復号単位のブロックに隣接するブロックの復号画像の一部を、テンプレート領域として設定する。
・設定したテンプレート領域を用いて、復号単位のブロックに含まれる全ての矩形領域について、並列処理によりテンプレートマッチングを行い、各矩形領域の予測画像を出力する。
これにより、第1の実施形態に係るデコーダによれば、テンプレートマッチングによるインタ予測において、処理効率を向上させることができる。
[第2の実施形態]
上記第1の実施形態では、復号対象のsubCUが含まれる復号単位のブロックに隣接するブロックの復号画像の一部を、テンプレート領域として設定することで、処理効率の向上を実現した。これに対して、第2の実施形態では、復号対象のsubCUに隣接するsubCUの予測画像の一部を、テンプレート領域として設定することで、処理効率の向上を実現する。以下、第2の実施形態について、上記第1の実施形態との相違点を中心に説明する。
<1.第2の実施形態に係るエンコーダのインタ予測モードにおける、テンプレートマッチングによるインタ予測処理>
(1)復号対象の矩形領域(subCU)及びテンプレート領域の説明
はじめに、第2の実施形態に係るエンコーダのインタ予測モードにおいて、テンプレートマッチングによるインタ予測処理を実行する場合の、復号対象の矩形領域及びテンプレート領域について説明する。図24は、第2の実施形態に係るエンコーダのインタ予測モードにおける、復号対象の矩形領域及びテンプレート領域を説明するための図である。
図12を用いて説明したとおり、第2の実施形態に係るエンコーダにおいても、入力画面(入力フレーム)500のうち、128画素×128画素のCTU510が、CUのブロックに分割される。また、当該CUのブロックについて、インタ予測処理が行われる(図24参照)。
CUのブロック520は、64画素×64画素に分割された正方形のブロックを拡大して示したものである。図12を用いて説明したとおり、次世代コーデックにおいては、インタ予測モードにおいて、subCU530、540、550等の矩形領域が生成され、subCUを復号対象として、subCUごとに、予測画像及び復号画像が生成される。
第1の実施形態と同様に、第2の実施形態に係るエンコーダも、複数のsubCUの予測画像及び復号画像の生成を、並列して行う。このために、第2の実施形態に係るエンコーダでは、復号対象のsubCUに隣接するsubCUの予測画像の一部を、テンプレート領域として設定する。
図24に示すように、例えば、復号対象のsubCUがsubCU530であった場合、テンプレートマッチングは、
・復号対象のsubCU530に隣接する上側のsubCU540の予測画像の一部、
・復号対象のsubCU530に隣接する左側のsubCU550の予測画像の一部、
を、テンプレート領域として用いて行う。具体的には、テンプレート領域2401、2402の予測画像を用いて、復号対象のsubCU530について、テンプレートマッチングを行う。
このように、復号対象のsubCUに隣接するsubCUの予測画像の一部をテンプレート領域として設定することで、復号対象のsubCUのテンプレートマッチングを、隣接するsubCUの処理と並列して実行することが可能となる。
(2)イントラ/インタ予測部の機能構成(エンコーダ)
続いて、第2の実施形態に係るエンコーダのインタ予測モードで、テンプレートマッチングによるインタ予測処理を実現するための機能構成について説明する。図25は、第2の実施形態に係るエンコーダのインタ予測モードで、テンプレートマッチングによるインタ予測処理を実現するための機能構成の一例を示す図である。
図14との相違点は、図25の場合、予測画像取得部2501を有する点である。以下、図14との相違点を中心に説明する。
予測画像取得部2501は、予測画像生成部708により生成された、復号対象のsubCUに隣接するsubCUの予測画像を取得する。具体的には、予測画像取得部2501は、テンプレート領域設定部703より設定されたテンプレート領域(復号対象のsubCUに隣接するsubCUの位置に設定されたテンプレート領域)の予測画像を取得する。また、予測画像取得部2501は、取得したテンプレート領域の予測画像を、テンプレート領域選択部1402に通知する。
なお、テンプレート領域設定部703は、テンプレート領域判定部1401から、所定の実行条件を満たす旨の判定結果が通知された場合には、予測画像取得部2501に対して、図24を用いて説明したテンプレート領域を設定する。
具体的には、テンプレート領域設定部703は、復号対象のsubCUの上側に隣接するsubCUの予測画像の一部と、左側に隣接するsubCUの予測画像の一部とを、テンプレート領域として設定する。この場合、予測画像取得部2501は、予測画像生成部708により生成された予測画像のうち、テンプレート領域設定部703により設定されたテンプレート領域の予測画像(隣接するsubCUの予測画像の一部)をテンプレート領域選択部1402に通知する。
テンプレート領域選択部1402は、所定の実行条件を満たさない旨の判定結果が通知されると、復号中画面取得部704より通知されたテンプレート領域の復号画像(隣接するsubCUの復号画像の一部)を選択する。また、テンプレート領域選択部1402は、選択したテンプレート領域の復号画像を、マッチング部706に通知する。これにより、マッチング部706では、復号対象のsubCUについて、テンプレート領域判定部1401より通知された判定結果に応じたテンプレート領域の復号画像を用いて、参照画面内においてテンプレートマッチングを行うことができる。
また、テンプレート領域選択部1402は、所定の実行条件を満たす旨の判定結果が通知されると、予測画像取得部1403より通知されたテンプレート領域の予測画像(隣接するsubCUの予測画像の一部)を選択する。また、テンプレート領域選択部1402は、選択したテンプレート領域の予測画像を、マッチング部706に通知する。これにより、マッチング部706では、復号対象のsubCUについて、テンプレート領域判定部1401より通知された判定結果に応じたテンプレート領域の予測画像を用いて、参照画面内においてテンプレートマッチングを行うことができる。
(3)実行条件情報
続いて、復号対象のsubCUについてテンプレートマッチングが実行される際に、テンプレート領域判定部1401が判定するテンプレートマッチングの実行条件について説明する。図26は、第2の実施形態に係るエンコーダのインタ予測モードにおける、テンプレートマッチングの実行条件を示す図である。
図26に示すように、実行条件情報2600は、情報の項目として、"実行条件の判定項目"、"判定項目の閾値"、"判定理由"を含む。
"実行条件の判定項目"には、復号対象のsubCUについて、実行条件を満たすか否かを判定するための判定項目が格納される。
"判定項目の閾値"には、"実行条件の判定項目"に格納された各判定項目について、実行条件を満たすと判定するための閾値が格納される。"判定理由"には、実行条件を満たすと判定する理由が格納される。
図26の例は、"実行条件の判定項目"として、"subCUのサイズ"、"ピクチャタイプ"が格納されている。なお、"subCUのサイズ"、"ピクチャタイプ"については、上記第1の実施形態において、図15を用いて説明済みであるため、ここでは説明を省略する。
また、図26の例は、"実行条件の判定項目"として、"CUの量子化パラメータ"が含まれることを示している。当該判定項目は、復号対象のsubCUが含まれるCUのブロックの量子化パラメータが、所定の閾値以下(30以下)であった場合、実行条件を満たすと判定される。CUのブロックの量子化パラメータが"30以下"の場合、復号画像と予測画像との差分が少ないため、予測画像を用いてテンプレート領域を設定することによる影響が抑えられるからである。
そこで、第2の実施形態に係るエンコーダでは、復号対象のsubCUが含まれるCUのブロックの量子化パラメータが、"30以下"であった場合、当該subCUに隣接するsubCUの予測画像の一部をテンプレート領域として設定する。これにより、第2の実施形態に係るエンコーダでは、複数のsubCUのテンプレートマッチングを並列に実行する並列処理を実現することができる。
また、図26の例は、"実行条件の判定項目"として、"CUレベルの動きベクトル"が含まれることを示している。当該判定項目は、復号対象のsubCUが含まれるCUのブロックについてのCUレベルの動きベクトルの絶対値が所定の画素数以下("1画素以下")であった場合、実行条件を満たすと判定される。CUレベルの動きベクトルの絶対値が1画素以下とは、当該CUのブロックが静止領域のブロックであることを示しており、この場合、予測画像がそのまま復号画像となることが多いからである。
そこで、第2の実施形態に係るエンコーダでは、復号対象のsubCUが含まれるCUのブロックについてのCUレベルの動きベクトルが、"1画素以下"であった場合、当該subCUに隣接するsubCUの予測画像の一部をテンプレート領域として設定する。これにより、第2の実施形態に係るエンコーダでは、複数のsubCUのテンプレートマッチングを並列に実行する並列処理を実現することができる。
(4)インタ予測処理の流れ(subCUレベル動き探索処理の流れ)
続いて、第2の実施形態に係るエンコーダのインタ予測モードにおける、テンプレートマッチングによるインタ予測処理の流れについて説明する。なお、第2の実施形態に係るエンコーダのインタ予測モードの場合も、第1の実施形態と同様、テンプレートマッチングによるインタ予測処理の全体の流れは、図8と同じであるため、ここでは説明を省略する。
また、第2の実施形態に係るエンコーダのインタ予測モードの場合、図8の各工程のうち、図9において詳細を説明した、図8のステップS801(CUレベルの動き探索処理)の流れも同じである。このため、ここでは説明を省略し、図8の各工程のうちステップS802(subCUレベルの動き探索処理)について説明する。
図27は、第2の実施形態に係るエンコーダのインタ予測モードにおける、subCUレベルの動き探索処理の流れを示すフローチャートである。図10との相違点は、ステップS2701からステップS2702である。
ステップS2701において、テンプレート領域判定部1401は、復号対象のsubCUが実行条件情報2600に示す実行条件を満たすか否かを判定する。ステップS2701において、実行条件を満たすと判定した場合には(ステップS2701においてYESの場合には)、ステップS2702に進む。
ステップS2702において、予測画像取得部2501は、予測画像生成部708より、復号対象のsubCUに隣接する上側のsubCU及び左側のsubCUの予測画像を取得する。なお、復号対象のsubCUに隣接する上側のsubCUまたは左側のsubCUについて、既に復号画像が生成されている場合には、復号中画面取得部704が復号対象のsubCUに隣接する上側のsubCUまたは左側のsubCUの復号画像を取得してもよい。また、テンプレート領域選択部1402は、復号対象のsubCUに隣接するsubCUの予測画像または復号画像の一部を、テンプレート領域の画像として選択する。
(5)subCUごとの処理のタイミングチャート
続いて、第2の実施形態に係るエンコーダのインタ予測モードにおける、subCUごとの処理内容と処理タイミングとについて説明する。図28は、第2の実施形態に係るエンコーダのインタ予測モードにおける、subCUごとの処理内容及び処理タイミングを示す図である。
このうち、図28(a)は、復号対象の各subCUが含まれるCUのブロックの一例を示している。図28(a)の例は、復号対象のsubCUが含まれるCUのブロックが、"CUn"であり、当該CUのブロックには、4つのsubCU("sub0"、"sub1"、"sub2"、"sub3")の領域が含まれることを示している。また、図28(a)の例は、"CUn"に隣接する上側のCUのブロック及び左側のCUのブロックについては、いずれも、復号画像が生成されていることを示している。また、図28(a)の例は、当該隣接するCUのブロックの復号画像の一部が、テンプレート領域1101~1112として設定されていることを示している。
図28(b)は、"CUn"に含まれる4つのsubCUについて、イントラ/インタ予測部409が処理を実行する際の処理タイミングを示した図である。図11(b)同様、図28(b)の例では、イントラ/インタ予測部409が実行する処理を、
・CUレベルの動きベクトル候補の設定と基点となる1の動きベクトル候補の決定、
・CUレベルの動きベクトルの決定、
・subCUレベルの動きベクトル候補の設定と基点となる1の動きベクトル候補の決定、
・subCUレベルの動きベクトルの決定、
・subCUレベルの予測画像の生成、
・subCUレベルの復号画像の取得、
に分けて示している。なお、図28(b)の例では、紙面の都合上、処理タイミング="Tm"~"Tm+7"までを示している。また、ここでは、復号対象のsubCUが実行条件情報2600に定義された実行条件を満たしているものとして説明する。
図28(b)に示すように、処理タイミング="Tm"において、"CUn"について、CUレベルの動きベクトル候補に応じた位置それぞれにテンプレート領域が設定され、CUレベルの基点となる1の動きベクトル候補が決定される。続いて、処理タイミング="Tm+1"において、"CUn"について、CUレベルの動きベクトルが決定される。
続いて、処理タイミング"Tm+2"において、"subCU0"について、subCUレベルの動きベクトル候補が設定され、subCUレベルの基点となる1の動きベクトル候補が決定される。
続いて、処理タイミング"Tm+3"において、"subCU0"について、subCUレベルの動きベクトルが決定される。なお、"subCU0"の動きベクトルの決定に際しては、テンプレート領域1101、1111の復号画像が用いられる。ここで、"subCU0"について、subCUレベルの動きベクトルが決定されると、"subCU1"及び"subCU2"について、subCUレベルの動きベクトル候補に応じた位置それぞれにテンプレート領域を設定することが可能となる。
そこで、処理タイミング="Tm+4"において、"subCU1"及び"subCU2"について、subCUレベルの動きベクトル候補に応じた位置それぞれにテンプレート領域が設定され、subCUレベルの基点となる1の動きベクトル候補が決定される。また、処理タイミング="Tm+4"では、並行して、"subCU0"について予測画像が生成され、出力される。
ここで、"subCU0"について、予測画像が生成されると、"subCU1"及び"subCU2"について、subCUレベルの動きベクトルを決定することが可能となる。
そこで、処理タイミング="Tm+5"において、"subCU1"及び"subCU2"について、subCUレベルの動きベクトルが決定される。なお、"subCU1"の動きベクトルの決定に際しては、テンプレート領域1102の復号画像とテンプレート領域2801の予測画像とが用いられる。また、"subCU2"の動きベクトルの決定に際しては、テンプレート領域2802の予測画像と、テンプレート領域1112の復号画像とが用いられる。
また、予測画像が出力されたことで復号画像が生成されているため、処理タイミング="Tm+5"では、並行して、"subCU0"について生成された復号画像が取得される。
なお、"subCU1"及び"subCU2"について、subCUレベルの動きベクトルが決定されると、"subCU3"について、subCUレベルの動きベクトル候補に応じた位置それぞれにテンプレート領域を設定することが可能となる。
そこで、処理タイミング="Tm+6"において、"subCU3"について、subCUレベルの動きベクトル候補に応じた位置それぞれにテンプレート領域が設定され、subCUレベルの基点となる1の動きベクトル候補が決定される。また、処理タイミング="Tm+6"では、並行して、"subCU1"及び"subCU2"について予測画像が生成され、出力される。
ここで、"subCU1"及び"subCU2"について、予測画像が生成されると、"subCU3"について、subCUレベルの動きベクトルを決定することが可能となる。
そこで、処理タイミング="Tm+7"において、"subCU3"について、subCUレベルの動きベクトルが決定される。"subCU3"の動きベクトルの決定に際しては、テンプレート領域2803の予測画像と、テンプレート領域2804の予測画像とが用いられる。
また、予測画像が出力されたことで復号画像が生成されるため、処理タイミング="Tm+7"では、並行して、"subCU1"及び"subCU2"について生成された復号画像が取得される。
このように、第2の実施形態に係るエンコーダによれば、複数のsubCUについて並列処理が実行可能となり、処理効率を向上させることができる。この結果、処理タイミング="Tm"~"Tm+9"の間に、"CUn"に含まれる4つのsubCUについて復号画像を生成することができる。
(6)並列処理の具体例(その1)
続いて、第2の実施形態に係るエンコーダのインタ予測モードにおいて、複数のsubCUについて実行される並列処理の具体例について説明する。図29は、第2の実施形態に係るエンコーダのインタ予測モードにおける、並列処理の具体例を示す第1の図である。図29の例は、128画素×128画素のCTU510を分割することで生成された、8画素×8画素のCUのブロック1800に含まれるsubCUについて実行される並列処理を示している(subCUのサイズが4画素×4画素であるため、並列処理が実行される)。
図29の例では、CUのブロック1800を4つのsubCUに分けている。また、図29の例では、4つのsubCU2901~2904それぞれについて、下記のようにテンプレート領域を設定する。
・subCU2901:subCU2901に隣接する上側のsubCUの復号画像の一部と、subCU2901に隣接する左側のsubCUの復号画像の一部とを、テンプレート領域1801、1811として設定する。
・subCU2902:subCU2902に隣接する上側のsubCUの復号画像の一部と、subCU2902に隣接する左側のsubCU2901の予測画像の一部とをテンプレート領域1802、2911として設定する。
・subCU2903:subCU2903に隣接する上側のsubCU2901の予測画像の一部と、subCU2903に隣接する左側のsubCUの復号画像の一部とを、テンプレート領域2912、1812として設定する。
・subCU2904:subCU2904に隣接する上側のsubCU2902の予測画像の一部と、subCU2904に隣接する左側のsubCU2903の予測画像の一部とを、テンプレート領域2913、2914として設定する。
これにより、CUのブロック1800に含まれる4つのsubCU2901~2904のうち、例えば、subCU2902及びsubCU2903のテンプレートマッチングを、subCU2901の処理と並列して実行することが可能となる。
(7)並列処理の具体例(その2)
図30は、第2の実施形態に係るエンコーダのインタ予測モードにおける、並列処理の具体例を示す第2の図である。図30の例は、128画素×128画素のCTU510を分割することで生成された、64画素×64画素のCUのブロック1900に含まれるsubCUについて実行される並列処理を示している(例えば、CUのブロック1900の量子化パラメータが30以下であることで、並列処理が実行されるものとする)。
図30の例では、CUのブロック1900を16個のsubCUに分けている。また、図30の例では、16個のsubCUそれぞれについて、subCUに隣接する上側のsubCUの復号画像または予測画像の一部、左側のsubCUの復号画像または予測画像の一部をそれぞれテンプレート領域として設定する。
例えば、subCU3001の場合、subCU3001に隣接する上側のsubCUの復号画像の一部を、テンプレート領域1901として設定し、subCU3001に隣接する左側のsubCUの復号画像の一部を、テンプレート領域1911として設定する。
これにより、例えば、subCU3002及びsubCU3005のテンプレートマッチングを、subCU3001の処理と並列して実行することが可能となる。更に、subCU3002及びsubCU3005の処理と並列して、例えば、subCU3003、3006、3009のテンプレートマッチングを実行することが可能となる。
(8)並列処理の具体例(その3)
図31は、第2の実施形態に係るエンコーダのインタ予測モードにおける、並列処理の具体例を示す第3の図である。図31の例は、128画素×128画素のCTU510を分割することで生成された8画素×4画素のCUのブロック2001~2004を処理する場合を示している。
図31の例では、CUのブロック2001~2004それぞれを、2つのsubCUに分けている。このため、subCUのサイズが4画素×4画素となり、2つのsubCUについて並列処理が実行される。
符号3110は、CUのブロック2001~2004に含まれる各subCUについて、テンプレート領域を設定していく様子を時系列で示したものであり、下から上に向かって時間軸が進むことを示している。
符号3110に示すように、CUのブロック2001に含まれる2つのsubCUのうち、左側のsubCUの上側に隣接するsubCUの復号画像の一部、及び、左側に隣接するsubCUの復号画像の一部を、テンプレート領域2011、2021として設定する。また、CUのブロック2001に含まれる2つのsubCUのうち、右側のsubCUの上側に隣接するsubCUの復号画像の一部、及び、左側に隣接するsubCUの予測画像の一部を、テンプレート領域2012、3121として設定する。
これにより、CUのブロック2001に含まれる2つのsubCUのうち、右側のsubCUのテンプレートマッチングを、左側のsubCUの処理と並列して実行することが可能となる。
CUのブロック2001に含まれる2つのsubCUが並列処理されることで、当該subCUについて復号画像が生成されると、続いて、CUのブロック2002の処理に移行する。具体的には、CUのブロック2002に含まれる2つのsubCUのうち、左側のsubCUの上側に隣接するsubCUの復号画像の一部、及び、左側に隣接するsubCUの復号画像の一部を、テンプレート領域2013、2022として設定する。また、CUのブロック2002に含まれる2つのsubCUのうち、右側のsubCUの上側に隣接するsubCUの復号画像の一部、及び、左側に隣接するsubCUの予測画像の一部を、テンプレート領域2014、3122として設定する。
これにより、CUのブロック2002に含まれる2つのsubCUのうち、右側のsubCUのテンプレートマッチングを、左側のsubCUの処理と並列して実行することが可能となる。
CUのブロック2002に含まれる2つのsubCUが並列処理されることで、当該subCUについて復号画像が生成されると、続いて、CUのブロック2003の処理に移行する。具体的には、CUのブロック2003に含まれる2つのsubCUのうち、左側のsubCUの上側に隣接するsubCUの復号画像の一部、及び、左側に隣接するsubCUの復号画像の一部を、テンプレート領域2015、2023として設定する。また、CUのブロック2003に含まれる2つのsubCUのうち、右側のsubCUの上側に隣接するsubCUの復号画像の一部、及び、左側に隣接するsubCUの予測画像の一部を、テンプレート領域2016、3123として設定する。
これにより、CUのブロック2003に含まれる2つのsubCUのうち、右側のsubCUのテンプレートマッチングを、左側のsubCUの処理と並列して実行することが可能となる。
CUのブロック2003に含まれる2つのsubCUが並列処理されることで、当該subCUについて復号画像が生成されると、続いて、CUのブロック2004の処理に移行する。具体的には、CUのブロック2004に含まれる2つのsubCUのうち、左側のsubCUの上側に隣接するsubCUの復号画像の一部、及び、左側に隣接するsubCUの復号画像の一部を、テンプレート領域2017、2024として設定する。また、CUのブロック2004に含まれる2つのsubCUのうち、右側のsubCUの上側に隣接するsubCUの復号画像の一部、及び、左側に隣接するsubCUの予測画像の一部を、テンプレート領域2018、3124として設定する。
これにより、CUのブロック2004に含まれる2つのsubCUのうち、右側のsubCUのテンプレートマッチングを、左側のsubCUの処理と並列して実行することが可能となる。
<2.第2の実施形態に係るデコーダのインタ予測モードで、テンプレートマッチングによるインタ予測処理を実現するためのイントラ/インタ予測部の機能構成>
続いて、第2の実施形態に係るデコーダのインタ予測モードで、テンプレートマッチングによるインタ予測処理を実現するための機能構成について説明する。図32は、第2の実施形態に係るデコーダのインタ予測モードで、テンプレートマッチングによるインタ予測処理を実現するための機能構成の一例を示す図である。
図23との相違点は、図32の場合、予測画像取得部3201を有する点である。以下、図23との相違点を中心に説明する。
予測画像取得部3201は、予測画像生成部2207により生成された、復号対象のsubCUに隣接するsubCUの予測画像を取得する。具体的には、予測画像取得部3201は、テンプレート領域設定部2201より設定されたテンプレート領域(復号対象のsubCUに隣接するsubCUの位置に設定されたテンプレート領域)の予測画像を取得する。また、予測画像取得部3201は、取得したテンプレート領域の予測画像を、テンプレート領域選択部2302に通知する。
なお、テンプレート領域設定部2201は、テンプレート領域判定部2301から、所定の実行条件を満たす旨の判定結果が通知された場合には、予測画像取得部3201に対して、図24を用いて説明したテンプレート領域を設定する。
具体的には、テンプレート領域設定部2201は、復号対象のsubCUの上側に隣接するsubCUの予測画像の一部と、左側に隣接するsubCUの予測画像の一部とを、テンプレート領域として設定する。この場合、予測画像取得部3201は、予測画像生成部2207により生成された予測画像のうち、テンプレート領域設定部2201により設定されたテンプレート領域の予測画像(隣接するsubCUの予測画像の一部)をテンプレート領域選択部2302に通知する。
テンプレート領域選択部2302は、所定の実行条件を満たさない旨の判定結果が通知されると、復号中画面取得部2202より通知されたテンプレート領域の復号画像(隣接するsubCUの復号画像の一部)を選択する。また、テンプレート領域選択部2302は、選択したテンプレート領域の復号画像を、マッチング部2204に通知する。これにより、マッチング部2204では、復号対象のsubCUについて、テンプレート領域判定部2301より通知された判定結果に応じたテンプレート領域の復号画像を用いて、参照画面内においてテンプレートマッチングを行うことができる。
また、テンプレート領域選択部2302は、所定の実行条件を満たす旨の判定結果が通知されると、予測画像取得部3201より通知されたテンプレート領域の予測画像(隣接するsubCUの予測画像の一部)を選択する。また、テンプレート領域選択部2302は、選択したテンプレート領域の予測画像を、マッチング部2204に通知する。これにより、マッチング部2204では、復号対象のsubCUについて、テンプレート領域判定部2301より通知された判定結果に応じたテンプレート領域の予測画像を用いて、参照画面内においてテンプレートマッチングを行うことができる。
<3.まとめ>
以上の説明から明らかなように、第2の実施形態に係るエンコーダのイントラ/インタ予測部では、インタ予測モードにおいてテンプレートマッチングによるインタ予測処理を実行する際、
・復号単位のブロック(CU)を複数の矩形領域(subCU)に分ける。
・復号対象の矩形領域が所定の実行条件を満たすか否かを判定し、所定の実行条件を満たすと判定した場合には、当該矩形領域に隣接する矩形領域の予測画像の一部をテンプレート領域として設定する。
・設定したテンプレート領域を用いて、復号単位のブロックに含まれる一部の矩形領域について、並列処理によりテンプレートマッチングを行い、各矩形領域の予測画像を出力する。
これにより、第2の実施形態に係るエンコーダによれば、テンプレートマッチングによるインタ予測において、処理効率を向上させることができる。
また、第2の実施形態に係るデコーダのイントラ/インタ予測部では、インタ予測モードにおいてテンプレートマッチングによるインタ予測処理を実行する際、
・復号単位のブロック(CU)を複数の矩形領域(subCU)に分ける。
・復号対象の矩形領域が所定の実行条件を満たすか否かを判定し、所定の実行条件を満たすと判定した場合には、当該矩形領域に隣接する矩形領域の予測画像の一部を、テンプレート領域として設定する。
・設定したテンプレート領域を用いて、復号単位のブロックに含まれる一部の矩形領域について、並列処理によりテンプレートマッチングを行い、各矩形領域の予測画像を出力する。
これにより、第2の実施形態に係るデコーダによれば、テンプレートマッチングによるインタ予測において、処理効率を向上させることができる。
[第3の実施形態]
上記第1の実施形態では、テンプレートマッチングによるインタ予測処理において、所定の実行条件を満たす場合に、復号対象のsubCUが含まれるCUのブロックに隣接するCUのブロックの復号画像の一部をテンプレート領域として設定する機能について説明した。
また、上記第2の実施形態では、テンプレートマッチングによるインタ予測処理を実行する際、所定の実行条件を満たす場合に、復号対象のsubCUに隣接するsubCUの予測画像の一部をテンプレート領域として設定する機能について説明した。
これに対して、第3の実施形態では、上記第1の実施形態において説明した機能と、上記第2の実施形態において説明した機能とをエンコーダ及びデコーダにそれぞれ配し、両機能を切り替えて実行する構成について説明する。以下、第3の実施形態について、上記第2の実施形態との相違点を中心に説明する。
<1.インタ予測処理の流れ(subCUレベルの動き探索処理の流れ)>
図33は、第3の実施形態に係るエンコーダのインタ予測モードにおける、subCUレベルの動き探索処理の流れを示すフローチャートである。図27との相違点は、ステップS3301、S3302、S1602、S2702、S1603である。
ステップS3301において、テンプレート領域判定部1401は、復号対象のsubCUが第1の実行条件を満たすか否かを判定する。なお、第1の実行条件とは、例えば、実行条件情報1500に規定された実行条件のいずれかを指すものとする。
ステップS3301において、第1の実行条件を満たすと判定した場合には(ステップS3301においてYESの場合には)、ステップS1602に進む。
ステップS1602において、テンプレート領域設定部703は、復号対象のsubCUが含まれるCUのブロックに隣接するCUのブロックの復号画像の一部を、テンプレート領域として設定する。
一方、ステップS3301において、第1の実行条件を満たさないと判定した場合には(ステップS3301においてNOの場合には)、ステップS3302に進む。ステップS3302において、テンプレート領域判定部1401は、復号対象のsubCUが第2の実行条件を満たすか否かを判定する。なお、第2の実行条件とは、例えば、実行条件情報2700に規定された実行条件のうち、実行条件情報1500と重複しない実行条件のいずれかを指すものとする。
ステップS3302において、第2の実行条件を満たすと判定した場合には(ステップS3302においてYESの場合には)、ステップS2702に進む。ステップS2702において、予測画像取得部2501は、予測画像生成部708より、復号対象のsubCUに隣接する上側のsubCU及び左側のsubCUの予測画像または復号画像を取得する。また、テンプレート領域選択部1402は、復号対象のsubCUに隣接するsubCUの予測画像または復号画像の一部を、テンプレート領域として設定する。
一方、ステップS3302において、第2の実行条件を満たさないと判定した場合には(ステップS3302においてNOの場合には)、ステップS1603に進む。ステップS1603において、テンプレート領域設定部703は、復号対象のsubCUに隣接するsubCUの復号画像の一部を、テンプレート領域として設定する。
<2.まとめ>
以上の説明から明らかなように、第3の実施形態に係るエンコーダ及びデコーダのイントラ/インタ予測部は、インタ予測モードにおいてテンプレートマッチングによるインタ予測処理を実行する際、
・復号画像の矩形領域が第1の実行条件を満たすか否かを判定し、第1の実行条件を満たすと判定した場合には、当該矩形領域が含まれる復号単位のブロックに隣接するブロックの復号画像の一部を、テンプレート領域として設定する。
・復号画像の矩形領域が第2の実行条件を満たすか否かを判定し、第2の実行条件を満たすと判定した場合には、当該矩形領域に隣接する矩形領域の予測画像の一部を、テンプレート領域として設定する。
これにより、第3の実施形態に係るエンコーダ及びデコーダによれば、復号対象のsubCUの属性に応じたテンプレート領域を設定して、テンプレートマッチングによるインタ予測処理を実行することが可能となる。
この結果、第3の実施形態に係るエンコーダ及びデコーダによれば、テンプレートマッチングによるインタ予測において、処理効率を向上させることができる。
[その他の実施形態]
上記第1の実施形態では、所定のブロックが、復号対象のsubCUが含まれる復号単位(CU)のブロックであるとして説明した。しかしながら、所定のブロックはCUのブロックに限定されない。復号対象のsubCUが含まれるブロックであれば、CUより小さいブロックであっても、CUより大きいブロックであってもよい。
ただし、復号対象のsubCUについて処理を開始するにあたっては、所定のブロックの上側に隣接するブロック及び左側に隣接するブロックについて復号画像の生成が完了していることが前提となる。
また、エンコーダ110において予め所定のブロックを定義しておき、データストリームを出力する際、付帯情報に、所定のブロックを示す情報を含めるように構成することが前提となる。これにより、デコーダ120では、付帯情報に基づいて、所定のブロックを認識することが可能となるからである。
また、上記第1乃至第3の実施形態では、図15の実行条件情報1500または図26の実行条件情報2600に規定された実行条件に基づいて判定を行うものとして説明した。しかしながら、判定に用いる実行条件は、これに限定されず、実行条件情報1500または実行条件情報2600に規定されていない他の所定の実行条件に基づいて判定を行ってもよいことはいうまでもない。
また、上記第1乃至第3の実施形態では、エンコーダ110及びデコーダ120それぞれにおいて、図15の実行条件情報1500または図26の実行条件情報2600に規定された全ての実行条件に基づいて判定を行うものとして説明した。
しかしながら、エンコーダ110及びデコーダ120では、いずれかの実行条件に基づいて判定を行うように構成してもよい。この場合、デコーダ120は、エンコーダ110において判定に用いた実行条件を認識する必要があるため、エンコーダ110は、判定に用いた実行条件をシンタクスとして付帯情報に含めてデコーダ120に送信する。
例えば、エンコーダ110では、実行条件の判定項目="ピクチャタイプ"の場合、シーケンスレベルシンタクスとして、
・fruc_parallel_merge_tid_minus1:0~5
を付帯情報に含めてデコーダ120に送信する。なお、"0~5"は、ピクチャの階層レベルを表しており、"0"の場合は、"OFF"を表している。
また、エンコーダ110では、実行条件の判定項目="subCUのサイズ"の場合、ピクチャレベルシンタクスとして、
・log2_fruc_parallel_merge_size_minus2:0~5
を付帯情報に含めてデコーダ120に送信する。なお、"0"は4画素×4画素以下を、"1"は8画素×8画素以下を、"2"は16画素×16画素以下を、"3"は32画素×32画素以下を、"4"は64画素×64画素以下を、"5"は128画素×128画素以下をそれぞれ表している。
また、エンコーダ110では、実行条件の判定項目="CUの量子化パラメータ"の場合、ピクチャレベルシンタクスとして、
・fruc_parallel_merge_qp_minus1:0~64
を付帯情報に含めてデコーダ120に送信する。なお、"0"の場合は、"OFF"を表している。
更に、エンコーダ110では、実行条件の判定項目="CUレベルの動きベクトル"の場合、ピクチャレベルシンタクスとして、
・fruc_parallel_merge_cu_mv_minus1:0~511
を付帯情報に含めてデコーダ120に送信する。
また、上記第3の実施形態では、第1の実行条件を満たす場合には、隣接するCUの復号画像の一部をテンプレート領域として設定し、第2の実行条件を満たす場合には、隣接するsubCUの予測画像の一部をテンプレート領域として設定するものとした。つまり、テンプレート領域は、隣接するCUの復号画像の一部または隣接するsubCUの予測画像の一部のいずれかを設定するものとした。
しかしながら、テンプレート領域の設定方法はこれに限定されず、例えば、隣接するCUの予測画像の一部を設定するように構成してもよい。
なお、上記実施形態に挙げた構成等に、その他の要素との組み合わせ等、ここで示した構成に本発明が限定されるものではない。これらの点に関しては、本発明の趣旨を逸脱しない範囲で変更することが可能であり、その応用形態に応じて適切に定めることができる。