(本発明の基礎となった知見)
従来の符号化方式であるH.265では、画像情報を効率的に符号化するため、算術符号化が用いられている。具体的には、CABACと呼ばれるコンテキスト適応型二値算術符号化方式が採用されている。
例えば、コンテキスト適応型二値算術符号化方式では、二値化によって、多値信号が、0又は1で表現される値のデータ列である二値化データ列に変換される。そして、データ種別等のコンテキストに従って0又は1の発生確率が所定の複数の発生確率の中から選択され、選択された発生確率に従って二値化データ列に対して二値算術符号化が適用される。そして、二値化データ列に含まれる0又は1の値に従って発生確率が更新される。
すなわち、コンテキスト適応型二値算術符号化方式では、可変の発生確率に従って二値算術符号化が行われる。また、コンテキスト適応型二値算術符号化方式では、特定のデータ種別等について、固定の発生確率に従って二値算術符号化が行われる。
さらに、H.265では、周波数変換係数情報を含む画像情報が符号化される。周波数変換係数情報は、画像の周波数成分に関する情報であり、画像の符号化及び復号等の処理に適している。一方で、周波数変換係数情報の符号量は、画像情報の全体の符号量に大きな影響を与える。したがって、周波数変換係数情報が適切に符号化されなければ、画像情報の全体の符号量が増加する可能性がある。
そこで、本発明の一態様に係る符号化装置は、画像情報を符号化して、前記画像情報が符号化されたビット列を出力する符号化装置であって、メモリと、前記メモリにアクセス可能な回路とを備え、前記メモリにアクセス可能な前記回路は、前記画像情報を二値化し、前記画像情報が二値化された二値化データ列に対して算術符号化を適用するか否かを切り替え、前記二値化データ列に対して算術符号化が適用される場合、前記二値化データ列に対して算術符号化を適用して、算術符号化が適用された前記二値化データ列を含む前記ビット列を出力し、前記二値化データ列に対して算術符号化が適用されない場合、前記二値化データ列に対して算術符号化を適用せずに、算術符号化が適用されなかった前記二値化データ列を含む前記ビット列を出力し、前記画像情報の二値化において、前記二値化データ列に対して算術符号化が適用される場合と、前記二値化データ列に対して算術符号化が適用されない場合とで異なる二値化形式に従って、前記画像情報のうち、画像の周波数成分に関する周波数変換係数情報を二値化し、前記画像情報の二値化において、前記二値化データ列に対して算術符号化が適用される場合と、前記二値化データ列に対して算術符号化が適用されない場合とで共通の二値化形式に従って、前記画像情報のうち、画像の予測方法に関する予測パラメータ情報の一部または全部を二値化する。
これにより、符号化装置は、算術符号化をスキップすることができる。したがって、符号化装置は、算術符号化によって発生する処理遅延の削減を支援することができる。また、符号化装置は、全体の符号量に大きな影響を与える周波数変換係数情報を算術符号化の適用有無によって異なる二値化形式に従って適切に二値化することができる。したがって、符号化装置は、周波数変換係数情報を適切に符号化することができ、全体の符号量の増加を抑制することができる。
例えば、前記回路は、前記予測パラメータ情報に含まれる、符号化モードに関する情報、画面内予測の予測方向に関する情報、画面間予測の参照ピクチャに関する情報、及び、画面間予測の動きベクトルに関する情報のうち、少なくとも1つに対して、前記二値化データ列に対して算術符号化が適用される場合と、前記二値化データ列に対して算術符号化が適用されない場合とで共通の二値化形式に従って二値化を施してもよい。
これにより、符号化装置は、予測パラメータ情報に含まれる少なくとも一部の情報を共通の二値化形式に従って効率的に二値化することができる。
例えば、前記回路は、前記予測パラメータ情報に含まれる、符号化モードに関する情報、画面内予測の予測方向に関する情報、画面間予測の参照ピクチャに関する情報、及び、画面間予測の動きベクトルに関する情報に対して、前記二値化データ列に対して算術符号化が適用される場合と、前記二値化データ列に対して算術符号化が適用されない場合とで共通の二値化形式に従って二値化を施してもよい。
これにより、符号化装置は、予測パラメータ情報に含まれる各種情報を共通の二値化形式に従って効率的に二値化することができる。
また、例えば、前記回路は、前記画像情報の二値化において、前記画像情報のうち前記周波数変換係数情報のみを前記異なる二値化形式に従って二値化し、前記画像情報のうち前記周波数変換係数情報を除く他の全ての情報を前記共通の二値化形式に従って二値化してもよい。
これにより、符号化装置は、周波数変換係数情報を除く他の全ての情報を共通の二値化形式に従って二値化することができる。したがって、処理が簡素化される。
また、例えば、前記回路は、前記画像情報の二値化において、前記二値化データ列に対して算術符号化が適用されない場合に、前記二値化データ列に対して算術符号化が適用される場合よりも、発生ビット数が少ない形式で前記周波数変換係数情報を二値化してもよい。
これにより、符号化装置は、算術符号化が適用されない場合において、周波数変換係数情報の符号量を小さくすることを支援することができる。
また、本発明の一態様に係る復号装置は、画像情報が符号化されたビット列を取得して、前記画像情報を復号する復号装置であって、メモリと、前記メモリにアクセス可能な回路とを備え、前記メモリにアクセス可能な前記回路は、前記画像情報が二値化された二値化データ列を含む前記ビット列を取得し、前記ビット列に含まれる前記二値化データ列に対して算術復号を適用するか否かを切り替え、前記二値化データ列に対して算術復号が適用される場合、前記二値化データ列に対して算術復号を適用して、算術復号が適用された前記二値化データ列を逆二値化することにより、前記画像情報を復号し、前記二値化データ列に対して算術復号が適用されない場合、前記二値化データ列に対して算術復号を適用せずに、算術復号が適用されなかった前記二値化データ列を逆二値化することにより、前記画像情報を復号し、前記二値化データ列の逆二値化において、前記二値化データ列に対して算術復号が適用される場合と、前記二値化データ列に対して算術復号が適用されない場合とで異なる逆二値化形式に従って、前記二値化データ列のうち、画像の周波数成分に関する周波数変換係数情報が二値化された第1部分を逆二値化し、前記二値化データ列の逆二値化において、前記二値化データ列に対して算術復号が適用される場合と、前記二値化データ列に対して算術復号が適用されない場合とで共通の逆二値化形式に従って、前記二値化データ列のうち、画像の予測方法に関する予測パラメータ情報の一部または全部が二値化された第2部分を逆二値化する。
これにより、復号装置は、算術復号をスキップすることができる。したがって、復号装置は、算術復号によって発生する処理遅延の削減を支援することができる。また、復号装置は、全体の符号量に大きな影響を与える周波数変換係数情報が二値化された第1部分を算術復号の適用有無に従って適切に逆二値化することができる。したがって、復号装置は、周波数変換係数情報を適切に復号することができ、全体の符号量の増加を抑制することができる。
例えば、前記回路は、前記予測パラメータ情報に含まれる、符号化モードに関する情報、画面内予測の予測方向に関する情報、画面間予測の参照ピクチャに関する情報、及び、画面間予測の動きベクトルに関する情報のうち、少なくとも1つが二値化された前記第2部分に対して、前記二値化データ列に対して算術復号が適用される場合と、前記二値化データ列に対して算術復号が適用されない場合とで共通の逆二値化形式に従って、逆二値化を施してもよい。
これにより、復号装置は、予測パラメータ情報に含まれる少なくとも一部の情報が二値化された部分を共通の逆二値化形式に従って効率的に逆二値化することができる。
また、例えば、前記回路は、前記予測パラメータ情報に含まれる、符号化モードに関する情報、画面内予測の予測方向に関する情報、画面間予測の参照ピクチャに関する情報、及び、画面間予測の動きベクトルに関する情報が二値化された前記第2部分に対して、前記二値化データ列に対して算術復号が適用される場合と、前記二値化データ列に対して算術復号が適用されない場合とで共通の逆二値化形式に従って、逆二値化を施してもよい。
これにより、復号装置は、予測パラメータ情報に含まれる各種情報が二値化された部分を共通の逆二値化形式に従って効率的に二値化することができる。
また、例えば、前記回路は、前記二値化データ列の逆二値化において、前記二値化データ列のうち前記第1部分のみを前記異なる逆二値化形式に従って逆二値化し、前記二値化データ列のうち前記第1部分を除く他の全ての部分を前記共通の逆二値化形式に従って逆二値化してもよい。
これにより、復号装置は、周波数変換係数情報が二値化された第1部分を除く他の全ての部分を共通の逆二値化形式に従って逆二値化することができる。したがって、処理が簡素化される。
また、例えば、前記回路は、前記二値化データ列の逆二値化において、前記二値化データ列に対して算術復号が適用されない場合に、前記二値化データ列に対して算術復号が適用される場合よりも、発生ビット数が少ない形式で前記周波数変換係数情報が二値化された前記第1部分を逆二値化してもよい。
これにより、復号装置は、算術復号が適用されない場合において、周波数変換係数情報の符号量を小さくすることを支援することができる。
また、本発明の一態様に係る符号化方法は、画像情報を符号化して、前記画像情報が符号化されたビット列を出力する符号化方法であって、前記画像情報を二値化し、前記画像情報が二値化された二値化データ列に対して算術符号化を適用するか否かを切り替え、前記二値化データ列に対して算術符号化が適用される場合、前記二値化データ列に対して算術符号化を適用して、算術符号化が適用された前記二値化データ列を含む前記ビット列を出力し、前記二値化データ列に対して算術符号化が適用されない場合、前記二値化データ列に対して算術符号化を適用せずに、算術符号化が適用されなかった前記二値化データ列を含む前記ビット列を出力し、前記画像情報の二値化において、前記二値化データ列に対して算術符号化が適用される場合と、前記二値化データ列に対して算術符号化が適用されない場合とで異なる二値化形式に従って、前記画像情報のうち、画像の周波数成分に関する周波数変換係数情報を二値化し、前記画像情報の二値化において、前記二値化データ列に対して算術符号化が適用される場合と、前記二値化データ列に対して算術符号化が適用されない場合とで共通の二値化形式に従って、前記画像情報のうち、画像の予測方法に関する予測パラメータ情報の一部または全部を二値化する。
これにより、符号化方法を用いる装置等は、算術符号化をスキップすることができる。したがって、符号化方法を用いる装置等は、算術符号化によって発生する処理遅延の削減を支援することができる。また、符号化方法を用いる装置等は、全体の符号量に大きな影響を与える周波数変換係数情報を算術符号化の適用有無によって異なる二値化形式に従って適切に二値化することができる。したがって、符号化方法を用いる装置等は、周波数変換係数情報を適切に符号化することができ、全体の符号量の増加を抑制することができる。
また、本発明の一態様に係る復号方法は、画像情報が符号化されたビット列を取得して、前記画像情報を復号する復号方法であって、前記画像情報が二値化された二値化データ列を含む前記ビット列を取得し、前記ビット列に含まれる前記二値化データ列に対して算術復号を適用するか否かを切り替え、前記二値化データ列に対して算術復号が適用される場合、前記二値化データ列に対して算術復号を適用して、算術復号が適用された前記二値化データ列を逆二値化することにより、前記画像情報を復号し、前記二値化データ列に対して算術復号が適用されない場合、前記二値化データ列に対して算術復号を適用せずに、算術復号が適用されなかった前記二値化データ列を逆二値化することにより、前記画像情報を復号し、前記二値化データ列の逆二値化において、前記二値化データ列に対して算術復号が適用される場合と、前記二値化データ列に対して算術復号が適用されない場合とで異なる逆二値化形式に従って、前記二値化データ列のうち、画像の周波数成分に関する周波数変換係数情報が二値化された第1部分を逆二値化し、前記二値化データ列の逆二値化において、前記二値化データ列に対して算術復号が適用される場合と、前記二値化データ列に対して算術復号が適用されない場合とで共通の逆二値化形式に従って、前記二値化データ列のうち、画像の予測方法に関する予測パラメータ情報の一部または全部が二値化された第2部分を逆二値化する。
これにより、この復号方法を用いる装置等は、算術復号をスキップすることができる。したがって、この復号方法を用いる装置等は、算術復号によって発生する処理遅延の削減を支援することができる。また、この復号方法を用いる装置等は、全体の符号量に大きな影響を与える周波数変換係数情報が二値化された第1部分を算術復号の適用有無に従って適切に逆二値化することができる。したがって、この復号方法を用いる装置等は、周波数変換係数情報を適切に復号することができ、全体の符号量の増加を抑制することができる。
また、本発明の一態様に係る符号化装置は、画像情報を符号化する符号化装置であって、メモリと、前記メモリにアクセス可能な回路とを備え、前記メモリにアクセス可能な前記回路は、複数の周波数変換係数で構成される周波数変換ブロックにおける1以上の基本ブロックに対して周波数の高い順に規定される所定のスキャン順で最初に非ゼロ係数を含む基本ブロックである特定基本ブロックの位置を示す位置情報を符号化し、前記1以上の基本ブロックのうち、前記所定のスキャン順で前記特定基本ブロック以降の各基本ブロックについてのみ、当該基本ブロックを構成する複数の周波数変換係数を示すブロック情報を符号化する符号化装置であってもよい。
これにより、符号化装置は、位置情報及びブロック情報を周波数変換係数情報として符号化することができる。そして、符号化装置は、所定のスキャン順で特定基本ブロック以降の各基本ブロックについて、ブロック情報を符号化するため、周波数変換係数情報の符号量を小さくすることを支援することができる。
例えば、前記回路は、前記1以上の基本ブロックの個数が2以上である場合のみ、前記位置情報を符号化してもよい。
これにより、符号化装置は、例えば周波数変換ブロックのサイズと各基本ブロックのサイズとが同じである場合に、周波数変換係数情報の符号量をより小さくすることを支援することができる。
また、例えば、前記回路は、前記周波数変換ブロックに前記特定基本ブロックが存在する場合のみ、前記位置情報及び前記ブロック情報を符号化してもよい。
これにより、符号化装置は、例えば周波数変換ブロックに非ゼロ係数が含まれない場合に、周波数変換係数情報の符号量をより小さくすることを支援することができる。
また、例えば、前記回路は、前記画像情報を符号化して、前記画像情報が符号化されたビット列を出力し、前記画像情報の符号化、及び、前記ビット列の出力において、前記画像情報を二値化し、前記画像情報が二値化された二値化データ列に対して算術符号化を適用するか否かを切り替え、前記二値化データ列に対して算術符号化が適用される場合、前記二値化データ列に対して算術符号化を適用して、算術符号化が適用された前記二値化データ列を含む前記ビット列を出力し、前記二値化データ列に対して算術符号化が適用されない場合、前記二値化データ列に対して算術符号化を適用せずに、算術符号化が適用されなかった前記二値化データ列を含む前記ビット列を出力し、前記画像情報の二値化において、前記二値化データ列に対して算術符号化が適用される場合と、前記二値化データ列に対して算術符号化が適用されない場合とで異なる二値化形式に従って、前記画像情報のうち、画像の周波数成分に関する周波数変換係数情報を二値化し、前記画像情報の二値化において、前記二値化データ列に対して算術符号化が適用される場合と、前記二値化データ列に対して算術符号化が適用されない場合とで共通の二値化形式に従って、前記画像情報のうち、画像の予測方法に関する予測パラメータ情報の一部または全部を二値化し、前記二値化データ列に対して算術符号化が適用されない場合、前記周波数変換係数情報の二値化において、前記位置情報及び前記ブロック情報を含む前記周波数変換係数情報を二値化することにより、前記位置情報及び前記ブロック情報を符号化してもよい。
これにより、符号化装置は、算術符号化が適用されない場合に、周波数変換係数情報の符号量を小さくすることを支援することができる。
また、本発明の一態様に係る復号装置は、画像情報を復号する復号装置であって、メモリと、前記メモリにアクセス可能な回路とを備え、前記メモリにアクセス可能な前記回路は、複数の周波数変換係数で構成される周波数変換ブロックにおける1以上の基本ブロックに対して周波数の高い順に規定される所定のスキャン順で最初に非ゼロ係数を含む基本ブロックである特定基本ブロックの位置を示す位置情報を復号し、前記1以上の基本ブロックのうち、前記所定のスキャン順で前記特定基本ブロック以降の各基本ブロックについてのみ、当該基本ブロックを構成する複数の周波数変換係数を示すブロック情報を復号する復号装置であってもよい。
これにより、復号装置は、位置情報及びブロック情報を周波数変換係数情報として復号することができる。そして、復号装置は、所定のスキャン順で特定基本ブロック以降の各基本ブロックについて、ブロック情報を復号するため、周波数変換係数情報の符号量を小さくすることを支援することができる。
例えば、前記回路は、前記1以上の基本ブロックの個数が2以上である場合のみ、前記位置情報を復号してもよい。
これにより、復号装置は、例えば周波数変換ブロックのサイズと各基本ブロックのサイズとが同じである場合に、周波数変換係数情報の符号量をより小さくすることを支援することができる。
また、例えば、前記回路は、前記周波数変換ブロックに前記特定基本ブロックが存在する場合のみ、前記位置情報及び前記ブロック情報を復号してもよい。
これにより、復号装置は、例えば周波数変換ブロックに非ゼロ係数が含まれない場合に、周波数変換係数情報の符号量をより小さくすることを支援することができる。
また、例えば、前記回路は、前記画像情報が符号化されたビット列を取得して、前記画像情報を復号し、前記ビット列の取得、及び、前記画像情報の復号において、前記画像情報が二値化された二値化データ列を含む前記ビット列を取得し、前記ビット列に含まれる前記二値化データ列に対して算術復号を適用するか否かを切り替え、前記二値化データ列に対して算術復号が適用される場合、前記二値化データ列に対して算術復号を適用して、算術復号が適用された前記二値化データ列を逆二値化することにより、前記画像情報を復号し、前記二値化データ列に対して算術復号が適用されない場合、前記二値化データ列に対して算術復号を適用せずに、算術復号が適用されなかった前記二値化データ列を逆二値化することにより、前記画像情報を復号し、前記二値化データ列の逆二値化において、前記二値化データ列に対して算術復号が適用される場合と、前記二値化データ列に対して算術復号が適用されない場合とで異なる逆二値化形式に従って、前記二値化データ列のうち、画像の周波数成分に関する周波数変換係数情報が二値化された第1部分を逆二値化し、前記二値化データ列の逆二値化において、前記二値化データ列に対して算術復号が適用される場合と、前記二値化データ列に対して算術復号が適用されない場合とで共通の逆二値化形式に従って、前記二値化データ列のうち、画像の予測方法に関する予測パラメータ情報の一部または全部が二値化された第2部分を逆二値化し、前記二値化データ列に対して算術復号が適用されない場合、前記第1部分の逆二値化において、前記位置情報及び前記ブロック情報を含む前記周波数変換係数情報が二値化された前記第1部分を逆二値化することにより、前記位置情報及び前記ブロック情報を復号してもよい。
これにより、復号装置は、算術復号が適用されない場合に、周波数変換係数情報の符号量を小さくすることを支援することができる。
また、本発明の一態様に係る符号化方法は、画像情報を符号化する符号化方法であって、複数の周波数変換係数で構成される周波数変換ブロックにおける1以上の基本ブロックに対して周波数の高い順に規定される所定のスキャン順で最初に非ゼロ係数を含む基本ブロックである特定基本ブロックの位置を示す位置情報を符号化し、前記1以上の基本ブロックのうち、前記所定のスキャン順で前記特定基本ブロック以降の各基本ブロックについてのみ、当該基本ブロックを構成する複数の周波数変換係数を示すブロック情報を符号化する符号化方法であってもよい。
これにより、この符号化方法を用いる装置等は、位置情報及びブロック情報を周波数変換係数情報として符号化することができる。そして、この符号化方法を用いる装置等は、所定のスキャン順で特定基本ブロック以降の各基本ブロックについて、ブロック情報を符号化するため、周波数変換係数情報の符号量を小さくすることを支援することができる。
また、本発明の一態様に係る復号方法は、画像情報を復号する復号方法であって、複数の周波数変換係数で構成される周波数変換ブロックにおける1以上の基本ブロックに対して周波数の高い順に規定される所定のスキャン順で最初に非ゼロ係数を含む基本ブロックである特定基本ブロックの位置を示す位置情報を復号し、前記1以上の基本ブロックのうち、前記所定のスキャン順で前記特定基本ブロック以降の各基本ブロックについてのみ、当該基本ブロックを構成する複数の周波数変換係数を示すブロック情報を復号する復号方法であってもよい。
これにより、この復号方法を用いる装置等は、位置情報及びブロック情報を周波数変換係数情報として復号することができる。そして、この復号方法を用いる装置等は、所定のスキャン順で特定基本ブロック以降の各基本ブロックについて、ブロック情報を復号するため、周波数変換係数情報の符号量を小さくすることを支援することができる。
また、本発明の一態様に係る符号化装置は、画像情報を符号化する符号化装置であって、メモリと、前記メモリにアクセス可能な回路とを備え、前記メモリにアクセス可能な前記回路は、複数の周波数変換係数で構成される周波数変換ブロックにおける1以上の基本ブロックの1つであるカレント基本ブロックに含まれる非ゼロ係数の個数を示すデータ値を複数のデータ値と複数の二値化値とが対応付けられた変換テーブルに従って二値化して、前記データ値を含む前記画像情報を符号化し、前記データ値の二値化において、前記非ゼロ係数の個数として0を示すデータ値の対応付けを含む第1テーブルと、前記非ゼロ係数の個数として0を示すデータ値の対応付けを含まない第2テーブルとを含む複数のテーブルの中から前記変換テーブルを選択して、選択された前記変換テーブルに従って、前記データ値を二値化する符号化装置であってもよい。
これにより、符号化装置は、基本ブロックを構成する複数の周波数変換係数を効率的に示すための情報を適切に符号化することができる。また、符号化装置は、情報量が削減されたテーブルを二値化のための変換テーブルとして用いることができる。したがって、符号化装置は、周波数変換係数情報の符号量を小さくすることを支援することができる。
例えば、前記回路は、前記データ値の二値化において、前記1以上の基本ブロックに対して周波数の高い順に規定される所定のスキャン順で、前記1以上の基本ブロックのうち最初に非ゼロ係数を含む基本ブロックである特定基本ブロック以降の各基本ブロックについてのみ、当該基本ブロックに含まれる非ゼロ係数の個数を示すデータ値を前記カレント基本ブロックに含まれる非ゼロ係数の個数を示すデータ値として二値化してもよい。
これにより、符号化装置は、周波数変換係数情報の符号量をより小さくすることを支援することができる。
また、例えば、前記回路は、前記データ値の二値化において、前記1以上の基本ブロックに前記特定基本ブロックが存在する場合のみ、前記データ値を二値化し、前記変換テーブルの選択において、前記周波数変換ブロックと前記カレント基本ブロックとが同じである場合、前記第2テーブルを前記変換テーブルとして選択してもよい。
これにより、符号化装置は、例えば周波数変換ブロックのサイズと各基本ブロックのサイズとが同じである場合に、0個の非ゼロ係数の対応付けを含まない第2テーブルを用いて、周波数変換係数情報の符号量を小さくすることを支援することができる。
また、例えば、前記回路は、前記変換テーブルの選択において、前記カレント基本ブロックが前記特定基本ブロックである場合、前記第2テーブルを前記変換テーブルとして選択してもよい。
これにより、符号化装置は、例えばカレント基本ブロックが特定基本ブロックである場合に、0個の非ゼロ係数の対応付けを含まない第2テーブルを用いて、周波数変換係数情報の符号量を小さくすることを支援することができる。
また、例えば、前記回路は、前記画像情報を符号化して、前記画像情報が符号化されたビット列を出力し、前記画像情報の符号化、及び、前記ビット列の出力において、前記画像情報を二値化し、前記画像情報が二値化された二値化データ列に対して算術符号化を適用するか否かを切り替え、前記二値化データ列に対して算術符号化が適用される場合、前記二値化データ列に対して算術符号化を適用して、算術符号化が適用された前記二値化データ列を含む前記ビット列を出力し、前記二値化データ列に対して算術符号化が適用されない場合、前記二値化データ列に対して算術符号化を適用せずに、算術符号化が適用されなかった前記二値化データ列を含む前記ビット列を出力し、前記画像情報の二値化において、前記二値化データ列に対して算術符号化が適用される場合と、前記二値化データ列に対して算術符号化が適用されない場合とで異なる二値化形式に従って、前記画像情報のうち、画像の周波数成分に関する周波数変換係数情報を二値化し、前記画像情報の二値化において、前記二値化データ列に対して算術符号化が適用される場合と、前記二値化データ列に対して算術符号化が適用されない場合とで共通の二値化形式に従って、前記画像情報のうち、画像の予測方法に関する予測パラメータ情報の一部または全部を二値化し、前記二値化データ列に対して算術符号化が適用されない場合、前記周波数変換係数情報の二値化において、前記第1テーブルと前記第2テーブルとを含む前記複数のテーブルの中から選択された前記変換テーブルに従って、前記周波数変換係数情報に含まれる前記データ値を二値化してもよい。
これにより、符号化装置は、算術符号化が適用されない場合に、0個の非ゼロ係数の対応付けを含まない第2テーブルを含む複数のテーブルの中から選択される変換テーブルを用いて、周波数変換係数情報の符号量を小さくすることを支援することができる。
また、本発明の一態様に係る復号装置は、画像情報を復号する復号装置であって、メモリと、前記メモリにアクセス可能な回路とを備え、前記メモリにアクセス可能な前記回路は、複数の周波数変換係数で構成される周波数変換ブロックにおける1以上の基本ブロックの1つであるカレント基本ブロックに含まれる非ゼロ係数の個数を示すデータ値が二値化された二値化値を複数のデータ値と複数の二値化値とが対応付けられた変換テーブルに従って逆二値化して、前記データ値を含む前記画像情報を復号し、前記二値化値の逆二値化において、前記非ゼロ係数の個数として0を示すデータ値の対応付けを含む第1テーブルと、前記非ゼロ係数の個数として0を示すデータ値の対応付けを含まない第2テーブルとを含む複数のテーブルの中から前記変換テーブルを選択して、選択された前記変換テーブルに従って、前記二値化値を逆二値化する復号装置であってもよい。
これにより、復号装置は、基本ブロックを構成する複数の周波数変換係数を効率的に示すための情報を適切に復号することができる。また、復号装置は、情報量が削減されたテーブルを逆二値化のための変換テーブルとして用いることができる。したがって、復号装置は、周波数変換係数情報の符号量を小さくすることを支援することができる。
例えば、前記回路は、前記二値化値の逆二値化において、前記1以上の基本ブロックに対して周波数の高い順に規定される所定のスキャン順で、前記1以上の基本ブロックのうち最初に非ゼロ係数を含む基本ブロックである特定基本ブロック以降の各基本ブロックについてのみ、当該基本ブロックに含まれる非ゼロ係数の個数を示すデータ値が二値化された二値化値を前記カレント基本ブロックに含まれる非ゼロ係数の個数を示すデータ値が二値化された二値化値として逆二値化してもよい。
これにより、復号装置は、周波数変換係数情報の符号量をより小さくすることを支援することができる。
また、例えば、前記回路は、前記二値化値の逆二値化において、前記1以上の基本ブロックに前記特定基本ブロックが存在する場合のみ、前記二値化値を逆二値化し、前記変換テーブルの選択において、前記周波数変換ブロックと前記カレント基本ブロックとが同じである場合、前記第2テーブルを前記変換テーブルとして選択してもよい。
これにより、復号装置は、例えば周波数変換ブロックのサイズと各基本ブロックのサイズとが同じである場合に、0個の非ゼロ係数の対応付けを含まない第2テーブルを用いて、周波数変換係数情報の符号量を小さくすることを支援することができる。
また、例えば、前記回路は、前記変換テーブルの選択において、前記カレント基本ブロックが前記特定基本ブロックである場合、前記第2テーブルを前記変換テーブルとして選択してもよい。
これにより、復号装置は、例えばカレント基本ブロックが特定基本ブロックである場合に、0個の非ゼロ係数の対応付けを含まない第2テーブルを用いて、周波数変換係数情報の符号量を小さくすることを支援することができる。
また、例えば、前記回路は、前記画像情報が符号化されたビット列を取得して、前記画像情報を復号し、前記ビット列の取得、及び、前記画像情報の復号において、前記画像情報が二値化された二値化データ列を含む前記ビット列を取得し、前記ビット列に含まれる前記二値化データ列に対して算術復号を適用するか否かを切り替え、前記二値化データ列に対して算術復号が適用される場合、前記二値化データ列に対して算術復号を適用して、算術復号が適用された前記二値化データ列を逆二値化することにより、前記画像情報を復号し、前記二値化データ列に対して算術復号が適用されない場合、前記二値化データ列に対して算術復号を適用せずに、算術復号が適用されなかった前記二値化データ列を逆二値化することにより、前記画像情報を復号し、前記二値化データ列の逆二値化において、前記二値化データ列に対して算術復号が適用される場合と、前記二値化データ列に対して算術復号が適用されない場合とで異なる逆二値化形式に従って、前記二値化データ列のうち、画像の周波数成分に関する周波数変換係数情報が二値化された第1部分を逆二値化し、前記二値化データ列の逆二値化において、前記二値化データ列に対して算術復号が適用される場合と、前記二値化データ列に対して算術復号が適用されない場合とで共通の逆二値化形式に従って、前記二値化データ列のうち、画像の予測方法に関する予測パラメータ情報の一部または全部が二値化された第2部分を逆二値化し、前記二値化データ列に対して算術復号が適用されない場合、前記第1部分の逆二値化において、前記第1テーブルと前記第2テーブルとを含む前記複数のテーブルの中から選択された前記変換テーブルに従って、前記第1部分に含まれる前記二値化値を逆二値化してもよい。
これにより、復号装置は、算術復号が適用されない場合に、0個の非ゼロ係数の対応付けを含まない第2テーブルを含む複数のテーブルの中から選択される変換テーブルを用いて、周波数変換係数情報の符号量を小さくすることを支援することができる。
また、本発明の一態様に係る符号化方法は、画像情報を符号化する符号化方法であって、複数の周波数変換係数で構成される周波数変換ブロックにおける1以上の基本ブロックの1つであるカレント基本ブロックに含まれる非ゼロ係数の個数を示すデータ値を複数のデータ値と複数の二値化値とが対応付けられた変換テーブルに従って二値化して、前記データ値を含む前記画像情報を符号化し、前記データ値の二値化において、前記非ゼロ係数の個数として0を示すデータ値の対応付けを含む第1テーブルと、前記非ゼロ係数の個数として0を示すデータ値の対応付けを含まない第2テーブルとを含む複数のテーブルの中から前記変換テーブルを選択して、選択された前記変換テーブルに従って、前記データ値を二値化する符号化方法であってもよい。
これにより、この符号化方法を用いる装置等は、基本ブロックを構成する複数の周波数変換係数を効率的に示すための情報を適切に符号化することができる。また、この符号化方法を用いる装置等は、情報量が削減されたテーブルを二値化のための変換テーブルとして用いることができる。したがって、この符号化方法を用いる装置等は、周波数変換係数情報の符号量を小さくすることを支援することができる。
また、本発明の一態様に係る復号方法は、画像情報を復号する復号方法であって、複数の周波数変換係数で構成される周波数変換ブロックにおける1以上の基本ブロックの1つであるカレント基本ブロックに含まれる非ゼロ係数の個数を示すデータ値が二値化された二値化値を複数のデータ値と複数の二値化値とが対応付けられた変換テーブルに従って逆二値化して、前記データ値を含む前記画像情報を復号し、前記二値化値の逆二値化において、前記非ゼロ係数の個数として0を示すデータ値の対応付けを含む第1テーブルと、前記非ゼロ係数の個数として0を示すデータ値の対応付けを含まない第2テーブルとを含む複数のテーブルの中から前記変換テーブルを選択して、選択された前記変換テーブルに従って、前記二値化値を逆二値化する復号方法であってもよい。
これにより、この復号方法を用いる装置等は、基本ブロックを構成する複数の周波数変換係数を効率的に示すための情報を適切に復号することができる。また、この復号方法を用いる装置等は、情報量が削減されたテーブルを逆二値化のための変換テーブルとして用いることができる。したがって、この復号方法を用いる装置等は、周波数変換係数情報の符号量を小さくすることを支援することができる。
また、本発明の一態様に係る符号化装置は、画像情報を符号化する符号化装置であって、メモリと、前記メモリにアクセス可能な回路とを備え、前記メモリにアクセス可能な前記回路は、複数の周波数変換係数で構成される周波数変換ブロックにおける1以上の基本ブロックの1つであるカレント基本ブロックに含まれる非ゼロ係数の個数を示すデータ値を複数のデータ値と複数の二値化値とが対応付けられた変換テーブルに従って二値化して、前記データ値を含む前記画像情報を符号化し、前記データ値の二値化において、前記カレント基本ブロックを含む前記周波数変換ブロックであるカレント周波数変換ブロックにおける前記カレント基本ブロックの位置に従って、複数のデータ値に対応付けられた複数の二値化値の最長ビット長と最短ビット長との差が互いに異なる2以上のテーブルを含む複数のテーブルの中から前記変換テーブルを選択して、選択された前記変換テーブルに従って、前記データ値を二値化する符号化装置であってもよい。
これにより、符号化装置は、基本ブロックを構成する複数の周波数変換係数を効率的に示すための情報を適切に符号化することができる。また、符号化装置は、非ゼロ係数の個数を示すデータ値を二値化するための変換テーブルをカレント基本ブロックの位置に従って選択することができる。非ゼロ係数の個数の特性は、カレント基本ブロックの位置により異なる。したがって、符号化装置は、カレント基本ブロックの位置を用いて、非ゼロ係数の個数の特性を変換テーブルの選択に反映させることができる。よって、符号化装置は、変換テーブルを適切に選択することができ、周波数変換係数情報の符号量を小さくすることを支援することができる。
例えば、前記回路は、前記変換テーブルの選択において、前記1以上の基本ブロックに対して周波数の高い順に規定される所定のスキャン順で前記カレント基本ブロックよりも前の基本ブロックである先行基本ブロックが、前記カレント基本ブロックの位置における周波数のレベルと同じレベルに存在する場合、前記先行基本ブロックに含まれる非ゼロ係数の個数に従って、前記変換テーブルを選択してもよい。
これにより、符号化装置は、カレント基本ブロックに非ゼロ係数の個数が類似すると推定される先行基本ブロックの非ゼロ係数の個数に従って、変換テーブルを選択することができる。
また、例えば、前記回路は、前記変換テーブルの選択において、前記先行基本ブロックが前記同じレベルに存在し、かつ、前記先行基本ブロックに含まれる非ゼロ係数の個数が第1個数である場合、前記複数のテーブルの中から第1テーブルを前記変換テーブルとして選択し、前記先行基本ブロックが前記同じレベルに存在し、かつ、前記先行基本ブロックに含まれる非ゼロ係数の個数が前記第1個数よりも多い第2個数である場合、前記複数のテーブルの中から前記第1テーブルよりも前記差が小さい第2テーブルを前記変換テーブルとして選択してもよい。
これにより、符号化装置は、先行基本ブロックの非ゼロ係数の個数に従ってカレント基本ブロックの非ゼロ係数の個数が多いと推定される場合、ビット長の差が小さいテーブルを変換テーブルとして選択し、符号量の増加の抑制を支援することができる。
また、例えば、前記回路は、前記変換テーブルの選択において、前記1以上の基本ブロックに対して周波数の高い順に規定される所定のスキャン順で前記カレント基本ブロックよりも前の基本ブロックである先行基本ブロックが、前記カレント基本ブロックの位置における周波数のレベルと同じレベルに存在せず、かつ、前記所定のスキャン順で最初に非ゼロ係数を含む基本ブロックである特定基本ブロックが前記カレント基本ブロックの位置における周波数のレベルよりも高いレベルに存在する場合、前記複数のテーブルの中から前記差が所定の差よりも小さいテーブルを前記変換テーブルとして選択してもよい。
これにより、符号化装置は、カレント基本ブロック及び特定基本ブロックの関係に従って非ゼロ係数の個数が多いと推定される場合、ビット長の差が小さいテーブルを変換テーブルとして選択し、符号量の増加の抑制を支援することができる。
また、例えば、前記回路は、前記変換テーブルの選択において、前記先行基本ブロックが前記同じレベルに存在せず、かつ、前記特定基本ブロックが前記高いレベルに存在する場合、前記複数のテーブルの中から前記差が最も小さいテーブルを前記変換テーブルとして選択してもよい。
これにより、符号化装置は、カレント基本ブロック及び特定基本ブロックの関係に従って非ゼロ係数の個数が多いと推定される場合、ビット長の差が小さいテーブルを変換テーブルとして選択し、符号量の増加をより抑制することを支援することができる。
また、例えば、前記回路は、前記変換テーブルの選択において、前記1以上の基本ブロックに対して周波数の高い順に規定される所定のスキャン順で前記カレント基本ブロックよりも前の基本ブロックである先行基本ブロックが、前記カレント基本ブロックの位置における周波数のレベルと同じレベルに存在せず、かつ、前記所定のスキャン順で最初に非ゼロ係数を含む基本ブロックである特定基本ブロックが前記カレント基本ブロックの位置における周波数のレベルよりも高いレベルに存在しない場合、前記カレント周波数変換ブロックの周辺の周波数変換ブロックである周辺周波数変換ブロックから前記カレント基本ブロックに含まれる非ゼロ係数の個数として推定される個数に従って、前記変換テーブルを選択してもよい。
これにより、符号化装置は、カレント基本ブロックに非ゼロ係数の個数が類似すると推定される周辺周波数変換ブロックを用いて、変換テーブルを選択することができる。
また、例えば、前記回路は、前記変換テーブルの選択において、前記先行基本ブロックが前記同じレベルに存在せず、かつ、前記特定基本ブロックが前記高いレベルに存在せず、かつ、前記周辺周波数変換ブロックから推定される個数が第1個数である場合、前記複数のテーブルの中から第1テーブルを前記変換テーブルとして選択し、前記先行基本ブロックが前記同じレベルに存在せず、かつ、前記特定基本ブロックが前記高いレベルに存在せず、かつ、前記周辺周波数変換ブロックから推定される個数が前記第1個数よりも多い第2個数である場合、前記複数のテーブルの中から前記第1テーブルよりも前記差が小さい第2テーブルを前記変換テーブルとして選択してもよい。
これにより、符号化装置は、周辺周波数変換ブロックに従ってカレント基本ブロックの非ゼロ係数の個数が多いと推定される場合、ビット長の差が小さいテーブルを変換テーブルとして選択し、符号量の増加の抑制を支援することができる。
また、例えば、前記周辺周波数変換ブロックは、(i)前記カレント周波数変換ブロックの左又は上に隣接する周波数変換ブロック、(ii)前記カレント周波数変換ブロックの直前に符号化された周波数変換ブロック、又は、(iii)前記カレント周波数変換ブロックから所定の範囲内に位置し、面間予測か面内予測かの符号化モードが前記カレント周波数変換ブロックと同じ周波数変換ブロックであってもよい。
これにより、符号化装置は、適切な周辺周波数変換ブロックを用いて、変換テーブルを選択することができる。
また、例えば、前記周辺周波数変換ブロックから推定される個数は、(i)前記周辺周波数変換ブロックにおける1以上の基本ブロックのうち、前記周辺周波数変換ブロックに対する相対的な位置が、前記カレント周波数変換ブロックに対する前記カレント基本ブロックの相対的な位置に等しい基本ブロックに含まれる非ゼロ係数の個数、又は、(ii)前記周辺周波数変換ブロックの全体に含まれる非ゼロ係数の個数から推定されてもよい。
これにより、符号化装置は、周辺周波数変換ブロックから適切に推定される個数に従って、変換テーブルを選択することができる。
また、例えば、前記回路は、前記変換テーブルの選択において、前記1以上の基本ブロックに対して周波数の高い順に規定される所定のスキャン順で前記カレント基本ブロックよりも前の基本ブロックである先行基本ブロックが、前記カレント基本ブロックの位置における周波数のレベルと同じレベルに存在せず、かつ、前記所定のスキャン順で最初に非ゼロ係数を含む基本ブロックである特定基本ブロックが前記カレント基本ブロックの位置における周波数のレベルよりも高いレベルに存在しない場合、前記カレント基本ブロックの符号化モードが面間予測か面内予測かに従って、前記変換テーブルを選択してもよい。
これにより、符号化装置は、面間予測か面内予測かの符号化モードに従って、変換テーブルを選択することができる。非ゼロ係数の個数の特性は、符号化モードにより異なると推定される。したがって、符号化装置は、符号化モードを用いて、非ゼロ係数の個数の特性を変換テーブルの選択に反映させることができる。よって、符号化装置は、変換テーブルを適切に選択することができ、周波数変換係数情報の符号量を小さくすることを支援することができる。
また、例えば、前記回路は、前記変換テーブルの選択において、前記先行基本ブロックが前記同じレベルに存在せず、かつ、前記特定基本ブロックが前記高いレベルに存在せず、かつ、前記カレント基本ブロックの符号化モードが面間予測である場合、前記複数のテーブルの中から第1テーブルを前記変換テーブルとして選択し、前記先行基本ブロックが前記同じレベルに存在せず、かつ、前記特定基本ブロックが前記高いレベルに存在せず、かつ、前記カレント基本ブロックの符号化モードが面内予測である場合、前記複数のテーブルの中から前記第1テーブルよりも前記差が小さい第2テーブルを前記変換テーブルとして選択してもよい。
これにより、符号化装置は、符号化モードが面内予測であるため、予測精度が低く、非ゼロ係数の個数が多いと推定される場合に、ビット長の差が小さいテーブルを変換テーブルとして選択し、符号量の増加の抑制を支援することができる。
また、例えば、前記回路は、前記変換テーブルの選択において、前記1以上の基本ブロックに対して周波数の高い順に規定される所定のスキャン順で前記カレント基本ブロックよりも前の基本ブロックである先行基本ブロックが、前記カレント基本ブロックの位置における周波数のレベルと同じレベルに存在せず、かつ、前記所定のスキャン順で最初に非ゼロ係数を含む基本ブロックである特定基本ブロックが前記カレント基本ブロックの位置における周波数のレベルよりも高いレベルに存在しない場合、前記カレント基本ブロックの符号化に用いられる量子化パラメータに従って、前記変換テーブルを選択してもよい。
これにより、符号化装置は、カレント基本ブロックの符号化に用いられる量子化パラメータに従って、変換テーブルを選択することができる。非ゼロ係数の個数の特性は、量子化パラメータにより異なると推定される。したがって、符号化装置は、量子化パラメータを用いて、非ゼロ係数の個数の特性を変換テーブルの選択に反映させることができる。よって、符号化装置は、変換テーブルを適切に選択することができ、周波数変換係数情報の符号量を小さくすることを支援することができる。
また、例えば、前記回路は、前記変換テーブルの選択において、前記先行基本ブロックが前記同じレベルに存在せず、かつ、前記特定基本ブロックが前記高いレベルに存在せず、かつ、前記量子化パラメータが第1の値である場合、前記複数のテーブルの中から第1テーブルを前記変換テーブルとして選択し、前記先行基本ブロックが前記同じレベルに存在せず、かつ、前記特定基本ブロックが前記高いレベルに存在せず、かつ、前記量子化パラメータが第1の値よりも小さい第2の値である場合、前記複数のテーブルの中から前記第1テーブルよりも前記差が小さい第2テーブルを前記変換テーブルとして選択してもよい。
これにより、符号化装置は、量子化パラメータが小さいことによって非ゼロ係数の個数が多いと推定される場合に、ビット長の差が小さいテーブルを変換テーブルとして選択し、符号量の増加の抑制を支援することができる。
また、例えば、前記回路は、前記画像情報を符号化して、前記画像情報が符号化されたビット列を出力し、前記画像情報の符号化、及び、前記ビット列の出力において、前記画像情報を二値化し、前記画像情報が二値化された二値化データ列に対して算術符号化を適用するか否かを切り替え、前記二値化データ列に対して算術符号化が適用される場合、前記二値化データ列に対して算術符号化を適用して、算術符号化が適用された前記二値化データ列を含む前記ビット列を出力し、前記二値化データ列に対して算術符号化が適用されない場合、前記二値化データ列に対して算術符号化を適用せずに、算術符号化が適用されなかった前記二値化データ列を含む前記ビット列を出力し、前記画像情報の二値化において、前記二値化データ列に対して算術符号化が適用される場合と、前記二値化データ列に対して算術符号化が適用されない場合とで異なる二値化形式に従って、前記画像情報のうち、画像の周波数成分に関する周波数変換係数情報を二値化し、前記画像情報の二値化において、前記二値化データ列に対して算術符号化が適用される場合と、前記二値化データ列に対して算術符号化が適用されない場合とで共通の二値化形式に従って、前記画像情報のうち、画像の予測方法に関する予測パラメータ情報の一部または全部を二値化し、前記二値化データ列に対して算術符号化が適用されない場合、前記周波数変換係数情報の二値化において、前記複数のテーブルの中から前記カレント基本ブロックの位置に従って選択された前記変換テーブルに従って、前記周波数変換係数情報に含まれる前記データ値を二値化してもよい。
これにより、符号化装置は、算術符号化が適用されない場合に、複数のテーブルの中からカレント基本ブロックの位置に従って選択される変換テーブルを用いて、周波数変換係数情報の符号量を小さくすることを支援することができる。
また、本発明の一態様に係る復号装置は、画像情報を復号する復号装置であって、メモリと、前記メモリにアクセス可能な回路とを備え、前記メモリにアクセス可能な前記回路は、複数の周波数変換係数で構成される周波数変換ブロックにおける1以上の基本ブロックの1つであるカレント基本ブロックに含まれる非ゼロ係数の個数を示すデータ値が二値化された二値化値を複数のデータ値と複数の二値化値とが対応付けられた変換テーブルに従って逆二値化して、前記データ値を含む前記画像情報を復号し、前記二値化値の逆二値化において、前記カレント基本ブロックを含む前記周波数変換ブロックであるカレント周波数変換ブロックにおける前記カレント基本ブロックの位置に従って、複数のデータ値に対応付けられた複数の二値化値の最長ビット長と最短ビット長との差が互いに異なる2以上のテーブルを含む複数のテーブルの中から前記変換テーブルを選択して、選択された前記変換テーブルに従って、前記二値化値を逆二値化する復号装置であってもよい。
これにより、復号装置は、基本ブロックを構成する複数の周波数変換係数を効率的に示すための情報を適切に復号することができる。また、復号装置は、非ゼロ係数の個数を示すデータ値の二値化値を逆二値化するための変換テーブルをカレント基本ブロックの位置に従って選択することができる。非ゼロ係数の個数の特性は、カレント基本ブロックの位置により異なる。したがって、復号装置は、カレント基本ブロックの位置を用いて、非ゼロ係数の個数の特性を変換テーブルの選択に反映させることができる。よって、復号装置は、変換テーブルを適切に選択することができ、周波数変換係数情報の符号量を小さくすることを支援することができる。
例えば、前記回路は、前記変換テーブルの選択において、前記1以上の基本ブロックに対して周波数の高い順に規定される所定のスキャン順で前記カレント基本ブロックよりも前の基本ブロックである先行基本ブロックが、前記カレント基本ブロックの位置における周波数のレベルと同じレベルに存在する場合、前記先行基本ブロックに含まれる非ゼロ係数の個数に従って、前記変換テーブルを選択してもよい。
これにより、復号装置は、カレント基本ブロックに非ゼロ係数の個数が類似すると推定される先行基本ブロックの非ゼロ係数の個数に従って、変換テーブルを選択することができる。
また、例えば、前記回路は、前記変換テーブルの選択において、前記先行基本ブロックが前記同じレベルに存在し、かつ、前記先行基本ブロックに含まれる非ゼロ係数の個数が第1個数である場合、前記複数のテーブルの中から第1テーブルを前記変換テーブルとして選択し、前記先行基本ブロックが前記同じレベルに存在し、かつ、前記先行基本ブロックに含まれる非ゼロ係数の個数が前記第1個数よりも多い第2個数である場合、前記複数のテーブルの中から前記第1テーブルよりも前記差が小さい第2テーブルを前記変換テーブルとして選択してもよい。
これにより、復号装置は、先行基本ブロックの非ゼロ係数の個数に従ってカレント基本ブロックの非ゼロ係数の個数が多いと推定される場合、ビット長の差が小さいテーブルを変換テーブルとして選択し、符号量の増加の抑制を支援することができる。
また、例えば、前記回路は、前記変換テーブルの選択において、前記1以上の基本ブロックに対して周波数の高い順に規定される所定のスキャン順で前記カレント基本ブロックよりも前の基本ブロックである先行基本ブロックが、前記カレント基本ブロックの位置における周波数のレベルと同じレベルに存在せず、かつ、前記所定のスキャン順で最初に非ゼロ係数を含む基本ブロックである特定基本ブロックが前記カレント基本ブロックの位置における周波数のレベルよりも高いレベルに存在する場合、前記複数のテーブルの中から前記差が所定の差よりも小さいテーブルを前記変換テーブルとして選択してもよい。
これにより、復号装置は、カレント基本ブロック及び特定基本ブロックの関係に従って非ゼロ係数の個数が多いと推定される場合、ビット長の差が小さいテーブルを変換テーブルとして選択し、符号量の増加の抑制を支援することができる。
また、例えば、前記回路は、前記変換テーブルの選択において、前記先行基本ブロックが前記同じレベルに存在せず、かつ、前記特定基本ブロックが前記高いレベルに存在する場合、前記複数のテーブルの中から前記差が最も小さいテーブルを前記変換テーブルとして選択してもよい。
これにより、復号装置は、カレント基本ブロック及び特定基本ブロックの関係に従って非ゼロ係数の個数が多いと推定される場合、ビット長の差が小さいテーブルを変換テーブルとして選択し、符号量の増加をより抑制することを支援することができる。
また、例えば、前記回路は、前記変換テーブルの選択において、前記1以上の基本ブロックに対して周波数の高い順に規定される所定のスキャン順で前記カレント基本ブロックよりも前の基本ブロックである先行基本ブロックが、前記カレント基本ブロックの位置における周波数のレベルと同じレベルに存在せず、かつ、前記所定のスキャン順で最初に非ゼロ係数を含む基本ブロックである特定基本ブロックが前記カレント基本ブロックの位置における周波数のレベルよりも高いレベルに存在しない場合、前記カレント周波数変換ブロックの周辺の周波数変換ブロックである周辺周波数変換ブロックから前記カレント基本ブロックに含まれる非ゼロ係数の個数として推定される個数に従って、前記変換テーブルを選択してもよい。
これにより、復号装置は、カレント基本ブロックに非ゼロ係数の個数が類似すると推定される周辺周波数変換ブロックを用いて、変換テーブルを選択することができる。
また、例えば、前記回路は、前記変換テーブルの選択において、前記先行基本ブロックが前記同じレベルに存在せず、かつ、前記特定基本ブロックが前記高いレベルに存在せず、かつ、前記周辺周波数変換ブロックから推定される個数が第1個数である場合、前記複数のテーブルの中から第1テーブルを前記変換テーブルとして選択し、前記先行基本ブロックが前記同じレベルに存在せず、かつ、前記特定基本ブロックが前記高いレベルに存在せず、かつ、前記周辺周波数変換ブロックから推定される個数が前記第1個数よりも多い第2個数である場合、前記複数のテーブルの中から前記第1テーブルよりも前記差が小さい第2テーブルを前記変換テーブルとして選択してもよい。
これにより、復号装置は、周辺周波数変換ブロックに従ってカレント基本ブロックの非ゼロ係数の個数が多いと推定される場合、ビット長の差が小さいテーブルを変換テーブルとして選択し、符号量の増加の抑制を支援することができる。
また、例えば、前記周辺周波数変換ブロックは、(i)前記カレント周波数変換ブロックの左又は上に隣接する周波数変換ブロック、(ii)前記カレント周波数変換ブロックの直前に復号された周波数変換ブロック、又は、(iii)前記カレント周波数変換ブロックから所定の範囲内に位置し、面間予測か面内予測かの符号化モードが前記カレント周波数変換ブロックと同じ周波数変換ブロックであってもよい。
これにより、復号装置は、適切な周辺周波数変換ブロックを用いて、変換テーブルを選択することができる。
また、例えば、前記周辺周波数変換ブロックから推定される個数は、(i)前記周辺周波数変換ブロックにおける1以上の基本ブロックのうち、前記周辺周波数変換ブロックに対する相対的な位置が、前記カレント周波数変換ブロックに対する前記カレント基本ブロックの相対的な位置に等しい基本ブロックに含まれる非ゼロ係数の個数、又は、(ii)前記周辺周波数変換ブロックの全体に含まれる非ゼロ係数の個数から推定されてもよい。
これにより、復号装置は、周辺周波数変換ブロックから適切に推定される個数に従って、変換テーブルを選択することができる。
また、例えば、前記回路は、前記変換テーブルの選択において、前記1以上の基本ブロックに対して周波数の高い順に規定される所定のスキャン順で前記カレント基本ブロックよりも前の基本ブロックである先行基本ブロックが、前記カレント基本ブロックの位置における周波数のレベルと同じレベルに存在せず、かつ、前記所定のスキャン順で最初に非ゼロ係数を含む基本ブロックである特定基本ブロックが前記カレント基本ブロックの位置における周波数のレベルよりも高いレベルに存在しない場合、前記カレント基本ブロックの符号化モードが面間予測か面内予測かに従って、前記変換テーブルを選択してもよい。
これにより、復号装置は、面間予測か面内予測かの符号化モードに従って、変換テーブルを選択することができる。非ゼロ係数の個数の特性は、符号化モードにより異なると推定される。したがって、復号装置は、符号化モードを用いて、非ゼロ係数の個数の特性を変換テーブルの選択に反映させることができる。よって、復号装置は、変換テーブルを適切に選択することができ、周波数変換係数情報の符号量を小さくすることを支援することができる。
また、例えば、前記回路は、前記変換テーブルの選択において、前記先行基本ブロックが前記同じレベルに存在せず、かつ、前記特定基本ブロックが前記高いレベルに存在せず、かつ、前記カレント基本ブロックの符号化モードが面間予測である場合、前記複数のテーブルの中から第1テーブルを前記変換テーブルとして選択し、前記先行基本ブロックが前記同じレベルに存在せず、かつ、前記特定基本ブロックが前記高いレベルに存在せず、かつ、前記カレント基本ブロックの符号化モードが面内予測である場合、前記複数のテーブルの中から前記第1テーブルよりも前記差が小さい第2テーブルを前記変換テーブルとして選択してもよい。
これにより、復号装置は、符号化モードが面内予測であるため、予測精度が低く、非ゼロ係数の個数が多いと推定される場合に、ビット長の差が小さいテーブルを変換テーブルとして選択し、符号量の増加の抑制を支援することができる。
また、例えば、前記回路は、前記変換テーブルの選択において、前記1以上の基本ブロックに対して周波数の高い順に規定される所定のスキャン順で前記カレント基本ブロックよりも前の基本ブロックである先行基本ブロックが、前記カレント基本ブロックの位置における周波数のレベルと同じレベルに存在せず、かつ、前記所定のスキャン順で最初に非ゼロ係数を含む基本ブロックである特定基本ブロックが前記カレント基本ブロックの位置における周波数のレベルよりも高いレベルに存在しない場合、前記カレント基本ブロックの復号に用いられる量子化パラメータに従って、前記変換テーブルを選択してもよい。
これにより、復号装置は、カレント基本ブロックの復号に用いられる量子化パラメータに従って、変換テーブルを選択することができる。非ゼロ係数の個数の特性は、量子化パラメータにより異なると推定される。したがって、復号装置は、量子化パラメータにより非ゼロ係数の個数の特性を変換テーブルの選択に反映させることができる。よって、復号装置は、変換テーブルを適切に選択することができ、周波数変換係数情報の符号量を小さくすることを支援することができる。
また、例えば、前記回路は、前記変換テーブルの選択において、前記先行基本ブロックが前記同じレベルに存在せず、かつ、前記特定基本ブロックが前記高いレベルに存在せず、かつ、前記量子化パラメータが第1の値である場合、前記複数のテーブルの中から第1テーブルを前記変換テーブルとして選択し、前記先行基本ブロックが前記同じレベルに存在せず、かつ、前記特定基本ブロックが前記高いレベルに存在せず、かつ、前記量子化パラメータが第1の値よりも小さい第2の値である場合、前記複数のテーブルの中から前記第1テーブルよりも前記差が小さい第2テーブルを前記変換テーブルとして選択してもよい。
これにより、復号装置は、量子化パラメータが小さいことによって非ゼロ係数の個数が多いと推定される場合に、ビット長の差が小さいテーブルを変換テーブルとして選択し、符号量の増加の抑制を支援することができる。
また、例えば、前記回路は、前記画像情報が符号化されたビット列を取得して、前記画像情報を復号し、前記ビット列の取得、及び、前記画像情報の復号において、前記画像情報が二値化された二値化データ列を含む前記ビット列を取得し、前記ビット列に含まれる前記二値化データ列に対して算術復号を適用するか否かを切り替え、前記二値化データ列に対して算術復号が適用される場合、前記二値化データ列に対して算術復号を適用して、算術復号が適用された前記二値化データ列を逆二値化することにより、前記画像情報を復号し、前記二値化データ列に対して算術復号が適用されない場合、前記二値化データ列に対して算術復号を適用せずに、算術復号が適用されなかった前記二値化データ列を逆二値化することにより、前記画像情報を復号し、前記二値化データ列の逆二値化において、前記二値化データ列に対して算術復号が適用される場合と、前記二値化データ列に対して算術復号が適用されない場合とで異なる逆二値化形式に従って、前記二値化データ列のうち、画像の周波数成分に関する周波数変換係数情報が二値化された第1部分を逆二値化し、前記二値化データ列の逆二値化において、前記二値化データ列に対して算術復号が適用される場合と、前記二値化データ列に対して算術復号が適用されない場合とで共通の逆二値化形式に従って、前記二値化データ列のうち、画像の予測方法に関する予測パラメータ情報の一部または全部が二値化された第2部分を逆二値化し、前記二値化データ列に対して算術復号が適用されない場合、前記第1部分の逆二値化において、前記複数のテーブルの中から前記カレント基本ブロックの位置に従って選択された前記変換テーブルに従って、前記第1部分に含まれる前記二値化値を逆二値化してもよい。
これにより、復号装置は、算術復号が適用されない場合に、複数のテーブルの中からカレント基本ブロックの位置に従って選択される変換テーブルを用いて、周波数変換係数情報の符号量を小さくすることを支援することができる。
また、本発明の一態様に係る符号化方法は、画像情報を符号化する符号化方法であって、複数の周波数変換係数で構成される周波数変換ブロックにおける1以上の基本ブロックの1つであるカレント基本ブロックに含まれる非ゼロ係数の個数を示すデータ値を複数のデータ値と複数の二値化値とが対応付けられた変換テーブルに従って二値化して、前記データ値を含む前記画像情報を符号化し、前記データ値の二値化において、前記カレント基本ブロックを含む前記周波数変換ブロックであるカレント周波数変換ブロックにおける前記カレント基本ブロックの位置に従って、複数のデータ値に対応付けられた複数の二値化値の最長ビット長と最短ビット長との差が互いに異なる2以上のテーブルを含む複数のテーブルの中から前記変換テーブルを選択して、選択された前記変換テーブルに従って、前記データ値を二値化する符号化方法であってもよい。
これにより、この符号化方法を用いる装置等は、基本ブロックを構成する複数の周波数変換係数を効率的に示すための情報を適切に符号化することができる。また、この符号化方法を用いる装置等は、非ゼロ係数の個数を示すデータ値を二値化するための変換テーブルをカレント基本ブロックの位置に従って選択することができる。非ゼロ係数の個数の特性は、カレント基本ブロックの位置により異なる。したがって、この符号化方法を用いる装置等は、カレント基本ブロックの位置を用いて、非ゼロ係数の個数の特性を変換テーブルの選択に反映させることができる。よって、この符号化方法を用いる装置等は、変換テーブルを適切に選択することができ、周波数変換係数情報の符号量を小さくすることを支援することができる。
また、本発明の一態様に係る復号方法は、画像情報を復号する復号方法であって、複数の周波数変換係数で構成される周波数変換ブロックにおける1以上の基本ブロックの1つであるカレント基本ブロックに含まれる非ゼロ係数の個数を示すデータ値が二値化された二値化値を複数のデータ値と複数の二値化値とが対応付けられた変換テーブルに従って逆二値化して、前記データ値を含む前記画像情報を復号し、前記二値化値の逆二値化において、前記カレント基本ブロックを含む前記周波数変換ブロックであるカレント周波数変換ブロックにおける前記カレント基本ブロックの位置に従って、複数のデータ値に対応付けられた複数の二値化値の最長ビット長と最短ビット長との差が互いに異なる2以上のテーブルを含む複数のテーブルの中から前記変換テーブルを選択して、選択された前記変換テーブルに従って、前記二値化値を逆二値化する復号方法であってもよい。
これにより、この復号方法を用いる装置等は、基本ブロックを構成する複数の周波数変換係数を効率的に示すための情報を適切に復号することができる。また、この復号方法を用いる装置等は、非ゼロ係数の個数を示すデータ値の二値化値を逆二値化するための変換テーブルをカレント基本ブロックの位置に従って選択することができる。非ゼロ係数の個数の特性は、カレント基本ブロックの位置により異なる。したがって、この復号方法を用いる装置等は、カレント基本ブロックの位置を用いて、非ゼロ係数の個数の特性を変換テーブルの選択に反映させることができる。よって、この復号方法を用いる装置等は、変換テーブルを適切に選択することができ、周波数変換係数情報の符号量を小さくすることを支援することができる。
さらに、これらの包括的又は具体的な態様は、システム、装置、方法、集積回路、コンピュータプログラム、又は、コンピュータ読み取り可能なCD-ROMなどの非一時的な記録媒体で実現されてもよく、システム、装置、方法、集積回路、コンピュータプログラム、及び、記録媒体の任意な組み合わせで実現されてもよい。
以下、実施の形態について図面を参照しながら具体的に説明する。
なお、以下で説明する実施の形態は、いずれも包括的または具体的な例を示すものである。以下の実施の形態で示される数値、形状、材料、構成要素、構成要素の配置位置及び接続形態、ステップ、ステップの順序などは、一例であり、請求の範囲を限定する主旨ではない。また、以下の実施の形態における構成要素のうち、最上位概念を示す独立請求項に記載されていない構成要素については、任意の構成要素として説明される。
(実施の形態1)
[符号化装置の概要]
まず、実施の形態1に係る符号化装置の概要を説明する。図1は、実施の形態1に係る符号化装置100の機能構成を示すブロック図である。符号化装置100は、動画像/画像をブロック単位で符号化する動画像/画像符号化装置である。
図1に示すように、符号化装置100は、画像をブロック単位で符号化する装置であって、分割部102と、減算部104と、変換部106と、量子化部108と、エントロピー符号化部110と、逆量子化部112と、逆変換部114と、加算部116と、ブロックメモリ118と、ループフィルタ部120と、フレームメモリ122と、イントラ予測部124と、インター予測部126と、予測制御部128と、を備える。
符号化装置100は、例えば、汎用プロセッサ及びメモリにより実現される。この場合、メモリに格納されたソフトウェアプログラムがプロセッサにより実行されたときに、プロセッサは、分割部102、減算部104、変換部106、量子化部108、エントロピー符号化部110、逆量子化部112、逆変換部114、加算部116、ループフィルタ部120、イントラ予測部124、インター予測部126及び予測制御部128として機能する。また、符号化装置100は、分割部102、減算部104、変換部106、量子化部108、エントロピー符号化部110、逆量子化部112、逆変換部114、加算部116、ループフィルタ部120、イントラ予測部124、インター予測部126及び予測制御部128に対応する専用の1以上の電子回路として実現されてもよい。
以下に、符号化装置100に含まれる各構成要素について説明する。
[分割部]
分割部102は、入力動画像に含まれる各ピクチャを複数のブロックに分割し、各ブロックを減算部104に出力する。例えば、分割部102は、まず、ピクチャを固定サイズ(例えば128x128)のブロックに分割する。この固定サイズのブロックは、符号化ツリーユニット(CTU)と呼ばれることがある。そして、分割部102は、再帰的な四分木(quadtree)及び/又は二分木(binary tree)ブロック分割に基づいて、固定サイズのブロックの各々を可変サイズ(例えば64x64以下)のブロックに分割する。この可変サイズのブロックは、符号化ユニット(CU)、予測ユニット(PU)あるいは変換ユニット(TU)と呼ばれることがある。なお、本実施の形態では、CU、PU及びTUは区別される必要はなく、ピクチャ内の一部又はすべてのブロックがCU、PU、TUの処理単位となってもよい。
図2は、実施の形態1におけるブロック分割の一例を示す図である。図2において、実線は四分木ブロック分割によるブロック境界を表し、破線は二分木ブロック分割によるブロック境界を表す。
ここでは、ブロック10は、128x128画素の正方形ブロック(128x128ブロック)である。この128x128ブロック10は、まず、4つの正方形の64x64ブロックに分割される(四分木ブロック分割)。
左上の64x64ブロックは、さらに2つの矩形の32x64ブロックに垂直に分割され、左の32x64ブロックはさらに2つの矩形の16x64ブロックに垂直に分割される(二分木ブロック分割)。その結果、左上の64x64ブロックは、2つの16x64ブロック11、12と、32x64ブロック13とに分割される。
右上の64x64ブロックは、2つの矩形の64x32ブロック14、15に水平に分割される(二分木ブロック分割)。
左下の64x64ブロックは、4つの正方形の32x32ブロックに分割される(四分木ブロック分割)。4つの32x32ブロックのうち左上のブロック及び右下のブロックはさらに分割される。左上の32x32ブロックは、2つの矩形の16x32ブロックに垂直に分割され、右の16x32ブロックはさらに2つの16x16ブロックに水平に分割される(二分木ブロック分割)。右下の32x32ブロックは、2つの32x16ブロックに水平に分割される(二分木ブロック分割)。その結果、左下の64x64ブロックは、16x32ブロック16と、2つの16x16ブロック17、18と、2つの32x32ブロック19、20と、2つの32x16ブロック21、22とに分割される。
右下の64x64ブロック23は分割されない。
以上のように、図2では、ブロック10は、再帰的な四分木及び二分木ブロック分割に基づいて、13個の可変サイズのブロック11~23に分割される。このような分割は、QTBT(quad-tree plus binary tree)分割と呼ばれることがある。
なお、図2では、1つのブロックが4つ又は2つのブロックに分割されていたが(四分木又は二分木ブロック分割)、分割はこれに限定されない。例えば、1つのブロックが3つのブロックに分割されてもよい(三分木ブロック分割)。このような三分木ブロック分割を含む分割は、MBT(multi type tree)分割と呼ばれることがある。
[減算部]
減算部104は、分割部102によって分割されたブロック単位で原信号(原サンプル)から予測信号(予測サンプル)を減算する。つまり、減算部104は、符号化対象ブロック(以下、カレントブロックという)の予測誤差(残差ともいう)を算出する。そして、減算部104は、算出された予測誤差を変換部106に出力する。
原信号は、符号化装置100の入力信号であり、動画像を構成する各ピクチャの画像を表す信号(例えば輝度(luma)信号及び2つの色差(chroma)信号)である。以下において、画像を表す信号をサンプルともいうこともある。
[変換部]
変換部106は、空間領域の予測誤差を周波数領域の変換係数に変換し、変換係数を量子化部108に出力する。具体的には、変換部106は、例えば空間領域の予測誤差に対して予め定められた離散コサイン変換(DCT)又は離散サイン変換(DST)を行う。
なお、変換部106は、複数の変換タイプの中から適応的に変換タイプを選択し、選択された変換タイプに対応する変換基底関数(transform basis function)を用いて、予測誤差を変換係数に変換してもよい。このような変換は、EMT(explicit multiple core transform)又はAMT(adaptive multiple transform)と呼ばれることがある。
複数の変換タイプは、例えば、DCT-II、DCT-V、DCT-VIII、DST-I及びDST-VIIを含む。図3は、各変換タイプに対応する変換基底関数を示す表である。図3においてNは入力画素の数を示す。これらの複数の変換タイプの中からの変換タイプの選択は、例えば、予測の種類(イントラ予測及びインター予測)に依存してもよいし、イントラ予測モードに依存してもよい。
このようなEMT又はAMTを適用するか否かを示す情報(例えばAMTフラグと呼ばれる)及び選択された変換タイプを示す情報は、CUレベルで信号化される。なお、これらの情報の信号化は、CUレベルに限定される必要はなく、他のレベル(例えば、シーケンスレベル、ピクチャレベル、スライスレベル、タイルレベル又はCTUレベル)であってもよい。
また、変換部106は、変換係数(変換結果)を再変換してもよい。このような再変換は、AST(adaptive secondary transform)又はNSST(non-separable secondary transform)と呼ばれることがある。例えば、変換部106は、イントラ予測誤差に対応する変換係数のブロックに含まれるサブブロック(例えば4x4サブブロック)ごとに再変換を行う。NSSTを適用するか否かを示す情報及びNSSTに用いられる変換行列に関する情報は、CUレベルで信号化される。なお、これらの情報の信号化は、CUレベルに限定される必要はなく、他のレベル(例えば、シーケンスレベル、ピクチャレベル、スライスレベル、タイルレベル又はCTUレベル)であってもよい。
[量子化部]
量子化部108は、変換部106から出力された変換係数を量子化する。具体的には、量子化部108は、カレントブロックの変換係数を所定の走査順序で走査し、走査された変換係数に対応する量子化パラメータ(QP)に基づいて当該変換係数を量子化する。そして、量子化部108は、カレントブロックの量子化された変換係数(以下、量子化係数という)をエントロピー符号化部110及び逆量子化部112に出力する。
所定の順序は、変換係数の量子化/逆量子化のための順序である。例えば、所定の走査順序は、周波数の昇順(低周波から高周波の順)又は降順(高周波から低周波の順)で定義される。
量子化パラメータとは、量子化ステップ(量子化幅)を定義するパラメータである。例えば、量子化パラメータの値が増加すれば量子化ステップも増加する。つまり、量子化パラメータの値が増加すれば量子化誤差が増大する。
[エントロピー符号化部]
エントロピー符号化部110は、量子化部108から入力である量子化係数を可変長符号化することにより符号化信号(符号化ビットストリーム)を生成する。具体的には、エントロピー符号化部110は、例えば、量子化係数を二値化し、二値信号を算術符号化する。
[逆量子化部]
逆量子化部112は、量子化部108からの入力である量子化係数を逆量子化する。具体的には、逆量子化部112は、カレントブロックの量子化係数を所定の走査順序で逆量子化する。そして、逆量子化部112は、カレントブロックの逆量子化された変換係数を逆変換部114に出力する。
[逆変換部]
逆変換部114は、逆量子化部112からの入力である変換係数を逆変換することにより予測誤差を復元する。具体的には、逆変換部114は、変換係数に対して、変換部106による変換に対応する逆変換を行うことにより、カレントブロックの予測誤差を復元する。そして、逆変換部114は、復元された予測誤差を加算部116に出力する。
なお、復元された予測誤差は、量子化により情報が失われているので、減算部104が算出した予測誤差と一致しない。すなわち、復元された予測誤差には、量子化誤差が含まれている。
[加算部]
加算部116は、逆変換部114からの入力である予測誤差と予測制御部128からの入力である予測サンプルとを加算することによりカレントブロックを再構成する。そして、加算部116は、再構成されたブロックをブロックメモリ118及びループフィルタ部120に出力する。再構成ブロックは、ローカル復号ブロックと呼ばれることもある。
[ブロックメモリ]
ブロックメモリ118は、イントラ予測で参照されるブロックであって符号化対象ピクチャ(以下、カレントピクチャという)内のブロックを格納するための記憶部である。具体的には、ブロックメモリ118は、加算部116から出力された再構成ブロックを格納する。
[ループフィルタ部]
ループフィルタ部120は、加算部116によって再構成されたブロックにループフィルタを施し、フィルタされた再構成ブロックをフレームメモリ122に出力する。ループフィルタとは、符号化ループ内で用いられるフィルタ(インループフィルタ)であり、例えば、デブロッキング・フィルタ(DF)、サンプルアダプティブオフセット(SAO)及びアダプティブループフィルタ(ALF)などを含む。
ALFでは、符号化歪みを除去するための最小二乗誤差フィルタが適用され、例えばカレントブロック内の2x2サブブロックごとに、局所的な勾配(gradient)の方向及び活性度(activity)に基づいて複数のフィルタの中から選択された1つのフィルタが適用される。
具体的には、まず、サブブロック(例えば2x2サブブロック)が複数のクラス(例えば15又は25クラス)に分類される。サブブロックの分類は、勾配の方向及び活性度に基づいて行われる。例えば、勾配の方向値D(例えば0~2又は0~4)と勾配の活性値A(例えば0~4)とを用いて分類値C(例えばC=5D+A)が算出される。そして、分類値Cに基づいて、サブブロックが複数のクラス(例えば15又は25クラス)に分類される。
勾配の方向値Dは、例えば、複数の方向(例えば水平、垂直及び2つの対角方向)の勾配を比較することにより導出される。また、勾配の活性値Aは、例えば、複数の方向の勾配を加算し、加算結果を量子化することにより導出される。
このような分類の結果に基づいて、複数のフィルタの中からサブブロックのためのフィルタが決定される。
ALFで用いられるフィルタの形状としては例えば円対称形状が利用される。図4A~図4Cは、ALFで用いられるフィルタの形状の複数の例を示す図である。図4Aは、5x5ダイヤモンド形状フィルタを示し、図4Bは、7x7ダイヤモンド形状フィルタを示し、図4Cは、9x9ダイヤモンド形状フィルタを示す。フィルタの形状を示す情報は、ピクチャレベルで信号化される。なお、フィルタの形状を示す情報の信号化は、ピクチャレベルに限定される必要はなく、他のレベル(例えば、シーケンスレベル、スライスレベル、タイルレベル、CTUレベル又はCUレベル)であってもよい。
ALFのオン/オフは、例えば、ピクチャレベル又はCUレベルで決定される。例えば、輝度についてはCUレベルでALFを適用するか否かが決定され、色差についてはピクチャレベルでALFを適用するか否かが決定される。ALFのオン/オフを示す情報は、ピクチャレベル又はCUレベルで信号化される。なお、ALFのオン/オフを示す情報の信号化は、ピクチャレベル又はCUレベルに限定される必要はなく、他のレベル(例えば、シーケンスレベル、スライスレベル、タイルレベル又はCTUレベル)であってもよい。
選択可能な複数のフィルタ(例えば15又は25までのフィルタ)の係数セットは、ピクチャレベルで信号化される。なお、係数セットの信号化は、ピクチャレベルに限定される必要はなく、他のレベル(例えば、シーケンスレベル、スライスレベル、タイルレベル、CTUレベル、CUレベル又はサブブロックレベル)であってもよい。
[フレームメモリ]
フレームメモリ122は、インター予測に用いられる参照ピクチャを格納するための記憶部であり、フレームバッファと呼ばれることもある。具体的には、フレームメモリ122は、ループフィルタ部120によってフィルタされた再構成ブロックを格納する。
[イントラ予測部]
イントラ予測部124は、ブロックメモリ118に格納されたカレントピクチャ内のブロックを参照してカレントブロックのイントラ予測(画面内予測ともいう)を行うことで、予測信号(イントラ予測信号)を生成する。具体的には、イントラ予測部124は、カレントブロックに隣接するブロックのサンプル(例えば輝度値、色差値)を参照してイントラ予測を行うことでイントラ予測信号を生成し、イントラ予測信号を予測制御部128に出力する。
例えば、イントラ予測部124は、予め規定された複数のイントラ予測モードのうちの1つを用いてイントラ予測を行う。複数のイントラ予測モードは、1以上の非方向性予測モードと、複数の方向性予測モードと、を含む。
1以上の非方向性予測モードは、例えばH.265/HEVC(High-Efficiency Video Coding)規格(非特許文献1)で規定されたPlanar予測モード及びDC予測モードを含む。
複数の方向性予測モードは、例えばH.265/HEVC規格で規定された33方向の予測モードを含む。なお、複数の方向性予測モードは、33方向に加えてさらに32方向の予測モード(合計で65個の方向性予測モード)を含んでもよい。図5は、イントラ予測における67個のイントラ予測モード(2個の非方向性予測モード及び65個の方向性予測モード)を示す図である。実線矢印は、H.265/HEVC規格で規定された33方向を表し、破線矢印は、追加された32方向を表す。
なお、色差ブロックのイントラ予測において、輝度ブロックが参照されてもよい。つまり、カレントブロックの輝度成分に基づいて、カレントブロックの色差成分が予測されてもよい。このようなイントラ予測は、CCLM(cross-component linear model)予測と呼ばれることがある。このような輝度ブロックを参照する色差ブロックのイントラ予測モード(例えばCCLMモードと呼ばれる)は、色差ブロックのイントラ予測モードの1つとして加えられてもよい。
イントラ予測部124は、水平/垂直方向の参照画素の勾配に基づいてイントラ予測後の画素値を補正してもよい。このような補正をともなうイントラ予測は、PDPC(position dependent intra prediction combination)と呼ばれることがある。PDPCの適用の有無を示す情報(例えばPDPCフラグと呼ばれる)は、例えばCUレベルで信号化される。なお、この情報の信号化は、CUレベルに限定される必要はなく、他のレベル(例えば、シーケンスレベル、ピクチャレベル、スライスレベル、タイルレベル又はCTUレベル)であってもよい。
[インター予測部]
インター予測部126は、フレームメモリ122に格納された参照ピクチャであってカレントピクチャとは異なる参照ピクチャを参照してカレントブロックのインター予測(画面間予測ともいう)を行うことで、予測信号(インター予測信号)を生成する。インター予測は、カレントブロック又はカレントブロック内のサブブロック(例えば4x4ブロック)の単位で行われる。例えば、インター予測部126は、カレントブロック又はサブブロックについて参照ピクチャ内で動き探索(motion estimation)を行う。そして、インター予測部126は、動き探索により得られた動き情報(例えば動きベクトル)を用いて動き補償を行うことでカレントブロック又はサブブロックのインター予測信号を生成する。そして、インター予測部126は、生成されたインター予測信号を予測制御部128に出力する。
動き補償に用いられた動き情報は信号化される。動きベクトルの信号化には、予測動きベクトル(motion vector predictor)が用いられてもよい。つまり、動きベクトルと予測動きベクトルとの間の差分が信号化されてもよい。
なお、動き探索により得られたカレントブロックの動き情報だけでなく、隣接ブロックの動き情報も用いて、インター予測信号が生成されてもよい。具体的には、動き探索により得られた動き情報に基づく予測信号と、隣接ブロックの動き情報に基づく予測信号と、を重み付け加算することにより、カレントブロック内のサブブロック単位でインター予測信号が生成されてもよい。このようなインター予測(動き補償)は、OBMC(overlapped block motion compensation)と呼ばれることがある。
このようなOBMCモードでは、OBMCのためのサブブロックのサイズを示す情報(例えばOBMCブロックサイズと呼ばれる)は、シーケンスレベルで信号化される。また、OBMCモードを適用するか否かを示す情報(例えばOBMCフラグと呼ばれる)は、CUレベルで信号化される。なお、これらの情報の信号化のレベルは、シーケンスレベル及びCUレベルに限定される必要はなく、他のレベル(例えばピクチャレベル、スライスレベル、タイルレベル、CTUレベル又はサブブロックレベル)であってもよい。
なお、動き情報は信号化されずに、復号装置側で導出されてもよい。例えば、H.265/HEVC規格で規定されたマージモードが用いられてもよい。また例えば、復号装置側で動き探索を行うことにより動き情報が導出されてもよい。この場合、カレントブロックの画素値を用いずに動き探索が行われる。
ここで、復号装置側で動き探索を行うモードについて説明する。この復号装置側で動き探索を行うモードは、PMMVD(pattern matched motion vector derivation)モード又はFRUC(frame rate up-conversion)モードと呼ばれることがある。
まず、カレントブロックに空間的又は時間的に隣接する符号化済みブロックの動きベクトルを参照して、各々が予測動きベクトルを有する複数の候補のリスト(マージリストと共通であってもよい)が生成される。そして、候補リストに含まれる各候補の評価値が算出され、評価値に基づいて1つの候補が選択される。
そして、選択された候補の動きベクトルに基づいて、カレントブロックのための動きベクトルが導出される。具体的には、例えば、選択された候補の動きベクトルがそのままカレントブロックのための動きベクトルとして導出される。また例えば、選択された候補の動きベクトルに対応する参照ピクチャ内の位置の周辺領域において、パターンマッチングを行うことにより、カレントブロックのための動きベクトルが導出されてもよい。
なお、評価値は、動きベクトルに対応する参照ピクチャ内の領域と、所定の領域との間のパターンマッチングによって算出される。
パターンマッチングとしては、第1パターンマッチング又は第2パターンマッチングが用いられる。第1パターンマッチング及び第2パターンマッチングは、それぞれ、バイラテラルマッチング(bilateral matching)及びテンプレートマッチング(template matching)と呼ばれることがある。
第1パターンマッチングでは、異なる2つの参照ピクチャ内の2つのブロックであってカレントブロックの動き軌道(motion trajectory)に沿う2つのブロックの間でパターンマッチングが行われる。したがって、第1パターンマッチングでは、上述した候補の評価値の算出のための所定の領域として、カレントブロックの動き軌道に沿う他の参照ピクチャ内の領域が用いられる。
図6は、動き軌道に沿う2つのブロック間でのパターンマッチング(バイラテラルマッチング)を説明するための図である。図6に示すように、第1パターンマッチングでは、カレントブロック(Cur block)の動き軌道に沿う2つのブロックであって異なる2つの参照ピクチャ(Ref0、Ref1)内の2つのブロックのペアの中で最もマッチするペアを探索することにより2つの動きベクトル(MV0、MV1)が導出される。
連続的な動き軌道の仮定の下では、2つの参照ブロックを指し示す動きベクトル(MV0、MV1)は、カレントピクチャ(Cur Pic)と2つの参照ピクチャ(Ref0、Ref1)との間の時間的な距離(TD0、TD1)に対して比例する。例えば、カレントピクチャが時間的に2つの参照ピクチャの間に位置し、カレントピクチャから2つの参照ピクチャへの時間的な距離が等しい場合、第1パターンマッチングでは、鏡映対称な双方向の動きベクトルが導出される。
第2パターンマッチングでは、カレントピクチャ内のテンプレート(カレントピクチャ内でカレントブロックに隣接するブロック(例えば上及び/又は左隣接ブロック))と参照ピクチャ内のブロックとの間でパターンマッチングが行われる。したがって、第2パターンマッチングでは、上述した候補の評価値の算出のための所定の領域として、カレントピクチャ内のカレントブロックに隣接するブロックが用いられる。
図7は、カレントピクチャ内のテンプレートと参照ピクチャ内のブロックとの間でのパターンマッチング(テンプレートマッチング)を説明するための図である。図7に示すように、第2パターンマッチングでは、カレントピクチャ(Cur Pic)内でカレントブロック(Cur block)に隣接するブロックと最もマッチするブロックを参照ピクチャ(Ref0)内で探索することによりカレントブロックの動きベクトルが導出される。
このようなFRUCモードを適用するか否かを示す情報(例えばFRUCフラグと呼ばれる)は、CUレベルで信号化される。また、FRUCモードが適用される場合(例えばFRUCフラグが真の場合)、パターンマッチングの方法(第1パターンマッチング又は第2パターンマッチング)を示す情報(例えばFRUCモードフラグと呼ばれる)がCUレベルで信号化される。なお、これらの情報の信号化は、CUレベルに限定される必要はなく、他のレベル(例えば、シーケンスレベル、ピクチャレベル、スライスレベル、タイルレベル、CTUレベル又はサブブロックレベル)であってもよい。
なお、動き探索とは異なる方法で、復号装置側で動き情報が導出されてもよい。例えば、等速直線運動を仮定したモデルに基づき、画素単位で周辺画素値を用いて動きベクトルの補正量が算出されてもよい。
ここで、等速直線運動を仮定したモデルに基づいて動きベクトルを導出するモードについて説明する。このモードは、BIO(bi-directional optical flow)モードと呼ばれることがある。
図8は、等速直線運動を仮定したモデルを説明するための図である。図8において、(vx,vy)は、速度ベクトルを示し、τ0、τ1は、それぞれ、カレントピクチャ(Cur Pic)と2つの参照ピクチャ(Ref0,Ref1)との間の時間的な距離を示す。(MVx0,MVy0)は、参照ピクチャRef0に対応する動きベクトルを示し、(MVx1、MVy1)は、参照ピクチャRef1に対応する動きベクトルを示す。
このとき速度ベクトル(vx,vy)の等速直線運動の仮定の下では、(MVx0,MVy0)及び(MVx1,MVy1)は、それぞれ、(vxτ0,vyτ0)及び(-vxτ1,-vyτ1)と表され、以下のオプティカルフロー等式(1)が成り立つ。
ここで、I(k)は、動き補償後の参照画像k(k=0,1)の輝度値を示す。このオプティカルフロー等式は、(i)輝度値の時間微分と、(ii)水平方向の速度及び参照画像の空間勾配の水平成分の積と、(iii)垂直方向の速度及び参照画像の空間勾配の垂直成分の積と、の和が、ゼロと等しいことを示す。このオプティカルフロー等式とエルミート補間(Hermite interpolation)との組み合わせに基づいて、マージリスト等から得られるブロック単位の動きベクトルが画素単位で補正される。
なお、等速直線運動を仮定したモデルに基づく動きベクトルの導出とは異なる方法で、復号装置側で動きベクトルが導出されてもよい。例えば、複数の隣接ブロックの動きベクトルに基づいてサブブロック単位で動きベクトルが導出されてもよい。
ここで、複数の隣接ブロックの動きベクトルに基づいてサブブロック単位で動きベクトルを導出するモードについて説明する。このモードは、アフィン動き補償予測(affine motion compensation prediction)モードと呼ばれることがある。
図9は、複数の隣接ブロックの動きベクトルに基づくサブブロック単位の動きベクトルの導出を説明するための図である。図9において、カレントブロックは、16の4x4サブブロックを含む。ここでは、隣接ブロックの動きベクトルに基づいてカレントブロックの左上角制御ポイントの動きベクトルv0が導出され、隣接サブブロックの動きベクトルに基づいてカレントブロックの右上角制御ポイントの動きベクトルv1が導出される。そして、2つの動きベクトルv0及びv1を用いて、以下の式(2)により、カレントブロック内の各サブブロックの動きベクトル(vx,vy)が導出される。
ここで、x及びyは、それぞれ、サブブロックの水平位置及び垂直位置を示し、wは、予め定められた重み係数を示す。
このようなアフィン動き補償予測モードでは、左上及び右上角制御ポイントの動きベクトルの導出方法が異なるいくつかのモードを含んでもよい。このようなアフィン動き補償予測モードを示す情報(例えばアフィンフラグと呼ばれる)は、CUレベルで信号化される。なお、このアフィン動き補償予測モードを示す情報の信号化は、CUレベルに限定される必要はなく、他のレベル(例えば、シーケンスレベル、ピクチャレベル、スライスレベル、タイルレベル、CTUレベル又はサブブロックレベル)であってもよい。
[予測制御部]
予測制御部128は、イントラ予測信号及びインター予測信号のいずれかを選択し、選択した信号を予測信号として減算部104及び加算部116に出力する。
[復号装置の概要]
次に、上記の符号化装置100から出力された符号化信号(符号化ビットストリーム)を復号可能な復号装置の概要について説明する。図10は、実施の形態1に係る復号装置200の機能構成を示すブロック図である。復号装置200は、動画像/画像をブロック単位で復号する動画像/画像復号装置である。
図10に示すように、復号装置200は、エントロピー復号部202と、逆量子化部204と、逆変換部206と、加算部208と、ブロックメモリ210と、ループフィルタ部212と、フレームメモリ214と、イントラ予測部216と、インター予測部218と、予測制御部220と、を備える。
復号装置200は、例えば、汎用プロセッサ及びメモリにより実現される。この場合、メモリに格納されたソフトウェアプログラムがプロセッサにより実行されたときに、プロセッサは、エントロピー復号部202、逆量子化部204、逆変換部206、加算部208、ループフィルタ部212、イントラ予測部216、インター予測部218及び予測制御部220として機能する。また、復号装置200は、エントロピー復号部202、逆量子化部204、逆変換部206、加算部208、ループフィルタ部212、イントラ予測部216、インター予測部218及び予測制御部220に対応する専用の1以上の電子回路として実現されてもよい。
以下に、復号装置200に含まれる各構成要素について説明する。
[エントロピー復号部]
エントロピー復号部202は、符号化ビットストリームをエントロピー復号する。具体的には、エントロピー復号部202は、例えば、符号化ビットストリームから二値信号に算術復号する。そして、エントロピー復号部202は、二値信号を多値化(debinarize)する。これにより、エントロピー復号部202は、ブロック単位で量子化係数を逆量子化部204に出力する。
[逆量子化部]
逆量子化部204は、エントロピー復号部202からの入力である復号対象ブロック(以下、カレントブロックという)の量子化係数を逆量子化する。具体的には、逆量子化部204は、カレントブロックの量子化係数の各々について、当該量子化係数に対応する量子化パラメータに基づいて当該量子化係数を逆量子化する。そして、逆量子化部204は、カレントブロックの逆量子化された量子化係数(つまり変換係数)を逆変換部206に出力する。
[逆変換部]
逆変換部206は、逆量子化部204からの入力である変換係数を逆変換することにより予測誤差を復元する。
例えば符号化ビットストリームから読み解かれた情報がEMT又はAMTを適用することを示す場合(例えばAMTフラグが真)、逆変換部206は、読み解かれた変換タイプを示す情報に基づいてカレントブロックの変換係数を逆変換する。
また例えば、符号化ビットストリームから読み解かれた情報がNSSTを適用することを示す場合、逆変換部206は、変換係数に逆再変換を適用する。
[加算部]
加算部208は、逆変換部206からの入力である予測誤差と予測制御部220からの入力である予測サンプルとを加算することによりカレントブロックを再構成する。そして、加算部208は、再構成されたブロックをブロックメモリ210及びループフィルタ部212に出力する。
[ブロックメモリ]
ブロックメモリ210は、イントラ予測で参照されるブロックであって復号対象ピクチャ(以下、カレントピクチャという)内のブロックを格納するための記憶部である。具体的には、ブロックメモリ210は、加算部208から出力された再構成ブロックを格納する。
[ループフィルタ部]
ループフィルタ部212は、加算部208によって再構成されたブロックにループフィルタを施し、フィルタされた再構成ブロックをフレームメモリ214及び表示装置等に出力する。
符号化ビットストリームから読み解かれたALFのオン/オフを示す情報がALFのオンを示す場合、局所的な勾配の方向及び活性度に基づいて複数のフィルタの中から1つのフィルタが選択され、選択されたフィルタが再構成ブロックに適用される。
[フレームメモリ]
フレームメモリ214は、インター予測に用いられる参照ピクチャを格納するための記憶部であり、フレームバッファと呼ばれることもある。具体的には、フレームメモリ214は、ループフィルタ部212によってフィルタされた再構成ブロックを格納する。
[イントラ予測部]
イントラ予測部216は、符号化ビットストリームから読み解かれたイントラ予測モードに基づいて、ブロックメモリ210に格納されたカレントピクチャ内のブロックを参照してイントラ予測を行うことで、予測信号(イントラ予測信号)を生成する。具体的には、イントラ予測部216は、カレントブロックに隣接するブロックのサンプル(例えば輝度値、色差値)を参照してイントラ予測を行うことでイントラ予測信号を生成し、イントラ予測信号を予測制御部220に出力する。
なお、色差ブロックのイントラ予測において輝度ブロックを参照するイントラ予測モードが選択されている場合は、イントラ予測部216は、カレントブロックの輝度成分に基づいて、カレントブロックの色差成分を予測してもよい。
また、符号化ビットストリームから読み解かれた情報がPDPCの適用を示す場合、イントラ予測部216は、水平/垂直方向の参照画素の勾配に基づいてイントラ予測後の画素値を補正する。
[インター予測部]
インター予測部218は、フレームメモリ214に格納された参照ピクチャを参照して、カレントブロックを予測する。予測は、カレントブロック又はカレントブロック内のサブブロック(例えば4x4ブロック)の単位で行われる。例えば、インター予測部218は、符号化ビットストリームから読み解かれた動き情報(例えば動きベクトル)を用いて動き補償を行うことでカレントブロック又はサブブロックのインター予測信号を生成し、インター予測信号を予測制御部220に出力する。
なお、符号化ビットストリームから読み解かれた情報がOBMCモードを適用することを示す場合、インター予測部218は、動き探索により得られたカレントブロックの動き情報だけでなく、隣接ブロックの動き情報も用いて、インター予測信号を生成する。
また、符号化ビットストリームから読み解かれた情報がFRUCモードを適用することを示す場合、インター予測部218は、符号化ストリームから読み解かれたパターンマッチングの方法(バイラテラルマッチング又はテンプレートマッチング)に従って動き探索を行うことにより動き情報を導出する。そして、インター予測部218は、導出された動き情報を用いて動き補償を行う。
また、インター予測部218は、BIOモードが適用される場合に、等速直線運動を仮定したモデルに基づいて動きベクトルを導出する。また、符号化ビットストリームから読み解かれた情報がアフィン動き補償予測モードを適用することを示す場合には、インター予測部218は、複数の隣接ブロックの動きベクトルに基づいてサブブロック単位で動きベクトルを導出する。
[予測制御部]
予測制御部220は、イントラ予測信号及びインター予測信号のいずれかを選択し、選択した信号を予測信号として加算部208に出力する。
[符号化装置におけるエントロピー符号化部の詳細]
図11は、実施の形態1に係る符号化装置100におけるエントロピー符号化部110の詳細な機能構成を示すブロック図である。エントロピー符号化部110は、量子化部108から出力される量子化係数に対して可変長符号化を適用することにより、ビット列を生成し、生成されたビット列を出力する。このビット列は、符号化された画像情報に対応し、符号化信号、符号化ビットストリーム又は符号化ビット列とも呼ばれる。
図11の例において、エントロピー符号化部110は、二値化部132と、切り替え部134と、中間バッファ136と、算術符号化部138と、切り替え部140と、多重化部142と、を備える。そして、エントロピー符号化部110は、ビット列を生成し、生成されたビット列を出力することにより、生成されたビット列を出力バッファ144へ格納する。出力バッファ144へ格納されたビット列は、適宜、出力バッファ144から出力される。エントロピー符号化部110は、出力バッファ144を含んでいてもよい。
[エントロピー符号化部における二値化部]
二値化部132は、量子化係数等を二値化する。具体的には、二値化部132は、量子化された周波数変換係数等を例えば0又は1で表現される値のデータ列に変換し、得られたデータ列を出力する。以下、このデータ列を二値化データ列とも呼ぶ。また、二値化部132によって行われる二値化は、基本的には算術符号化のための二値化であり、より具体的には二値算術符号化を行うための二値化である。すなわち、二値化部132は、基本的には算術符号化のための二値化に従って画像情報の二値化データ列を導出する。
なお、二値化の方式として、ユーナリー・バイナライゼーション、トランケーティッド・ユーナリー・バイナライゼーション、ユーナリー/k次指数ゴロム・結合バイナライゼーション、固定長バイナライゼーション、及び、表参照等がある。
また、例えば、二値化部132における二値化、及び、算術符号化部138における算術符号化によって、コンテキスト適応型二値算術符号化方式のエントロピー符号化が行われる。コンテキスト適応型二値算術符号化方式は、CABACとも呼ばれる。二値化部132によって行われる二値化は、コンテキスト適応型二値算術符号化方式のための二値化とも表現され得る。
[エントロピー符号化部における切り替え部]
切り替え部134及び140は、モード情報に従って連動して動作し、二値化データ列に対して算術符号化を適用するか否かを切り替える。例えば、切り替え部134及び140は、符号化装置100の外部から与えられるモード情報に従って、二値化データ列に対して算術符号化を適用するか否かを切り替える。モード情報は、ユーザ又は上位システム等から指示として与えられてもよい。
例えば、このモード情報は、第1モード及び第2モードを選択的に示す。すなわち、モード情報は、第1モード及び第2モードの中から選択される一方のモードを示す。そして、例えば、第1モードでは、二値化データ列に対して算術符号化が適用され、第2モードでは、二値化データ列に対して算術符号化が適用されない。
具体的には、モード情報が第1モードを示す場合、切り替え部134は、二値化部132から出力される二値化データ列を中間バッファ136に出力することにより、二値化データ列を中間バッファ136に格納する。そして、算術符号化部138は、中間バッファ136に格納された二値化データ列に対して、算術符号化を適用し、算術符号化が適用された二値化データ列を出力する。切り替え部140は、算術符号化部138から出力された二値化データ列を多重化部142へ出力する。
一方、モード情報が第2モードを示す場合、切り替え部134は、二値化部132から出力される二値化データ列をそのまま切り替え部140へ出力する。そして、切り替え部140は、切り替え部134から出力された二値化データ列を多重化部142へ出力する。すなわち、算術符号化がバイパスされる。なお、算術符号化の一態様であるバイパス算術符号化との混同を避けるため、算術符号化をバイパスすることを、算術符号化をスキップすると表現する場合がある。
モード情報及びモードは、遅延モード情報及び遅延モードとも表現され得る。具体的には、第1モードは、通常モードであり、第2モードは、低遅延モードである。そして、第2モードでは、第1モードよりも、処理遅延が削減される。
[エントロピー符号化部における中間バッファ]
中間バッファ136は、二値化データ列を格納するための記憶部であり、中間メモリとも呼ばれる。算術符号化部138で行われる算術符号化では、遅延が発生する。また、遅延量は、二値化データ列の内容によって揺らぐ。中間バッファ136によって、遅延量の揺らぎが吸収され、後続の処理が円滑に行われる。なお、中間バッファ136等の記憶部にデータを入力することは、記憶部にデータを格納することに対応し、記憶部からデータを出力することは、記憶部からデータを読み出すことに対応する。
[エントロピー符号化部における算術符号化部]
算術符号化部138は、算術符号化を行う。具体的には、算術符号化部138は、中間バッファ136に格納された二値化データ列を読み出して、二値化データ列に対して算術符号化を適用する。算術符号化部138は、コンテキスト適応型二値算術符号化方式に対応する算術符号化を二値化データ列に対して適用してもよい。
例えば、算術符号化部138は、データ種別等のコンテキストに従って値の発生確率を選択し、選択された発生確率に従って算術符号化を行い、算術符号化の結果に従って発生確率を更新する。つまり、算術符号化部138は、可変の発生確率に従って、算術符号化を行う。可変の発生確率に従って行われる算術符号化は、コンテキスト適応算術符号化とも呼ばれる。
また、算術符号化部138は、特定のデータ種別等について、固定の発生確率に従って算術符号化を行ってもよい。具体的には、算術符号化部138は、0又は1の発生確率として50%の発生確率に従って算術符号化を行ってもよい。固定の発生確率に従って行われる算術符号化は、バイパス算術符号化とも呼ばれる。
[エントロピー符号化部における多重化部]
多重化部142は、モード情報と、二値化データ列とを多重化し、モード情報及び二値化データ列を含むビット列を生成する。そして、多重化部142は、ビット列を出力バッファ144に出力することにより、ビット列を出力バッファ144に格納する。出力バッファ144に格納されたビット列は、適宜、出力バッファ144から出力される。すなわち、多重化部142は、出力バッファ144を介して、ビット列を出力する。
例えば、モード情報は、上位のパラメータとしてビット列に含まれていてもよい。具体的には、モード情報は、ビット列におけるSPS(シーケンス・パラメータ・セット)に含まれてもよいし、ビット列におけるPPS(ピクチャ・パラメータ・セット)に含まれていてもよいし、ビット列におけるスライスヘッダに含まれていてもよい。ビット列に含まれるモード情報は、1以上のビットで表現される。
そして、二値化データ列は、スライスデータに含まれていてもよい。ここで、二値化データ列は、算術符号化が適用された二値化データ列であってもよいし、算術符号化が適用されていない二値化データ列であってもよい。
また、ビット列に含まれるモード情報は、ビット列に含まれる二値化データ列に対して算術符号化が適用されているか否かを示す適用情報とも表現され得る。言い換えれば、モード情報が、二値化データ列に対して算術符号化が適用されているか否かを示す適用情報として、ビット列に含まれてもよい。この適用情報は、算術符号化が適用されている二値化データ列をビット列が含むか、算術符号化が適用されていない二値化データ列をビット列が含むかを示し得る。
なお、上位システムでモード情報が交換される場合、又は、モード情報が予め定められている場合等において、モード情報がビット列に含められなくてもよい。つまり、この場合、多重化が行われなくてもよい。
[出力バッファ]
出力バッファ144は、ビット列を格納するための記憶部であり、CPB(Coded Picture Buffer:符号化ピクチャバッファ)、又は、出力メモリとも呼ばれる。符号化装置100が画像情報を符号化することで得られるビット列は、出力バッファ144に格納される。そして、出力バッファ144に格納されたビット列は、適宜出力され、例えば符号化オーディオ信号等と多重化される。
[復号装置におけるエントロピー復号部の詳細]
図12は、実施の形態1に係る復号装置200におけるエントロピー復号部202の詳細な機能構成を示すブロック図である。エントロピー復号部202は、入力バッファ232を介して入力されるビット列に対してエントロピー復号を行うことにより、量子化係数等を導出する。このビット列は、例えば、符号化装置100によって生成されたビット列であって、上述したデータ構成を有し得る。
図12の例において、エントロピー復号部202は、分離部234と、切り替え部236と、算術復号部238と、中間バッファ240と、切り替え部242と、逆二値化部244と、を備える。エントロピー復号部202は、入力バッファ232を含んでいてもよい。
[入力バッファ]
入力バッファ232は、ビット列を格納するための記憶部であり、CPB、又は、入力メモリとも呼ばれる。復号装置200によって復号されるビット列は、例えば符号化オーディオ信号等から分離されて、入力バッファ232に格納される。そして、復号装置200は、入力バッファ232に格納されたビット列を読み出して、ビット列を復号する。
[エントロピー復号部における分離部]
分離部234は、入力バッファ232からビット列を取得し、ビット列からモード情報と二値化データ列とを分離し、モード情報と二値化データ列とを出力する。つまり、分離部234は、入力バッファ232を介して、モード情報と二値化データ列とを含むビット列を取得し、ビット列に含まれるモード情報と二値化データ列とを出力する。二値化データ列は、算術符号化が適用された二値化データ列であってもよいし、算術符号化が適用されていない二値化データ列であってもよい。
上述したように、モード情報は、ビット列に含まれる二値化データ列に対して算術符号化が適用されているか否かを示す適用情報とも表現され得る。そして、上位システムでモード情報が交換される場合、又は、モード情報が予め定められている場合等において、モード情報がビット列に含められなくてもよい。この場合、モード情報の分離及び出力が行われなくてもよい。また、モード情報は、復号装置200の外部から、具体的にはユーザ又は上位システム等から指示として与えられてもよい。
[エントロピー復号部における切り替え部]
切り替え部236及び242は、分離部234等から得られるモード情報に従って連動して動作し、二値化データ列に対して算術復号を適用するか否かを切り替える。例えば、モード情報が選択的に示す第1モード及び第2モードのうち、第1モードでは、二値化データ列に対して算術復号が適用され、第2モードでは、二値化データ列に対して算術復号が適用されない。
具体的には、モード情報が第1モードを示す場合、切り替え部236は、分離部234から出力される二値化データ列を算術復号部238に出力する。そして、算術復号部238は、二値化データ列に対して算術復号を適用し、算術復号が適用された二値化データ列を出力することにより、算術復号が適用された二値化データ列を中間バッファ240に格納する。切り替え部242は、中間バッファ240に格納された二値化データ列を適宜取得し、中間バッファ240から取得された二値化データ列を逆二値化部244へ出力する。
一方、モード情報が第2モードを示す場合、切り替え部236は、分離部234から出力される二値化データ列をそのまま切り替え部242へ出力する。そして、切り替え部242は、切り替え部236から出力された二値化データ列を逆二値化部244へ出力する。つまり、算術復号がバイパスされる。なお、算術復号の一態様であるバイパス算術復号との混同を避けるため、算術復号をバイパスすることを、算術復号をスキップすると表現する場合がある。
[エントロピー復号部における算術復号部]
算術復号部238は、算術復号を行う。具体的には、算術復号部238は、算術符号化が適用された二値化データ列に対して算術復号を適用し、算術復号が適用された二値化データ列を出力することにより、算術復号が適用された二値化データ列を中間バッファ240に格納する。算術復号が適用された二値化データ列は、算術符号化が適用されていない元の二値化データ列に対応する。算術復号部238は、コンテキスト適応型二値算術符号化方式に対応する算術復号を二値化データ列に対して適用してもよい。
例えば、算術復号部238は、データ種別等のコンテキストに従って値の発生確率を選択し、選択された発生確率に従って算術復号を行い、算術復号の結果に従って発生確率を更新する。つまり、算術復号部238は、可変の発生確率に従って、算術復号を行う。可変の発生確率に従って行われる算術復号は、コンテキスト適応算術復号とも呼ばれる。
また、算術復号部238は、特定のデータ種別等について、固定の発生確率に従って算術復号を行ってもよい。具体的には、算術復号部238は、0又は1の発生確率として50%の発生確率に従って算術復号を行ってもよい。固定の発生確率に従って行われる算術復号は、バイパス算術復号とも呼ばれる。
[エントロピー復号部における中間バッファ]
中間バッファ240は、算術復号された二値化データ列を格納するための記憶部であり、中間メモリとも呼ばれる。算術復号部238で行われる算術復号では、遅延が発生する。また、遅延量は、二値化データ列の内容によって揺らぐ。中間バッファ240によって、遅延量の揺らぎが吸収され、後続の処理が円滑に行われる。
[エントロピー復号部における逆二値化部]
逆二値化部244は、二値化データ列に対して逆二値化を行うことにより、量子化係数等を導出する。具体的には、逆二値化部244は、例えば0又は1で表現される値の二値化データ列を量子化された周波数変換係数等に変換し、量子化された周波数変換係数等を逆量子化部204へ出力する。また、逆二値化部244によって行われる逆二値化は、基本的には、算術符号化のための二値化に対応する逆二値化であり、より具体的には二値算術符号化を行うための二値化に対応する逆二値化である。
また、例えば、算術復号部238における算術復号、及び、逆二値化部244における逆二値化によって、コンテキスト適応型二値算術符号化方式のエントロピー復号が行われる。すなわち、逆二値化部244は、コンテキスト適応型二値算術符号化方式に従う逆二値化を行ってもよい。また、逆二値化は、多値化とも呼ばれる。
[算術符号化及び算術復号の適用有無]
本実施の形態における符号化装置100及び復号装置200は、特に、短時間で符号化及び復号を行うことが求められるリアルタイム通信システム等に有用である。具体的には、符号化装置100及び復号装置200は、テレビ会議システム又は電子ミラー等に有用である。例えば、これらのシステム環境において、算術符号化及び算術復号が行われない第2モードが用いられる。
また、基本的に、適用情報は、1以上のピクチャを含む単位で包括的に、ビット列に含まれる二値化データ列に対して算術符号化が適用されているか否かを示す。そして、1以上のピクチャを含む単位で包括的に、算術符号化の適用有無の切り替えが行われる。
しかしながら、より細かい単位で、算術符号化の適用有無の切り替えが行われてもよい。例えば、特定のデータ種別において、算術符号化及び算術復号がスキップされてもよい。より具体的には、バイパス算術符号化及びバイパス算術復号に代えて、算術符号化及び算術復号のスキップが行われてもよい。
また、例えば、コンテキスト算術符号化と、バイパス算術符号化と、算術符号化のスキップとの切り替えが行われてもよい。同様に、コンテキスト算術復号と、バイパス算術復号と、算術復号のスキップとの切り替えが行われてもよい。
また、二値化データ列に対して算術符号化が適用されているか否かを示す適用情報は、1ビットのフラグによって表現されてもよいし、他の形式で表現されてもよい。例えば、二値化データ列に対して算術符号化が適用されていることを示す情報が、ビット列に追加されることによって、ビット列は、追加された情報を適用情報として含み得る。あるいは、二値化データ列に対して算術符号化が適用されていないことを示す情報が、ビット列に追加されることによって、ビット列は、追加された情報を適用情報として含み得る。
また、適用情報は、他の情報と共通の情報として、ビット列に含まれてもよい。例えば、ピクチャの種別を示す情報がビット列に含まれ、かつ、ピクチャの種別によって算術符号化の適用有無が切り替えられる場合、ピクチャの種別を示す情報が適用情報であってもよい。
[シンタックス構造の切り替え]
算術符号化及び算術復号が適用されるか否かによって、符号量が大きく異なる可能性がある。特に、画像の周波数成分に関する周波数変換係数情報の情報量は大きい。したがって、周波数変換係数情報について算術符号化及び算術復号が用いられない場合、符号量が非常に大きくなる可能性がある。
そこで、符号化装置100の二値化部132は、画像情報のうち周波数変換係数情報に関して、算術符号化が適用される第1モードと、算術符号化が適用されない第2モードとで異なる二値化形式で二値化を行う。同様に、復号装置200の逆二値化部244は、画像情報のうち周波数変換係数情報に関して、算術復号が適用される第1モードと、算術復号が適用されない第2モードとで異なる逆二値化形式を用いて逆二値化を行う。
符号化装置100の二値化部132には、符号化装置100の切り替え部134及び140と同様にモード情報が与えられてもよい。そして、符号化装置100の二値化部132は、与えられたモード情報を取得して、モード情報に従って周波数変換係数情報の二値化形式を切り替えてもよい。
同様に、復号装置200の逆二値化部244は、復号装置200の切り替え部236及び242と同様にモード情報が与えられてもよい。そして、復号装置200の逆二値化部244は、与えられたモード情報を取得して、モード情報に従って周波数変換係数情報の逆二値化形式を切り替えてもよい。
例えば、周波数変換係数情報に対して、第1モードと第2モードとで異なるシンタックス構造が適用される。
図13は、実施の形態1に係るシンタックス構造を示すフローチャートである。シンタックス構造は、二値化形式及び逆二値化形式に対応する。二値化部132は、図13に示されたシンタックス構造に従って、画像情報を二値化することにより、画像情報を二値化データ列に変換する。
具体的には、二値化部132は、ピクチャ層のヘッダ情報を二値化する(S101)。次に、二値化部132は、スライス層のヘッダ情報を二値化する(S102)。次に、二値化部132は、ブロック層の符号化情報を二値化する(S103)。
具体的には、二値化部132は、周波数変換係数情報を除いて、ブロック層の符号化情報を二値化する。例えば、周波数変換係数情報は、量子化された周波数変換係数を示す。また、例えば、ブロック層の符号化情報は、予測パラメータ情報を含む。予測パラメータ情報は、画像の予測方法に関する予測パラメータを示す。
予測パラメータ情報は、面内予測か面間予測かの符号化モードを示していてもよい。また、予測パラメータ情報は、面間予測に関する動きベクトル及び参照ピクチャを示していてもよい。また、予測パラメータ情報は、面内予測の予測方向に関する面内予測モードを示していてもよい。
そして、二値化部132は、第1モードにおいて(S104で第1モード)、第1モード用のシンタックス構造で周波数変換係数情報を二値化する(S105)。そして、二値化部132は、第2モードにおいて(S104で第2モード)、第2モード用のシンタックス構造で周波数変換係数情報を二値化する(S106)。
そして、二値化部132は、スライスに含まれる各ブロックについて、ブロックに対する処理(S103~S106)を繰り返す(S107)。そして、二値化部132は、ピクチャに含まれる各スライスについて、スライスに対する処理(S102~S107)を繰り返す(S108)。そして、二値化部132は、各ピクチャについて、ピクチャに対する処理(S101~S108)を繰り返す(S109)。
これにより、二値化部132は、第1モードと第2モードとで異なるシンタックス構造で周波数変換係数情報を二値化し、第1モードと第2モードとで共通のシンタックス構造でその他の情報を二値化する。
また、復号装置200の逆二値化部244は、図13に示されたシンタックス構造に従って、二値化データ列を逆二値化することにより、二値化データ列を画像情報に変換する。
具体的には、逆二値化部244は、ピクチャ層のヘッダ情報の二値化データ列を逆二値化する(S101)。次に、逆二値化部244は、スライス層のヘッダ情報の二値化データ列を逆二値化する(S102)。次に、逆二値化部244は、ブロック層の符号化情報の二値化データ列を逆二値化する(S103)。具体的には、逆二値化部244は、周波数変換係数情報の二値化データ列を除いて、ブロック層の符号化情報の二値化データ列を逆二値化する。
そして、逆二値化部244は、第1モードにおいて(S104で第1モード)、第1モード用のシンタックス構造で周波数変換係数情報の二値化データ列を逆二値化する(S105)。そして、逆二値化部244は、第2モードにおいて(S104で第2モード)、第2モード用のシンタックス構造で周波数変換係数情報の二値化データ列を逆二値化する(S106)。
そして、逆二値化部244は、スライスに含まれる各ブロックについて、ブロックに対する処理(S103~S106)を繰り返す(S107)。そして、逆二値化部244は、ピクチャに含まれる各スライスについて、スライスに対する処理(S102~S107)を繰り返す(S108)。そして、逆二値化部244は、各ピクチャについて、ピクチャに対する処理(S101~S108)を繰り返す(S109)。
これにより、逆二値化部244は、第1モードと第2モードとで異なるシンタックス構造で周波数変換係数情報の二値化データ列を逆二値化し、第1モードと第2モードとで共通のシンタックス構造でその他の情報の二値化データ列を逆二値化する。
第1モードでは、算術符号化及び算術復号が適用される。したがって、算術符号化及び算術復号の適用に適したシンタックス構造が、第1モード用のシンタックス構造として用いられる。例えば、第1モード用のシンタックス構造は、算術符号化で符号量を小さくするための画一的なシンタックス構造でもよいし、二値化の処理負荷の小さいシンプルなシンタックス構造でもよい。
第2モードでは、算術符号化及び算術復号が適用されない。したがって、二値化そのもので発生する符号量を小さくするためのシンタックス構造が、第2モード用のシンタックス構造として用いられる。
図13の例では、画像情報のうち画像の周波数成分に関する周波数変換係数を示す周波数変換係数情報のみに対して、第1モードと第2モードとで異なるシンタックス構造が適用される。そして、画像情報のうち周波数変換係数情報を除く他の全ての情報に対して、第1モードと第2モードとで共通のシンタックス構造が適用される。例えば、画像情報のうち画像の予測方法に関する予測パラメータを示す予測パラメータ情報に対して、第1モードと第2モードとで共通のシンタックス構造が適用される。
なお、図13の例では、周波数変換係数情報のみに第1モードと第2モードとで異なるシンタックス構造が適用されるとしたが、その他の情報に対しても、第1モードと第2モードとで異なるシンタックス構造が適用されてもよい。つまり、画像情報に含まれる一部の情報であり、周波数変換係数情報、及び、周波数変換係数情報以外の異なるシンタックス構造の適用対象となる情報を含む一部の情報に対して、第1モードと第2モードとで異なるシンタックス構造が適用されてもよい。この場合、算術符号化及び算術復号が適用される第1モードであるか、算術符号化及び算術復号が適用されない第2モードであるかに応じて、周波数変換係数情報に加えて、周波数変換係数情報以外の異なるシンタックス構造の適用対象となる情報に対しても、異なるシンタックス構造が適用されるため、第1モードと第2モードで共通のシンタックス構造を適用する場合と比較して、第1モードまたは第2モードの少なくとも一方において周波数変換係数情報以外の異なるシンタックス構造の適用対象となる情報についても符号量を小さくできる可能性がある。
また、図13の例では、予測パラメータ情報に対して第1モードと第2モードとで共通のシンタックス構造が適用されるとしたが、予測パラメータ情報に含まれる一部の予測パラメータについては第1モードと第2モードとで異なるシンタックス構造が適用されてもよい。例えば、予測パラメータ情報に含まれる、符号化モードに関する情報、画面内予測の予測方向に関する情報、画面間予測の参照ピクチャに関する情報、及び、画面間予測の動きベクトルに関する情報のうちのいずれか、または全部については第1モードと第2モードとで共通のシンタックス構造を適用し、第1モードと第2モードとで共通のシンタックス構造を適用した予測パラメータ以外のパラメータについては第1モードと第2モードとで異なるシンタックス構造を適用してもよい。この場合、予測パラメータ情報全体に対して、第1モードと第2モードとで共通のシンタックス構造が適用される場合と比較して、第1モードまたは第2モードの少なくとも一方において予測パラメータ情報の符号量を小さくできる可能性がある。
[基本ブロック]
符号化装置100の二値化部132は、周波数変換ブロックを基本ブロック毎に二値化する。例えば、二値化部132は、周波数変換ブロックを複数の基本ブロックに分割し、基本ブロック毎に二値化を行う。周波数変換ブロックは、変換ユニットの周波数変換で得られる複数の周波数変換係数を含むブロックである。つまり、周波数変換ブロックは、周波数変換が施された変換ユニットに相当し、周波数変換係数ブロックとも表現され得る。
例えば、変換ユニットが16×16の複数の画素値で構成されるブロックである場合、16×16の複数の周波数変換係数で構成される周波数変換ブロックが変換ユニットの周波数変換によって得られる。そして、例えば、二値化部132は、サイズが16×16である周波数変換ブロックを各サイズが4×4である複数の基本ブロックに分割する。そして、二値化部132は、サイズが16×16である周波数変換ブロックをサイズが4×4である基本ブロック毎に二値化する。
また、具体的には、二値化部132は、周波数変換ブロックを構成する1以上の基本ブロックに対して周波数の高い順で規定される所定のスキャン順に従って、周波数変換ブロックに含まれる複数の周波数変換係数を基本ブロック毎に二値化する。
また、二値化部132は、第2モードにおいて、周波数変換ブロックにおける特定基本ブロックの位置を示す位置情報を二値化する。特定基本ブロックは、周波数変換ブロックを構成する1以上の基本ブロックのうち、上記のスキャン順で最初に非ゼロ係数を含む基本ブロックであり、last_sub_blockとも表現される。非ゼロ係数は、絶対値が0ではない周波数変換係数である。
そして、二値化部132は、第2モードにおいて、周波数変換ブロックを構成する1以上の基本ブロックのうち、上記のスキャン順で特定基本ブロック以降の各基本ブロックについてのみ、基本ブロックを構成する複数の周波数変換係数を示すブロック情報を二値化する。なお、スキャン順で特定基本ブロック以降には、特定基本ブロック、及び、スキャン順で特定基本ブロックに後続する1以上の基本ブロックが含まれる。
これにより、符号化装置100は、第2モードにおいて、位置情報及びブロック情報を周波数変換係数情報として二値化することができる。そして、符号化装置100は、スキャン順で特定基本ブロック以降の各基本ブロックについて、ブロック情報を二値化するため、周波数変換係数情報の二値化データ列を短くすることを支援することができる。そして、符号化装置100は、周波数変換係数情報の二値化データ列を含むビット列を出力することができる。
また、例えば、第1モードにおいて、二値化部132は、特定基本ブロックの位置情報を二値化せず、周波数変換ブロックを構成する1以上の基本ブロックの全てに対して二値化を行ってもよい。これにより、二値化部132は、第1モードと第2モードとで異なる形式で周波数変換係数情報を二値化することができる。
同様に、復号装置200の逆二値化部244は、周波数変換ブロックの二値化データ列を基本ブロック毎に逆二値化する。具体的には、復号装置200の逆二値化部244は、上記のスキャン順で、周波数変換ブロックに含まれる複数の周波数変換係数の二値化データ列を基本ブロック毎に逆二値化する。
また、復号装置200の逆二値化部244は、第2モードにおいて、周波数変換ブロックにおける特定基本ブロックの位置を示す位置情報の二値化データ列を逆二値化する。そして、逆二値化部244は、第2モードにおいて、1以上の基本ブロックのうち、上記のスキャン順で特定基本ブロック以降の各基本ブロックについてのみ、基本ブロックを構成する複数の周波数変換係数を示すブロック情報の二値化データ列を逆二値化する。
これにより、復号装置200は、第2モードにおいて、位置情報及びブロック情報の二値化データ列を周波数変換係数情報の二値化データ列として逆二値化することができる。そして、復号装置200は、スキャン順で特定基本ブロック以降の各基本ブロックについて、ブロック情報の二値化データ列を逆二値化するため、周波数変換係数情報の二値化データ列を短くすることを支援することができる。
また、例えば、第1モードにおいて、逆二値化部244は、特定基本ブロックの位置情報の二値化データ列を逆二値化せず、周波数変換ブロックを構成する1以上の基本ブロックの全てに対する二値化データ列を逆二値化してもよい。これにより、逆二値化部244は、第1モードと第2モードとで異なる形式で周波数変換係数情報の二値化データ列を逆二値化することができる。
図14A~図14Iは、それぞれ、実施の形態1に係る周波数変換ブロックにおける1以上の基本ブロックを示す概念図である。ここでは、周波数変換ブロックのサイズは、4×4から16×16までの間であり、基本ブロックのサイズは、4×4である。周波数変換ブロックのサイズ及び形状は、変換ユニットのサイズ及び形状に依存する。周波数変換ブロックの形状は、縦の長さと横の長さとが均等な正方形でもよいし、縦の長さと横の長さとが不均等な長方形でもよい。
具体的には、図14Aは、4×4の周波数変換ブロックにおける1個の基本ブロックを示す。また、図14Bは、8×8の周波数変換ブロックにおける4個の基本ブロックを示す。図14Cは、8×4の周波数変換ブロックにおける2個の基本ブロックを示す。図14Dは、4×8の周波数変換ブロックにおける2個の基本ブロックを示す。図14Eは、16×16の周波数変換ブロックにおける16個の基本ブロックを示す。
また、図14Fは、16×8の周波数変換ブロックにおける8個の基本ブロックを示す。図14Gは、8×16の周波数変換ブロックにおける8個の基本ブロックを示す。図14Hは、16×12の周波数変換ブロックにおける12個の基本ブロックを示す。図14Iは、4×16の周波数変換ブロックにおける4個の基本ブロックを示す。
図14A~図14Iにおいて、1以上の基本ブロックのそれぞれの中に記載された番号は、周波数変換ブロックにおける基本ブロックの位置を示す。この例では、周波数変換ブロックにおける基本ブロックの位置を示す番号が、周波数の低い順で規定されている。つまり、基本ブロックの位置を示す番号は、その基本ブロックの周波数が低いほど、より小さく規定されている。
なお、周波数変換ブロックにおいて、左上の隅に近い部分は低い周波数を示し、右下の隅に近い部分は高い周波数を示す。また、周波数変換ブロックにおいて、左下の隅に近い部分は、水平方向に低く垂直方向に高い周波数を示し、右上の隅に近い部分は、水平方向に高く垂直方向に低い周波数を示す。
すなわち、2次元の周波数変換ブロックを構成する各周波数変換係数は、右端に近いほど、水平方向に高い周波数成分の値を示す。また、2次元の周波数変換ブロックを構成する各周波数変換係数は、下端に近いほど、垂直方向に高い周波数成分の値を示す。
左下又は右上に向かう斜め方向に並ぶ複数の基本ブロックにおいて、周波数のレベルは同じであるとみなされる。ここでは、周波数のレベルが同じ複数の基本ブロックに対して、基本ブロックの位置を示す番号が、水平方向に対する周波数の低い順で規定されている。
スキャン順は、周波数の高い順で規定される。例えば、スキャン順は、基本ブロックの位置を示す番号の大きい順で規定される。そして、基本ブロックの位置を示す番号が最も大きい基本ブロックがスキャン順の先頭に割り当てられ、基本ブロックの位置を示す番号が最も小さい基本ブロックがスキャン順の最後に割り当てられる。なお、この例では、周波数のレベルが同じ複数の基本ブロックに対するスキャン順は、水平方向に対する周波数の高い順で規定される。
図14A~図14Iにおいて、特定基本ブロックが斜線のハッチングで示されている。特定基本ブロックは、周波数変換ブロックを構成する1以上の基本ブロックのうち、スキャン順で最初に非ゼロ係数を含む基本ブロックである。
第2モードにおいて、符号化装置100の二値化部132は、特定基本ブロックの位置情報を二値化する。この例において、二値化部132は、特定基本ブロックの位置を示す番号を二値化する。
そして、二値化部132は、周波数変換ブロックを構成する1以上の基本ブロックのうち、スキャン順で特定基本ブロック以降の各基本ブロックについてのみ、ブロック情報を二値化する。この例において、二値化部132は、特定基本ブロックのブロック情報を二値化し、特定基本ブロックよりも番号が小さい基本ブロックのブロック情報を二値化する。
また、第2モードにおいて、復号装置200の逆二値化部244は、特定基本ブロックの位置情報の二値化データ列を逆二値化する。この例において、逆二値化部244は、特定基本ブロックの位置を示す番号の二値化データ列を逆二値化する。
そして、逆二値化部244は、周波数変換ブロックを構成する1以上の基本ブロックのうち、スキャン順で特定基本ブロック以降の各基本ブロックについてのみ、ブロック情報の二値化データ列を逆二値化する。この例において、逆二値化部244は、特定基本ブロックのブロック情報の二値化データ列を逆二値化し、特定基本ブロックよりも番号が小さい基本ブロックのブロック情報の二値化データ列を逆二値化する。
これにより、符号化装置100及び復号装置200は、第2モードにおいて、周波数変換係数情報の二値化データ列を短くすることができる。したがって、符号化装置100及び復号装置200は、算術符号化及び算術復号が適用されない第2モードにおいて、符号量が増大することを抑制することができる。
なお、第2モードに限らず、第1モードにおいて、二値化部132は、特定基本ブロックの位置情報を二値化してもよい。そして、第1モードにおいて、二値化部132は、周波数変換ブロックを構成する1以上の基本ブロックのうち、スキャン順で特定基本ブロック以降の各ブロックについてのみ、ブロック情報を二値化してもよい。
また、第2モードに限らず、第1モードにおいて、逆二値化部244は、特定基本ブロックの位置情報の二値化データ列を逆二値化してもよい。そして、逆二値化部244は、第1モードにおいて、周波数変換ブロックを構成する1以上の基本ブロックのうち、スキャン順で特定基本ブロック以降の各基本ブロックについてのみ、ブロック情報の二値化データ列を逆二値化してもよい。
これにより、符号化装置100及び復号装置200は、第1モードにおいても、周波数変換係数情報の二値化データ列を短くすることができる。したがって、これにより、算術符号化及び算術復号が適用される第1モードにおいて、符号量がより削減される可能性がある。なお、この場合、周波数変換係数情報に対して、第1モードと第2モードとで同じシンタックス構造が適用されてもよい。あるいは、別の方法で、周波数変換係数情報に対して、第1モードと第2モードとで異なるシンタックス構造が適用されてもよい。
また、周波数変換ブロックのサイズは、図14A~図14Iの例に限られず、その他のサイズであってもよい。1つのピクチャの複数の周波数変換ブロックに対して、複数種のサイズが用いられてもよい。また、基本ブロックのサイズは、4×4に限られず、その他のサイズであってもよい。1つのピクチャの複数の基本ブロックに対して、1種類のサイズが用いられてもよいし、複数種のサイズが用いられてもよい。
また、基本ブロックの位置を示す位置情報として、基本ブロックの位置を示す番号が、図14A~図14Iに示されている。図14A~図14Iに示されている番号は一例であり、基本ブロックの位置を示す番号として、他の基準で与えられる他の番号が用いられてもよい。あるいは、基本ブロックの位置を示す位置情報として、番号とは異なる他の情報が用いられてもよい。
また、周波数変換ブロックのサイズと基本ブロックのサイズとが同じである場合、周波数変換係数情報は、特定基本ブロックの位置情報を含まなくてもよい。すなわち、周波数変換ブロックに含まれる基本ブロックの個数が1である場合、周波数変換係数情報は、特定基本ブロックの位置情報を含まなくてもよい。そして、周波数変換ブロックに含まれる基本ブロックの個数が2以上である場合、周波数変換係数情報は、特定基本ブロックの位置情報を含んでもよい。
また、周波数変換ブロックが非ゼロ係数を含まない場合、周波数変換係数情報は、その周波数変換ブロックにおける特定基本ブロックの位置情報を含まなくてもよい。そして、この場合、周波数変換係数情報は、特定基本ブロック以降の各基本ブロックを構成する複数の周波数変換係数を示すブロック情報を含まなくてもよい。そして、非ゼロ係数を含まない周波数変換ブロックに対する周波数変換係数情報は、二値化されなくてもよく、符号化されなくてもよい。
また、二値化部132は、第1モードにおいて、周波数変換ブロックを基本ブロック毎に二値化しなくてもよい。つまり、二値化部132は、第1モードにおいて、周波数変換ブロックに含まれる複数の周波数変換係数を基本ブロックによらず二値化してもよい。
同様に、逆二値化部244は、第1モードにおいて、周波数変換ブロックの二値化データ列を基本ブロック毎に逆二値化しなくてもよい。つまり、逆二値化部244は、第1モードにおいて、周波数変換ブロックに含まれる複数の周波数変換係数の二値化データ列を基本ブロックによらず逆二値化してもよい。
[非ゼロ係数の個数として0を含まないテーブルの利用]
符号化装置100の二値化部132は、第2モードにおいて、基本ブロックに含まれる非ゼロ係数の個数を示すデータ値を周波数変換係数情報の一部として二値化する。また、復号装置200の逆二値化部244は、第2モードにおいて、基本ブロックに含まれる非ゼロ係数の個数を示すデータ値が周波数変換係数情報の一部として二値化された二値化データ列を逆二値化する。これにより、基本ブロックを構成する複数の周波数変換係数が効率的に表現され得る。
また、二値化部132は、非ゼロ係数の個数を示すデータ値の二値化において、複数のデータ値と複数の二値化値とが対応付けられた変換テーブルを用いる。同様に、逆二値化部244は、非ゼロ係数の個数を示すデータ値の二値化値の逆二値化において、複数のデータ値と複数の二値化値とが対応付けられた変換テーブルを用いる。この変換テーブルは、可変長符号化テーブルとも表現され得る。
例えば、変換テーブルは、非ゼロ係数の個数として0を示すデータ値の対応付けを含むテーブルと、非ゼロ係数の個数として0を示すデータ値の対応付けを含まないテーブルとを含む複数のテーブルの中から選択されてもよい。これにより、周波数変換係数情報の符号量が削減され得る。
図15は、実施の形態1に係る2種類のテーブルA1、A2を示す概念図である。2種類のテーブルA1、A2のそれぞれにおいて、複数のデータ値と複数の二値化値とが対応付けられている。複数のデータ値のそれぞれは、trailing_onesとtotal_coefとの組み合わせに対応する。
trailing_onesは、基本ブロックに含まれる複数の周波数変換係数において、絶対値が0である周波数変換係数を除いて、周波数の高い順で規定されるスキャン順で最初に連続する、絶対値が1である非ゼロ係数の個数を示す。total_coefは、基本ブロックに含まれる複数の周波数変換係数のうち、非ゼロ係数の個数を示す。trailing_onesとtotal_coefとの組み合わせは、非ゼロ係数の個数を示すデータ値の一例である。
テーブルA1は、非ゼロ係数の個数として0を示すデータ値と二値化値との対応付けを含む。つまり、テーブルA1は、trailing_onesが0でありtotal_coefが0であるデータ値を含む。テーブルA2は、非ゼロ係数の個数として0を示すデータ値と二値化値との対応付けを含まない。つまり、テーブルA2は、trailing_onesが0でありtotal_coefが0であるデータ値を含まない。
これにより、テーブルA2でデータ値に対応付けられる二値化値が、テーブルA1で同じデータ値に対応付けられる二値化値のビット長よりも短いビット長で規定される。
図15の例では、total_coefは3であり、trailing_onesは2である。このデータ値に対して、テーブルA1では、7ビットの二値化値である「0000101」が対応付けられており、テーブルA2では、6ビットの二値化値である「000011」が対応付けられている。
例えば、二値化部132は、非ゼロ係数の個数が0である可能性のある基本ブロックの非ゼロ係数の個数を示すデータ値をテーブルA1に従って二値化する。そして、二値化部132は、非ゼロ係数の個数が0である可能性のない基本ブロックの非ゼロ係数の個数を示すデータ値をテーブルA2に従って二値化する。
同様に、逆二値化部244は、非ゼロ係数の個数が0である可能性のある基本ブロックの非ゼロ係数の個数を示すデータ値が二値化された二値化値をテーブルA1に従って逆二値化する。そして、逆二値化部244は、非ゼロ係数の個数が0である可能性のない基本ブロックの非ゼロ係数の個数を示すデータ値が二値化された二値化値をテーブルA2に従って逆二値化する。
これにより、符号化装置100及び復号装置200は、符号量が増大することを抑制することができる。
なお、図15の例では、サイズが4×4である基本ブロックが示されているが、基本ブロックのサイズは、4×4とは異なるサイズでもよい。また、基本ブロックのサイズは、周波数変換ブロックと同じサイズでもよいし、周波数変換ブロックよりも小さいサイズでもよい。また、この例では、非ゼロ係数の個数を示すデータ値として、trailing_onesとtotal_coefとの組み合わせが用いられているが、非ゼロ係数の個数を示すデータ値は、別の情報でもよい。
図16は、実施の形態1に係るテーブルの選択を示すフローチャートである。具体的には、図16は、図15に示されたテーブルA1及びテーブルA2の中から変換テーブルを選択するためのフローチャートである。
例えば、二値化部132は、基本ブロック毎に、テーブルA1及びテーブルA2の中から変換テーブルを選択し、選択された変換ブロックに従って基本ブロックに含まれる非ゼロ係数の個数を示すデータ値を二値化する。また、逆二値化部244は、基本ブロック毎に、テーブルA1及びテーブルA2の中から変換テーブルを選択し、選択された変換ブロックに従って基本ブロックに含まれる非ゼロ係数の個数を示すデータ値の二値化値を逆二値化する。
ここでは、基本ブロック毎に二値化又は逆二値化の処理を行う際における処理対象の基本ブロックは、カレント基本ブロックと呼ばれる。
また、前提として、二値化部132は、周波数変換ブロックに特定基本ブロックが含まれる場合のみ、スキャン順で特定基本ブロック以降の各基本ブロックについて、非ゼロ係数の個数を示すデータ値を二値化する。そして、逆二値化部244は、周波数変換ブロックに特定基本ブロックが含まれる場合のみ、スキャン順で特定基本ブロック以降の各基本ブロックについて、非ゼロ係数の個数を示すデータ値の二値化値を逆二値化する。特定基本ブロックは、スキャン順で最初に非ゼロ係数を含む基本ブロックである。
つまり、符号化装置100は、周波数変換ブロックが非ゼロ係数を含む場合に周波数変換ブロックを符号化し、周波数変換ブロックが非ゼロ係数を含まない場合に周波数変換ブロックを符号化しない。これに伴って、復号装置200は、周波数変換ブロックが非ゼロ係数を含む場合に周波数変換ブロックを復号し、周波数変換ブロックが非ゼロ係数を含まない場合に周波数変換ブロックを復号しない。
上記の前提において、カレント基本ブロックが周波数変換ブロックと同じではなく(S201でNo)、かつ、カレント基本ブロックが特定基本ブロックではない場合(S202でNo)、0個の非ゼロ係数の対応付けを含むテーブルA1が選択される(S203)。また、カレント基本ブロックが周波数変換ブロックと同じである場合(S201でYes)、又は、カレント基本ブロックが特定基本ブロックである場合(S202でYes)、0個の非ゼロ係数の対応付けを含まないテーブルA2が選択される(S204)。
カレント基本ブロックが周波数変換ブロックと同じである場合、カレント基本ブロックのデータ値が二値化されるか否かは、カレント基本ブロックが非ゼロ係数を含むか否かに従う。この場合、カレント基本ブロックが非ゼロ係数を含むなら、カレント基本ブロックのデータ値が二値化され、カレント基本ブロックが非ゼロ係数を含まないなら、カレント基本ブロックのデータ値が二値化されない。
したがって、この場合、カレント基本ブロックのデータ値が二値化されるなら、カレント基本ブロックが非ゼロ係数を含む。そのため、カレント基本ブロックが周波数変換ブロックと同じである場合、0個の非ゼロ係数の対応付けを含まないテーブルA2が選択される。
また、特定基本ブロックは、非ゼロ係数を含む。したがって、カレント基本ブロックが特定基本ブロックである場合、0個の非ゼロ係数の対応付けを含まないテーブルA2が選択される。
なお、カレント基本ブロックが周波数変換ブロックと同じであるか否かは、周波数変換ブロックのサイズがカレント基本ブロックのサイズと同じであるか否かに対応する。例えば、各基本ブロックのサイズが4×4である場合、カレント基本ブロックが周波数変換ブロックと同じであるか否かに代えて、周波数変換ブロックのサイズが4×4であるか否かが判定されてもよい。
また、上記の選択方法は、一例であって、その他の選択方法が用いられてもよい。また、上記の選択方法における2つの場合分けの一方のみが用いられてもよい。また、上記の例では、2つのテーブルA1及びA2から変換テーブルが選択されているが、これらのテーブルA1及びA2を含む3つ以上のテーブルの中から変換テーブルが選択されてもよい。
また、二値化部132は、第2モードと同様に、第1モードにおいても、0個の非ゼロ係数の対応付けを含まないテーブルA2等から選択された変換テーブルに従って、非ゼロ係数の個数を示すデータ値を二値化してもよい。あるいは、二値化部132は、第1モードにおいて、0個の非ゼロ係数の対応付けを含まないテーブルA2等を用いず、0個の非ゼロ係数の対応付けを含むテーブルA1等を用いて、非ゼロ係数の個数を示すデータ値を二値化してもよい。
あるいは、二値化部132は、第1モードにおいて、非ゼロ係数の個数を示すデータ値を二値化しなくてもよい。例えば、二値化部132は、第1モードにおいて、非ゼロ係数の個数によらず、複数の周波数変換係数のそれぞれを二値化してもよい。第1モードでは、非ゼロ係数の個数が用いられなくても、算術符号化の適用によって符号量の増加の抑制が支援される。
また、逆二値化部244は、第2モードと同様に、第1モードにおいても、0個の非ゼロ係数の対応付けを含まないテーブルA2等から選択された変換テーブルに従って、非ゼロ係数の個数を示すデータ値の二値化値を逆二値化してもよい。あるいは、逆二値化部244は、第1モードにおいて、0個の非ゼロ係数の対応付けを含まないテーブルA2等を用いず、0個の非ゼロ係数の対応付けを含むテーブルA1等を用いて、非ゼロ係数の個数を示すデータ値の二値化値を逆二値化してもよい。
あるいは、逆二値化部244は、第1モードにおいて、非ゼロ係数の個数を示すデータ値の二値化値を逆二値化しなくてもよい。例えば、逆二値化部244は、第1モードにおいて、非ゼロ係数の個数によらず、複数の周波数変換係数のそれぞれの二値化値を逆二値化してもよい。第1モードでは、非ゼロ係数の個数が用いられなくても、算術復号の適用によって符号量の増加の抑制が支援される。
[基本ブロックの位置に基づくテーブル選択]
二値化又は逆二値化のための変換テーブルは、複数のデータ値に対応付けられた複数の二値化値の最長ビット長と最短ビット長との差が互いに異なる2以上のテーブルを含む複数のテーブルの中から選択されてもよい。これにより、周波数変換係数情報の符号量が削減され得る。
図17は、実施の形態1に係る4種類のテーブルB1~B4を示す概念図である。4種類のテーブルB1~B4のそれぞれにおいて、複数のデータ値と複数の二値化値とが対応付けられている。複数のデータ値のそれぞれは、trailing_onesとtotal_coefとの組み合わせに対応する。なお、図17のテーブルB1は、図15のテーブルA1と同じである。
具体的には、図17の例において、total_coefは3であり、trailing_onesは2である。このデータ値に対して、テーブルB1では、7ビットの二値化値である「0000101」が対応付けられており、テーブルB3では、5ビットの二値化値である「01110」が対応付けられている。
符号化装置100の二値化部132は、テーブルB1~B4の中から変換テーブルを選択し、二値化部132は、選択された変換テーブルに従って、データ値を二値化する。同様に、復号装置200の逆二値化部244は、テーブルB1~B4の中から変換テーブルを選択し、選択された変換テーブルに従って、非ゼロ係数の個数を示すデータ値の二値化値を逆二値化する。
なお、復号装置200の逆二値化部244は、符号化装置100の二値化部132と同じ選択基準で、テーブルB1~B4の中から符号化装置100の二値化部132によって選択されたテーブルと同じテーブルを変換テーブルとして選択する。
また、テーブルB1~B3のそれぞれにおいて、非ゼロ係数の個数が少ないほど、非ゼロ係数の個数を示すデータ値に対応付けられた二値化値のビット長がより短く規定されている。テーブルB1~B3のうち、テーブルB1において、この傾向が最も強く、テーブルB3において、この傾向が最も弱い。すなわち、テーブルB1~B3のうち、テーブルB1において、複数の二値化値におけるビット長の変動が最も大きく、テーブルB3において、複数の二値化値におけるビット長の変動が最も小さい。
テーブルB4において、非ゼロ係数の個数によらず、非ゼロ係数の個数を示すデータ値に対応付けられた二値化値のビット長は一定である。つまり、テーブルB4において、複数のデータ値に対応付けられた複数の二値化値は、同じビット長で規定されている。したがって、最長ビット長と最短ビット長との差は、テーブルB1において最も大きく、テーブルB2において次に大きく、テーブルB3において次に大きく、テーブルB4において最も小さい。
例えば、非ゼロ係数の個数として推定される個数が少ないほど、テーブルB1~B4のうち、最長ビット長と最短ビット長との差がより大きいテーブルが選択される。これにより、非ゼロ係数の個数を示すデータ値に、ビット長が短い二値化値が割り当てられる可能性が大きくなる。
逆に、非ゼロ係数の個数として推定される個数が多いほど、テーブルB1~B4のうち、最長ビット長と最短ビット長との差がより小さいテーブルが選択される。これにより、非ゼロ係数の個数を示すデータ値に、ビット長が長い二値化値が割り当てられる可能性が小さくなる。
また、カレント基本ブロックにおける非ゼロ係数の個数は、周波数変換ブロックにおけるカレント基本ブロックの位置に影響されると推定される。そこで、例えば、符号化装置100の二値化部132は、周波数変換ブロックにおけるカレント基本ブロックの位置に従って、テーブルB1~B4の中から変換テーブルを選択してもよい。そして、二値化部132は、選択された変換テーブルに従って、非ゼロ係数の個数を示すデータ値を二値化してもよい。
同様に、復号装置200の逆二値化部244は、周波数変換ブロックにおけるカレント基本ブロックの位置に従って、テーブルB1~B4の中から変換テーブルを選択してもよい。そして、逆二値化部244は、選択された変換テーブルに従って、非ゼロ係数の個数を示すデータ値の二値化値を逆二値化してもよい。これにより、符号化装置100及び復号装置200は、符号量が増大することを抑制することができる。
なお、テーブルB1~B3のそれぞれにおいて、trailing_onesが大きいほど、二値化値のビット長がより短く規定される。この傾向も、テーブルB1~B3のうち、テーブルB1において最も強く、テーブルB3において最も弱い。テーブルB4には、この傾向がない。
基本ブロックにおける各周波数変換係数の絶対値が小さいことと、trailing_onesが大きいこととの間に相関があると推定される。そこで、周波数変換係数の絶対値として推定される値が小さいほど、テーブルB1~B4のうち、この傾向がより強いテーブルが選択されてもよい。これにより、trailing_onesとtotal_coefとの組み合わせに、ビット長が短い二値化値が割り当てられる可能性が大きくなる。
また、図17において、4種類のテーブルB1~B4が示されているが、最長ビット長と最短ビット長との差が互いに異なる2種類のテーブルが用いられてもよいし、3種類のテーブルが用いられてもよいし、5種類以上のテーブルが用いられてもよい。
また、変換テーブルを選択するための複数のテーブルには、最長ビット長と最短ビット長との差が互いに異なる2種類以上のテーブルのみに限らず、最長ビット長と最短ビット長との差が互いに等しい2種類以上のテーブルが含まれていてもよい。すなわち、変換テーブルを選択するための複数のテーブルには、最長ビット長と最短ビット長との差が互いに異なる2種類以上のテーブルが含まれ、かつ、最長ビット長と最短ビット長との差が互いに等しい2種類以上のテーブルが含まれていてもよい。
また、図15に示されたテーブルA1及びA2と、図17に示されたテーブルB1~B4とが組み合わされてもよい。例えば、変換テーブルは、複数のテーブルB1~B4及びA2の中から選択されてもよい。さらに、テーブルB2~B4から0個の非ゼロ係数の対応付けを除いた新たなテーブルが、変換テーブルを選択するための複数のテーブルに含まれてもよい。
また、符号化装置100及び復号装置200は、周波数変換ブロックにおける基本ブロックの位置に従って、テーブルB1~B4の中から変換テーブルを選択してもよい。その際、符号化装置100及び復号装置200は、基本ブロックの階層を利用してもよい。
図18A~図18Iは、それぞれ、実施の形態1に係る周波数変換ブロックにおける1以上の基本ブロックのそれぞれの階層を示す概念図である。
図18A~図18Iにおいて、1以上の基本ブロックのそれぞれの中に記載された番号は、周波数変換ブロックにおける基本ブロックの階層を示す。この例では、周波数変換ブロックにおける基本ブロックの階層を示す番号が、周波数の低い順で規定されている。つまり、基本ブロックの階層を示す番号は、その基本ブロックが対応する周波数のレベルが低いほど、より小さく規定されている。つまり、階層は、周波数のレベルに対応する。
左下又は右上に向かう斜め方向に並ぶ複数の基本ブロックにおいて、周波数のレベルは同じであるとみなされる。ここでは、周波数のレベルが同じ複数の基本ブロックに対して、基本ブロックの階層を示す番号が、同じ値で規定されている。
具体的には、図18Aは、4×4の周波数変換ブロックにおける1個の基本ブロックの階層を示す。また、図18Bは、8×8の周波数変換ブロックにおける4個の基本ブロックのそれぞれの階層を示す。図18Cは、8×4の周波数変換ブロックにおける2個の基本ブロックのそれぞれの階層を示す。図18Dは、4×8の周波数変換ブロックにおける2個の基本ブロックのそれぞれの階層を示す。図18Eは、16×16の周波数変換ブロックにおける16個の基本ブロックのそれぞれの階層を示す。
また、図18Fは、16×8の周波数変換ブロックにおける8個の基本ブロックのそれぞれの階層を示す。図18Gは、8×16の周波数変換ブロックにおける8個の基本ブロックのそれぞれの階層を示す。図18Hは、16×12の周波数変換ブロックにおける12個の基本ブロックのそれぞれの階層を示す。図18Iは、4×16の周波数変換ブロックにおける4個の基本ブロックのそれぞれの階層を示す。
また、図18A~図18Iに示されている番号は一例であり、基本ブロックの階層を示す番号として他の番号が用いられてもよい。あるいは、番号とは異なる形式で基本ブロックの階層を示す情報が用いられてもよい。
図19は、実施の形態1に係るパターンの判定処理を示すフローチャートである。例えば、符号化装置100の二値化部132は、周波数変換ブロックにおけるカレント基本ブロックの位置に従ってパターンを決定し、決定されたパターンに従って変換テーブルを選択する。このパターンは、周波数変換ブロックにおけるカレント基本ブロックの位置に対応し、かつ、変換テーブルを選択するための選択方法に対応する。
そのため、符号化装置100の二値化部132は、カレント基本ブロックと同じ階層に先行基本ブロックが存在するか否かを判定する(S301)。ここで、先行基本ブロックは、スキャン順でカレント基本ブロックよりも前の基本ブロックである。二値化部132は、カレント基本ブロックと同じ階層に先行基本ブロックが存在すると判定される場合(S301でYes)、パターンを第1パターンと判定する(S302)。
二値化部132は、カレント基本ブロックと同じ階層に先行基本ブロックが存在しないと判定される場合(S301でNo)、カレント基本ブロックよりも高い階層に特定基本ブロックが存在するか否かを判定する(S303)。ここで、特定基本ブロックは、周波数変換ブロックを構成する1以上の基本ブロックのうち、スキャン順で最初に非ゼロ係数を含む基本ブロックである。
二値化部132は、カレント基本ブロックよりも高い階層に特定基本ブロックが存在すると判定される場合(S303でYes)、パターンを第2パターンと判定する(S304)。二値化部132は、カレント基本ブロックよりも高い階層に特定基本ブロックが存在しないと判定される場合(S303でNo)、パターンを第3パターンと判定する(S305)。
なお、第1パターン、第2パターン及び第3パターンは、それぞれ、パターンの一例である。第1パターン、第2パターン及び第3パターンのうち一部のみが利用されてもよいし、その他のパターンが利用されてもよい。
また、復号装置200の逆二値化部244も、符号化装置100の二値化部132と同様に、パターンを決定し、変換テーブルを選択する。したがって、パターンの決定、及び、変換テーブルの選択について、符号化装置100及び二値化部132の動作は、復号装置200及び逆二値化部244の動作に置き換えられ得る。以降の説明も同様である。
図20Aは、実施の形態1に係る第1パターンのカレント基本ブロックを示す概念図である。カレント基本ブロックと同じ階層に先行基本ブロックが存在する場合、カレント基本ブロックの位置に対応するパターンが第1パターンとして決定される。
言い換えれば、カレント基本ブロックの位置が、カレント基本ブロックと同じ階層に先行基本ブロックが存在するような位置である場合、パターンが第1パターンとして決定される。例えば、図20Aにおける斜線のハッチング部分に、カレント基本ブロックが位置する場合、カレント基本ブロックの位置に対応するパターンが第1パターンとして決定される。
図20Bは、実施の形態1に係る第2パターンのカレント基本ブロックを示す概念図である。カレント基本ブロックと同じ階層に先行基本ブロックが存在せず、かつ、カレント基本ブロックよりも高い階層に特定基本ブロックが存在する場合、カレント基本ブロックの位置に対応するパターンが第2パターンとして決定される。
言い換えれば、カレント基本ブロックの位置が、カレント基本ブロックと同じ階層に先行基本ブロックが存在せず、かつ、カレント基本ブロックよりも高い階層に特定基本ブロックが存在するような位置である場合、パターンが第2パターンとして決定される。例えば、図20Bにおける斜線のハッチング部分に、カレント基本ブロックが位置する場合、カレント基本ブロックの位置に対応するパターンが第2パターンとして決定される。
図20Cは、実施の形態1に係る第3パターンのカレント基本ブロックを示す概念図である。カレント基本ブロックと同じ階層に先行基本ブロックが存在せず、かつ、カレント基本ブロックよりも高い階層に特定基本ブロックが存在しない場合、カレント基本ブロックの位置に対応するパターンが第3パターンとして決定される。
言い換えれば、カレント基本ブロックの位置が、カレント基本ブロックと同じ階層に先行基本ブロックが存在せず、かつ、カレント基本ブロックよりも高い階層に特定基本ブロックが存在しないような位置である場合、パターンが第3パターンとして決定される。例えば、図20Cにおける斜線のハッチング部分に、カレント基本ブロックが位置する場合、カレント基本ブロックの位置に対応するパターンが第3パターンとして決定される。
図21は、実施の形態1に係る第1パターンにおいて選択されるテーブルを示す関係図である。例えば、符号化装置100の二値化部132は、カレント基本ブロックに含まれる非ゼロ係数の個数を予測し、カレント基本ブロックに含まれる非ゼロ係数の個数の予測値に従って、テーブルB1~B4の中から変換テーブルを選択する。この予測値は、nCとも表現される。
図21の例では、二値化部132は、予測値が0~1である場合、最長ビット長と最短ビット長との差が最も大きいテーブルB1を変換テーブルとして選択する。
また、二値化部132は、予測値が2~3である場合、最長ビット長と最短ビット長との差が次に大きいテーブルB2を変換テーブルとして選択する。また、二値化部132は、予測値が4~7である場合、最長ビット長と最短ビット長との差が次に大きいテーブルB3を変換テーブルとして選択する。また、二値化部132は、予測値が8~16である場合、最長ビット長と最短ビット長との差が最も小さいテーブルB4を変換テーブルとして選択する。
第1パターンでは、カレント基本ブロックと同じ階層に先行基本ブロックが存在する。したがって、二値化部132は、カレント基本ブロックと同じ階層の先行基本ブロックに含まれる非ゼロ係数の個数に従って、カレント基本ブロックに含まれる非ゼロ係数の個数を予測する。具体的には、二値化部132は、カレント基本ブロックと同じ階層の先行基本ブロックに含まれる非ゼロ係数の個数をカレント基本ブロックに含まれる非ゼロ係数の個数として予測する。
第1パターンにおいて、カレント基本ブロックが、スキャン順で最初に非ゼロ係数を含む特定基本ブロックである場合、先行基本ブロックに含まれる非ゼロ係数の個数は、0である。したがって、二値化部132は、0をカレント基本ブロックに含まれる非ゼロ係数の個数として予測する。
また、二値化部132は、カレント基本ブロックと同じ階層に複数の先行基本ブロックが存在する場合、スキャン順で直前の先行基本ブロックに含まれる非ゼロ係数の個数に従って、カレント基本ブロックに含まれる非ゼロ係数の個数を予測してもよい。
そして、二値化部132は、先行基本ブロックの非ゼロ係数の個数に従って、基本ブロックの非ゼロ係数の個数を予測し、非ゼロ係数の個数の予測値に従って、テーブルB1~B4の中から変換テーブルを選択する。すなわち、二値化部132は、先行基本ブロックの非ゼロ係数の個数に従って、テーブルB1~B4の中から変換テーブルを選択する。
なお、図21は、予測値の範囲、及び、選択されるテーブルの例を示している。予測値の範囲、及び、選択されるテーブルは、図21に示された例に限られない。また、二値化部132は、非ゼロ係数の個数の予測値のみではなく、非ゼロ係数の個数の予測値と、他の情報との組み合わせに従って、変換テーブルを選択してもよい。第1パターンに限らず、他のパターンについても同様である。
図22は、実施の形態1に係る第2パターンにおいて選択されるテーブルを示す関係図である。
第2パターンでは、カレント基本ブロックと同じ階層に先行基本ブロックが存在しない。一方、カレント基本ブロックよりも高い階層、つまり、カレント基本ブロックの位置における周波数のレベルよりも高いレベルに非ゼロ係数を含む基本ブロックが存在する。この場合、二値化部132は、カレント基本ブロックに含まれる非ゼロ係数の個数は多いと予測し、カレント基本ブロックに含まれる非ゼロ係数の個数の予測値を大きくする。そして、二値化部132は、大きくした予測値に従って、変換テーブルを選択する。
例えば、二値化部132は、カレント基本ブロックに含まれる非ゼロ係数の個数の予測値を非ゼロ係数の個数の最大値として決定する。そして、二値化部132は、非ゼロ係数の個数の最大値として決定された予測値に従って、変換テーブルを選択する。
具体的には、二値化部132は、カレント基本ブロックに含まれる非ゼロ係数の個数の予測値を非ゼロ係数の個数の最大値である16として決定する。そして、二値化部132は、非ゼロ係数の個数の最大値である16として決定された予測値に従って、変換テーブルを選択する。これにより、二値化部132は、最長ビット長と最短ビット長との差が最も小さいテーブルB4を変換テーブルとして選択する。
なお、第2パターンにおいて、二値化部132は、予測値を最大値として決定しなくてもよく、予測値を非ゼロ係数の個数の平均的な値よりも大きい所定の値に決定してもよい。そして、二値化部132は、テーブルB1~B4の中から、最長ビット長と最短ビット長との差が平均的な差よりも小さいテーブルを変換テーブルとして選択してもよい。
図23は、実施の形態1に係る第3パターンにおいて周辺の周波数変換ブロックで選択されるテーブルを示す関係図である。この例では、符号化装置100の二値化部132は、第3パターンにおいて、周辺の周波数変換ブロックに含まれる非ゼロ係数の個数に従って、変換テーブルを選択する。
第3パターンでは、カレント基本ブロックと同じ階層に先行基本ブロックが存在しない。また、カレント基本ブロックよりも高い階層に特定基本ブロックが存在しない。そこで、二値化部132は、周辺の周波数変換ブロックに含まれる非ゼロ係数の個数に従って、カレント基本ブロックに含まれる非ゼロ係数の個数を予測する。二値化部132は、周辺の周波数変換ブロックに含まれる非ゼロ係数の個数をカレント基本ブロックに含まれる非ゼロ係数の個数として予測してもよい。
そして、二値化部132は、カレント基本ブロックに含まれる非ゼロ係数の個数の予測値に従って、テーブルB1~B4の中から変換テーブルを選択する。すなわち、二値化部132は、周辺の周波数変換ブロックに含まれ得る非ゼロ係数の個数に従って、テーブルB1~B4の中から変換テーブルを選択する。
例えば、周辺の周波数変換ブロックは、カレント基本ブロックを含む周波数変換ブロックから空間的に近い周波数変換ブロックであって、既に符号化が完了している周波数変換ブロックである。以下、カレント基本ブロックを含む周辺変換ブロックをカレント周波数変換ブロックと呼び、周辺の周波数変換ブロックを周辺周波数変換ブロックと呼ぶ。周辺周波数変換ブロックは、空間的に、カレント周波数変換ブロックから所定の範囲における周波数変換ブロックであってもよい。
また、周辺周波数変換ブロックは、カレント周波数変換ブロックの左又は上に隣接する周波数変換ブロックであってもよい。これにより、二値化部132は、カレント周波数変換ブロックに近い周波数変換ブロックに含まれる非ゼロ係数の個数に従って、高精度に非ゼロ係数の個数を予測することができる。
また、周辺周波数変換ブロックは、符号化順で直前のカレント周波数変換ブロックでもよい。これにより、非ゼロ係数の個数のシンプルな予測、及び、非ゼロ係数の個数に関する情報を記憶するためのメモリ容量の削減が可能である。
また、周辺周波数変換ブロックは、カレント周波数変換ブロックから所定の範囲における周波数変換ブロックであって、符号化モードがカレント周波数変換ブロックと同じ周波数変換ブロックであってもよい。これにより、二値化部132は、非ゼロ係数の発生傾向がカレント周波数変換ブロックと似ていると推定される周波数変換ブロックに従って、非ゼロ係数の個数を高精度に予測することができる。なお、所定の範囲は、カレント周波数変換ブロックを含む符号化ツリーユニットの範囲でもよい。
周辺周波数変換ブロックに含まれる非ゼロ係数の個数として、カレント周波数変換ブロックに対するカレント基本ブロックの相対的な位置に周辺周波数変換ブロックに対する相対的な位置が等しい基本ブロックに含まれる非ゼロ係数の個数が用いられてもよい。これにより、二値化部132は、非ゼロ係数の個数に関し、カレント基本ブロックに対して相関の強い基本ブロックに従って、非ゼロ係数の個数を高精度に予測することができる。
周辺周波数変換ブロックに含まれる非ゼロ係数の個数として、周辺周波数変換ブロック全体の非ゼロ係数の個数が用いられてもよい。これにより、周波数変換ブロックのサイズによらず情報が統合されるため、非ゼロ係数の個数のシンプルな予測、及び、非ゼロ係数の個数に関する情報を記憶するためのメモリ容量の削減が可能である。
また、二値化部132は、周辺周波数変換ブロック全体の非ゼロ係数の個数に従って、基本ブロックあたりの非ゼロ係数の個数を導出し、基本ブロックあたりの非ゼロ係数の個数に従って、カレント基本ブロックに含まれる非ゼロ係数の個数を予測してもよい。これにより、二値化部132は、周波数変換ブロックのサイズの違いによらず、非ゼロ係数の個数を適切に予測することができる。そして、二値化部132は、適切な予測値に従って、変換テーブルを選択することができる。
図24は、実施の形態1に係る第3パターンにおいて符号化モードで選択されるテーブルを示す関係図である。この例では、二値化部132は、第3パターンにおいて、周辺の周波数変換ブロックに含まれる非ゼロ係数の個数に代えて、面間予測か面内予測かの符号化モードに従って、変換テーブルを選択する。この符号化モードは、カレント基本ブロックの符号化及び復号に、面間予測が用いられるか、面内予測が用いられるかに対応する。
例えば、カレントブロックの符号化モードが面間予測である場合、面内予測に比べて、予測精度が高く、非ゼロ係数の個数が少ないと推定される。したがって、二値化部132は、最長ビット長と最短ビット長との差が大きいテーブルB1を選択する。一方、カレントブロックの符号化モードが面内予測である場合、面間予測に比べて、予測精度が低く、非ゼロ係数の個数が多いと推定される。したがって、二値化部132は、最長ビット長と最短ビット長との差がテーブルB1よりも小さいテーブルB2を選択する。
なお、図24は、選択されるテーブルの例を示している。選択されるテーブルは、図24に示された例に限られない。また、二値化部132は、符号化モードのみではなく、符号化モードと、他の情報との組み合わせに従って、変換テーブルを選択してもよい。
図25は、実施の形態1に係る第3パターンにおいて量子化パラメータで選択されるテーブルを示す関係図である。この例では、二値化部132は、第3パターンにおいて、周辺の周波数変換ブロックに含まれる非ゼロ係数の個数、及び、面間予測か面内予測かの符号化モードに代えて、QP値に従って、変換テーブルを選択する。このQP値は、カレント基本ブロックの符号化及び復号に用いられる量子化パラメータの値であって、QP値が大きいほど、量子化幅が大きい。
例えば、QP値が大きいほど、周波数変換係数の値が0に量子化される可能性が高く、量子化によって発生する非ゼロ係数が少ないと推定される。したがって、二値化部132は、QP値が大きいほど、テーブルB1~B4の中から、最長ビット長と最短ビット長との差がより大きいテーブルを選択する。
一方、QP値が小さいほど、周波数変換係数の値が0に量子化される可能性が低く、量子化によって発生する非ゼロ係数が多いと推定される。したがって、二値化部132は、QP値が小さいほど、テーブルB1~B4の中から、最長ビット長と最短ビット長との差がより小さいテーブルを選択する。
この例では、二値化部132は、QP値が0~21である場合、最長ビット長と最短ビット長との差が最も小さいテーブルB4を変換テーブルとして選択する。
また、二値化部132は、QP値が22~31である場合、最長ビット長と最短ビット長との差が次に小さいテーブルB3を変換テーブルとして選択する。また、二値化部132は、QP値が32~41である場合、最長ビット長と最短ビット長との差が次に小さいテーブルB2を変換テーブルとして選択する。また、二値化部132は、QP値が42~51である場合、最長ビット長と最短ビット長との差が最も大きいテーブルB1を変換テーブルとして選択する。
なお、図25は、QP値の範囲、及び、選択されるテーブルの例を示している。QP値の範囲、及び、選択されるテーブルは、図25に示された例に限られない。また、二値化部132は、QP値のみではなく、QP値と、他の情報との組み合わせに従って、変換テーブルを選択してもよい。
また、上記の例において、二値化部132は、カレント基本ブロックの位置に従って、テーブル選択方法を決定し、決定されたテーブル選択方法に従って、変換テーブルを選択する。これにより、二値化部132は、カレント基本ブロックの位置に従って、変換テーブルを選択する。
一方で、カレント基本ブロックの位置が周波数変換ブロックの左上隅に近いほど、カレント基本ブロックに含まれる非ゼロ係数がより多いと推定される。したがって、二値化部132は、カレント基本ブロックの位置が周波数変換ブロックの左上隅に近いほど、テーブルB1~B4等の中から、最長ビット長と最短ビット長との差がより小さいテーブルを変換テーブルとして選択してもよい。これにより、二値化部132は、カレント基本ブロックの位置に従って、変換テーブルを選択してもよい。
また、上記の説明では、非ゼロ係数の個数に関し、予測という表現が用いられているが、面内予測及び面間予測等のような画像の予測と区別するため、予測という表現の代わりに、推定という表現が用いられてもよい。
[周波数変換係数情報のシンタックス構造]
図26は、実施の形態1に係るシンタックス構造を示すデータ図である。符号化装置100の二値化部132は、図26に示されたシンタックス構造に従って、周波数変換係数情報を二値化する。復号装置200の逆二値化部244は、図26に示されたシンタックス構造に従って、周波数変換係数情報の二値化データ列を逆二値化する。
図26の例は、基本ブロックのサイズが4×4である場合の例であるが、基本ブロックのサイズは、4×4に限られない。基本ブロックのサイズは、周波数変換ブロックと同じサイズでもよいし、周波数変換ブロックよりも小さいサイズでもよい。また、図26において太文字で示されたパラメータが、二値化データ列に記述されるパラメータである。
last_sub_block_posは、特定基本ブロックの位置を示す情報である。特定基本ブロックは、周波数変換ブロックを構成する1以上の基本ブロックに対して周波数の高い順で規定されるスキャン順で最初に非ゼロ係数を含む基本ブロックである。last_sub_block_posは、特定基本ブロックの位置を例えば図14A~図14Iのように番号で示す情報であってもよい。二値化データ列には、周波数変換ブロック毎に最大で1つのlast_sub_block_posが含まれる。
coef_tokenは、基本ブロックに含まれる非ゼロ係数の個数を示す情報である。具体的には、coef_tokenは、total_coef及びtrailing_onesの両方に対応する。より具体的には、coef_tokenは、例えば図15及び図17のようにtotal_coef及びtrailing_onesが組み合わされたデータ値に対応する二値化値であってもよい。二値化データ列には、基本ブロック毎に最大で1つのcoef_tokenが含まれる。
total_zerosは、基本ブロックに含まれる複数の周波数変換係数に対して周波数の高い順で規定されるスキャン順で最初に出現した非ゼロ係数よりも後に出現したゼロ係数の総数を示す情報である。ここで、ゼロ係数は、値が0である周波数変換係数である。二値化データ列には、基本ブロック毎に最大で1つのtotal_zerosが含まれる。
run_beforeは、基本ブロックに含まれる複数の周波数変換係数に対して周波数の高い順で規定されるスキャン順で出現した各非ゼロ係数について、非ゼロ係数よりも後に連続して出現したゼロ係数の個数を示す情報である。二値化データ列には、基本ブロック毎に最大で、非ゼロ係数の個数から1を引いた数のrun_beforeが含まれる。
coeff_sign_flagは、基本ブロックに含まれる各非ゼロ係数の値の正負を示す情報である。二値化データ列には、基本ブロック毎に最大で、非ゼロ係数の個数と同じ数のcoeff_sign_flagが含まれる。
coeff_abs_level_remainingは、基本ブロックに含まれる各非ゼロ係数の絶対値を示す情報である。二値化データ列には、基本ブロック毎に最大で、非ゼロ係数の個数と同じ数のcoeff_abs_level_remainingが含まれる。
図26に示されたシンタックス構造は一例である。図26に示されたシンタックス構造とは異なるシンタックス構造であって、図26に示されたシンタックス構造と同じような情報を示すシンタックス構造が用いられてもよい。
[符号化装置の実装例]
図27は、実施の形態1に係る符号化装置100の実装例を示すブロック図である。符号化装置100は、回路160及びメモリ162を備える。例えば、図1及び図11に示された符号化装置100の複数の構成要素は、図27に示された回路160及びメモリ162によって実装される。
回路160は、情報処理を行う回路であり、メモリ162にアクセス可能な回路である。例えば、回路160は、画像情報を符号化する専用又は汎用の電子回路である。回路160は、CPUのようなプロセッサであってもよい。また、回路160は、複数の電子回路の集合体であってもよい。また、例えば、回路160は、図1及び図11に示された符号化装置100の複数の構成要素のうち、情報を記憶するための構成要素を除く、複数の構成要素の役割を果たしてもよい。
メモリ162は、回路160が画像情報を符号化するための情報が記憶される汎用又は専用のメモリである。メモリ162は、電子回路であってもよく、回路160に接続されていてもよい。また、メモリ162は、複数の電子回路の集合体であってもよい。また、メモリ162は、磁気ディスク又は光ディスク等であってもよいし、ストレージ又は記録媒体等と表現されてもよい。また、メモリ162は、不揮発性メモリでもよいし、揮発性メモリでもよい。
例えば、メモリ162には、符号化される画像情報が記憶されてもよいし、符号化された画像情報に対応するビット列が記憶されてもよい。また、メモリ162には、回路160が画像情報を符号化するためのプログラムが記憶されていてもよい。
また、例えば、回路160は、図1及び図11に示された符号化装置100の複数の構成要素のうち、情報を記憶するための構成要素の役割を果たしてもよい。具体的には、メモリ162は、図1に示されたブロックメモリ118及びフレームメモリ122の役割を果たしてもよいし、図11に示された中間バッファ136の役割を果たしてもよい。
なお、符号化装置100において、図1及び図11等に示された複数の構成要素の全てが実装されなくてもよいし、上述された複数の処理の全てが行われなくてもよい。図1及び図11等に示された複数の構成要素の一部は、他の装置に含まれていてもよいし、上述された複数の処理の一部は、他の装置によって実行されてもよい。
そして、符号化装置100において、図1及び図11等に示された複数の構成要素のうちの一部が実装され、上述された複数の処理の一部が行われることによって、周波数変換係数情報が適切に符号化され得る。
[符号化装置の第1符号化動作例]
図28は、実施の形態1に係る符号化装置100の第1符号化動作例を示すフローチャートである。例えば、図27に示された符号化装置100の回路160は、図28に示された動作を行うことにより、画像情報を符号化し、画像情報が符号化されたビット列を出力する。
具体的には、まず、回路160は、画像情報を二値化する(S401)。例えば、画像情報は、画像の周波数成分に関する周波数変換係数情報、及び、画像の予測方法に関する予測パラメータ情報等を含む。そして、回路160は、画像情報が二値化された二値化データ列に対して算術符号化を適用するか否かを切り替える(S402)。
二値化データ列に対して算術符号化が適用される場合(S402でYes)、回路160は、二値化データ列に対して算術符号化を適用し、算術符号化が適用された二値化データ列を含むビット列を出力する(S403)。
二値化データ列に対して算術符号化が適用されない場合(S402でNo)、回路160は、二値化データ列に対して算術符号化を適用せずに、算術符号化が適用されなかった二値化データ列を含むビット列を出力する(S404)。
これにより、符号化装置100は、算術符号化をスキップすることができる。したがって、符号化装置100は、算術符号化によって発生する処理遅延の削減を支援することができる。
図29は、実施の形態1に係る符号化装置100の第1符号化動作例における二値化処理を示すフローチャートである。つまり、図29は、図28における二値化処理(S401)の具体的な例を示す。
回路160は、二値化データ列に対して算術符号化が適用される場合と、二値化データ列に対して算術符号化が適用されない場合とで共通の二値化形式に従って、画像情報のうち、周波数変換係数情報とは異なる他の情報を二値化する(S411)。この他の情報は、例えば、予測パラメータ情報の一部または全部を含む。
また、回路160は、二値化データ列に対して算術符号化が適用される場合と、二値化データ列に対して算術符号化が適用されない場合とで異なる二値化形式に従って、画像情報のうち周波数変換係数情報を二値化する(S412)。より具体的には、回路160は、二値化データ列に対して算術符号化が適用される場合と、二値化データ列に対して算術符号化が適用されない場合とで異なる二値化形式に従って、画像情報のうち、周波数変換係数情報を含む情報を二値化してもよい。
これにより、符号化装置100は、全体の符号量に大きな影響を与える周波数変換係数情報を算術符号化の適用有無に従って適切に二値化することができる。したがって、符号化装置100は、周波数変換係数情報を適切に符号化することができ、全体の符号量の増加を抑制することができる。
なお、他の情報の二値化(S411)と、周波数変換係数情報の二値化(S412)との処理順序は、逆であってもよい。
また、例えば、予測パラメータ情報は、予測パラメータ情報に含まれる符号化モードに関する情報、画面内予測の予測方向に関する情報、画面間予測の参照ピクチャに関する情報、及び、画面間予測の動きベクトルに関する情報を含む。
回路160は、予測パラメータ情報に含まれるこれらの情報に対して、二値化データ列に対して算術符号化が適用される場合と、二値化データ列に対して算術符号化が適用されない場合とで共通の二値化形式に従って二値化を施してもよい。あるいは、回路160は、これらのうち少なくとも1つに対して、二値化データ列に対して算術符号化が適用される場合と、二値化データ列に対して算術符号化が適用されない場合とで共通の二値化形式に従って二値化を施してもよい。
また、回路160は、画像情報のうち周波数変換係数情報のみを算術符号化の適用有無によって異なる二値化形式に従って二値化してもよい。そして、回路160は、画像情報のうち周波数変換係数情報を除く他の全ての情報を算術符号化の適用有無によらず共通の二値化形式に従って二値化してもよい。
これにより、符号化装置100は、周波数変換係数情報を除く他の全ての情報を共通の二値化形式に従って二値化することができる。したがって、処理が簡素化される。
図30は、実施の形態1に係る符号化装置100の第1符号化動作例における周波数変換係数情報の二値化処理を示すフローチャートである。つまり、図30は、図29における周波数変換係数情報の二値化処理(S412)の具体的な例を示す。
回路160は、二値化データ列に対して算術符号化が適用される場合(S421でYes)、周波数変換係数情報を第1の二値化形式で二値化する(S422)。そして、回路160は、二値化データ列に対して算術符号化が適用されない場合(S421でNo)、周波数変換係数情報を第2の二値化形式で二値化する(S423)。そして、回路160は、二値化データ列に対して算術符号化が適用されない場合に、二値化データ列に対して算術符号化が適用される場合よりも、発生ビット数が少ない形式で周波数変換係数情報を二値化する。
これにより、符号化装置100は、算術符号化が適用されない場合において、周波数変換係数情報の符号量を小さくすることを支援することができる。
[符号化装置の第2符号化動作例]
図31は、実施の形態1に係る符号化装置100の第2符号化動作例を示すフローチャートである。例えば、図27に示された符号化装置100の回路160は、図31に示された動作を行うことにより、画像情報を符号化する。
具体的には、回路160は、特定基本ブロックの位置を示す位置情報を符号化する(S501)。特定基本ブロックは、複数の周波数変換係数を有する周波数変換ブロックを構成する1以上の基本ブロックに対して周波数の高い順に規定される所定のスキャン順で最初に非ゼロ係数を周波数変換係数として有する基本ブロックである。
そして、回路160は、周波数変換ブロックを構成する1以上の基本ブロックのうち、所定のスキャン順で特定基本ブロック以降の各基本ブロックについてのみ、基本ブロックを構成する複数の周波数変換係数を示すブロック情報を符号化する(S502)。
これにより、符号化装置100は、位置情報及びブロック情報を周波数変換係数情報として符号化することができる。そして、符号化装置100は、所定のスキャン順で特定基本ブロック以降の各基本ブロックについて、ブロック情報を符号化するため、周波数変換係数情報の符号量を小さくすることを支援することができる。
なお、回路160は、周波数変換ブロックを構成する1以上の基本ブロックの個数が2以上である場合のみ、位置情報を符号化してもよい。これにより、符号化装置100は、例えば周波数変換ブロックのサイズと各基本ブロックのサイズとが同じである場合に、周波数変換係数情報の符号量をより小さくすることを支援することができる。
また、回路160は、周波数変換ブロックに特定基本ブロックが存在する場合のみ、位置情報及びブロック情報を符号化してもよい。これにより、符号化装置100は、例えば周波数変換ブロックに非ゼロ係数が含まれない場合に、周波数変換係数情報の符号量をより小さくすることを支援することができる。
また、回路160は、第1符号化動作例と同様に、画像情報を符号化して、画像情報が符号化されたビット列を出力してもよい。例えば、図28のように、回路160は、画像情報を二値化する(S401)。そして、回路160は、画像情報が二値化された二値化データ列に対して算術符号化を適用するか否かを切り替える(S402)。
そして、二値化データ列に対して算術符号化が適用される場合(S402でYes)、回路160は、二値化データ列に対して算術符号化を適用して、算術符号化が適用された二値化データ列を含むビット列を出力する(S403)。一方、二値化データ列に対して算術符号化が適用されない場合(S402でNo)、回路160は、二値化データ列に対して算術符号化を適用せずに、算術符号化が適用されなかった二値化データ列を含むビット列を出力する(S404)。
また、図29のように、回路160は、二値化データ列に対して算術符号化が適用される場合と、二値化データ列に対して算術符号化が適用されない場合とで共通の二値化形式に従って、画像情報のうち他の情報を二値化する(S411)。この他の情報は、例えば、予測パラメータ情報の一部または全部を含む。
そして、回路160は、二値化データ列に対して算術符号化が適用される場合と、二値化データ列に対して算術符号化が適用されない場合とで異なる二値化形式に従って、画像情報のうち周波数変換係数情報を二値化する(S412)。
また、二値化データ列に対して算術符号化が適用されない場合、回路160は、位置情報及びブロック情報を含む周波数変換係数情報を二値化することにより、位置情報及びブロック情報を符号化する。ここで、符号化されるブロック情報は、所定のスキャン順で特定基本ブロック以降のブロック情報である。これにより、符号化装置100は、算術符号化が適用されない場合に、周波数変換係数情報の符号量を小さくすることを支援することができる。
[符号化装置の第3符号化動作例]
図32は、実施の形態1に係る符号化装置100の第3符号化動作例を示すフローチャートである。例えば、図27に示された符号化装置100の回路160は、図32に示された動作を行うことにより、画像情報を符号化する。
具体的には、回路160は、カレント基本ブロックに含まれる非ゼロ係数の個数を示すデータ値を複数のデータ値と複数の二値化値とが対応付けられた変換テーブルに従って二値化して、データ値を含む画像情報を符号化する(S601)。ここで、カレント基本ブロックは、複数の周波数変換係数を有する周波数変換ブロックを構成する1以上の基本ブロックの1つである。
これにより、符号化装置100は、基本ブロックを構成する複数の周波数変換係数の効率的な表現に用いられる有意な情報を適切に符号化することができる。
図33は、実施の形態1に係る符号化装置100の第3符号化動作例における二値化処理を示すフローチャートである。つまり、図33は、図32における二値化処理の具体的な例を示す。
回路160は、非ゼロ係数の個数として0を示すデータ値の対応付けを含む第1テーブルと、非ゼロ係数の個数として0を示すデータ値の対応付けを含まない第2テーブルとを含む複数のテーブルの中から変換テーブルを選択する(S611)。そして、回路160は、選択された変換テーブルに従って、データ値を二値化する(S612)。
これにより、符号化装置100は、情報量が削減されたテーブルを二値化のための変換テーブルとして用いることができる。したがって、符号化装置100は、周波数変換係数情報の符号量を小さくすることを支援することができる。
回路160は、周波数変換ブロックを構成する1以上の基本ブロックのうち、所定のスキャン順で特定基本ブロック以降の各基本ブロックについてのみ、基本ブロックに含まれる非ゼロ係数の個数を示すデータ値を二値化してもよい。つまり、回路160は、所定のスキャン順で特定基本ブロック以降の各基本ブロックの非ゼロ係数の個数を示すデータ値をカレント基本ブロックの非ゼロ係数の個数を示すデータ値として二値化してもよい。
これにより、符号化装置100は、周波数変換係数情報の符号量をより小さくすることを支援することができる。なお、特定基本ブロックは、周波数変換ブロックを構成する1以上の基本ブロックに対して周波数の高い順に規定される所定のスキャン順で最初に非ゼロ係数を周波数変換係数として有する基本ブロックである。
また、回路160は、周波数変換ブロックを構成する1以上の基本ブロックに特定基本ブロックが存在する場合のみ、カレント基本ブロックの非ゼロ係数の個数を示すデータ値を二値化してもよい。そして、回路160は、周波数変換ブロックとカレント基本ブロックとが同じである場合、非ゼロ係数の個数として0を示すデータ値の対応付けを含まない第2テーブルを変換テーブルとして選択してもよい。
これにより、符号化装置100は、例えば周波数変換ブロックのサイズと各基本ブロックのサイズとが同じである場合に、0個の非ゼロ係数の対応付けを含まない第2テーブルを用いて、周波数変換係数情報の符号量を小さくすることを支援することができる。
また、回路160は、カレント基本ブロックが特定基本ブロックである場合、非ゼロ係数の個数として0を示すデータ値の対応付けを含まない第2テーブルを変換テーブルとして選択してもよい。
これにより、符号化装置100は、例えばカレント基本ブロックが特定基本ブロックである場合に、0個の非ゼロ係数の対応付けを含まない第2テーブルを用いて、周波数変換係数情報の符号量を小さくすることを支援することができる。
また、回路160は、第1符号化動作例と同様に、画像情報を符号化して、画像情報が符号化されたビット列を出力してもよい。例えば、図28のように、回路160は、画像情報を二値化する(S401)。そして、回路160は、画像情報が二値化された二値化データ列に対して算術符号化を適用するか否かを切り替える(S402)。
そして、二値化データ列に対して算術符号化が適用される場合(S402でYes)、回路160は、二値化データ列に対して算術符号化を適用して、算術符号化が適用された二値化データ列を含むビット列を出力する(S403)。一方、二値化データ列に対して算術符号化が適用されない場合(S402でNo)、回路160は、二値化データ列に対して算術符号化を適用せずに、算術符号化が適用されなかった二値化データ列を含むビット列を出力する(S404)。
また、図29のように、回路160は、二値化データ列に対して算術符号化が適用される場合と、二値化データ列に対して算術符号化が適用されない場合とで共通の二値化形式に従って、画像情報のうち他の情報を二値化する(S411)。この他の情報は、例えば、予測パラメータ情報の一部または全部を含む。
そして、回路160は、二値化データ列に対して算術符号化が適用される場合と、二値化データ列に対して算術符号化が適用されない場合とで異なる二値化形式に従って、画像情報のうち周波数変換係数情報を二値化する(S412)。
また、二値化データ列に対して算術符号化が適用されない場合、回路160は、第1テーブルと第2テーブルとを含む複数のテーブルの中から選択された変換テーブルに従って、周波数変換係数情報に含まれるデータ値を二値化する。ここで、第1テーブルは、非ゼロ係数の個数として0を示すデータ値の対応付けを含み、第2テーブルは、非ゼロ係数の個数として0を示すデータ値の対応付けを含まない。
これにより、符号化装置100は、算術符号化が適用されない場合に、0個の非ゼロ係数の対応付けを含まない第2テーブルを含む複数のテーブルの中から選択される変換テーブルを用いて、周波数変換係数情報の符号量を小さくすることを支援することができる。
[符号化装置の第4符号化動作例]
第4符号化動作例において、図32に示された第3符号化動作例と同様に、非ゼロ係数の個数を示すデータ値が二値化される。具体的には、回路160は、カレント基本ブロックに含まれる非ゼロ係数の個数を示すデータ値を複数のデータ値と複数の二値化値とが対応付けられた変換テーブルに従って二値化して、データ値を含む画像情報を符号化する(S601)。
図34は、実施の形態1に係る符号化装置100の第4符号化動作例における二値化処理を示すフローチャートである。つまり、図34は、図32における二値化処理の具体的な例を示す。
回路160は、カレント周波数変換ブロックにおけるカレント基本ブロックの位置に従って、複数のテーブルの中から変換テーブルを選択する(S661)。カレント周波数変換ブロックは、カレント基本ブロックを含む周波数変換ブロックである。複数のテーブルは、複数のデータ値に対応付けられた複数の二値化値の最長ビット長と最短ビット長との差が互いに異なる2以上のテーブルを含む。そして、回路160は、選択された変換テーブルに従って、データ値を二値化する(S662)。
これにより、符号化装置100は、非ゼロ係数の個数を示すデータ値を二値化するための変換テーブルをカレント基本ブロックの位置に従って選択することができる。非ゼロ係数の個数の特性は、カレント基本ブロックの位置により異なる。したがって、符号化装置100は、カレント基本ブロックの位置を用いて、非ゼロ係数の個数の特性を変換テーブルの選択に反映させることができる。
よって、符号化装置100は、変換テーブルを適切に選択することができ、周波数変換係数情報の符号量を小さくすることを支援することができる。
回路160は、カレント基本ブロックの位置に従って、先行基本ブロックがカレント基本ブロックの位置における周波数のレベルと同じレベルに存在する場合、先行基本ブロックに含まれる非ゼロ係数の個数に従って、変換テーブルを選択してもよい。
ここで、先行基本ブロックは、カレント周波数変換ブロックを構成する1以上の基本ブロックに対して周波数の高い順に規定される所定のスキャン順でカレント基本ブロックよりも前の基本ブロックである。また、カレント基本ブロックの位置における周波数のレベルは、カレント基本ブロックの位置に対応する周波数のレベルである。
これにより、符号化装置100は、カレント基本ブロックに非ゼロ係数の個数が類似すると推定される先行基本ブロックの非ゼロ係数の個数に従って、変換テーブルを選択することができる。
また、回路160は、先行基本ブロックがカレント基本ブロックの位置における周波数のレベルと同じレベルに存在し、かつ、先行基本ブロックに含まれる非ゼロ係数の個数が第1個数である場合、変換テーブルとして第1テーブルを選択してもよい。そして、回路160は、先行基本ブロックがカレント基本ブロックの位置における周波数のレベルと同じレベルに存在し、かつ、先行基本ブロックに含まれる非ゼロ係数の個数が第2個数である場合、変換テーブルとして第2テーブルを選択してもよい。
ここで、第2個数は、第1個数よりも多い。また、第2テーブルにおける複数の二値化値の最長ビット長と最短ビット長との差は、第1テーブルにおける複数の二値化値の最長ビット長と最短ビット長との差よりも小さい。つまり、回路160は、先行基本ブロックに含まれる非ゼロ係数の個数が多い場合、複数の二値化値の最長ビット長と最短ビット長との差が小さいテーブルを変換テーブルとして選択してもよい。
これにより、符号化装置100は、先行基本ブロックの非ゼロ係数の個数に従ってカレント基本ブロックの非ゼロ係数の個数が多いと推定される場合、ビット長の差が小さいテーブルを変換テーブルとして選択し、符号量の増加の抑制を支援することができる。
また、例えば、先行基本ブロックがカレント基本ブロックの位置における周波数のレベルと同じレベルに存在せず、特定基本ブロックがカレント基本ブロックの位置における周波数のレベルよりも高いレベルに存在する場合がある。ここで、特定基本ブロックは、所定のスキャン順で最初に非ゼロ係数を含む基本ブロックである。この場合、回路160は、複数のテーブルの中から最長ビット長と最短ビット長との差が所定の差よりも小さいテーブルを変換テーブルとして選択してもよい。
これにより、符号化装置100は、カレント基本ブロック及び特定基本ブロックの関係に従って非ゼロ係数の個数が多いと推定される場合、ビット長の差が小さいテーブルを変換テーブルとして選択し、符号量の増加の抑制を支援することができる。所定の差は、固定の値に限られず、例えば複数のテーブルのうちビット長の差が2番目に小さいテーブルにおける最長ビット長と最短ビット長との差のように、相対的に定められてもよい。
具体的には、上記の場合において、回路160は、複数のテーブルの中から最長ビット長と最短ビット長との差が最も小さいテーブルを変換テーブルとして選択してもよい。これにより、符号化装置100は、カレント基本ブロック及び特定基本ブロックの関係に従って非ゼロ係数の個数が多いと推定される場合、ビット長の差が小さいテーブルを変換テーブルとして選択し、符号量の増加をより抑制することを支援することができる。
また、例えば、先行基本ブロックがカレント基本ブロックの位置における周波数のレベルと同じレベルに存在せず、特定基本ブロックがカレント基本ブロックの位置における周波数のレベルよりも高いレベルに存在しない場合がある。この場合、回路160は、カレント周波数変換ブロックの周辺の周波数変換ブロックである周辺周波数変換ブロックから非ゼロ係数の個数として推定される個数に従って、変換テーブルを選択してもよい。
これにより、符号化装置100は、カレント基本ブロックに非ゼロ係数の個数が類似すると推定される周辺周波数変換ブロックを用いて、変換テーブルを選択することができる。
また、上記の場合、回路160は、周辺周波数変換ブロックから推定される個数が第1個数であれば、第1テーブルを選択し、周辺周波数変換ブロックから推定される個数が第2個数であれば、第2テーブルを選択してもよい。ここで、第2個数は、第1個数よりも多い。また、第2テーブルにおける複数の二値化値の最長ビット長と最短ビット長との差は、第1テーブルにおける複数の二値化値の最長ビット長と最短ビット長との差よりも小さい。
つまり、回路160は、周辺周波数変換ブロックから推定される個数が多い場合、複数の二値化値の最長ビット長と最短ビット長との差が小さいテーブルを変換テーブルとして選択してもよい。これにより、符号化装置100は、周辺周波数変換ブロックに従ってカレント基本ブロックの非ゼロ係数の個数が多いと推定される場合、ビット長の差が小さいテーブルを変換テーブルとして選択し、符号量の増加の抑制を支援することができる。
また、周辺周波数変換ブロックは、カレント周波数変換ブロックの左又は上に隣接する周波数変換ブロックであってもよい。これにより、符号化装置100は、カレント周波数変換ブロックに近い周波数変換ブロックに含まれる非ゼロ係数の個数に従って、高精度に非ゼロ係数の個数を予測することができる。
あるいは、周辺周波数変換ブロックは、カレント周波数変換ブロックの直前に符号化された周波数変換ブロックであってもよい。これにより、非ゼロ係数の個数のシンプルな予測、及び、非ゼロ係数の個数に関する情報を記憶するためのメモリ容量の削減が可能である。
あるいは、周辺周波数変換ブロックは、カレント周波数変換ブロックから所定の範囲内に位置する周波数変換ブロックであって、面間予測か面内予測かの符号化モードがカレント周波数変換ブロックと同じ周波数変換ブロックであってもよい。これにより、符号化装置100は、非ゼロ係数の発生傾向がカレント周波数変換ブロックと似ていると推定される周波数変換ブロックに従って、非ゼロ係数の個数を高精度に予測することができる。
また、カレント基本ブロックに含まれる非ゼロ係数の個数は、周辺周波数変換ブロックに含まれる1以上の基本ブロックのうちの1つの基本ブロックに含まれる非ゼロ係数の個数から推定されてもよい。この1つの基本ブロックは、周辺周波数変換ブロックに対する相対的な位置が、カレント周波数変換ブロックに対するカレント基本ブロックの相対的な位置に等しい基本ブロックである。
これにより、符号化装置100は、周辺周波数変換ブロックの1以上の基本ブロックのうち、非ゼロ係数の個数がカレント基本ブロックに類似すると推定される基本ブロックに従って、変換テーブルを選択することができる。
あるいは、周辺周波数変換ブロックから推定される個数は、周辺周波数変換ブロックの全体に含まれる非ゼロ係数の個数から推定されてもよい。これにより、周波数変換ブロックのサイズによらず情報が統合されるため、非ゼロ係数の個数のシンプルな予測、及び、非ゼロ係数の個数に関する情報を記憶するためのメモリ容量の削減が可能である。
また、例えば、上述したように、先行基本ブロックがカレント基本ブロックの位置における周波数のレベルと同じレベルに存在せず、特定基本ブロックがカレント基本ブロックの位置における周波数のレベルよりも高いレベルに存在しない場合がある。この場合、回路160は、カレント基本ブロックの符号化モードが面間予測か面内予測かに従って、変換テーブルを選択してもよい。
これにより、符号化装置100は、面間予測か面内予測かの符号化モードに従って、変換テーブルを選択することができる。非ゼロ係数の個数の特性は、符号化モードにより異なると推定される。したがって、符号化装置100は、符号化モードを用いて、非ゼロ係数の個数の特性を変換テーブルの選択に反映させることができる。よって、符号化装置100は、変換テーブルを適切に選択することができ、周波数変換係数情報の符号量を小さくすることを支援することができる。
また、上記の場合、回路160は、符号化モードが面間予測であれば、第1テーブルを選択し、符号化モードが面内予測であれば、第2テーブルを選択してもよい。ここで、第2テーブルにおける複数の二値化値の最長ビット長と最短ビット長との差は、第1テーブルにおける複数の二値化値の最長ビット長と最短ビット長との差よりも小さい。
つまり、回路160は、符号化モードが面内予測である場合、複数の二値化値の最長ビット長と最短ビット長との差が小さいテーブルを変換テーブルとして選択してもよい。これにより、符号化装置100は、符号化モードが面内予測であるため、予測精度が低く、非ゼロ係数の個数が多いと推定される場合に、ビット長の差が小さいテーブルを変換テーブルとして選択し、符号量の増加の抑制を支援することができる。
また、例えば、上述したように、先行基本ブロックがカレント基本ブロックの位置における周波数のレベルと同じレベルに存在せず、特定基本ブロックがカレント基本ブロックの位置における周波数のレベルよりも高いレベルに存在しない場合がある。この場合、回路160は、カレント基本ブロックの符号化に用いられる量子化パラメータに従って、変換テーブルを選択してもよい。
これにより、符号化装置100は、カレント基本ブロックの符号化に用いられる量子化パラメータに従って、変換テーブルを選択することができる。非ゼロ係数の個数の特性は、量子化パラメータにより異なると推定される。したがって、符号化装置100は、量子化パラメータを用いて、非ゼロ係数の個数の特性を変換テーブルの選択に反映させることができる。よって、符号化装置100は、変換テーブルを適切に選択することができ、周波数変換係数情報の符号量を小さくすることを支援することができる。
また、上記の場合、回路160は、量子化パラメータが第1の値であれば、第1テーブルを選択し、量子化パラメータが第2の値であれば、第2テーブルを選択してもよい。ここで、第2の値は、第1の値よりも小さい。また、第2テーブルにおける複数の二値化値の最長ビット長と最短ビット長との差は、第1テーブルにおける複数の二値化値の最長ビット長と最短ビット長との差よりも小さい。
つまり、回路160は、量子化パラメータが小さい場合、複数の二値化値の最長ビット長と最短ビット長との差が小さいテーブルを変換テーブルとして選択してもよい。これにより、符号化装置100は、量子化パラメータが小さいことによって非ゼロ係数の個数が多いと推定される場合に、ビット長の差が小さいテーブルを変換テーブルとして選択し、符号量の増加の抑制を支援することができる。
また、回路160は、第1符号化動作例と同様に、画像情報を符号化して、画像情報が符号化されたビット列を出力してもよい。例えば、図28のように、回路160は、画像情報を二値化する(S401)。そして、回路160は、画像情報が二値化された二値化データ列に対して算術符号化を適用するか否かを切り替える(S402)。
そして、二値化データ列に対して算術符号化が適用される場合(S402でYes)、回路160は、二値化データ列に対して算術符号化を適用して、算術符号化が適用された二値化データ列を含むビット列を出力する(S403)。一方、二値化データ列に対して算術符号化が適用されない場合(S402でNo)、回路160は、二値化データ列に対して算術符号化を適用せずに、算術符号化が適用されなかった二値化データ列を含むビット列を出力する(S404)。
また、図29のように、回路160は、二値化データ列に対して算術符号化が適用される場合と、二値化データ列に対して算術符号化が適用されない場合とで共通の二値化形式に従って、画像情報のうち他の情報を二値化する(S411)。この他の情報は、例えば、予測パラメータ情報の一部または全部を含む。
そして、回路160は、二値化データ列に対して算術符号化が適用される場合と、二値化データ列に対して算術符号化が適用されない場合とで異なる二値化形式に従って、画像情報のうち周波数変換係数情報を二値化する(S412)。
また、二値化データ列に対して算術符号化が適用されない場合、回路160は、複数のテーブルの中からカレント基本ブロックの位置に従って選択された変換テーブルに従って、周波数変換係数情報に含まれるデータ値を二値化する。これにより、符号化装置100は、算術符号化が適用されない場合に、複数のテーブルの中からカレント基本ブロックの位置に従って選択される変換テーブルを用いて、周波数変換係数情報の符号量を小さくすることを支援することができる。
なお、最長ビット長と最短ビット長との差は、カレント基本ブロックの非ゼロ係数の個数が多くなるほど、カレント基本ブロックの非ゼロ係数の個数を示すデータ値に対応付けられた二値化値のビット長が長くなる割合に対応する。したがって、最長ビット長と最短ビット長との差は、カレント基本ブロックの非ゼロ係数の個数が多くなるほど、カレント基本ブロックの非ゼロ係数の個数を示すデータ値に対応付けられた二値化値のビット長が長くなる割合に置き換えられてもよい。
例えば、この割合は、0以上である。この割合が0であるテーブルでは、カレント基本ブロックの非ゼロ係数の個数が多くなっても、カレント基本ブロックの非ゼロ係数の個数を示すデータ値に対応付けられた二値化値のビット長が増加しない。また、この割合は、カレント基本ブロックの非ゼロ係数の個数が多くなるほど、カレント基本ブロックの非ゼロ係数の個数を示すデータ値に対応付けられた二値化値のビット長が長くなる平均的な割合でもよい。
[復号装置の実装例]
図35は、実施の形態1に係る復号装置200の実装例を示すブロック図である。復号装置200は、回路260及びメモリ262を備える。例えば、図10及び図12に示された復号装置200の複数の構成要素は、図35に示された回路260及びメモリ262によって実装される。
回路260は、情報処理を行う回路であり、メモリ262にアクセス可能な回路である。例えば、回路260は、画像情報を復号する汎用又は専用の電子回路である。回路260は、CPUのようなプロセッサであってもよい。また、回路260は、複数の電子回路の集合体であってもよい。また、例えば、回路260は、図10及び図12に示された復号装置200の複数の構成要素のうち、情報を記憶するための構成要素を除く、複数の構成要素の役割を果たしてもよい。
メモリ262は、回路260が画像情報を復号するための情報が記憶される汎用又は専用のメモリである。メモリ262は、電子回路であってもよく、回路260に接続されていてもよい。また、メモリ262は、複数の電子回路の集合体であってもよい。また、メモリ262は、磁気ディスク又は光ディスク等であってもよいし、ストレージ又は記録媒体等と表現されてもよい。また、メモリ262は、不揮発性メモリでもよいし、揮発性メモリでもよい。
例えば、メモリ262には、符号化された画像情報に対応するビット列が記憶されてもよいし、復号されたビット列に対応する画像情報が記憶されてもよい。また、メモリ262には、回路260が画像情報を復号するためのプログラムが記憶されていてもよい。
また、例えば、回路260は、図10及び図12に示された復号装置200の複数の構成要素のうち、情報を記憶するための構成要素の役割を果たしてもよい。具体的には、メモリ262は、図10に示されたブロックメモリ210及びフレームメモリ214の役割を果たしてもよいし、図12に示された中間バッファ240の役割を果たしてもよい。
なお、復号装置200において、図10及び図12等に示された複数の構成要素の全てが実装されなくてもよいし、上述された複数の処理の全てが行われなくてもよい。図10及び図12等に示された複数の構成要素の一部は、他の装置に含まれていてもよいし、上述された複数の処理の一部は、他の装置によって実行されてもよい。
そして、復号装置200において、図10及び図12等に示された複数の構成要素のうちの一部が実装され、上述された複数の処理の一部が行われることによって、周波数変換係数情報が適切に復号され得る。
[復号装置の第1復号動作例]
図36は、実施の形態1に係る復号装置200の第1復号動作例を示すフローチャートである。例えば、図35に示された復号装置200の回路260は、図36に示された動作を行うことにより、画像情報が符号化されたビット列を取得し、画像情報を復号する。
具体的には、まず、回路260は、画像情報が二値化された二値化データ列を含むビット列を取得する(S701)。例えば、画像情報は、画像の周波数成分に関する周波数変換係数情報、及び、画像の予測方法に関する予測パラメータ情報等を含む。そして、回路260は、ビット列に含まれる二値化データ列に対して算術復号を適用するか否かを切り替える(S702)。
二値化データ列に対して算術復号が適用される場合(S702でYes)、回路260は、二値化データ列に対して算術復号を適用して、算術復号が適用された二値化データ列を逆二値化することにより、画像情報を復号する(S703)。
二値化データ列に対して算術復号が適用されない場合(S702でNo)、回路260は、二値化データ列に対して算術復号を適用せずに、算術復号が適用されなかった二値化データ列を逆二値化することにより、画像情報を復号する(S704)。
これにより、復号装置200は、算術復号をスキップすることができる。したがって、復号装置200は、算術復号によって発生する処理遅延の削減を支援することができる。
図37は、実施の形態1に係る復号装置200の第1復号動作例における逆二値化処理を示すフローチャートである。つまり、図37は、図36における逆二値化処理(S703及びS704)の具体的な例を示す。
回路260は、二値化データ列に対して算術復号が適用される場合と、二値化データ列に対して算術復号が適用されない場合とで共通の逆二値化形式に従って、後述の第1部分とは異なる第2部分を逆二値化する(S711)。第2部分は、二値化データ列のうち、周波数変換係数情報とは異なる他の情報が二値化された部分である。この他の情報は、例えば、予測パラメータ情報の一部または全部を含む。
また、回路260は、二値化データ列に対して算術復号が適用される場合と、二値化データ列に対して算術復号が適用されない場合とで異なる逆二値化形式に従って、第1部分を逆二値化する(S712)。第1部分は、二値化データ列のうち周波数変換係数情報が二値化された部分である。より具体的には、第1部分は、二値化データ列のうち周波数変換係数情報を含む情報が二値化された部分であってもよい。
これにより、復号装置200は、全体の符号量に大きな影響を与える周波数変換係数情報に対応する第1部分を算術復号の適用有無に従って適切に逆二値化することができる。したがって、復号装置200は、周波数変換係数情報を適切に復号することができ、全体の符号量の増加を抑制することができる。
なお、他の情報が二値化された第2部分の逆二値化(S711)と、周波数変換係数情報が二値化された第1部分の逆二値化(S712)との処理順序は、逆であってもよい。
また、例えば、予測パラメータ情報は、予測パラメータ情報に含まれる符号化モードに関する情報、画面内予測の予測方向に関する情報、画面間予測の参照ピクチャに関する情報、及び、画面間予測の動きベクトルに関する情報を含む。
回路260は、予測パラメータ情報に含まれるこれらの情報が二値化された第2部分に対して、二値化データ列に対して算術復号が適用される場合と、二値化データ列に対して算術復号が適用されない場合とで共通の逆二値化形式に従って逆二値化を施してもよい。あるいは、回路260は、これらのうち少なくとも1つに対して、二値化データ列に対して算術復号が適用される場合と、二値化データ列に対して算術復号が適用されない場合とで共通の逆二値化形式に従って逆二値化を施してもよい。
また、回路260は、二値化データ列のうち周波数変換係数情報が二値化された第1部分のみを算術復号の適用有無によって異なる逆二値化形式に従って逆二値化してもよい。そして、回路260は、二値化データ列のうち周波数変換係数情報が二値化された第1部分を除く他の全ての部分を算術復号の適用有無によらず共通の逆二値化形式に従って逆二値化してもよい。
これにより、復号装置200は、周波数変換係数情報に対応する第1部分を除く他の全ての部分を共通の逆二値化形式に従って逆二値化することができる。したがって、処理が簡素化される。
図38は、実施の形態1に係る復号装置200の第1復号動作例における周波数変換係数情報に対応する第1部分の逆二値化処理を示すフローチャートである。つまり、図38は、図37における周波数変換係数情報に対応する第1部分の逆二値化処理(S712)の具体的な例を示す。
回路260は、二値化データ列に対して算術復号が適用される場合(S721でYes)、周波数変換係数情報が二値化された第1部分を第1の逆二値化形式で逆二値化する(S722)。そして、回路260は、二値化データ列に対して算術復号が適用されない場合(S721でNo)、周波数変換係数情報が二値化された第1部分を第2の逆二値化形式で逆二値化する(S723)。
そして、回路260は、二値化データ列に対して算術復号が適用されない場合に、二値化データ列に対して算術復号が適用される場合よりも、発生ビット数が少ない形式で周波数変換係数情報が二値化された第1部分を逆二値化する。これにより、復号装置200は、算術復号が適用されない場合において、周波数変換係数情報の符号量を小さくすることを支援することができる。
[復号装置の第2復号動作例]
図39は、実施の形態1に係る復号装置200の第2復号動作例を示すフローチャートである。例えば、図35に示された復号装置200の回路260は、図39に示された動作を行うことにより、画像情報を復号する。
具体的には、回路260は、特定基本ブロックの位置を示す位置情報を復号する(S801)。特定基本ブロックは、複数の周波数変換係数を有する周波数変換ブロックを構成する1以上の基本ブロックに対して周波数の高い順に規定される所定のスキャン順で最初に非ゼロ係数を周波数変換係数として有する基本ブロックである。
そして、回路260は、周波数変換ブロックを構成する1以上の基本ブロックのうち、所定のスキャン順で特定基本ブロック以降の各基本ブロックについてのみ、基本ブロックを構成する複数の周波数変換係数を示すブロック情報を復号する(S802)。
これにより、復号装置200は、位置情報及びブロック情報を周波数変換係数情報として復号することができる。そして、復号装置200は、所定のスキャン順で特定基本ブロック以降の各基本ブロックについて、ブロック情報を復号するため、周波数変換係数情報の符号量を小さくすることを支援することができる。
なお、回路260は、周波数変換ブロックを構成する1以上の基本ブロックの個数が2以上である場合のみ、位置情報を復号してもよい。これにより、復号装置200は、例えば周波数変換ブロックのサイズと各基本ブロックのサイズとが同じである場合に、周波数変換係数情報の符号量をより小さくすることを支援することができる。
また、回路260は、周波数変換ブロックに特定基本ブロックが存在する場合のみ、位置情報及びブロック情報を復号してもよい。これにより、復号装置200は、例えば周波数変換ブロックに非ゼロ係数が含まれない場合に、周波数変換係数情報の符号量をより小さくすることを支援することができる。
また、回路260は、第1復号動作例と同様に、画像情報が符号化されたビット列を取得して、画像情報を復号してもよい。例えば、図36のように、回路260は、画像情報が二値化された二値化データ列を含むビット列を取得する(S701)。そして、回路260は、ビット列に含まれる二値化データ列に対して算術復号を適用するか否かを切り替える(S702)。
そして、二値化データ列に対して算術復号が適用される場合(S702でYes)、回路260は、二値化データ列に対して算術復号を適用して、算術復号が適用された二値化データ列を逆二値化することにより、画像情報を復号する(S703)。一方、二値化データ列に対して算術復号が適用されない場合(S702でNo)、回路260は、二値化データ列に対して算術復号を適用せずに、算術復号が適用されなかった二値化データ列を逆二値化することにより、画像情報を復号する(S704)。
また、図37のように、回路260は、二値化データ列に対して算術復号が適用される場合と、二値化データ列に対して算術復号が適用されない場合とで共通の逆二値化形式に従って、第2部分を逆二値化する(S711)。第2部分は、二値化データ列のうち他の情報が二値化された部分である。この他の情報は、例えば、予測パラメータ情報の一部または全部を含む。
そして、回路260は、二値化データ列に対して算術復号が適用される場合と、二値化データ列に対して算術復号が適用されない場合とで異なる逆二値化形式に従って、第1部分を逆二値化する(S712)。第1部分は、二値化データ列のうち周波数変換係数情報が二値化された部分である。
また、二値化データ列に対して算術復号が適用されない場合、回路260は、位置情報及びブロック情報を含む周波数変換係数情報が二値化された第1部分を逆二値化することにより、位置情報及びブロック情報を復号する。ここで、復号されるブロック情報は、所定のスキャン順で特定基本ブロック以降のブロック情報である。これにより、復号装置200は、算術復号が適用されない場合に、周波数変換係数情報の符号量を小さくすることを支援することができる。
[復号装置の第3復号動作例]
図40は、実施の形態1に係る復号装置200の第3復号動作例を示すフローチャートである。例えば、図35に示された復号装置200の回路260は、図40に示された動作を行うことにより、画像情報を復号する。
具体的には、回路260は、カレント基本ブロックに含まれる非ゼロ係数の個数を示すデータ値が二値化された二値化値を複数のデータ値と複数の二値化値とが対応付けられた変換テーブルに従って逆二値化する。そして、回路260は、データ値を含む画像情報を復号する(S901)。ここで、カレント基本ブロックは、複数の周波数変換係数を有する周波数変換ブロックを構成する1以上の基本ブロックの1つである。
これにより、復号装置200は、基本ブロックを構成する複数の周波数変換係数の効率的な表現に用いられる有意な情報を適切に復号することができる。
図41は、実施の形態1に係る復号装置200の第3復号動作例における逆二値化処理を示すフローチャートである。つまり、図41は、図40における逆二値化処理の具体的な例を示す。
回路260は、非ゼロ係数の個数として0を示すデータ値の対応付けを含む第1テーブルと、非ゼロ係数の個数として0を示すデータ値の対応付けを含まない第2テーブルとを含む複数のテーブルの中から変換テーブルを選択する(S911)。そして、回路260は、選択された変換テーブルに従って、二値化値を逆二値化する(S912)。
これにより、復号装置200は、情報量が削減されたテーブルを逆二値化のための変換テーブルとして用いることができる。したがって、復号装置200は、周波数変換係数情報の符号量を小さくすることを支援することができる。
回路260は、周波数変換ブロックを構成する1以上の基本ブロックのうち、所定のスキャン順で特定基本ブロック以降の各基本ブロックについてのみ、基本ブロックに含まれる非ゼロ係数の個数を示すデータ値が二値化された二値化値を逆二値化してもよい。つまり、回路260は、所定のスキャン順で特定基本ブロック以降の各基本ブロックの非ゼロ係数の個数を示すデータ値が二値化された二値化値をカレント基本ブロックの非ゼロ係数の個数を示すデータ値が二値化された二値化値として逆二値化してもよい。
これにより、復号装置200は、周波数変換係数情報の符号量をより小さくすることを支援することができる。なお、特定基本ブロックは、周波数変換ブロックを構成する1以上の基本ブロックに対して周波数の高い順に規定される所定のスキャン順で最初に非ゼロ係数を周波数変換係数として有する基本ブロックである。
また、回路260は、周波数変換ブロックを構成する1以上の基本ブロックに特定基本ブロックが存在する場合のみ、カレント基本ブロックの非ゼロ係数の個数を示すデータ値が二値化された二値化値を逆二値化してもよい。そして、回路260は、周波数変換ブロックとカレント基本ブロックとが同じである場合、非ゼロ係数の個数として0を示すデータ値の対応付けを含まない第2テーブルを変換テーブルとして選択してもよい。
これにより、復号装置200は、例えば周波数変換ブロックのサイズと各基本ブロックのサイズとが同じである場合に、0個の非ゼロ係数の対応付けを含まない第2テーブルを用いて、周波数変換係数情報の符号量を小さくすることを支援することができる。
また、回路260は、カレント基本ブロックが特定基本ブロックである場合、非ゼロ係数の個数として0を示すデータ値の対応付けを含まない第2テーブルを変換テーブルとして選択してもよい。
これにより、復号装置200は、例えばカレント基本ブロックが特定基本ブロックである場合に、0個の非ゼロ係数の対応付けを含まない第2テーブルを用いて、周波数変換係数情報の符号量を小さくすることを支援することができる。
また、回路260は、第1復号動作例と同様に、画像情報が符号化されたビット列を取得して、画像情報を復号してもよい。例えば、図36のように、回路260は、画像情報が二値化された二値化データ列を含むビット列を取得する(S701)。そして、回路260は、ビット列に含まれる二値化データ列に対して算術復号を適用するか否かを切り替える(S702)。
そして、二値化データ列に対して算術復号が適用される場合(S702でYes)、回路260は、二値化データ列に対して算術復号を適用して、算術復号が適用された二値化データ列を逆二値化することにより、画像情報を復号する(S703)。一方、二値化データ列に対して算術復号が適用されない場合(S702でNo)、回路260は、二値化データ列に対して算術復号を適用せずに、算術復号が適用されなかった二値化データ列を逆二値化することにより、画像情報を復号する(S704)。
また、図37のように、回路260は、二値化データ列に対して算術復号が適用される場合と、二値化データ列に対して算術復号が適用されない場合とで共通の逆二値化形式に従って、第2部分を逆二値化する(S711)。第2部分は、二値化データ列のうち他の情報が二値化された部分である。この他の情報は、例えば、予測パラメータ情報の一部または全部を含む。
そして、回路260は、二値化データ列に対して算術復号が適用される場合と、二値化データ列に対して算術復号が適用されない場合とで異なる逆二値化形式に従って、第1部分を逆二値化する(S712)。第1部分は、二値化データ列のうち周波数変換係数情報が二値化された部分である。
また、二値化データ列に対して算術復号が適用されない場合、回路260は、第1テーブルと第2テーブルとを含む複数のテーブルの中から選択された変換テーブルに従って、周波数変換係数情報が二値化された第1部分に含まれる二値化値を逆二値化する。ここで、第1テーブルは、非ゼロ係数の個数として0を示すデータ値の対応付けを含み、第2テーブルは、非ゼロ係数の個数として0を示すデータ値の対応付けを含まない。
これにより、復号装置200は、算術復号が適用されない場合に、0個の非ゼロ係数の対応付けを含まない第2テーブルを含む複数のテーブルの中から選択される変換テーブルを用いて、周波数変換係数情報の符号量を小さくすることを支援することができる。
[復号装置の第4復号動作例]
第4復号動作例において、図40に示された第3復号動作例と同様に、非ゼロ係数の個数を示すデータ値が逆二値化される。具体的には、回路260は、カレント基本ブロックに含まれる非ゼロ係数の個数を示すデータ値が二値化された二値化値を複数のデータ値と複数の二値化値とが対応付けられた変換テーブルに従って逆二値化して、データ値を含む画像情報を復号する(S901)。
図42は、実施の形態1に係る復号装置200の第4復号動作例における逆二値化処理を示すフローチャートである。つまり、図42は、図40における逆二値化処理の具体的な例を示す。
回路260は、カレント周波数変換ブロックにおけるカレント基本ブロックの位置に従って、複数のテーブルの中から変換テーブルを選択する(S961)。カレント周波数変換ブロックは、カレント基本ブロックを含む周波数変換ブロックである。複数のテーブルは、複数のデータ値に対応付けられた複数の二値化値の最長ビット長と最短ビット長との差が互いに異なる2以上のテーブルを含む。そして、回路260は、選択された変換テーブルに従って、二値化値を逆二値化する(S962)。
これにより、復号装置200は、非ゼロ係数の個数を示すデータ値の二値化値を逆二値化するための変換テーブルをカレント基本ブロックの位置に従って選択することができる。非ゼロ係数の個数の特性は、カレント基本ブロックの位置により異なる。したがって、復号装置200は、カレント基本ブロックの位置を用いて、非ゼロ係数の個数の特性を変換テーブルの選択に反映させることができる。
よって、復号装置200は、変換テーブルを適切に選択することができ、周波数変換係数情報の符号量を小さくすることを支援することができる。
回路260は、カレント基本ブロックの位置に従って、先行基本ブロックがカレント基本ブロックの位置における周波数のレベルと同じレベルに存在する場合、先行基本ブロックに含まれる非ゼロ係数の個数に従って、変換テーブルを選択してもよい。
ここで、先行基本ブロックは、カレント周波数変換ブロックを構成する1以上の基本ブロックに対して周波数の高い順に規定される所定のスキャン順でカレント基本ブロックよりも前の基本ブロックである。また、カレント基本ブロックの位置における周波数のレベルは、カレント基本ブロックの位置に対応する周波数のレベルである。
これにより、復号装置200は、カレント基本ブロックに非ゼロ係数の個数が類似すると推定される先行基本ブロックの非ゼロ係数の個数に従って、変換テーブルを選択することができる。
また、回路260は、先行基本ブロックがカレント基本ブロックの位置における周波数のレベルと同じレベルに存在し、かつ、先行基本ブロックに含まれる非ゼロ係数の個数が第1個数である場合、変換テーブルとして第1テーブルを選択してもよい。そして、回路260は、先行基本ブロックがカレント基本ブロックの位置における周波数のレベルと同じレベルに存在し、かつ、先行基本ブロックに含まれる非ゼロ係数の個数が第2個数である場合、変換テーブルとして第2テーブルを選択してもよい。
ここで、第2個数は、第1個数よりも多い。また、第2テーブルにおける複数の二値化値の最長ビット長と最短ビット長との差は、第1テーブルにおける複数の二値化値の最長ビット長と最短ビット長との差よりも小さい。つまり、回路260は、先行基本ブロックに含まれる非ゼロ係数の個数が多い場合、複数の二値化値の最長ビット長と最短ビット長との差が小さいテーブルを変換テーブルとして選択してもよい。
これにより、復号装置200は、先行基本ブロックの非ゼロ係数の個数に従ってカレント基本ブロックの非ゼロ係数の個数が多いと推定される場合、ビット長の差が小さいテーブルを変換テーブルとして選択し、符号量の増加の抑制を支援することができる。
また、例えば、先行基本ブロックがカレント基本ブロックの位置における周波数のレベルと同じレベルに存在せず、特定基本ブロックがカレント基本ブロックの位置における周波数のレベルよりも高いレベルに存在する場合がある。ここで、特定基本ブロックは、所定のスキャン順で最初に非ゼロ係数を含む基本ブロックである。この場合、回路260は、複数のテーブルの中から最長ビット長と最短ビット長との差が所定の差よりも小さいテーブルを変換テーブルとして選択してもよい。
これにより、復号装置200は、カレント基本ブロック及び特定基本ブロックの関係に従って非ゼロ係数の個数が多いと推定される場合、ビット長の差が小さいテーブルを変換テーブルとして選択し、符号量の増加の抑制を支援することができる。所定の差は、固定の値に限られず、例えば複数のテーブルのうちビット長の差が2番目に小さいテーブルにおける最長ビット長と最短ビット長との差のように、相対的に定められてもよい。
具体的には、上記の場合において、回路260は、複数のテーブルの中から最長ビット長と最短ビット長との差が最も小さいテーブルを変換テーブルとして選択してもよい。これにより、復号装置200は、カレント基本ブロック及び特定基本ブロックの関係に従って非ゼロ係数の個数が多いと推定される場合、ビット長の差が小さいテーブルを変換テーブルとして選択し、符号量の増加をより抑制することを支援することができる。
また、例えば、先行基本ブロックがカレント基本ブロックの位置における周波数のレベルと同じレベルに存在せず、特定基本ブロックがカレント基本ブロックの位置における周波数のレベルよりも高いレベルに存在しない場合がある。この場合、回路260は、カレント周波数変換ブロックの周辺の周波数変換ブロックである周辺周波数変換ブロックから非ゼロ係数の個数として推定される個数に従って、変換テーブルを選択してもよい。
これにより、復号装置200は、カレント基本ブロックに非ゼロ係数の個数が類似すると推定される周辺周波数変換ブロックを用いて、変換テーブルを選択することができる。
また、上記の場合、回路260は、周辺周波数変換ブロックから推定される個数が第1個数であれば、第1テーブルを選択し、周辺周波数変換ブロックから推定される個数が第2個数であれば、第2テーブルを選択してもよい。ここで、第2個数は、第1個数よりも多い。また、第2テーブルにおける複数の二値化値の最長ビット長と最短ビット長との差は、第1テーブルにおける複数の二値化値の最長ビット長と最短ビット長との差よりも小さい。
つまり、回路260は、周辺周波数変換ブロックから推定される個数が多い場合、複数の二値化値の最長ビット長と最短ビット長との差が小さいテーブルを変換テーブルとして選択してもよい。これにより、復号装置200は、周辺周波数変換ブロックに従ってカレント基本ブロックの非ゼロ係数の個数が多いと推定される場合、ビット長の差が小さいテーブルを変換テーブルとして選択し、符号量の増加の抑制を支援することができる。
また、周辺周波数変換ブロックは、カレント周波数変換ブロックの左又は上に隣接する周波数変換ブロックであってもよい。これにより、復号装置200は、カレント周波数変換ブロックに近い周波数変換ブロックに含まれる非ゼロ係数の個数に従って、高精度に非ゼロ係数の個数を予測することができる。
あるいは、周辺周波数変換ブロックは、カレント周波数変換ブロックの直前に復号された周波数変換ブロックであってもよい。これにより、非ゼロ係数の個数のシンプルな予測、及び、非ゼロ係数の個数に関する情報を記憶するためのメモリ容量の削減が可能である。
あるいは、周辺周波数変換ブロックは、カレント周波数変換ブロックから所定の範囲内に位置する周波数変換ブロックであって、面間予測か面内予測かの符号化モードがカレント周波数変換ブロックと同じ周波数変換ブロックであってもよい。これにより、復号装置200は、非ゼロ係数の発生傾向がカレント周波数変換ブロックと似ていると推定される周波数変換ブロックに従って、非ゼロ係数の個数を高精度に予測することができる。
また、カレント基本ブロックに含まれる非ゼロ係数の個数は、周辺周波数変換ブロックに含まれる1以上の基本ブロックのうちの1つの基本ブロックに含まれる非ゼロ係数の個数から推定されてもよい。この1つの基本ブロックは、周辺周波数変換ブロックに対する相対的な位置が、カレント周波数変換ブロックに対するカレント基本ブロックの相対的な位置に等しい基本ブロックである。
これにより、復号装置200は、周辺周波数変換ブロックの1以上の基本ブロックのうち、非ゼロ係数の個数がカレント基本ブロックに類似すると推定される基本ブロックに従って、変換テーブルを選択することができる。
あるいは、周辺周波数変換ブロックから推定される個数は、周辺周波数変換ブロックの全体に含まれる非ゼロ係数の個数から推定されてもよい。これにより、周波数変換ブロックのサイズによらず情報が統合されるため、非ゼロ係数の個数のシンプルな予測、及び、非ゼロ係数の個数に関する情報を記憶するためのメモリ容量の削減が可能である。
また、例えば、上述したように、先行基本ブロックがカレント基本ブロックの位置における周波数のレベルと同じレベルに存在せず、特定基本ブロックがカレント基本ブロックの位置における周波数のレベルよりも高いレベルに存在しない場合がある。この場合、回路260は、カレント基本ブロックの符号化モードが面間予測か面内予測かに従って、変換テーブルを選択してもよい。
これにより、復号装置200は、面間予測か面内予測かの符号化モードに従って、変換テーブルを選択することができる。非ゼロ係数の個数の特性は、符号化モードにより異なると推定される。したがって、復号装置200は、符号化モードを用いて、非ゼロ係数の個数の特性を変換テーブルの選択に反映させることができる。よって、復号装置200は、変換テーブルを適切に選択することができ、周波数変換係数情報の符号量を小さくすることを支援することができる。
また、上記の場合、回路260は、符号化モードが面間予測であれば、第1テーブルを選択し、符号化モードが面内予測であれば、第2テーブルを選択してもよい。ここで、第2テーブルにおける複数の二値化値の最長ビット長と最短ビット長との差は、第1テーブルにおける複数の二値化値の最長ビット長と最短ビット長との差よりも小さい。
つまり、回路260は、符号化モードが面内予測である場合、複数の二値化値の最長ビット長と最短ビット長との差が小さいテーブルを変換テーブルとして選択してもよい。これにより、復号装置200は、符号化モードが面内予測であるため、予測精度が低く、非ゼロ係数の個数が多いと推定される場合に、ビット長の差が小さいテーブルを変換テーブルとして選択し、符号量の増加の抑制を支援することができる。
また、例えば、上述したように、先行基本ブロックがカレント基本ブロックの位置における周波数のレベルと同じレベルに存在せず、特定基本ブロックがカレント基本ブロックの位置における周波数のレベルよりも高いレベルに存在しない場合がある。この場合、回路260は、カレント基本ブロックの復号に用いられる量子化パラメータに従って、変換テーブルを選択してもよい。
これにより、復号装置200は、カレント基本ブロックの復号に用いられる量子化パラメータに従って、変換テーブルを選択することができる。非ゼロ係数の個数の特性は、量子化パラメータにより異なると推定される。したがって、復号装置200は、量子化パラメータを用いて、非ゼロ係数の個数の特性を変換テーブルの選択に反映させることができる。よって、復号装置200は、変換テーブルを適切に選択することができ、周波数変換係数情報の符号量を小さくすることを支援することができる。
また、上記の場合、回路260は、量子化パラメータが第1の値であれば、第1テーブルを選択し、量子化パラメータが第2の値であれば、第2テーブルを選択してもよい。ここで、第2の値は、第1の値よりも小さい。また、第2テーブルにおける複数の二値化値の最長ビット長と最短ビット長との差は、第1テーブルにおける複数の二値化値の最長ビット長と最短ビット長との差よりも小さい。
つまり、回路260は、量子化パラメータが小さい場合、複数の二値化値の最長ビット長と最短ビット長との差が小さいテーブルを変換テーブルとして選択してもよい。これにより、復号装置200は、量子化パラメータが小さいことによって非ゼロ係数の個数が多いと推定される場合に、ビット長の差が小さいテーブルを変換テーブルとして選択し、符号量の増加の抑制を支援することができる。
また、回路260は、第1復号動作例と同様に、画像情報が符号化されたビット列を取得して、画像情報を復号してもよい。例えば、図36のように、回路260は、画像情報が二値化された二値化データ列を含むビット列を取得する(S701)。そして、回路260は、ビット列に含まれる二値化データ列に対して算術復号を適用するか否かを切り替える(S702)。
そして、二値化データ列に対して算術復号が適用される場合(S702でYes)、回路260は、二値化データ列に対して算術復号を適用して、算術復号が適用された二値化データ列を逆二値化することにより、画像情報を復号する(S703)。一方、二値化データ列に対して算術復号が適用されない場合(S702でNo)、回路260は、二値化データ列に対して算術復号を適用せずに、算術復号が適用されなかった二値化データ列を逆二値化することにより、画像情報を復号する(S704)。
また、図37のように、回路260は、二値化データ列に対して算術復号が適用される場合と、二値化データ列に対して算術復号が適用されない場合とで共通の逆二値化形式に従って、第2部分を逆二値化する(S711)。第2部分は、二値化データ列のうち他の情報が二値化された部分である。この他の情報は、例えば、予測パラメータ情報の一部または全部を含む。
そして、回路260は、二値化データ列に対して算術復号が適用される場合と、二値化データ列に対して算術復号が適用されない場合とで異なる逆二値化形式に従って、第1部分を逆二値化する(S712)。第1部分は、二値化データ列のうち周波数変換係数情報が二値化された部分である。
また、二値化データ列に対して算術復号が適用されない場合、回路260は、複数のテーブルの中からカレント基本ブロックの位置に従って選択された変換テーブルに従って、周波数変換係数情報が二値化された第1部分に含まれる二値化値を逆二値化する。これにより、復号装置200は、算術復号が適用されない場合に、複数のテーブルの中からカレント基本ブロックの位置に従って選択される変換テーブルを用いて、周波数変換係数情報の符号量を小さくすることを支援することができる。
なお、最長ビット長と最短ビット長との差は、カレント基本ブロックの非ゼロ係数の個数が多くなるほど、カレント基本ブロックの非ゼロ係数の個数を示すデータ値に対応付けられた二値化値のビット長が長くなる割合に対応する。したがって、最長ビット長と最短ビット長との差は、カレント基本ブロックの非ゼロ係数の個数が多くなるほど、カレント基本ブロックの非ゼロ係数の個数を示すデータ値に対応付けられた二値化値のビット長が長くなる割合に置き換えられてもよい。
例えば、この割合は、0以上である。この割合が0であるテーブルでは、カレント基本ブロックの非ゼロ係数の個数が多くなっても、カレント基本ブロックの非ゼロ係数の個数を示すデータ値に対応付けられた二値化値のビット長は増加しない。また、この割合は、カレント基本ブロックの非ゼロ係数の個数が多くなるほど、カレント基本ブロックの非ゼロ係数の個数を示すデータ値に対応付けられた二値化値のビット長が長くなる平均的な割合でもよい。
[補足]
本実施の形態における符号化装置100及び復号装置200は、それぞれ、画像符号化装置及び画像復号装置として利用され得る。あるいは、符号化装置100及び復号装置200は、それぞれ、エントロピー符号化装置及びエントロピー復号装置として利用され得る。すなわち、符号化装置100及び復号装置200は、それぞれ、エントロピー符号化部110及びエントロピー復号部202のみに対応していてもよい。
また、本実施の形態において、各構成要素は、専用のハードウェアで構成されるか、各構成要素に適したソフトウェアプログラムを実行することによって実現されてもよい。各構成要素は、CPU又はプロセッサなどのプログラム実行部が、ハードディスク又は半導体メモリなどの記録媒体に記録されたソフトウェアプログラムを読み出して実行することによって実現されてもよい。
具体的には、符号化装置100及び復号装置200のそれぞれは、処理回路(Processing Circuitry)と、当該処理回路に電気的に接続された、当該処理回路からアクセス可能な記憶装置(Storage)とを備えていてもよい。例えば、処理回路は回路160又は260に対応し、記憶装置はメモリ162又は262に対応する。
処理回路は、専用のハードウェア及びプログラム実行部の少なくとも一方を含み、記憶装置を用いて処理を実行する。また、記憶装置は、処理回路がプロラグム実行部を含む場合には、当該プログラム実行部により実行されるソフトウェアプログラムを記憶する。
ここで、本実施の形態の符号化装置100又は復号装置200などを実現するソフトウェアは、次のようなプログラムである。
すなわち、このプログラムは、コンピュータに、画像情報を符号化して、前記画像情報が符号化されたビット列を出力する符号化方法であって、前記画像情報を二値化し、前記画像情報が二値化された二値化データ列に対して算術符号化を適用するか否かを切り替え、前記二値化データ列に対して算術符号化が適用される場合、前記二値化データ列に対して算術符号化を適用して、算術符号化が適用された前記二値化データ列を含む前記ビット列を出力し、前記二値化データ列に対して算術符号化が適用されない場合、前記二値化データ列に対して算術符号化を適用せずに、算術符号化が適用されなかった前記二値化データ列を含む前記ビット列を出力し、前記画像情報の二値化において、前記二値化データ列に対して算術符号化が適用される場合と、前記二値化データ列に対して算術符号化が適用されない場合とで異なる二値化形式に従って、前記画像情報のうち、画像の周波数成分に関する周波数変換係数情報を二値化し、前記画像情報の二値化において、前記二値化データ列に対して算術符号化が適用される場合と、前記二値化データ列に対して算術符号化が適用されない場合とで共通の二値化形式に従って、前記画像情報のうち、画像の予測方法に関する予測パラメータ情報の一部または全部を二値化する符号化方法を実行させる。
あるいは、このプログラムは、コンピュータに、画像情報が符号化されたビット列を取得して、前記画像情報を復号する復号方法であって、前記画像情報が二値化された二値化データ列を含む前記ビット列を取得し、前記ビット列に含まれる前記二値化データ列に対して算術復号を適用するか否かを切り替え、前記二値化データ列に対して算術復号が適用される場合、前記二値化データ列に対して算術復号を適用して、算術復号が適用された前記二値化データ列を逆二値化することにより、前記画像情報を復号し、前記二値化データ列に対して算術復号が適用されない場合、前記二値化データ列に対して算術復号を適用せずに、算術復号が適用されなかった前記二値化データ列を逆二値化することにより、前記画像情報を復号し、前記二値化データ列の逆二値化において、前記二値化データ列に対して算術復号が適用される場合と、前記二値化データ列に対して算術復号が適用されない場合とで異なる逆二値化形式に従って、前記二値化データ列のうち、画像の周波数成分に関する周波数変換係数情報が二値化された第1部分を逆二値化し、前記二値化データ列の逆二値化において、前記二値化データ列に対して算術復号が適用される場合と、前記二値化データ列に対して算術復号が適用されない場合とで共通の逆二値化形式に従って、前記二値化データ列のうち、画像の予測方法に関する予測パラメータ情報の一部または全部が二値化された第2部分を逆二値化する復号方法を実行させる。
あるいは、このプログラムは、コンピュータに、画像情報を符号化する符号化方法であって、複数の周波数変換係数で構成される周波数変換ブロックにおける1以上の基本ブロックに対して周波数の高い順に規定される所定のスキャン順で最初に非ゼロ係数を含む基本ブロックである特定基本ブロックの位置を示す位置情報を符号化し、前記1以上の基本ブロックのうち、前記所定のスキャン順で前記特定基本ブロック以降の各基本ブロックについてのみ、当該基本ブロックを構成する複数の周波数変換係数を示すブロック情報を符号化する符号化方法を実行させる。
あるいは、このプログラムは、コンピュータに、画像情報を復号する復号方法であって、複数の周波数変換係数で構成される周波数変換ブロックにおける1以上の基本ブロックに対して周波数の高い順に規定される所定のスキャン順で最初に非ゼロ係数を含む基本ブロックである特定基本ブロックの位置を示す位置情報を復号し、前記1以上の基本ブロックのうち、前記所定のスキャン順で前記特定基本ブロック以降の各基本ブロックについてのみ、当該基本ブロックを構成する複数の周波数変換係数を示すブロック情報を復号する復号方法を実行させる。
あるいは、このプログラムは、コンピュータに、画像情報を符号化する符号化方法であって、複数の周波数変換係数で構成される周波数変換ブロックにおける1以上の基本ブロックの1つであるカレント基本ブロックに含まれる非ゼロ係数の個数を示すデータ値を複数のデータ値と複数の二値化値とが対応付けられた変換テーブルに従って二値化して、前記データ値を含む前記画像情報を符号化し、前記データ値の二値化において、前記非ゼロ係数の個数として0を示すデータ値の対応付けを含む第1テーブルと、前記非ゼロ係数の個数として0を示すデータ値の対応付けを含まない第2テーブルとを含む複数のテーブルの中から前記変換テーブルを選択して、選択された前記変換テーブルに従って、前記データ値を二値化する符号化方法を実行させる。
あるいは、このプログラムは、コンピュータに、画像情報を復号する復号方法であって、複数の周波数変換係数で構成される周波数変換ブロックにおける1以上の基本ブロックの1つであるカレント基本ブロックに含まれる非ゼロ係数の個数を示すデータ値が二値化された二値化値を複数のデータ値と複数の二値化値とが対応付けられた変換テーブルに従って逆二値化して、前記データ値を含む前記画像情報を復号し、前記二値化値の逆二値化において、前記非ゼロ係数の個数として0を示すデータ値の対応付けを含む第1テーブルと、前記非ゼロ係数の個数として0を示すデータ値の対応付けを含まない第2テーブルとを含む複数のテーブルの中から前記変換テーブルを選択して、選択された前記変換テーブルに従って、前記二値化値を逆二値化する復号方法を実行させる。
あるいは、このプログラムは、コンピュータに、画像情報を符号化する符号化方法であって、複数の周波数変換係数で構成される周波数変換ブロックにおける1以上の基本ブロックの1つであるカレント基本ブロックに含まれる非ゼロ係数の個数を示すデータ値を複数のデータ値と複数の二値化値とが対応付けられた変換テーブルに従って二値化して、前記データ値を含む前記画像情報を符号化し、前記データ値の二値化において、前記カレント基本ブロックを含む前記周波数変換ブロックであるカレント周波数変換ブロックにおける前記カレント基本ブロックの位置に従って、複数のデータ値に対応付けられた複数の二値化値の最長ビット長と最短ビット長との差が互いに異なる2以上のテーブルを含む複数のテーブルの中から前記変換テーブルを選択して、選択された前記変換テーブルに従って、前記データ値を二値化する符号化方法を実行させる。
あるいは、このプログラムは、コンピュータに、画像情報を復号する復号方法であって、複数の周波数変換係数で構成される周波数変換ブロックにおける1以上の基本ブロックの1つであるカレント基本ブロックに含まれる非ゼロ係数の個数を示すデータ値が二値化された二値化値を複数のデータ値と複数の二値化値とが対応付けられた変換テーブルに従って逆二値化して、前記データ値を含む前記画像情報を復号し、前記二値化値の逆二値化において、前記カレント基本ブロックを含む前記周波数変換ブロックであるカレント周波数変換ブロックにおける前記カレント基本ブロックの位置に従って、複数のデータ値に対応付けられた複数の二値化値の最長ビット長と最短ビット長との差が互いに異なる2以上のテーブルを含む複数のテーブルの中から前記変換テーブルを選択して、選択された前記変換テーブルに従って、前記二値化値を逆二値化する復号方法を実行させる。
また、各構成要素は、上述の通り、回路であってもよい。これらの回路は、全体として1つの回路を構成してもよいし、それぞれ別々の回路であってもよい。また、各構成要素は、汎用的なプロセッサで実現されてもよいし、専用のプロセッサで実現されてもよい。
また、特定の構成要素が実行する処理を別の構成要素が実行してもよい。また、処理を実行する順番が変更されてもよいし、複数の処理が並行して実行されてもよい。また、符号化復号装置が、符号化装置100及び復号装置200を備えていてもよい。
説明に用いられた第1及び第2等の序数は、適宜、付け替えられてもよい。また、構成要素などに対して、序数が新たに与えられてもよいし、取り除かれてもよい。
以上、一つ又は複数の態様に係る符号化装置100及び復号装置200について、実施の形態に基づいて説明したが、本発明は、この実施の形態に限定されるものではない。本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したものや、異なる実施の形態における構成要素を組み合わせて構築される形態も、一つ又は複数の態様の範囲内に含まれてもよい。
(実施の形態2)
以上の各実施の形態において、機能ブロックの各々は、通常、MPU及びメモリ等によって実現可能である。また、機能ブロックの各々による処理は、通常、プロセッサなどのプログラム実行部が、ROM等の記録媒体に記録されたソフトウェア(プログラム)を読み出して実行することで実現される。当該ソフトウェアはダウンロード等により配布されてもよいし、半導体メモリなどの記録媒体に記録して配布されてもよい。なお、各機能ブロックをハードウェア(専用回路)によって実現することも、当然、可能である。
また、各実施の形態において説明した処理は、単一の装置(システム)を用いて集中処理することによって実現してもよく、又は、複数の装置を用いて分散処理することによって実現してもよい。また、上記プログラムを実行するプロセッサは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、又は分散処理を行ってもよい。
本発明は、以上の実施例に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含される。
さらにここで、上記各実施の形態で示した動画像符号化方法(画像符号化方法)又は動画像復号化方法(画像復号方法)の応用例とそれを用いたシステムを説明する。当該システムは、画像符号化方法を用いた画像符号化装置、画像復号方法を用いた画像復号装置、及び両方を備える画像符号化復号装置を有することを特徴とする。システムにおける他の構成について、場合に応じて適切に変更することができる。
[使用例]
図43は、コンテンツ配信サービスを実現するコンテンツ供給システムex100の全体構成を示す図である。通信サービスの提供エリアを所望の大きさに分割し、各セル内にそれぞれ固定無線局である基地局ex106、ex107、ex108、ex109、ex110が設置されている。
このコンテンツ供給システムex100では、インターネットex101に、インターネットサービスプロバイダex102又は通信網ex104、及び基地局ex106~ex110を介して、コンピュータex111、ゲーム機ex112、カメラex113、家電ex114、及びスマートフォンex115などの各機器が接続される。当該コンテンツ供給システムex100は、上記のいずれかの要素を組合せて接続するようにしてもよい。固定無線局である基地局ex106~ex110を介さずに、各機器が電話網又は近距離無線等を介して直接的又は間接的に相互に接続されていてもよい。また、ストリーミングサーバex103は、インターネットex101等を介して、コンピュータex111、ゲーム機ex112、カメラex113、家電ex114、及びスマートフォンex115などの各機器と接続される。また、ストリーミングサーバex103は、衛星ex116を介して、飛行機ex117内のホットスポット内の端末等と接続される。
なお、基地局ex106~ex110の代わりに、無線アクセスポイント又はホットスポット等が用いられてもよい。また、ストリーミングサーバex103は、インターネットex101又はインターネットサービスプロバイダex102を介さずに直接通信網ex104と接続されてもよいし、衛星ex116を介さず直接飛行機ex117と接続されてもよい。
カメラex113はデジタルカメラ等の静止画撮影、及び動画撮影が可能な機器である。また、スマートフォンex115は、一般に2G、3G、3.9G、4G、そして今後は5Gと呼ばれる移動通信システムの方式に対応したスマートフォン機、携帯電話機、又はPHS(Personal Handyphone System)等である。
家電ex118は、冷蔵庫、又は家庭用燃料電池コージェネレーションシステムに含まれる機器等である。
コンテンツ供給システムex100では、撮影機能を有する端末が基地局ex106等を通じてストリーミングサーバex103に接続されることで、ライブ配信等が可能になる。ライブ配信では、端末(コンピュータex111、ゲーム機ex112、カメラex113、家電ex114、スマートフォンex115、及び飛行機ex117内の端末等)は、ユーザが当該端末を用いて撮影した静止画又は動画コンテンツに対して上記各実施の形態で説明した符号化処理を行い、符号化により得られた映像データと、映像に対応する音を符号化した音データと多重化し、得られたデータをストリーミングサーバex103に送信する。即ち、各端末は、本発明の一態様に係る画像符号化装置として機能する。
一方、ストリーミングサーバex103は要求のあったクライアントに対して送信されたコンテンツデータをストリーム配信する。クライアントは、上記符号化処理されたデータを復号化することが可能な、コンピュータex111、ゲーム機ex112、カメラex113、家電ex114、スマートフォンex115、又は飛行機ex117内の端末等である。配信されたデータを受信した各機器は、受信したデータを復号化処理して再生する。即ち、各機器は、本発明の一態様に係る画像復号装置として機能する。
[分散処理]
また、ストリーミングサーバex103は複数のサーバ又は複数のコンピュータであって、データを分散して処理したり記録したり配信するものであってもよい。例えば、ストリーミングサーバex103は、CDN(Contents Delivery Network)により実現され、世界中に分散された多数のエッジサーバとエッジサーバ間をつなぐネットワークによりコンテンツ配信が実現されていてもよい。CDNでは、クライアントに応じて物理的に近いエッジサーバが動的に割り当てられる。そして、当該エッジサーバにコンテンツがキャッシュ及び配信されることで遅延を減らすことができる。また、何らかのエラーが発生した場合又はトラフィックの増加などにより通信状態が変わる場合に複数のエッジサーバで処理を分散したり、他のエッジサーバに配信主体を切り替えたり、障害が生じたネットワークの部分を迂回して配信を続けることができるので、高速かつ安定した配信が実現できる。
また、配信自体の分散処理にとどまらず、撮影したデータの符号化処理を各端末で行ってもよいし、サーバ側で行ってもよいし、互いに分担して行ってもよい。一例として、一般に符号化処理では、処理ループが2度行われる。1度目のループでフレーム又はシーン単位での画像の複雑さ、又は、符号量が検出される。また、2度目のループでは画質を維持して符号化効率を向上させる処理が行われる。例えば、端末が1度目の符号化処理を行い、コンテンツを受け取ったサーバ側が2度目の符号化処理を行うことで、各端末での処理負荷を減らしつつもコンテンツの質と効率を向上させることができる。この場合、ほぼリアルタイムで受信して復号する要求があれば、端末が行った一度目の符号化済みデータを他の端末で受信して再生することもできるので、より柔軟なリアルタイム配信も可能になる。
他の例として、カメラex113等は、画像から特徴量抽出を行い、特徴量に関するデータをメタデータとして圧縮してサーバに送信する。サーバは、例えば特徴量からオブジェクトの重要性を判断して量子化精度を切り替えるなど、画像の意味に応じた圧縮を行う。特徴量データはサーバでの再度の圧縮時の動きベクトル予測の精度及び効率向上に特に有効である。また、端末でVLC(可変長符号化)などの簡易的な符号化を行い、サーバでCABAC(コンテキスト適応型二値算術符号化方式)など処理負荷の大きな符号化を行ってもよい。
さらに他の例として、スタジアム、ショッピングモール、又は工場などにおいては、複数の端末によりほぼ同一のシーンが撮影された複数の映像データが存在する場合がある。この場合には、撮影を行った複数の端末と、必要に応じて撮影をしていない他の端末及びサーバを用いて、例えばGOP(Group of Picture)単位、ピクチャ単位、又はピクチャを分割したタイル単位などで符号化処理をそれぞれ割り当てて分散処理を行う。これにより、遅延を減らし、よりリアルタイム性を実現できる。
また、複数の映像データはほぼ同一シーンであるため、各端末で撮影された映像データを互いに参照し合えるように、サーバで管理及び/又は指示をしてもよい。または、各端末からの符号化済みデータを、サーバが受信し複数のデータ間で参照関係を変更、又はピクチャ自体を補正或いは差し替えて符号化しなおしてもよい。これにより、一つ一つのデータの質と効率を高めたストリームを生成できる。
また、サーバは、映像データの符号化方式を変更するトランスコードを行ったうえで映像データを配信してもよい。例えば、サーバは、MPEG系の符号化方式をVP系に変換してもよいし、H.264をH.265に変換してもよい。
このように、符号化処理は、端末、又は1以上のサーバにより行うことが可能である。よって、以下では、処理を行う主体として「サーバ」又は「端末」等の記載を用いるが、サーバで行われる処理の一部又は全てが端末で行われてもよいし、端末で行われる処理の一部又は全てがサーバで行われてもよい。また、これらに関しては、復号処理についても同様である。
[3D、マルチアングル]
近年では、互いにほぼ同期した複数のカメラex113及び/又はスマートフォンex115などの端末により撮影された異なるシーン、又は、同一シーンを異なるアングルから撮影した画像或いは映像を統合して利用することも増えてきている。各端末で撮影した映像は、別途取得した端末間の相対的な位置関係、又は、映像に含まれる特徴点が一致する領域などに基づいて統合される。
サーバは、2次元の動画像を符号化するだけでなく、動画像のシーン解析などに基づいて自動的に、又は、ユーザが指定した時刻において、静止画を符号化し、受信端末に送信してもよい。サーバは、さらに、撮影端末間の相対的な位置関係を取得できる場合には、2次元の動画像だけでなく、同一シーンが異なるアングルから撮影された映像に基づき、当該シーンの3次元形状を生成できる。なお、サーバは、ポイントクラウドなどにより生成した3次元のデータを別途符号化してもよいし、3次元データを用いて人物又はオブジェクトを認識或いは追跡した結果に基づいて、受信端末に送信する映像を、複数の端末で撮影した映像から選択、又は、再構成して生成してもよい。
このようにして、ユーザは、各撮影端末に対応する各映像を任意に選択してシーンを楽しむこともできるし、複数画像又は映像を用いて再構成された3次元データから任意視点の映像を切り出したコンテンツを楽しむこともできる。さらに、映像と同様に音も複数の相異なるアングルから収音され、サーバは、映像に合わせて特定のアングル又は空間からの音を映像と多重化して送信してもよい。
また、近年ではVirtual Reality(VR)及びAugmented Reality(AR)など、現実世界と仮想世界とを対応付けたコンテンツも普及してきている。VRの画像の場合、サーバは、右目用及び左目用の視点画像をそれぞれ作成し、Multi-View Coding(MVC)などにより各視点映像間で参照を許容する符号化を行ってもよいし、互いに参照せずに別ストリームとして符号化してもよい。別ストリームの復号時には、ユーザの視点に応じて仮想的な3次元空間が再現されるように互いに同期させて再生するとよい。
ARの画像の場合には、サーバは、現実空間のカメラ情報に、仮想空間上の仮想物体情報を、3次元的位置又はユーザの視点の動きに基づいて重畳する。復号装置は、仮想物体情報及び3次元データを取得又は保持し、ユーザの視点の動きに応じて2次元画像を生成し、スムーズにつなげることで重畳データを作成してもよい。または、復号装置は仮想物体情報の依頼に加えてユーザの視点の動きをサーバに送信し、サーバは、サーバに保持される3次元データから受信した視点の動きに合わせて重畳データを作成し、重畳データを符号化して復号装置に配信してもよい。なお、重畳データは、RGB以外に透過度を示すα値を有し、サーバは、3次元データから作成されたオブジェクト以外の部分のα値が0などに設定し、当該部分が透過する状態で、符号化してもよい。もしくは、サーバは、クロマキーのように所定の値のRGB値を背景に設定し、オブジェクト以外の部分は背景色にしたデータを生成してもよい。
同様に配信されたデータの復号処理はクライアントである各端末で行っても、サーバ側で行ってもよいし、互いに分担して行ってもよい。一例として、ある端末が、一旦サーバに受信リクエストを送り、そのリクエストに応じたコンテンツを他の端末で受信し復号処理を行い、ディスプレイを有する装置に復号済みの信号が送信されてもよい。通信可能な端末自体の性能によらず処理を分散して適切なコンテンツを選択することで画質のよいデータを再生することができる。また、他の例として大きなサイズの画像データをTV等で受信しつつ、鑑賞者の個人端末にピクチャが分割されたタイルなど一部の領域が復号されて表示されてもよい。これにより、全体像を共有化しつつ、自身の担当分野又はより詳細に確認したい領域を手元で確認することができる。
また今後は、屋内外にかかわらず近距離、中距離、又は長距離の無線通信が複数使用可能な状況下で、MPEG-DASHなどの配信システム規格を利用して、接続中の通信に対して適切なデータを切り替えながらシームレスにコンテンツを受信することが予想される。これにより、ユーザは、自身の端末のみならず屋内外に設置されたディスプレイなどの復号装置又は表示装置を自由に選択しながらリアルタイムで切り替えられる。また、自身の位置情報などに基づいて、復号する端末及び表示する端末を切り替えながら復号を行うことができる。これにより、目的地への移動中に、表示可能なデバイスが埋め込まれた隣の建物の壁面又は地面の一部に地図情報を表示させながら移動することも可能になる。また、符号化データが受信端末から短時間でアクセスできるサーバにキャッシュされている、又は、コンテンツ・デリバリー・サービスにおけるエッジサーバにコピーされている、などの、ネットワーク上での符号化データへのアクセス容易性に基づいて、受信データのビットレートを切り替えることも可能である。
[スケーラブル符号化]
コンテンツの切り替えに関して、図44に示す、上記各実施の形態で示した動画像符号化方法を応用して圧縮符号化されたスケーラブルなストリームを用いて説明する。サーバは、個別のストリームとして内容は同じで質の異なるストリームを複数有していても構わないが、図示するようにレイヤに分けて符号化を行うことで実現される時間的/空間的スケーラブルなストリームの特徴を活かして、コンテンツを切り替える構成であってもよい。つまり、復号側が性能という内的要因と通信帯域の状態などの外的要因とに応じてどのレイヤまで復号するかを決定することで、復号側は、低解像度のコンテンツと高解像度のコンテンツとを自由に切り替えて復号できる。例えば移動中にスマートフォンex115で視聴していた映像の続きを、帰宅後にインターネットTV等の機器で視聴したい場合には、当該機器は、同じストリームを異なるレイヤまで復号すればよいので、サーバ側の負担を軽減できる。
さらに、上記のように、レイヤ毎にピクチャが符号化されており、ベースレイヤの上位にエンハンスメントレイヤが存在するスケーラビリティを実現する構成以外に、エンハンスメントレイヤが画像の統計情報などに基づくメタ情報を含み、復号側が、メタ情報に基づきベースレイヤのピクチャを超解像することで高画質化したコンテンツを生成してもよい。超解像とは、同一解像度におけるSN比の向上、及び、解像度の拡大のいずれであってもよい。メタ情報は、超解像処理に用いる線形或いは非線形のフィルタ係数を特定するため情報、又は、超解像処理に用いるフィルタ処理、機械学習或いは最小2乗演算におけるパラメータ値を特定する情報などを含む。
または、画像内のオブジェクトなどの意味合いに応じてピクチャがタイル等に分割されており、復号側が、復号するタイルを選択することで一部の領域だけを復号する構成であってもよい。また、オブジェクトの属性(人物、車、ボールなど)と映像内の位置(同一画像における座標位置など)とをメタ情報として格納することで、復号側は、メタ情報に基づいて所望のオブジェクトの位置を特定し、そのオブジェクトを含むタイルを決定できる。例えば、図45に示すように、メタ情報は、HEVCにおけるSEIメッセージなど画素データとは異なるデータ格納構造を用いて格納される。このメタ情報は、例えば、メインオブジェクトの位置、サイズ、又は色彩などを示す。
また、ストリーム、シーケンス又はランダムアクセス単位など、複数のピクチャから構成される単位でメタ情報が格納されてもよい。これにより、復号側は、特定人物が映像内に出現する時刻などが取得でき、ピクチャ単位の情報と合わせることで、オブジェクトが存在するピクチャ、及び、ピクチャ内でのオブジェクトの位置を特定できる。
[Webページの最適化]
図46は、コンピュータex111等におけるwebページの表示画面例を示す図である。図47は、スマートフォンex115等におけるwebページの表示画面例を示す図である。図46及び図47に示すようにwebページが、画像コンテンツへのリンクであるリンク画像を複数含む場合があり、閲覧するデバイスによってその見え方は異なる。画面上に複数のリンク画像が見える場合には、ユーザが明示的にリンク画像を選択するまで、又は画面の中央付近にリンク画像が近付く或いはリンク画像の全体が画面内に入るまでは、表示装置(復号装置)は、リンク画像として各コンテンツが有する静止画又はIピクチャを表示したり、複数の静止画又はIピクチャ等でgifアニメのような映像を表示したり、ベースレイヤのみ受信して映像を復号及び表示したりする。
ユーザによりリンク画像が選択された場合、表示装置は、ベースレイヤを最優先にして復号する。なお、webページを構成するHTMLにスケーラブルなコンテンツであることを示す情報があれば、表示装置は、エンハンスメントレイヤまで復号してもよい。また、リアルタイム性を担保するために、選択される前又は通信帯域が非常に厳しい場合には、表示装置は、前方参照のピクチャ(Iピクチャ、Pピクチャ、前方参照のみのBピクチャ)のみを復号及び表示することで、先頭ピクチャの復号時刻と表示時刻との間の遅延(コンテンツの復号開始から表示開始までの遅延)を低減できる。また、表示装置は、ピクチャの参照関係を敢えて無視して全てのBピクチャ及びPピクチャを前方参照にして粗く復号し、時間が経ち受信したピクチャが増えるにつれて正常の復号を行ってもよい。
[自動走行]
また、車の自動走行又は走行支援のため2次元又は3次元の地図情報などの静止画又は映像データを送受信する場合、受信端末は、1以上のレイヤに属する画像データに加えて、メタ情報として天候又は工事の情報なども受信し、これらを対応付けて復号してもよい。なお、メタ情報は、レイヤに属してもよいし、単に画像データと多重化されてもよい。
この場合、受信端末を含む車、ドローン又は飛行機などが移動するため、受信端末は、当該受信端末の位置情報を受信要求時に送信することで、基地局ex106~ex110を切り替えながらシームレスな受信及び復号を実現できる。また、受信端末は、ユーザの選択、ユーザの状況又は通信帯域の状態に応じて、メタ情報をどの程度受信するか、又は地図情報をどの程度更新していくかを動的に切り替えることが可能になる。
以上のようにして、コンテンツ供給システムex100では、ユーザが送信した符号化された情報をリアルタイムでクライアントが受信して復号し、再生することができる。
[個人コンテンツの配信]
また、コンテンツ供給システムex100では、映像配信業者による高画質で長時間のコンテンツのみならず、個人による低画質で短時間のコンテンツのユニキャスト、又はマルチキャスト配信が可能である。また、このような個人のコンテンツは今後も増加していくと考えられる。個人コンテンツをより優れたコンテンツにするために、サーバは、編集処理を行ってから符号化処理を行ってもよい。これは例えば、以下のような構成で実現できる。
撮影時にリアルタイム又は蓄積して撮影後に、サーバは、原画又は符号化済みデータから撮影エラー、シーン探索、意味の解析、及びオブジェクト検出などの認識処理を行う。そして、サーバは、認識結果に基いて手動又は自動で、ピントずれ又は手ブレなどを補正したり、明度が他のピクチャに比べて低い又は焦点が合っていないシーンなどの重要性の低いシーンを削除したり、オブジェクトのエッジを強調したり、色合いを変化させるなどの編集を行う。サーバは、編集結果に基いて編集後のデータを符号化する。また撮影時刻が長すぎると視聴率が下がることも知られており、サーバは、撮影時間に応じて特定の時間範囲内のコンテンツになるように上記のように重要性が低いシーンのみならず動きが少ないシーンなどを、画像処理結果に基き自動でクリップしてもよい。または、サーバは、シーンの意味解析の結果に基づいてダイジェストを生成して符号化してもよい。
なお、個人コンテンツには、そのままでは著作権、著作者人格権、又は肖像権等の侵害となるものが写り込んでいるケースもあり、共有する範囲が意図した範囲を超えてしまうなど個人にとって不都合な場合もある。よって、例えば、サーバは、画面の周辺部の人の顔、又は家の中などを敢えて焦点が合わない画像に変更して符号化してもよい。また、サーバは、符号化対象画像内に、予め登録した人物とは異なる人物の顔が映っているかどうかを認識し、映っている場合には、顔の部分にモザイクをかけるなどの処理を行ってもよい。または、符号化の前処理又は後処理として、著作権などの観点からユーザが画像を加工したい人物又は背景領域を指定し、サーバは、指定された領域を別の映像に置き換える、又は焦点をぼかすなどの処理を行うことも可能である。人物であれば、動画像において人物をトラッキングしながら、顔の部分の映像を置き換えることができる。
また、データ量の小さい個人コンテンツの視聴はリアルタイム性の要求が強いため、帯域幅にもよるが、復号装置は、まずベースレイヤを最優先で受信して復号及び再生を行う。復号装置は、この間にエンハンスメントレイヤを受信し、再生がループされる場合など2回以上再生される場合に、エンハンスメントレイヤも含めて高画質の映像を再生してもよい。このようにスケーラブルな符号化が行われているストリームであれば、未選択時又は見始めた段階では粗い動画だが、徐々にストリームがスマートになり画像がよくなるような体験を提供することができる。スケーラブル符号化以外にも、1回目に再生される粗いストリームと、1回目の動画を参照して符号化される2回目のストリームとが1つのストリームとして構成されていても同様の体験を提供できる。
[その他の使用例]
また、これらの符号化又は復号処理は、一般的に各端末が有するLSIex500において処理される。LSIex500は、ワンチップであっても複数チップからなる構成であってもよい。なお、動画像符号化又は復号用のソフトウェアをコンピュータex111等で読み取り可能な何らかの記録メディア(CD-ROM、フレキシブルディスク、又はハードディスクなど)に組み込み、そのソフトウェアを用いて符号化又は復号処理を行ってもよい。さらに、スマートフォンex115がカメラ付きである場合には、そのカメラで取得した動画データを送信してもよい。このときの動画データはスマートフォンex115が有するLSIex500で符号化処理されたデータである。
なお、LSIex500は、アプリケーションソフトをダウンロードしてアクティベートする構成であってもよい。この場合、端末は、まず、当該端末がコンテンツの符号化方式に対応しているか、又は、特定サービスの実行能力を有するかを判定する。端末がコンテンツの符号化方式に対応していない場合、又は、特定サービスの実行能力を有さない場合、端末は、コーデック又はアプリケーションソフトをダウンロードし、その後、コンテンツ取得及び再生する。
また、インターネットex101を介したコンテンツ供給システムex100に限らず、デジタル放送用システムにも上記各実施の形態の少なくとも動画像符号化装置(画像符号化装置)又は動画像復号化装置(画像復号装置)のいずれかを組み込むことができる。衛星などを利用して放送用の電波に映像と音が多重化された多重化データを載せて送受信するため、コンテンツ供給システムex100のユニキャストがし易い構成に対してマルチキャスト向きであるという違いがあるが符号化処理及び復号処理に関しては同様の応用が可能である。
[ハードウェア構成]
図48は、スマートフォンex115を示す図である。また、図49は、スマートフォンex115の構成例を示す図である。スマートフォンex115は、基地局ex110との間で電波を送受信するためのアンテナex450と、映像及び静止画を撮ることが可能なカメラ部ex465と、カメラ部ex465で撮像した映像、及びアンテナex450で受信した映像等が復号されたデータを表示する表示部ex458とを備える。スマートフォンex115は、さらに、タッチパネル等である操作部ex466と、音声又は音響を出力するためのスピーカ等である音声出力部ex457と、音声を入力するためのマイク等である音声入力部ex456と、撮影した映像或いは静止画、録音した音声、受信した映像或いは静止画、メール等の符号化されたデータ、又は、復号化されたデータを保存可能なメモリ部ex467と、ユーザを特定し、ネットワークをはじめ各種データへのアクセスの認証をするためのSIMex468とのインタフェース部であるスロット部ex464とを備える。なお、メモリ部ex467の代わりに外付けメモリが用いられてもよい。
また、表示部ex458及び操作部ex466等を統括的に制御する主制御部ex460と、電源回路部ex461、操作入力制御部ex462、映像信号処理部ex455、カメラインタフェース部ex463、ディスプレイ制御部ex459、変調/復調部ex452、多重/分離部ex453、音声信号処理部ex454、スロット部ex464、及びメモリ部ex467とがバスex470を介して接続されている。
電源回路部ex461は、ユーザの操作により電源キーがオン状態にされると、バッテリパックから各部に対して電力を供給することによりスマートフォンex115を動作可能な状態に起動する。
スマートフォンex115は、CPU、ROM及びRAM等を有する主制御部ex460の制御に基づいて、通話及データ通信等の処理を行う。通話時は、音声入力部ex456で収音した音声信号を音声信号処理部ex454でデジタル音声信号に変換し、これを変調/復調部ex452でスペクトラム拡散処理し、送信/受信部ex451でデジタルアナログ変換処理及び周波数変換処理を施した後にアンテナex450を介して送信する。また受信データを増幅して周波数変換処理及びアナログデジタル変換処理を施し、変調/復調部ex452でスペクトラム逆拡散処理し、音声信号処理部ex454でアナログ音声信号に変換した後、これを音声出力部ex457から出力する。データ通信モード時は、本体部の操作部ex466等の操作によってテキスト、静止画、又は映像データが操作入力制御部ex462を介して主制御部ex460に送出され、同様に送受信処理が行われる。データ通信モード時に映像、静止画、又は映像と音声を送信する場合、映像信号処理部ex455は、メモリ部ex467に保存されている映像信号又はカメラ部ex465から入力された映像信号を上記各実施の形態で示した動画像符号化方法によって圧縮符号化し、符号化された映像データを多重/分離部ex453に送出する。また、音声信号処理部ex454は、映像又は静止画等をカメラ部ex465で撮像中に音声入力部ex456で収音した音声信号を符号化し、符号化された音声データを多重/分離部ex453に送出する。多重/分離部ex453は、符号化済み映像データと符号化済み音声データを所定の方式で多重化し、変調/復調部(変調/復調回路部)ex452、及び送信/受信部ex451で変調処理及び変換処理を施してアンテナex450を介して送信する。
電子メール又はチャットに添付された映像、又はウェブページ等にリンクされた映像を受信した場合、アンテナex450を介して受信された多重化データを復号するために、多重/分離部ex453は、多重化データを分離することにより、多重化データを映像データのビットストリームと音声データのビットストリームとに分け、同期バスex470を介して符号化された映像データを映像信号処理部ex455に供給するとともに、符号化された音声データを音声信号処理部ex454に供給する。映像信号処理部ex455は、上記各実施の形態で示した動画像符号化方法に対応した動画像復号化方法によって映像信号を復号し、ディスプレイ制御部ex459を介して表示部ex458から、リンクされた動画像ファイルに含まれる映像又は静止画が表示される。また音声信号処理部ex454は、音声信号を復号し、音声出力部ex457から音声が出力される。なおリアルタイムストリーミングが普及しているため、ユーザの状況によっては音声の再生が社会的にふさわしくない場も起こりえる。そのため、初期値としては、音声信号は再生せず映像データのみを再生する構成の方が望ましい。ユーザが映像データをクリックするなど操作を行った場合にのみ音声を同期して再生してもよい。
またここではスマートフォンex115を例に説明したが、端末としては符号化器及び復号化器を両方持つ送受信型端末の他に、符号化器のみを有する送信端末、及び、復号化器のみを有する受信端末という3通りの実装形式が考えられる。さらに、デジタル放送用システムにおいて、映像データに音声データなどが多重化された多重化データを受信又は送信するとして説明したが、多重化データには、音声データ以外に映像に関連する文字データなどが多重化されてもよいし、多重化データではなく映像データ自体が受信又は送信されてもよい。
なお、CPUを含む主制御部ex460が符号化又は復号処理を制御するとして説明したが、端末はGPUを備えることも多い。よって、CPUとGPUで共通化されたメモリ、又は共通に使用できるようにアドレスが管理されているメモリにより、GPUの性能を活かして広い領域を一括して処理する構成でもよい。これにより符号化時間を短縮でき、リアルタイム性を確保し、低遅延を実現できる。特に動き探索、デブロックフィルタ、SAO(Sample Adaptive Offset)、及び変換・量子化の処理を、CPUではなく、GPUでピクチャなどの単位で一括して行うと効率的である。