以下、図面を参照しながら本発明の第1及び第2実施形態について説明する。第1及び第2実施形態において、画像符号化装置はHEVC方式に基づく符号化処理を行い、画像復号装置はHEVC方式に基づく復号処理を行う。
(1)第1実施形態
(1.1)画像符号化装置
第1実施形態に係る画像符号化装置について説明する。
(1.1.1)画像符号化装置の構成
図1は、第1実施形態に係る画像符号化装置1の構成を示す。
図1に示すように、画像符号化装置1は、フレームバッファ101、減算部102、符号化データ生成部103、制御部109、加算部(合成部)110、デブロッキングフィルタ111、参照メモリ112、予測部113、可逆符号化部114、蓄積バッファ115、及び動きベクトル算出部116を備える。
第1実施形態に係る画像符号化装置1は、予測画像と入力画像との残差である残差画像の一部である変換ブロックに対する直交変換を行う変換部104と、変換ブロックに対する量子化を行う量子化部105と、4×4のサイズを有する4×4変換ブロックについて、異なる値の要素からなる第1量子化行列及び等しい値の要素からなる第2量子化行列のうちのいずれかを量子化に用いるか否かをフレーム単位で判定する量子化行列判定部109dとを備える。変換部104は、量子化行列判定部109dによって第1量子化行列を量子化に用いると判定されたフレームに対応する各4×4変換ブロックに対して、直交変換をスキップする変換スキップを適用することなく、当該4×4変換ブロックに対する直交変換を行う。
フレームバッファ101は、画像符号化装置1の外部から入力された画像信号をフレームごとに一時的に記憶する。
なお、フレームバッファ101は、入力画像信号を記憶する際、予め定めたGOP(Group of Picture)構造に応じて各フレームの順序を並び替えてもよい。このGOP構造とは、所定のフレーム数からなるフレームの種類(例えば、イントラフレーム、インターフレーム等)の配列をいう。イントラフレームとは、フレーム内予測(イントラ予測)を行って符号化される画像信号のフレームをいう。インターフレームとは、フレーム間予測(インター予測)を行って符号化される画像信号のフレームをいう。
フレームバッファ101は、記憶した入力画像信号から現在処理を行うフレーム(現フレーム、カレントフレームともいう)の画像信号を特定し、特定したフレームの画像信号から、その一部として現在処理を行うブロック(現ブロック、カレントブロックともいう)の画像を示す入力画像ブロック信号を読み出す。
フレームバッファ101が現ブロックを選択する順序は、例えば、ラスタスキャンの順序と同一であってもよい。フレームバッファ101は、読み出した入力画像ブロック信号を減算部102及び動きベクトル算出部116に出力する。
減算部102は、フレームバッファ101から入力された入力画像ブロック信号から、予測部113から入力された予測画像ブロック信号を減算し、差分画像ブロック信号を生成する。
ここで、減算部102は、入力画像ブロック信号を形成する画素毎の信号値から、参照画像ブロック信号を形成する信号値のうち対応する画素の信号値を減算し、生成した差分画像ブロック信号を符号化データ生成部103に出力する。
符号化データ生成部103は、減算部102から入力された差分画像ブロック信号について、より情報量が低減された符号化データを生成し、生成した符号化データのうち制御部109から入力された制御信号が示す処理態様(モード)に応じた符号化データを可逆符号化部114に出力する。この制御信号が示す処理態様は、例えば、直交変換をスキップするか否かの判定や、直交変換処理、量子化を行う際に用いる量子化行列の設定及び量子化処理等がある。
また、符号化データ生成部103は、それぞれ逆処理を備え、生成した符号化データを復号して復元差分画像ブロック信号を生成し、生成した復元差分画像ブロック信号を加算部110に出力する。
符号化データ生成部103は、変換部104、量子化部105、逆量子化部106、逆変換部107、及び量子化行列設定部108を備える。
変換部104は、減算部102から入力された差分画像ブロック信号について直交変換し、直交変換係数データを生成し、生成した変換係数データを量子化部105に出力する。
直交変換とは、例えば、離散コサイン変換(DCT:Discrete Cosine Transform)や離散サイン変換(DST:Discrete Sine Transform)等をいう。なお、制御信号が示す処理態様によっては、変換部104は、直交変換をスキップする場合がある。その場合、変換部104は、差分画像ブロック信号を変換せずに変換係数データとして量子化部105に出力する。直交変換をスキップする動作態様は、TS(Transform Skip、変換スキップ)モードと呼ばれることがある。
量子化部105は、変換部104から入力された変換係数データが示す変換係数を量子化パラメータqP及び量子化行列を用いて量子化し、量子化した変換係数を示す量子化変換係数データを生成する。量子化パラメータqPは、ブロック内のデータに対して共通して適応される。量子化行列設定部108は、ブロック内の変換係数ごとに指定する量子化値によって構成される量子化行列を設定、する。量子化行列の各要素の値(量子化値)は、変換係数データの対応する要素の変換係数を量子化するための量子化幅を示す。量子化行列を構成する要素は、スケーリングファクタ(Scaling Factor)と呼ばれることがあるが、この量子化行列の例については後述する。なお、直交変換がスキップされた場合には、量子化部105に入力される変換係数データは、差分画像ブロックの信号値を示す差分画像ブロック信号である。量子化部105は、生成した量子化変換係数データを逆量子化部106に出力し、その量子化情報(量子化パラメータqP及び量子化行列)と量子化変換係数データとを符号化データの一部として可逆符号化部114に出力する。
逆量子化部106は、量子化部105から入力された量子化変換係数データが示す量子化変換係数を、量子化行列設定部108が設定した量子化行列と量子化パラメータqPとを用いて逆量子化し、復元変換係数を算出する。逆量子化部106が用いる量子化行列は、その量子化行列を生成する際に用いられた量子化行列と同一である。逆量子化部106は、算出した復元変換係数を示す復元変換係数データを逆変換部107に出力する。
逆変換部107は、逆量子化部106から入力された復元変換係数データが示す復元変換係数について逆直交変換し、復元差分画像ブロック信号を生成する。逆変換部107は、生成した復元差分画像ブロック信号を加算部110に出力する。逆変換部107が用いる逆直交変換は、変換部104が行う直交変換の逆演算である。例えば、変換部104がDCTを用いる場合には、逆変換部107はIDCT(Inverse DCT、逆離散コサイン変換)を用いる。また、変換部104が直交変換をスキップする場合には、逆変換部107は、逆直交変換をスキップする。その場合には、入力される復元変換係数データは、量子化された差分画像ブロックの信号値を示す信号であるため、逆変換部107は、入力された復元変換係数データを復元差分画像ブロック信号として加算部110に出力する。
量子化行列設定部108は、制御部109から入力された制御信号が示す処理態様に基づいて、量子化及び逆量子化に用いる量子化行列を量子化部105及び逆量子化部106に設定し、設定される量子化行列の候補である候補行列データを予め複数個(例えば、3個)記憶する。複数の候補行列データのうちの1つは、初期値(デフォルト)の候補行列データである。初期値の候補行列データは、例えば要素間で共通の量子化値(例えば、16)を有する。以下では、この要素間で共通の量子化値の候補行列データ若しくはその量子化行列を単に初期値、又は平坦(フラット)な初期値と呼ぶことがある。等しい値の要素からなる量子化行列は、第2量子化行列に相当する。残りの候補行列データが示す量子化行列は、要素間で各々異なる量子化値を有していてもよい。異なる値の要素からなる量子化行列は、第1量子化行列に相当する。ここで、異なる値の要素とは、量子化行列を構成する全ての要素の値が異なる場合に限らず、量子化行列を構成する一部の要素の値が異なっていてもよい。例えば、量子化行列において、それぞれが少なくとも1つの要素からなる複数のグループを定義し、グループ内では要素の値が等しく、かつグループ間では要素の値が異なるものであってもよい。なお、量子化行列設定部108に記憶された第2量子化行列を示す候補行列データの個数は、1個に限られず、2個以上であってもよい。以下の説明では、量子化行列設定部108が設定した第1量子化行列を、「設定された量子化行列」又は「平坦でない量子化行列」と呼ぶことがある。なお、量子化行列設定部108は、現フレームの種類(例えば、イントラフレーム、インターフレーム等)、ブロックサイズ、信号値の種類(例えば、輝度信号、色差信号等)に応じて、所定の設定された量子化行列を選択してもよい。また、量子化行列設定部108は、差分画像ブロック毎の周波数特性に応じて量子化行列を選択してもよい。
制御部109は、画像符号化装置1全体の動作を制御する。制御部109は、差分画像ブロックごとに、処理態様として、直交変換をスキップするか否か、及びいかなる量子化行列(例えば、平坦な量子化行列又は平坦でない量子化行列)を選択するかを判定する。制御部109は、例えば、各処理態様について復元差分画像ブロック信号の差分画像ブロック信号との近似の度合いを示すコスト値を算出し、算出したコスト値に基づいて最も符号化効率が高い差分画像ブロック信号に近似する処理態様を選択する。その指標は、例えば、SAD(Sum of Absolute Differences、絶対差分和)、SSD(Sum of Squared Differences、二乗差分和)、RD(Rate-Distortion)コスト等である。制御部109は、判定した処理態様を示す制御信号を符号化データ生成部103に出力し、判定結果を示す制御信号を符号化データの一部として可逆符号化部114に出力する。
制御部109は、分割制御部109a、TS有効化判定部109b、TS適用判定部109c、及び量子化行列判定部109dを備える。
分割制御部109aは、符号化がなされる単位である差分画像ブロック(逆変換部107が逆変換処理を行う単位でもある)を分割して、更に細分化した変換ブロックを生成するための制御を行う。差分画像ブロックを原ブロックとして変換ブロックに分割する処理をブロック分割と呼ぶ。ブロック分割の詳細については後述する。分割制御部109aは、変換ブロックごとに、4×4のブロックサイズを有する4×4変換ブロックであるか否かを判定するブロックサイズ判定部を構成する。
TS有効化判定部109bは、フレーム単位又は複数のフレームからなるシーケンス単位で、変換ブロックに対する直交変換をスキップする変換スキップ(TS:Transform Skip)を有効化するか否かを判定する。第1実施形態においては、変換スキップが有効化されている場合を想定する。TS有効化判定部109bの詳細については、第2実施形態において説明する。
TS適用判定部109cは、差分画像ブロック(変換ブロック)ごとに、直交変換をスキップするか否かを判定する。TS適用判定部109cは、TS有効化判定部109bがフレーム単位又はシーケンス単位で変換スキップを有効化すると判定した場合に限り、直交変換をスキップするか否かの判定を行ってもよい。TS適用判定部109cは、直交変換をスキップすると判定した変換ブロックについて、直交変換をスキップすることを示す制御信号(例えば、transform_skip_flag=1)を生成する。transform_skip_flag=1は、現在の変換ブロックに変換スキップが適用されることを示す。一方で、TS適用判定部109cは、直交変換をスキップしないと判定した変換ブロックについて、直交変換をスキップしないことを示す制御信号(例えば、transform_skip_flag=0)を生成する。
量子化行列判定部109dは、サイズの異なる差分画像ブロック(変換ブロック)ごとに、いかなる量子化行列(例えば、平坦な量子化行列又は平坦でない量子化行列)を選択するかを判定する。例えば、量子化行列判定部109dは、4×4変換ブロックについて、平坦な量子化行列又は平坦でない量子化行列のうちいずれを逆量子化に用いるかをフレーム単位で判定する。平坦な量子化行列としては例えばHEVCで規定されているすべての量子化幅が16と設計された初期値などがある。平坦でない量子化行列を用いると判定された場合、量子化行列判定部109dは、平坦でない量子化行列を用いることを示す制御信号(例えば、scaling_list_enable_flag=1)を生成する。scaling_list_enable_flag=1は、スケーリングリストを変換係数の量子化に用いることを示す。スケーリングリストは、平坦でない量子化行列を構成する各要素(スケーリングファクタ)を示すリストである。或いは、平坦でない量子化行列を用いることを示す制御信号は、4×4ブロックのscaling_list_pred_mode_flag=1、かつ、平坦でない量子化行列を指示又はエンコーダ定義の量子化行列が平坦でないことを示すものであってもよい。scaling_list_pred_mode_flag=1は、スケーリングリスト中の値が明示的に指示(通知)されることを示す。一方で、平坦な量子化行列を用いると判定された場合、量子化行列判定部109dは、平坦な量子化行列を用いることを示す制御信号(例えば、scaling_list_enable_flag=0)を生成する。scaling_list_enable_flag=0は、スケーリングリストを変換係数の量子化に用いないことを示す。或いは、平坦な量子化行列を用いることを示す制御信号は、scaling_list_enable_flag=1であって、4×4ブロックのscaling_list_pred_mode_flag=1、かつ、平坦な量子化行列を指示又はエンコーダ定義の量子化行列が平坦であることを示すものであってもよい。
第1実施形態において、量子化行列判定部109dの判定は、TS適用判定部109cの判定よりも前に行なわれる。TS適用判定部109cは、第1量子化行列(平坦でない量子化行列)を量子化に用いると判定されたフレームに対応する4×4変換ブロックについて、変換スキップを適用するか否かの判定を省略する。TS適用判定部109cの判定を省略することによって、符号化処理の処理量を削減するとともに符号化処理を高速化することができる。そして、変換部104は、制御信号に基づいて、第1量子化行列を量子化に用いると判定された4×4変換ブロックに対して、変換スキップを適用することなく、当該4×4変換ブロックに対する直交変換および量子化処理を行う。換言すると、変換部104は、第1量子化行列を量子化に用いる4×4変換ブロックについては必ず直交変換を行う。これにより、第1量子化行列が適用される4×4変換ブロックに変換スキップが適用されないようにすることができるため、HEVC方式において4×4変換ブロックの変換スキップ時の量子化ひずみに起因する画質の劣化を抑制することができる。
加算部110は、逆変換部107から入力された復元差分画像ブロック信号と、予測部113から入力された予測画像ブロック信号とを加算(合成)して、復元画像ブロック信号を生成する。ここで、加算部110は、復元差分画像ブロック信号を形成する画素毎の信号値と予測画像ブロック信号を形成する信号値のうち対応する画素の信号値とを加算する。加算部110は、生成した復元画像ブロック信号をデブロッキングフィルタ111に出力する。
デブロッキングフィルタ111は、加算部110から入力された復元画像ブロック信号にフィルタリング処理を行ってブロック歪の成分を除去する。また、鮮鋭度向上のためのフィルタ処理(例えばサンプル適応フィルタ:SAO)などを伴ってもよい。デブロッキングフィルタ111は、これらの符号化歪の成分が除去された復元画像ブロック信号を参照画像ブロック信号として参照メモリ112に記憶させる。
参照メモリ112は、デブロッキングフィルタ111から入力された参照画像ブロック信号を、フレームごとに、その参照画像ブロックに応じた表示領域に対応する記憶領域に記憶し、参照画像を示す参照画像信号をフレームごとに記憶する。
予測部113は、参照メモリ112に既に記憶された参照画像信号を用いて公知の予測処理を行って現ブロックに係る予測画像ブロック信号を生成し、生成した予測画像ブロック信号を減算部102に出力する。ここで、予測部113は、現フレームがイントラフレームである場合には、現フレームに係る参照画像信号を用いてイントラ予測を行って現ブロックに係る予測画像ブロック信号を生成する。予測部113は、現フレームがインターフレームである場合には、現フレームとは異なるフレームに係る参照画像信号を用いてインター予測を行って現ブロックに係る予測画像ブロック信号を取得する。ここで、予測部113は、その参照画像信号から現ブロックを基準として動きベクトル算出部116から入力された動きベクトルで指定される位置のブロックを予測画像ブロック信号として抽出する。インター予測に用いられる参照画像信号のフレームは、所定のGOP構造に応じたフレーム順序のうち現フレームがどのフレームであるかによって定められる。なお、予測部113は、選択した予測モードを示すモードデータを符号化データの一部として可逆符号化部114に出力する。
動きベクトル算出部116は、予測部113が予測画像ブロック信号を生成する際に参照する参照画像信号のフレームを示す参照画像データと、フレームバッファ101から入力された入力画像ブロック信号とを比較し、動きベクトルを算出する。動きベクトル算出部116は、現ブロックの代表点(例えば、左上端の画素)から選択した画像ブロックの代表点までのベクトルを動きベクトルと定める。動きベクトル算出部116は、定めた動きベクトルを予め定めた期間記憶する記憶部(図示せず)を備え、定めた動きベクトルとの距離が小さい現ブロックの近傍のブロックの動きベクトルから導かれる候補動きベクトルを予測ベクトルとして選択(ベクトル予測)する。動きベクトル算出部116は、定めた動きベクトルと選択された予測ベクトルとの差分ベクトルを算出し、算出した差分ベクトルと定めた予測ベクトルを示すベクトルインデックスを符号化データの一部として可逆符号化部114に出力する。動きベクトル算出部116は、定めた動きベクトルを予測部113に出力する。
可逆符号化部114には、符号化データ生成部103から符号化データの一部として、量子化変換係数データ、候補行列データ若しくはそのデータに係る符号(該当する場合)が入力され、制御部109から符号化データの一部として制御信号が入力される。可逆符号化部114には、予測部113から符号化データの一部としてモードデータが入力され、動きベクトル算出部116から差分ベクトル、ベクトルインデックス(該当する場合)が入力される。可逆符号化部114は、入力された符号化データをフレームごとに統合し、統合したデータ(統合データ)について可逆符号化、例えば、エントロピー符号化を行ってビットストリームを生成する。可逆符号化部114は、生成したビットストリームを蓄積バッファ115に記憶する。
蓄積バッファ115は、可逆符号化部114から入力されたビットストリームを記憶する。蓄積バッファ115は、記憶したビットストリームを、画像符号化装置1の外部、例えば、画像復号装置2に順次出力する。
(1.1.2)量子化行列の例
次に、量子化行列の例について説明する。図2は、量子化行列の例を示す図である。
図2(a)、(b)は、それぞれ水平方向に4個(4列)、垂直方向に4個(4行)、計16個の量子化値を有する量子化行列tb11、tb21を示す。量子化行列tb11、tb21にそれぞれ含まれる四角形は要素を示す。四角形のそれぞれに記載された数字は量子化値を示し、その量子化値はその四角形の領域の濃淡でも表されている。図2に示す例では、濃く塗りつぶされた領域ほど量子化値が大きく、薄い領域ほど量子化値が小さい。
図2(a)に示すように、量子化行列tb11は、平坦な量子化行列(第2量子化行列)の一例であり、各要素の量子化値はいずれも16である。このような量子化行列を用いると、量子化の対象となる変換係数や信号値が要素によらず同一な精度で量子化できる。そのため、直交変換が行われない場合に、量子化行列tb21等のように量子化値に偏りを有する量子化行列を用いることによる、画質の劣化を回避できる。
図2(b)に示すように、量子化行列tb21は、平坦でない量子化行列(第1量子化行列)の一例である。量子化行列tb21は、水平方向、垂直方向の次数がそれぞれ大きくなるほど、大きな量子化値を有する。量子化行列tb21の左上端(第1行第1列)、中間(第3行第2列)、右下端(第4行第4列)の量子化値は、それぞれ16、22、42である。このような量子化行列では、より左上に配列された要素に係る直交変換係数、つまり低域の変換係数ほど高い精度で量子化され、より右下に配列された要素に係る変換係数、つまり高域の変換係数ほど低い精度で量子化される。そのため、直交変換が行われる場合には、低域ほど濃淡や色相の空間的変化に鋭敏であるという人間の視覚特性を活用し、画質を劣化させずに量子化によって高域での情報量を低減することができる。一方、直交変換を伴わない場合には座標ごとに異なるひずみが生じ、ブロックの右下の劣化が顕著となる。
量子化行列設定部108は、差分画像ブロックの要素数、つまり、ブロックサイズが可変である場合には、ブロックサイズと要素数が等しい量子化行列を選択する。その場合には、量子化行列設定部108は、候補となるブロックサイズのそれぞれに応じた量子化行列を取得する。候補となるブロックサイズは、例えば、水平方向4個、垂直方向4個(計16個)、水平方向8個、垂直方向8個(計64個)、水平方向16個、垂直方向16個(計256個)、水平方向32個、垂直方向32個(計1024個)などであるがそれ以上でもよい。
(1.1.3)ブロック分割
次に、ブロック分割について説明する。
制御部109の分割制御部109aは、符号化がなされる単位である差分画像ブロック(逆変換部107が逆変換処理を行う単位でもある)を分割して更に細分化した変換ブロックを生成するための制御を行う。この差分画像ブロックを原ブロックとして変換ブロックに分割する処理をブロック分割と呼ぶ。符号化がなされる単位である差分画像ブロックは符号化単位(CU:Coding Unit)と呼ばれることがあり、変換ブロックは変換単位(TU:Transform Unit)と呼ばれることがある。分割制御部109aは、例えば非特許文献1に記載のブロック分割を行う。従って、変換ブロックのブロックサイズは可変である。その場合、量子化及び逆量子化で用いられる量子化行列の大きさ(要素数)は変換ブロックのブロックサイズに等しい。
ここで、分割制御部109aは、原ブロックのブロックサイズが予め定めたブロックサイズ(例えば、水平方向64個、垂直方向64個)である場合、この原ブロック(第0階層)を水平方向、垂直方向の要素数がそれぞれ半分の4つのブロック(第1階層)に分割することを試行する。分割制御部109aは、それぞれについて分割を行うか否かを残差の大きさを示す指標(例えば、RDコスト)が分割によって減少するか否かをもって判定する。具体的には、あるブロックについての指標が、そのブロックを仮に分割したブロック毎の指標の合計値よりも大きい場合、分割制御部109aは、そのブロックを分割すると判定する。
そこで、分割制御部109aは、ある階層におけるブロックの各々について、次の階層における4つのブロックに仮に分割し、分割するか否かを判定するといった処理を予め定めた階層数(例えば、4階層)に達するまで繰り返す。分割制御部109aは、分割された変換ブロックの区分を示す区分情報を制御信号として可逆符号化部114及び符号化データ生成部103に出力する。変換ブロックの区分を示す区分情報は、変換ブロックのブロックサイズを示す情報とみなすことができる。
図3は、変換ブロックの区分の一例を示す図である。図3において、原ブロックtb31は3階層に分割されている。原ブロックtb31の右上、左下、右下のブロックtb317、tb318、tb319は、第1階層の変換ブロックである。原ブロックtb31の左上の領域は、さらに分割されている。その領域の右上、左下、右下のブロックtb314、tb315、tb316は、第2階層の変換ブロックである。その領域の左上の領域は、またさらに分割されている。その分割された領域は、4つの変換ブロックtb310、tb311、tb312、tb313であり、第3階層の変換ブロックである。
(1.1.4)符号化処理の動作
次に、第1実施形態に係る符号化処理の例について説明する。図4は、第1実施形態に係る符号化処理の一例を示すフローチャートである。図4に示すフローは、差分画像ブロック信号を構成する変換ブロックごとの符号化処理を示し、分割制御部109aによって4×4変換ブロックであると判定された変換ブロックに適用する。
図4に示すように、ステップS101において、量子化行列判定部109dは、平坦な量子化行列(第2量子化行列)を用いるか又は平坦でない量子化行列(第1量子化行列)を用いるかを判定する。平坦な量子化行列を用いると判定された場合(ステップS101:NO)、量子化行列判定部109dは、平坦な量子化行列を用いることを示す制御信号を符号化データ生成部103及び可逆符号化部114に出力する。その後、ステップS102に処理が進む。
ステップS102において、量子化行列設定部108は、平坦な量子化行列を用いることを示す制御信号に基づいて、予め定めた平坦な量子化行列を示す候補行列データを量子化部105及び逆量子化部106に設定する。候補行列データが示す量子化値m[x][y]は、例えば、式(1)で示す。
m[x][y]=16 … (1)
ここで、x、yは、それぞれ水平方向、垂直方向の要素を示す整数であり、0からxTbS-1、0からyTbS-1のいずれかの値をとる。xTbS、yTbSは、それぞれ変換ブロックの水平方向、垂直方向の要素数を示す整数(例えば、4、8、16、32のいずれか)である。第1実施形態では4×4変換ブロックを対象とするため、xTbS及びyTbSのいずれも4である。その後、ステップS103に処理が進む。
ステップS103において、TS適用判定部109cは、変換処理(直交変換)をスキップするか否かを判定する。具体的には、TS適用判定部109cは、処理対象の4×4変換ブロックにTSモードを適用するか否かを判定する。変換処理をスキップすると判定された場合(ステップS103:YES)、TS適用判定部109cは、変換処理をスキップすることを示す制御信号(transform_skip_flag=1)を符号化データ生成部103及び可逆符号化部114に出力する。その後、ステップS107に進む。一方、変換処理をスキップしないと判定された場合(ステップS103:NO)、TS適用判定部109cは、変換処理をスキップしないことを示す制御信号(transform_skip_flag=0)を符号化データ生成部103及び可逆符号化部114に出力する。
その後、ステップS104において、変換部104は、変換処理をスキップしないことを示す制御信号に基づいて、処理対象の4×4変換ブロックに対する直交変換を行う。そして、ステップS107に進む。
一方、平坦でない量子化行列を用いると判定された場合(ステップS101:YES)、量子化行列判定部109dは、平坦でない量子化行列を用いることを示す制御信号と、変換処理をスキップしないことを示す制御信号(transform_skip_flag=0)とを符号化データ生成部103及び可逆符号化部114に出力する。量子化行列判定部109dは、変換処理をスキップしないことを示す制御信号を出力するようTS適用判定部109cに指示してもよい。ここで、平坦でない量子化行列を用いると判定された場合には、変換処理をスキップするか否かの判定をTS適用判定部109cが行わない。
ステップS105において、量子化行列設定部108は、平坦でない量子化行列を用いることを示す制御信号に基づいて、平坦でない量子化行列を量子化部105及び逆量子化部106に設定する。
そして、ステップS106において、変換部104は、変換処理をスキップしないことを示す制御信号に基づいて、処理対象の4×4変換ブロックに対する直交変換を行う。その後、S107に進む。
ステップS107において、量子化部105は、処理対象の4×4変換ブロックを、量子化行列設定部108が設定した量子化行列と量子化パラメータqPを用いて量子化し、量子化係数データを生成する。量子化部105は、生成した量子化係数データを逆量子化部106及び可逆符号化部114に出力する。量子化部105は、量子化を行う際、例えば、式(2)の右辺の値が変換係数d[x][y]に最も近似する変換係数レベル値TransCoeffLevel[xTbY][yTbY][cIdx][x][y]を選択する。
d[x][y]=Clip3(coeffMin,coeffMax,((TransCoeffLevel[xTbY][yTbY][cIdx][x][y]*m[x][y]*levelScale[qP%6]<<(qP/6))+(1<<(bdShift-1)))>>bdShift) … (2) (H.265 8-311)
ここで、Clip3(a,b,xx)は、実数xxが実数aよりも小さい場合には、aと定め、実数xxが実数bよりも大きい場合には、bと定め、実数xxがa又はaよりも大きく、かつb又はbよりも小さい場合には、そのままxxと定める関数である。xTbY、yTbYは、それぞれ処理対象となる変換ブロック(対象ブロック)の左上端の水平方向、垂直方向の座標値を示す。coeffMin,coeffMaxは、それぞれ16ビットで示された要素毎の信号値の最小値、最大値を示す。cIdxは、信号値の種類を示すインデックスである。cIdx=0,1、2とは、それぞれ輝度信号、色差信号Cb、色差信号Crを示す。levelScale[0]-levelScale[5](H.265 8.4.4.2.7 Decoding process for palette mode(8-76)の次)は、それぞれ、40、45、57、64、72である。qPは、量子化パラメータ、つまり量子化精度を示す整数であって6増加する度に量子化値を半分にすることを促すパラメータである。qP%6は、qPを6で除算して得られる剰余を示す。a<<bは、aの値を二進表示でb桁だけ左側にシフトすること、つまり、2のb乗を乗算することを示すビットシフト演算子である。a>>bは、aの値を二進表示でb桁だけ右側にシフトすること、つまり、2のb乗を除算することを示すビットシフト演算子である。bdShiftは、信号値の種類に応じて予め定められたビットシフト値である。例えば、信号値が輝度信号Yである場合、bdShiftは、BitDepthY+Log2(nTbS)-5である。BitDepthYは、輝度信号Yのビット深度、つまり量子化ビット数(例えば、10ビット)を示す。nTbSは、対象ブロックのブロックサイズを示す。信号値が色差信号Cb、Crである場合、bdShiftは、BitDepthC+Log2(nTbS)-5である。BitDepthCは、輝度信号Cb、Crのビット深度、つまり量子化ビット数(例えば、10ビット)を示す。ここで、qPは、フレームの種類によって異なる値であってもよい。その後、ステップS108に処理が進む。
ステップS108において、量子化部105は、選択した係数レベル値を示す量子化変換係数データを可逆符号化部114に符号化データの一部として出力する。
また、量子化部105は、この量子化変換係数データを逆量子化部106に出力する。出力された量子化変換係数データは、逆量子化部106において逆量子化され、量子化された変換係数d[x][y]が算出される。その後、図4に示す処理を終了する。
このように、4×4変換ブロックにおいて平坦でない量子化行列を用いる場合、TSモードの適用/非適用の判断を回避することができ、高速かつ低消費電力を実現することができる。また、平坦でない量子化行列を用いる場合、TSモードを選択することによる空間的な量子化ひずみの発生を抑制することができ、復号画像の主観的な品質を向上することができる。
(1.2)画像復号装置
第1実施形態に係る画像符号化装置について説明する。
(1.2.1)画像復号装置の構成
図5は、第1実施形態に係る画像復号装置2の構成を示すブロック図である。
図5に示すように、画像復号装置2は、制御部200、蓄積バッファ201、可逆復号部202、符号化データ復号部203、加算部(合成部)207、デブロッキングフィルタ208、参照メモリ209、予測部210、フレームバッファ211、及び動きベクトル算出部212を備える。
第1実施形態に係る画像復号装置2は、予測画像と入力画像との残差である残差画像の一部である変換ブロックに対する逆量子化を行う逆量子化部204と、逆量子化が施された変換ブロックに対する逆直交変換を行う逆変換部205と、4×4のサイズを有する4×4変換ブロックについて、異なる値の要素からなる第1量子化行列及び等しい値の要素からなる第2量子化行列のうちいずれを逆量子化に用いるかをフレーム単位で判定する量子化行列判定部200dとを備える。逆変換部205は、量子化行列判定部200dによって第1量子化行列を量子化に用いると判定されたフレームに対応する各4×4変換ブロックに対して、逆直交変換をスキップする変換スキップを適用することなく、当該4×4変換ブロックに対する逆直交変換を行う。
蓄積バッファ201には、画像復号装置2の外部、例えば、画像符号化装置1からビットストリームが入力され、入力されたビットストリームが一時的に記憶される。蓄積バッファ201では、入力されたビットストリームがフレームごとに統合される。
可逆符号復号部202は、蓄積バッファ201からフレーム毎のビットストリームを読み出し、読み出したビットストリームについて可逆符号の復号を行って符号化データを生成する。可逆符号復号部202が用いる可逆符号復号方式は、可逆符号化部114が用いた可逆符号化方式に対応する復号方式である。
可逆符号復号部202は、復号した符号化データのうち、量子化変換係数データ、候補行列データ若しくはそのデータに係る符号(該当する場合)を符号化データ復号部203に出力する。可逆符号復号部202は、復号した符号化データのうち、制御信号を制御部200に出力する。可逆符号復号部202は、復号した符号化データのうち、モードデータを予測部210に出力し、差分ベクトル及びベクトルインデックス(該当する場合)を動きベクトル算出部212に出力する。
符号化データ復号部203は、逆量子化部204、逆変換部205、及び量子化行列設定部206を備える。
逆量子化部204は、可逆符号復号部202から入力された量子化変換係数データが示す量子化変換係数を、量子化行列設定部206が設定した量子化行列を用いて逆量子化して変換係数を算出する。逆量子化部204は、算出した変換係数を示す復元変換係数データを逆変換部205に出力する。
逆変換部205は、逆量子化部204から入力された復元変換係数について逆直交変換を行って復元差分ブロック画像信号を生成する。逆変換部205は、生成した復元差分ブロック画像信号を加算部207に出力する。逆変換部205が用いる逆直交変換は、変換部104(図1参照)が行う直交変換の逆演算である。また、制御部200から入力された制御信号が逆直交変換をスキップすることを示している場合には、逆変換部205は、逆直交変換をスキップする。その場合には、入力される量子化変換係数データは、量子化された差分ブロック画像の信号値を示す信号である。そのため、逆変換部205は、入力された復元変換係数データを逆変換せずに復元差分ブロック画像信号として加算部207に出力する。
量子化行列設定部206は、制御部200及び可逆符号復号部202から入力された制御信号が示す処理態様に応じた候補行列データ若しくはそのデータに係る符号が示す量子化行列を逆量子化部204に設定する。量子化行列設定部206は、量子化行列設定部108(図1)と同一の候補行列データを取得する構成、例えば、記憶部を備える。
制御部200は、可逆符号復号部202が出力する制御信号に基づいて、画像復号装置2全体の動作を制御する。制御部200は、ブロックサイズ判定部200a、TS有効化判定部200b、TS適用判定部200c、及び量子化行列判定部200dを備える。
ブロックサイズ判定部200aは、変換ブロックごとに、4×4のブロックサイズを有する4×4変換ブロックであるか否かを判定し、判定結果を示す制御信号を符号化データ復号部203に出力する。例えば、ブロックサイズ判定部200aは、制御信号のうち、分割された変換ブロックの区分を示す区分情報に基づいて、4×4変換ブロックであるか否かを判定する。
TS有効化判定部200bは、フレーム単位又はシーケンス単位で変換スキップを有効化するか否かを示す制御信号(例えば、transform_skip_enabled_flag)に基づいて、フレーム単位又はシーケンス単位で変換スキップが有効化されているか否かを判定し、判定結果を示す制御信号を符号化データ復号部203に出力する。第1実施形態においては、変換スキップが有効化されている場合を想定する。TS有効化判定部200bの詳細については、第2実施形態において説明する。
TS適用判定部200cは、直交変換をスキップするか否かを示す制御信号(transform_skip_flag)に基づいて、変換ブロックごとに、逆直交変換をスキップするか否かを判定し、判定結果を示す制御信号を符号化データ復号部203に出力する。例えば、TS有効化判定部200bは、処理対象の変換ブロックについて、transform_skip_flag=1である場合、逆直交変換をスキップすると判定する。TS有効化判定部200bは、処理対象の変換ブロックについて、transform_skip_flag=0である場合、逆直交変換をスキップしないと判定してもよい。
量子化行列判定部200dは、平坦な量子化行列を用いるか又は平坦でない量子化行列を用いるかを示す制御信号に基づいて、サイズの異なる変換ブロックごとに、平坦な量子化行列を用いるか又は平坦でない量子化行列を逆量子化に用いるかを判定し、判定結果を示す制御信号を符号化データ復号部203に出力する。例えば、量子化行列判定部200dは、処理対象の変換ブロックについて、scaling_list_enable_flag=1である場合、平坦でない量子化行列を逆量子化に用いると判定する。或いは、量子化行列判定部200dは、制御信号が、4×4ブロックのscaling_list_pred_mode_flag=1、かつ、平坦でない量子化行列を指示又はエンコーダ定義の量子化行列が平坦でないことを示す場合、平坦でない量子化行列を逆量子化に用いると判定してもよい。一方で、量子化行列判定部200dは、scaling_list_enable_flag=0である場合、平坦な量子化行列を逆量子化に用いると判定する。或いは、量子化行列判定部200dは、制御信号が、scaling_list_enable_flag=1であって、4×4ブロックのscaling_list_pred_mode_flag=1、かつ、平坦な量子化行列を指示又はエンコーダ定義の量子化行列が平坦であることを示す場合、平坦な量子化行列を逆量子化に用いると判定してもよい。
第1実施形態において、量子化行列判定部200dは、TS適用判定部200cの判定よりも前に上述した判定を行う。TS適用判定部200cは、平坦でない量子化行列(第1量子化行列)を逆量子化に用いると判定された4×4変換ブロックについて、変換スキップを適用するか否かの判定を省略する。これにより、TS適用判定部200cの判定を省略し、復号処理の処理量を削減でき、復号処理を高速化できる。
そして、逆変換部205は、平坦でない量子化行列を逆量子化に用いると判定された4×4変換ブロックに対して、変換スキップを適用することなく、当該4×4変換ブロックに対する逆直交変換を行う。換言すると、逆変換部205は、平坦でない量子化行列を逆量子化に用いる4×4変換ブロックについては必ず逆直交変換を行う。これにより、平坦でない量子化行列が適用される4×4変換ブロックに変換スキップが適用されないようにすることができるため、HEVC方式において4×4変換ブロックの量子化ひずみに起因する画質の劣化を抑制できる。
加算部207は、逆変換部205から入力された復元差分画像ブロック信号と、予測部210から入力された予測画像ブロック信号を加算(合成)して復元画像ブロック信号を生成する。加算部207は、生成した復元画像ブロック信号をデブロッキングフィルタ208に出力する。
デブロッキングフィルタ208は、加算部207から入力された復元画像ブロック信号にフィルタリング処理を行ってブロック歪の成分を除去する。また、画像の微細部分の明瞭性を表す鮮鋭度向上のためのフィルタ処理(例えばサンプル適応フィルタ:SAO)などを伴ってもよい。デブロッキングフィルタ208は、ブロック歪の成分が除去された復元画像ブロック信号を参照画像ブロック信号として参照メモリ209及びフレームバッファ211に記憶する。
参照メモリ209は、デブロッキングフィルタ208から入力された参照画像ブロック信号をフレームごとに、その参照画像ブロックに応じた表示領域に対応する記憶領域に記憶する。これにより、参照画像を示す参照画像信号がフレームごとに記憶できる。
予測部210は、参照メモリ209に記憶された参照画像信号を用いて、現ブロックに係る予測画像ブロック信号を生成し、生成した予測画像ブロック信号を加算部207に出力する。現フレームがイントラフレームである場合には、予測部210はイントラ予測を行う。現フレームがインターフレームである場合には、予測部210は現フレームとは異なるフレームに係る参照画像信号を用いてインター予測を行って現ブロックに係る予測画像ブロック信号を生成する。インター予測に用いられる参照画像信号のフレームは、所定のGOP構造に応じたフレーム順序のうち現フレームがどのフレームであるかによって定められる。インター予測を行う際、予測部210は、可逆符号復号部202から入力されたモードデータが示す予測モード(例えば、動き補償予測モード、マージモード等)で予測処理を行う。
予測部210は、インター予測を行う場合、定められたフレームの参照画像信号から動きベクトル算出部212から入力された動きベクトルで指定される領域の参照画像ブロック信号を抽出し、抽出した参照画像ブロック信号を用いて予測画像ブロック信号を生成する。
フレームバッファ211は、デブロッキングフィルタ部208から入力された復元画像ブロック信号をフレームごとに、その復元画像ブロックに応じた表示領域に対応する記憶領域に記憶する。これにより、フレームバッファ211は、フレーム毎の復元画像信号を記憶領域に記憶する。フレームバッファ211は、記憶している復元画像信号を予め定めたGOP構造に係るフレームの順序に復元画像信号を並び替える。フレームバッファ211は、フレームごとに復元画像信号を画像復号装置2の外部に備えた、例えば、画像表示装置(ディスプレイ)に出力する。
(1.2.2)復号処理の例
次に、第1実施形態に係る復号処理の例について説明する。図6は、第1実施形態に係る復号処理の一例を示すフローチャートである。図6に示すフローは、変換ブロックごとに復号処理を実行する。また、図6に示すフローは、ブロックサイズ判定部200aによって4×4変換ブロックであると判定された変換ブロックに対して適用される。
図6に示すように、ステップS201において、符号化データ復号部203は、可逆符号復号部202から符号化データの一部として制御信号、量子化変換係数データ、候補行列データ若しくはそのデータに係る符号を入力する。その後、ステップS202に進む。
ステップS202において、量子化行列判定部200dは、入力された制御信号が量子化変換係数の逆量子化に用いる量子化行列が平坦な量子化値を用いることを示すものであるか、又は平坦でない量子化行列を用いることを示すものであり4×4に関して平坦な量子化値の行列であるか判定する。平坦な量子化行列を用いるものであると判定した場合(ステップS202:NO)、量子化行列判定部200dは、平坦な量子化行列を用いることを示す制御信号を符号化データ復号部203に出力する。その後、ステップS203に進む。
ステップS203において、量子化行列設定部206は、平坦な量子化行列を用いることを示す制御信号に基づいて、予め定めた平坦な量子化行列を示す候補行列データを逆量子化部204に設定する。この候補行列データが示す量子化値は、例えば、式(1)で示すm[x][y]としてもよい。次に、ステップS204において、逆量子化部204は、平坦な量子化値からなる量子化行列を用いて、処理対象の4×4変換ブロックに対する逆量子化を行う。逆量子化部204は、可逆符号復号部202から入力された量子化変換係数データが示す量子化変換係数を量子化行列設定部206が設定した候補行列データと量子化パラメータQpとが示す量子化値を用いて逆量子化する。ここで、逆量子化部204は、例えば、式(2)を用いて復元変換係数d[x][y]を算出する。算出する過程で、量子化変換係数データが示す変換係数レベル値TransCoeffLevel[xTbY][yTbY][cIdx][x][y]と候補行列データが示す量子化値m[x][y]とを用いて復元変換係数d[x][y]を算出してもよい。その後、ステップS205に進む。
ステップS205において、TS適用判定部200cは、入力された制御信号が変換処理をスキップすることを示すものであるか否かを判定する。変換処理をスキップすることを示すもの(transform_skip_flag=1)であると判定された場合(ステップS205:YES)、TS適用判定部200cは、逆直交変換をスキップすることを示す制御信号を出力する。この場合、逆変換部205は、処理対象の4×4変換ブロックに対する逆直交変換をスキップし、逆量子化部204から入力された復元変換係数データを復元差分画像ブロックとして加算部207に出力する。一方、変換処理をスキップしないことを示すもの(transform_skip_flag=0)であると判定された場合(ステップS205:NO)、TS適用判定部200cは、逆直交変換をスキップしないことを示す制御信号を出力し、ステップS206に進む。
ステップS206において、逆変換部205は、逆量子化部204から入力された復元変換係数データが示す復元変換係数について逆直交変換処理を行って復元差分画像ブロックを生成する。逆変換部205は、生成した復元差分画像ブロックを加算部207に出力する。
一方、平坦でない量子化行列を用いると判定した場合(ステップS202:YES)、量子化行列判定部200dは、平坦でない量子化行列を用いることを示す制御信号を符号化データ復号部203に出力し、ステップS207に進む。
ステップS207において、量子化行列設定部206は、可逆符号復号部202から入力された制御信号が示す量子化行列を逆量子化部204に設定する。その後、ステップS208に進む。
ステップS208において、逆量子化部204は、平坦でない量子化行列を用いて、処理対象の4×4変換ブロックに対する逆量子化を行う。
次に、ステップS209において、逆変換部205は、逆量子化部204から入力された復元変換係数データが示す復元変換係数について逆直交変換処理を行って復元差分画像ブロックを生成し、生成した復元差分画像ブロックを加算部207に出力する。なお、平坦でない量子化行列を用いると判定された場合には、変換処理をスキップするか否かの判定をTS適用判定部200cが行わない。
上述したように、平坦でない量子化行列(第1量子化行列)を用いる場合にはTSモードを用いることがないため、TS適用判定部200cは、直交変換の適用の有無の判定を省略できる。また、直交変換が行われなかった変換ブロックの各要素の信号値が等しい精度で逆量子化されるため、当該ブロック内で精度が不均等になることによる画質の劣化を回避できる。例えば、周波数成分が高い高域成分を多く含む領域が分布している画像について、復号画像の主観的な品質を向上できる。
(1.3)第1実施形態のまとめ
第1実施形態に係る画像符号化装置1において、変換部104は、第1量子化行列(平坦でない量子化行列)を量子化に用いると判定されたフレームに対応する4×4変換ブロックに対して、変換スキップを適用することなく、当該4×4変換ブロックに対する直交変換を行う。換言すると、変換部104は、第1量子化行列を量子化に用いる4×4変換ブロックについては必ず直交変換を行う。また、第1実施形態に係る画像復号装置2において、逆変換部205は、第1量子化行列を逆量子化に用いると判定された4×4変換ブロックに対して、変換スキップを適用することなく、当該4×4変換ブロックに対する逆直交変換を行う。換言すると、逆変換部205は、第1量子化行列を逆量子化に用いる4×4変換ブロックについては必ず逆直交変換を行う。よって、第1量子化行列が適用される4×4変換ブロックに変換スキップを適用しないようにできるため、HEVC方式において自然画像等の一般的な画像の画質を向上させることができる。
第1実施形態に係る画像符号化装置1において、TS適用判定部109bは、第2量子化行列(平坦な量子化行列)を量子化に用いると判定されたフレームに対応する4×4変換ブロックに対して、変換スキップを有効化する。換言すると、TS適用判定部109bは、第1量子化行列を量子化に用いる4×4変換ブロックに変換スキップを適用することなく、第2量子化行列を量子化に用いる4×4変換ブロックに変換スキップを適用可能にする。また、第1実施形態に係る画像復号装置2において、TS適用判定部200cは、第2量子化行列(平坦な量子化行列)を量子化に用いると判定されたフレームに対応する4×4変換ブロックに対して、変換スキップを有効化する。換言すると、TS適用判定部200cは、第1量子化行列を量子化に用いる4×4変換ブロックに変換スキップを適用することなく、第2量子化行列を量子化に用いる4×4変換ブロックに変換スキップを適用可能にする。このように、変換スキップを適用する4×4変換ブロックに対して第2量子化行列を用いて量子化・逆量子化を行うことによって、CGや、自然画像とCGが混在する画像の画質を向上できる。
さらに、第1実施形態に係る画像符号化装置1において、TS適用判定部109cは、第1量子化行列(平坦でない量子化行列)を量子化に用いると判定されたフレームに対応する4×4変換ブロックについて、変換スキップを適用するか否かの判定を省略する。また、第1実施形態に係る画像復号装置2において、TS適用判定部200cは、第1量子化行列を逆量子化に用いると判定されたフレームに対応する4×4変換ブロックについて、変換スキップを適用するか否かの判定を省略する。これにより、符号化処理及び復号処理の処理量を削減するとともに、符号化処理及び復号処理を高速化できる。
(2)第2実施形態
次に、第2実施形態について、第1実施形態との相違点を主として説明する。
(2.1)画像符号化装置
第2実施形態に係る画像符号化装置1について説明する。
(2.1.1)画像符号化装置の構成
第2実施形態に係る画像符号化装置1の機能ブロック構成は、第1実施形態に係る画像符号化装置1の機能ブロック構成(図1参照)と同様である。但し、一部のブロックの動作が第1実施形態とは異なる。
第2実施形態に係る画像符号化装置1は、予測画像と入力画像との残差である残差画像の一部である変換ブロックに対する直交変換を行う変換部104と、4×4のサイズを有する4×4変換ブロックについて、直交変換をスキップする変換スキップ(TSモード)を有効化するか否かを、1又は複数のフレームからなるシーケンス単位で判定するTS有効化判定部109dと、TS有効化判定部109dによって変換スキップが有効化されたと判定されたシーケンスに対応する各4×4変換ブロックに対して、異なる値の要素からなる第1量子化行列を用いることなく、等しい値の要素からなる第2量子化行列を用いて量子化を行う量子化部105とを備える。このように、第2実施形態に係る画像符号化装置1は、シーケンス単位でTSモードを有効化する場合に、シーケンスレベル(SPS:Sequence paramater set)で共通の量子化行列として、4×4変換ブロックについて平坦な量子化行列(第2量子化行列)を設定する。
第2実施形態において、TS有効化判定部109bは、1又は複数のフレームからなるシーケンス単位で、変換スキップを有効化するか否か(すなわち、TSモードを選択可能にするか否か)を判定する。シーケンス単位で変換スキップを有効化すると判定した場合、TS有効化判定部109bは、その旨の制御信号(例えば、transform_skip_enabled_flag=1)を出力する。transform_skip_enabled_flag=1は、対応するシーケンスについてtransform_skip_flagが存在し得ることを示す。一方で、シーケンス単位で変換スキップを有効化しないと判定した場合、TS有効化判定部109bは、その旨の制御信号(例えば、transform_skip_enabled_flag=0)を出力する。transform_skip_enabled_flag=0は、対応するシーケンスについてtransform_skip_flagが存在しないことを示す。なお、TS有効化判定部109bは、例えば、符号化の前処理においてCG(あるいはCGに似た性質)の入力信号であるかどうかを検出し、TSモードを有効化する。TS有効化判定部109bは、すでに符号化した映像を解析し、TSモードを有効化してもよい。
第2実施形態において、量子化部105は、TS有効化判定部109bによって変換スキップが有効化されたシーケンスを構成するフレームにおける4×4変換ブロックに対して、異なる値の要素からなる第1量子化行列(平坦でない量子化行列)を用いることなく、等しい値の要素からなる第2量子化行列(平坦な量子化行列)を用いて量子化を行うよう設定する。換言すると、量子化部105は、TS有効化判定部109bによって変換スキップが有効化されたシーケンスを構成するフレームについては、4×4変換ブロックに対する量子化を行う際に、必ず第2量子化行列を用いる。これにより、ピクチャ単位で設定することなく直交変換がスキップされた4×4変換ブロックに第1量子化行列が適用されないようにすることができる。
量子化部105は、TS有効化判定部109bによって変換スキップが有効化されたシーケンスを構成するフレームについて、可逆符号化部114に出力する量子化情報(すなわち、量子化行列に関する符号化信号)として、代替する符号量の少ない仮想データに置き換えてもよい。後述するように、画像復号装置2は、変換スキップが有効化されたシーケンスについては、等しい値の要素からなる第2量子化行列(平坦な量子化行列)を暗黙的に用いて逆量子化を行う。この場合、画像復号装置2は、4×4ブロックの量子化行列に関する符号化信号を無視することが可能である。量子化行列に関する符号化信号を、符号量の少ない仮想データに置き換えることによって、信号を復号せずに暗黙的に量子化行列を解し、判定を行う必要がなくなり処理量の低減が行える。
第2実施形態において、量子化行列判定部109dは、変換スキップが有効化されたシーケンスに対応する各4×4変換ブロックについて、第1量子化行列及び第2量子化行列のいずれを量子化に用いるかの判定を省略する。これにより、符号化処理の処理量を削減するとともに符号化処理を高速化することができる。
(2.1.2)符号化処理の動作
次に、第2実施形態に係る符号化処理の例について説明する。図7は、第2実施形態に係る符号化処理の一例を示すフローチャートである。図7に示すフローは、変換ブロックごとに符号化処理を実行する。また、図7に示すフローは、分割制御部109aによって4×4変換ブロックであると判定された変換ブロックに対して適用される。なお、上述した第1実施形態に係る符号化処理(図4参照)と同一の処理については、同一の符号を付して説明を適宜援用する。
図7に示すように、ステップS301において、TS有効化判定部109bは、シーケンス単位で変換スキップを有効化するか否か(すなわち、TSモードを選択可能にするか否か)を判定する。シーケンス単位で変換スキップを有効化しないと判定した場合(ステップS301:NO)、ステップS302において、変換スキップ(TSモード)を使用しない従来の符号化処理と同様の処理を行う。その後、ステップS106において、変換部104は、処理対象の4×4変換ブロックに対する直交変換を行う。そして、S107に進む。
一方で、シーケンス単位で変換スキップを有効化すると判定した場合(ステップS301:YES)、TS有効化判定部109bは、シーケンス単位で変換スキップを有効化することを示す制御信号(例えば、transform_skip_enabled_flag=1)を出力する。量子化行列判定部109dは、シーケンス単位で変換スキップを有効化することを示す制御信号に基づいて、4×4変換ブロック用の量子化行列として平坦な量子化値からなる量子化行列を量子化部105及び逆量子化部106に設定する。平坦な量子化行列として、例えば式(1)を適用する。この場合、量子化行列判定部109dは、変換スキップが有効化されたシーケンスに対応する各4×4変換ブロックについて、第1量子化行列及び第2量子化行列のいずれを量子化に用いるかの判定を省略する。その後、ステップS103に処理が進む。
ステップS103において、TS適用判定部109cは、変換処理(直交変換)をスキップするか否かを判定する。その後の動作については、第1実施形態に係る符号化処理(図4参照)と同様である。
このように、変換スキップが有効化されたシーケンスに対応する各4×4変換ブロックについては、第1量子化行列及び第2量子化行列のいずれを量子化に用いるかの判定を省略し、平坦な量子化行列を量子化に用いる。これにより、平坦でない量子化行列を設定時にTSモードを適用することによって生じる画質劣化を生じることなく、高速、低消費電力かつ高品質な符号化処理を行うことができる。
(2.2)画像復号装置
第2実施形態に係る画像復号装置2について説明する。
(2.2.1)画像復号装置の構成
第2実施形態に係る画像復号装置2の機能ブロック構成は、第1実施形態に係る画像復号装置2の機能ブロック構成(図5参照)と同様である。但し、一部のブロックの動作が第1実施形態とは異なる。
第2実施形態に係る画像復号装置2は、予測画像と入力画像との残差である残差画像の一部である変換ブロックに対する逆量子化を行う逆量子化部204と、逆量子化が施された変換ブロックに対する逆直交変換を行う逆変換部205と、4×4のサイズを有する4×4変換ブロックについて、直交変換をスキップする変換スキップが有効化されているか否かを、1又は複数のフレームからなるシーケンス単位で判定するTS有効化判定部200bとを備える。逆変換部205は、TS有効化判定部によって変換スキップが有効化されていると判定されたシーケンスに対応する各4×4変換ブロックに対して、異なる値の要素からなる第1量子化行列を用いることなく、等しい値の要素からなる第2量子化行列を用いて逆量子化を行う。
第2実施形態において、TS有効化判定部200bは、シーケンス単位で変換スキップを有効化するか否かを示す制御信号(例えば、transform_skip_enabled_flag)に基づいて、シーケンス単位で変換スキップが有効化されているか否か(すなわち、TSモードを選択可能にされているか否か)を判定し、判定結果を示す制御信号を符号化データ復号部203に出力する。
例えば、TS有効化判定部200bは、transform_skip_enabled_flag=1である場合、シーケンス単位で変換スキップが有効化されていると判定する。TS有効化判定部200bは、transform_skip_enabled_flag=0である場合、シーケンス単位で変換スキップが有効化されていないと判定する。TS有効化判定部200bは、シーケンス単位で変換スキップが有効化されていると判定した場合、平坦な量子化行列を用いることを示す制御信号を符号化データ復号部203に出力してもよい。
第2実施形態において、逆量子化部204は、フレーム単位又はシーケンス単位で変換スキップが有効化されていることを示す制御信号(又は平坦な量子化行列を用いることを示す制御信号)に基づいて、変換スキップが有効化されたシーケンスのフレームに対応する変換ブロックに対して、異なる値の要素からなる第1量子化行列(平坦でない量子化行列)を用いることなく、等しい値の要素からなる第2量子化行列(平坦な量子化行列)を用いて逆量子化を行う。換言すると、逆量子化部204は、TS有効化判定部200bによって変換スキップが有効化されていると判定されたシーケンスのフレームについては、4×4変換ブロックに対する逆量子化を行う際に、必ず第2量子化行列を用いる。これにより、直交変換がスキップされた4×4変換ブロックに第1量子化行列が適用されないようにできる。
第2実施形態において、量子化行列判定部200dは、変換スキップが有効化されたシーケンスのフレームに対応する各4×4変換ブロックについて、第1量子化行列及び第2量子化行列のいずれを逆量子化に用いるかの判定を省略する。これにより、復号処理の処理量を削減するとともに復号処理を高速化できる。
なお、量子化行列判定部200d(及び量子化行列設定部206)は、変換スキップが有効化されたシーケンスのフレームについては、可逆符号復号部202が復号した符号化データに含まれる量子化行列に関する符号化信号(候補行列データ等)を無視してもよい。
(2.2.2)復号処理の動作
次に、第2実施形態に係る復号処理の例について説明する。図8は、第2実施形態に係る復号処理の一例を示すフローチャートである。図8に示すフローは、変換ブロックごとに復号処理を実行する。また、図8に示すフローは、ブロックサイズ判定部200aによって4×4変換ブロックであると判定された変換ブロックに対して適用される。なお、上述した第1実施形態に係る復号処理(図6参照)と同一の処理については、同一の符号を付して説明を適宜援用する。
図8に示すように、ステップS201において、符号化データ復号部203は、可逆符号復号部202から符号化データの一部として制御信号、量子化変換係数データを入力し、ステップS401に進む。
ステップS401において、TS有効化判定部200bは、シーケンス単位で変換スキップを有効化するか否かを示す制御信号(例えば、transform_skip_enabled_flag)に基づいて、シーケンス単位で変換スキップが有効化されているか否かを判定する。シーケンス単位で変換スキップが有効化されていないと判定した場合(ステップS401:NO)、ステップS402において、変換スキップ(TSモード)を使用しない従来の復号処理と同様の処理を行う。
一方で、シーケンス単位で変換スキップが有効化されていると判定した場合(ステップS401:YES)、TS有効化判定部200bは、4x4ブロックにおいて平坦な量子化行列を用いることを示す制御信号を符号化データ復号部203に出力する。そして、ステップS203において、量子化行列設定部206は、平坦な量子化行列を用いることを示す制御信号に基づいて、予め定めた平坦な量子化行列を示す候補行列データを逆量子化部204に設定する。候補行列データが示す量子化値は、例えば、式(1)で示されるm[x][y]としてもよい。その後の動作については、第1実施形態に係る復号処理(図6参照)と同様である。
このように、符号化シーケンスについて直交変換をスキップした符号化が行われていた場合は、4×4変換ブロックにおいて平坦な量子化行列が使われることが暗黙的に決定する。これにより、量子化行列の設定に関する処理が不要となり、処理を低減できる。また、暗黙的に設定されることから、量子化行列に関する符号化信号にエラーが重畳しても正常な復号処理を行うことが可能であると同時に、符号化情報として代替する符号量の少ない仮想データに置き換えることによって符号量の削減できる。
(2.3)第2実施形態のまとめ
第2実施形態に係る画像符号化装置1において、量子化部105は、TS有効化判定部109bによって変換スキップが有効化されたシーケンスにおける4×4変換ブロックに対して、異なる値の要素からなる第1量子化行列(平坦でない量子化行列)を用いることなく、等しい値の要素からなる第2量子化行列(平坦な量子化行列)を用いて量子化を行う。また、第2実施形態に係る画像復号装置2において、逆量子化部204は変換スキップが有効化されたシーケンスに対応する4×4変換ブロックに対して、異なる値の要素からなる第1量子化行列(平坦でない量子化行列)を用いることなく、等しい値の要素からなる第2量子化行列(平坦な量子化行列)を用いて逆量子化を行う。これにより、直交変換がスキップされた4×4変換ブロックに第1量子化行列が適用されないようにすることができるため、HEVC方式において4×4変換ブロックの量子化ひずみに起因する画質の劣化を抑制することができる。特に、CG画像又は自然画像とCG画像等の人工画像が混在する画像の画質を向上させることができる。
さらに、第2実施形態に係る画像符号化装置1において、量子化行列判定部109dは、変換スキップが有効化されたシーケンスに対応する各4×4変換ブロックについて、第1量子化行列及び第2量子化行列のいずれを量子化に用いるかの判定を省略する。また、第2実施形態に係る画像復号装置2において、量子化行列判定部200dは、変換スキップが有効化されたシーケンスに対応する各4×4変換ブロックについて、第1量子化行列及び第2量子化行列のいずれを逆量子化に用いるかの判定を省略する。かかる判定を省略することによって、符号化処理及び復号処理の処理量を削減するとともに、符号化処理及び復号処理を高速化することができる。
(3)その他の実施形態
上述した第1及び第2実施形態は、画像符号化装置1と画像復号装置2を備えた画像処理システムとして実施してもよい。当該画像処理システムは、画像符号化装置1が出力した符号化データを記憶する記憶媒体を備え、画像復号装置2には当該記憶媒体から読み出された符号化データが入力されてもよい。また、当該画像処理システムは、画像符号化装置1が出力した符号化データを伝送するネットワークを備え、画像復号装置2には当該ネットワークが伝送した符号化データが入力されるようにしてもよい。当該ネットワークは、有線でも無線であってもよいし、複数の送信先に一斉にデータを送信する放送伝送路の一部又は全部であってもよい。
変換ブロックは、上述のように水平方向の要素数と垂直方向の要素数が等しい正方形のブロックに限られない。変換ブロックは、水平方向の要素数と垂直方向の要素数が異なる矩形のブロックであってもよく、水平方向の要素数と垂直方向の要素数のいずれかが1である線形のブロックであってもよい。
なお、上述した第1及び第2実施形態における画像符号化装置1又は画像復号装置2の一部、例えば、減算部102、変換部104、量子化部105、逆量子化部106、逆変換部107、量子化行列設定部108、制御部109、加算部110、デブロッキングフィルタ111、予測部113、可逆符号化部114、制御部200、可逆符号復号部202、逆量子化部204、逆変換部205、量子化行列設定部206、加算部207、デブロッキングフィルタ208、及び予測部210の各機能をコンピュータで実現するようにしてもよい。その場合、これらの機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、当該プログラムを実行することによって実現してもよい。なお、ここでいう「コンピュータシステム」とは、画像符号化装置1又は画像復号装置2に内蔵されたコンピュータシステムであって、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD-ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでもよい。また上記プログラムは、前述した機能の一部を実現するためのものであってもよく、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよい。
また、上述した第1及び第2実施形態における画像符号化装置1及び画像復号装置2の一部、又は全部をLSI(Large Scale Integration)等の半導体集積回路として実現してもよい。画像符号化装置1及び画像復号装置2の各機能ブロックは個別にプロセッサ化してもよいし、一部又は全部を集積してプロセッサ化してもよい。また、集積回路化の手法はLSIに限らず専用回路、又は汎用プロセッサで実現してもよい。
以上、図面を参照して第1及び第2実施形態について詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、要旨を逸脱しない範囲内において様々な設計変更等をすることが可能である。