図1は動画像符号化装置の一例の構成図である。この動画像符号化装置100はHEVCに準拠した装置である。この動画像符号化装置100の各部の動作を簡単に説明する。
ブロック分割部101は、入力された動画像における各ピクチャを、符号化ツリーユニット(Coding Tree Unit、CTU)と称されている正方の画素ブロックに分割する。
減算器102は、ブロック分割部101から出力されるピクチャと、当該ピクチャについての予測値との差分である予測誤差を求める。
変換及び量子化部103は、減算器102から出力される予測誤差を直交変換すると共に、変換により得られた値を量子化し、量子化により得られた量子化データを出力する。
以上の減算器102並びに変換及び量子化部103は、入力画像と当該入力画像についての予測画像との差分を符号化する符号化部の一例である。
逆量子化及び逆変換部104は、変換及び量子化部103から出力される量子化データに対して逆量子化及び逆直交変換を施して予測誤差を求める。
加算器105は、逆量子化及び逆変換部104から出力される予測誤差に、減算器102に入力された予測値を加算してピクチャの画素値を求めてピクチャの画像を再構成する。この加算器105から出力される、再構成されたピクチャの画像は局部復号画像などと称される。
以上の逆量子化及び逆変換部104並びに加算器105は、符号化部から出力される符号化データを復号し、該復号の結果と予測画像とに基づいて局部復号画像を得る局部復号部の一例である。
ループ内フィルタ106は、局部復号画像に発生する、ブロック歪みやリンギングを低減させる。フィルタ制御部107は、ループ内フィルタ106で行われるフィルタリング処理の制御を行う。ループ内フィルタ106及びフィルタ制御部107は、局部復号画像に対して画像処理を行う画像処理部の一例である。なお、このループ内フィルタ106については後で更に説明する。
フレームメモリ108は、ループ内フィルタ106によってフィルタリング処理が施されたピクチャの画像を格納する。
画面内予測部109は、ピクチャ内の画素の相関関係に基づいて画素の画素値を予測する画面内予測によりピクチャの予測を行う。画面内評価部110は、予測対象のピクチャを評価して、画面内予測部109による予測の処理の制御を行う。
動き評価部111は、フレームメモリ108に格納されているピクチャ群に映っている被写体の動きベクトルを求める。動き補償部112は、フレームメモリ108に格納されているピクチャ群と動き評価部111が求めた動きベクトルとに基づいて動き補償を施し、ピクチャの予測を行う。
スイッチ113は、画面内予測部109による予測結果と動き補償部112による予測結果とのうちの一方をピクチャの予測結果として選択して減算器102及び加算器105へ出力する。
以上の画面内予測部109、画面内評価部110、動き評価部111、動き補償部112、及びスイッチ113は、前述の画像処理後の局部復号画像に基づいて予測画像を得る予測部の一例である。
制御部114は、動画像符号化装置100の各部の動作を制御する。
エントロピー符号化部115は、変換及び量子化部103から出力される量子化値に対してエントロピー符号化を施して得られたデータに、動画像符号化装置100の各部から得られる各種の情報を所定のフォーマットで付加して符号化データを生成して出力する。
次に、ループ内フィルタ106について更に説明する。HEVCでは、ループ内フィルタ106は、前述したDFとSAOとにより構成される。
まず、DFについて、図2A及び図2B並びに図3を用いて説明する。
DFは局部復号画像に発生するブロック歪みを低減させるフィルタである。DFは、図2Aにおいて「フィルタ対象境界」として表した、ブロックの境界の近傍の8画素を対象とするものである。より具体的には、図2Bに表されているように、DFは、フィルタ対象境界から最大4画素の範囲までに位置している画素の画素値を参照して、フィルタ対象境界から最大3画素の範囲までに位置している画素の画素値を変更する処理である。
DF処理は、局部復号画像を分割した4画素×4画素の矩形のブロックを単位として処理が行われる。従って、DF処理は、複数の矩形のブロックに分割されている局部復号画像の画面における各ブロックに対して行われる、各ブロックの画素及びフィルタ対象境界を挟んで各ブロックに隣接するブロックに含まれる画素の画素値に基づいたフィルタ処理といえる。つまり、DF処理は第1フィルタ処理の一例である。
なお、図2Aにおいて「CTB」と表示されている16画素×16画素のブロックは、符号化ツリーブロック(Coding Tree Block)と称されるブロックであり、前述したCTUを構成するブロックである。フィルタ対象境界は8画素×8画素単位のブロックであり、CTBの境界線はフィルタ対象境界となる。
図3は、DF処理の処理内容を表したフローチャートである。この処理は、例えば演算処理装置によって実行される。
図3において、まず、S101では、フィルタパラメータ算出処理が行われる。この処理は、DFの制御のための各種のパラメータを算出する処理である。このフィルタパラメータとしては、例えば、フィルタ対象境界を挟む両側のブロックに関する情報から算出されるブロック境界強度(Boundary Strength、Bs)値や、ブロック境界領域の画素値の変動量などがある。
S102では、S101の処理で算出されたパラメータに基づいて、画面における垂直エッジのフィルタ対象境界におけるDFの処理方式を決定する処理が行われる。この処理では、輝度信号に対するDF処理の適用・非適用、色差信号に対するDF処理の適用・非適用、及び、輝度信号に適用する場合におけるDF処理の種類の選択(強フィルタ処理若しくは弱フィルタ処理)についての決定が行われる。
S103では、S102の処理による決定の内容が判定され、決定内容がDF処理の適用と判定された場合には、S104において、垂直エッジのフィルタ対象境界におけるDFの処理が行われる。一方、決定内容がDF処理の非適用と判定された場合には、S104の処理を行うことなく、S105に処理が進む。なお、S103の判定処理は、輝度信号と色差信号とで別々に行われる。また、輝度信号についてのS104の処理では、輝度信号についてのDF処理のうちS102の処理で選択された種類のものが行われ、色差信号についてのS104の処理では、色差信号についてのDF処理が行われる。
S105では、S101の処理で算出されたパラメータに基づいて、画面における水平エッジのフィルタ対象境界におけるDFの処理方式を決定する処理が行われる。この処理では、輝度信号に対するDF処理の適用・非適用、色差信号に対するDF処理の適用・非適用、及び、輝度信号に適用する場合におけるDF処理の種類の選択(強フィルタ処理若しくは弱フィルタ処理)についての決定が行われる。
S106では、S105の処理による決定の内容が判定され、決定内容がDF処理の適用と判定された場合には、S107において、水平エッジのフィルタ対象境界におけるDFの処理が行われ、その後、処理が終了する。一方、決定内容がDF処理の非適用と判定された場合には、S107の処理を行うことなく、処理が終了する。なお、S106の判定処理は、輝度信号と色差信号とで別々に行われる。また、輝度信号についてのS107の処理では、輝度信号についてのDF処理のうちS105の処理で選択された種類のものが行われ、色差信号についてのS107の処理では、色差信号についてのDF処理が行われる。
以上までの処理がDF処理である。このように、DF処理は、画面における垂直エッジのフィルタ対象境界における処理が先に行われ、その後で、画面における水平エッジのフィルタ対象境界における処理が行われる。
次にSAOについて説明する。SAO処理は、局部復号画像におけるエッジの周辺に発生するリンギングを低減させるエッジオフセット処理と、局部復号画像における特定の階調の劣化を低減させるバンドオフセット処理とを含む。
エッジオフセット処理は、処理対象の画素と、当該処理対象の画素を囲む8個の隣接画素のうちの2個との相対的な位置関係及び画素値の大小関係に基づいて、当該処理対象の画素にオフセットを与えるというものである。従って、エッジオフセット処理は、処理対象画素から1画素の範囲に位置している画素に基づいて、処理対象画素の画素値を変更する。
一方、バンドオフセット処理は、処理対象の画素の画素値が、特定の範囲の画素値のバンドに含まれる場合にのみ、そのバンドに応じたオフセットを当該処理対象の画素の画素値に与えるというものである。従って、バンドオフセット処理は、処理対象画素に基づいて、当該処理対象画素自身の画素値を変更するものである。
以上のエッジオフセット処理とバンドオフセット処理とをまとめると、SAO処理は、処理対象画素から1画素の範囲までに位置している画素を参照し、これらの画素に基づいて当該処理対象画素の画素値を変更する処理であるといえる。ここで、DF処理の処理単位である矩形のブロックを考慮する。この場合、SAO処理は、第1フィルタ処理の一例であるDF処理が行われた後の各ブロックに対して行われる、当該各ブロックに含まれる画素及び当該各ブロックに隣接する画素の画素値に基づいて行うフィルタ処理といえる。つまり、SAO処理は第2フィルタ処理の一例である。
ところで、画面を複数の領域に分割して各分割領域を複数の処理装置の各々に分担させるようにして図1の動画像符号化装置100を構成する場合を想定する。この場合において、分割領域の境界に対してループ内フィルタ106の処理を行うには、当該境界に隣接している分割領域の処理を担う処理装置から、当該境界近傍の、ループ内フィルタ106の処理に関与する画素の画素値の情報を転送してもらうことになる。ところが、前述したように、図1の動画像符号化装置100は、ループ内フィルタ106として、DFとSAOという2段階のフィルタ処理を行うため、フィルタ対象境界から遠く離れた画素までもがループ内フィルタ106の処理に関与する。このため、ループ内フィルタ106の処理に関与する画素の画素値の情報の処理装置間での転送量が非常に多くなってしまう。
ここで、ループ内フィルタ106の処理に関与する画素について、図4A及び図4Bを用いて説明する。
図4A及び図4Bでは、フィルタ対象境界のうちの「Chip分割境界」として表されているフィルタ対象境界についてのDF処理及びSAO処理を行う場合を想定している。
図4Aの場合はChip分割境界が画面における水平方向の場合を想定しており、図4BはChip分割境界が画面における垂直方向の場合を想定している。このChip分割境界を、画面を複数の領域に分割して各分割領域を複数の処理装置の各々に分担させるようにして図1の動画像符号化装置100を構成する場合における、画面分割領域の境界とする。
なお、図4A及び図4Bにおいて丸印で表されている画素のうち、黒丸印で表されている画素は、Chip分割境界に対してDF処理及びSAO処理を行った場合に画素値が変更される可能性のある画素を表している。
まず、水平方向であるChip分割境界を対象としてループ内フィルタ106の処理を行う場合について説明する。
図2を用いて説明したように、DF処理は、フィルタ対象境界から最大3画素の範囲までに位置している画素の画素値を変更する。図4Aに表されている矢印[A]は、Chip分割境界から3画素以内の範囲を表しており、水平方向のChip分割境界に対してDF処理を行った場合に画素値が変更される可能性を有している画素の存在範囲を表している。
一方、前述したように、SAO処理は、処理対象画素から1画素の範囲までに位置している画素を参照し、これらの画素に基づいて当該処理対象画素の画素値を変更する処理であるといえる。従って、水平方向のChip分割境界に対してDF処理に続いてSAO処理を行った場合には、画素値が変更される可能性がある画素の範囲は、当該Chip分割境界から最大4画素の範囲へと拡大する。
図4Aに表されている矢印[B]は、水平方向のChip分割境界から4画素以内の範囲を表している。つまり、矢印[B]で表されている範囲は、水平方向のChip分割境界に対してDF処理に続いてSAO処理を行った場合に画素値がDF処理前のものから変更される可能性を有している画素の存在範囲を表している。
また、図4Aに表されている矢印[C]は水平方向のChip分割境界から5画素以内の範囲を表している。この範囲は、水平方向のChip分割境界から4画素以内の範囲(すなわち矢印[B]の範囲)に位置している画素の各々を処理対象画素としてSAO処理が行われる場合に参照される画素の存在範囲を表している。
なお、以下の説明では、ある処理が行われる場合に参照される画素を「参照対象画素」と称することとする。
ここで、矢印[C]の範囲に含まれる、水平方向のChip分割境界から5画素目の位置の画素に注目する。この位置の画素は、水平方向のChip分割境界に対してのDF処理においての処理対象画素ではないが、他の、水平方向及び垂直方向のフィルタ対象境界に対してのDF処理においての処理対象画素となっている画素を含んでいる。つまり、これらの画素の画素値は、これらの画素を処理対象画素とする、他のフィルタ対象境界に対してのDF処理を行った結果の画素値である。
図4Aに表されているように、DF処理はフィルタ対象境界を基準の境界とする4画素×4画素の画像ブロック単位で処理が行われる。従って、水平方向のChip分割境界から5画素目の位置の画素を処理対象画素とする、他のフィルタ対象境界に対してのDF処理では、当該Chip分割境界から8画素までの範囲の画素が参照対象画素となる。以上のことから、水平方向のChip分割境界に対してDF処理に続いてSAO処理を行う場合には、当該Chip分割境界から8画素以内の範囲の画素がこの組み合わせの処理における参照対象画素となる。
図4Aにおける矢印[D]は水平方向のChip分割境界から8画素以内の範囲を表しており、当該Chip分割境界に対してDF処理に続いてSAO処理を行う場合における参照対象画素の存在範囲を表している。これらの参照対象画素が、水平方向のChip分割境界におけるループ内フィルタ106の処理に関与することとなる。
次に、垂直方向であるChip分割境界を対象としてループ内フィルタ106の処理を行う場合について説明する。
図2を用いて説明したように、DF処理は、フィルタ対象境界から最大3画素の範囲までに位置している画素の画素値を変更する。また、図3を用いて説明したように、DF処理は、垂直方向のフィルタ対象境界における処理が先に行われ、その後で、水平方向のフィルタ対象境界における処理が行われる。従って、垂直方向であるChip分割境界を対象としてDF処理を行う場合には、フィルタ対象境界から最大4画素の範囲までに位置している画素の画素値が変更される可能性を有している。
図4Bに表されている矢印[A]は、Chip分割境界から4画素以内の範囲を表しており、垂直方向のChip分割境界に対してDF処理を行った場合に画素値が変更される可能性を有している画素の存在範囲を表している。
また、前述したように、SAO処理は、処理対象画素から1画素の範囲までに位置している画素を参照し、これらの画素に基づいて当該処理対象画素の画素値を変更する処理であるといえる。従って、垂直方向のChip分割境界に対してDF処理に続いてSAO処理を行った場合には、画素値が変更される可能性がある画素の範囲は、当該Chip分割境界から最大5画素の範囲へと拡大する。
図4Bに表されている矢印[B]は、垂直方向のChip分割境界から5画素以内の範囲を表している。つまり、矢印[B]で表されている範囲は、垂直方向のChip分割境界に対してDF処理に続いてSAO処理を行った場合に画素値がDF処理前のものから変更される可能性を有している画素の存在範囲を表している。
また、矢印[C]は垂直方向のChip分割境界から6画素以内の範囲を表している。この範囲は、垂直方向のChip分割境界から5画素以内の範囲(すなわち矢印[B]の範囲)に位置している画素の各々を処理対象画素としてSAO処理が行われる場合における参照対象画素の存在範囲を表している。
ここで、矢印[C]の範囲に含まれる、水平方向のChip分割境界から6画素目の位置の画素に注目する。これらの画素の画素値は、これらの画素を処理対象画素とする、他のフィルタ対象境界に対してのDF処理を行った結果の画素値であることは、図4Aにおける水平方向のChip分割境界から5画素目の位置の画素と同様である。
図4Bに表されているように、DF処理はフィルタ対象境界を基準の境界とする4画素×4画素のブロック単位で処理が行われる。また、DF処理は、フィルタ対象境界から最大3画素の範囲までに位置している画素の画素値を変更する可能性がある。従って、垂直方向のChip分割境界から6画素目の位置の画素を処理対象画素とする、他のフィルタ対象境界に対してのDF処理では、Chip分割境界から8画素内側のフィルタ対象境界のDF処理結果も必要となるため、当該Chip分割境界から12画素までの範囲の画素が参照対象画素となる。つまり、垂直方向のChip分割境界に対してDF処理に続いてSAO処理を行う場合では、当該Chip分割境界から12画素以内の範囲の画素がこの組み合わせの処理における参照対象画素となる。
図4Bにおける矢印[D]は垂直方向のChip分割境界から12画素以内の範囲を表しており、当該Chip分割境界に対してDF処理に続いてSAO処理を行う場合における参照対象画素の存在範囲を表している。これらの参照対象画素が、垂直方向のChip分割境界におけるループ内フィルタ106の処理に関与することとなる。
以上のように、Chip分割境界が水平方向、垂直方向の場合、それぞれChip分割境界から8画素、12画素以内の広い範囲に位置する画素が、Chip分割境界におけるループ内フィルタ106の処理における参照対象画素として関与するのである。
ところで、画面を分割して各分割領域を複数の処理装置に各々分担させて画面全体の動画像符号化処理を実現する場合、各処理装置は、自身が処理を担当する分割領域外の画素についての画素値データの管理は通常は行っていない。従って、各処理装置は、Chip分割境界におけるループ内フィルタ106の処理を行うには、処理担当の分割領域に隣接する分割領域を担当する処理装置から、Chip分割境界から8画素または12画素以内の範囲に位置する画素の画素値データを転送してもらう必要がある。
そこで、ループ内フィルタ106をこれより説明するように構成することによって、Chip分割境界のループ内フィルタ106の処理のために隣接の分割領域を担当する処理装置から受け取るデータ転送量を削減する。
まず、水平方向であるChip分割境界におけるループ内フィルタ106の処理においてのデータ転送量の削減手法について、図5A及び図5Bを用いて説明する。
図5Aは、画素の位置とDF処理による画素値の変化との関係を表している。
図5Aにおいて、黒丸印の位置の画素及び網掛けが付されている丸印の位置の画素は、どちらも、水平方向であるChip分割境界におけるDF処理を行った場合に画素値が変更される可能性のある画素を表している。このうち、黒丸印の位置の画素は、水平エッジであるChip分割境界におけるDF処理を行った場合に画素値が変更される可能性のある画素を表している。
一方、図5Aにおいて、斜線が付されている丸印の位置の画素及び白丸印の位置の画素は、どちらも、水平方向エッジのフィルタ対象境界におけるDF処理を行っても画素値が変更されない画素を表している。このうち、斜線が付されている丸印の位置の画素は、垂直エッジのフィルタ対象境界におけるDF処理を行った場合には画素値が変更される可能性のある画素を表している。そして、白丸印の位置の画素は、垂直エッジのフィルタ対象境界におけるDF処理を行っても画素値が変更されない画素を表している。
ここで、以下の説明で用いる用語を定義しておく。
前述したように、DF処理は、画面におけるブロックに対して行われる、フィルタ対象境界を挟んで当該ブロックに隣接するブロックに含まれる画素の画素値に基づいたフィルタ処理である。そこで、Chip分割境界についてのDF処理における処理対象のブロックを「特定ブロック」と称することとし、特定ブロックにChip分割境界とは反対側で隣接するブロックを「特定隣接ブロック」称することとする。図5Aにおいて、[A]の範囲に含まれるブロックが特定ブロックであり、[B]の範囲に含まれるブロックが特定隣接ブロックである。
図5Aを参照すると、水平方向のChip分割境界から4画素以上離れている画素は、当該Chip分割境界である水平エッジにおけるDF処理による影響を受けないことが分かる。また、前述したように、ループ内フィルタ106の処理においてDF処理後に行われるSAO処理は、処理対象画素から1画素の範囲までに位置している画素を参照し、これらの画素に基づいて当該処理対象画素の画素値を変更する処理である。
そこで、特定隣接ブロック内の画素を含む、水平方向のChip分割境界から5画素以上の範囲の画素については、図5Aに表されているDF処理の後に通常のSAO処理を行ってループ内フィルタ106の処理を完了させる。
一方、特定ブロックに含まれる、水平方向のChip分割境界から4画素までの範囲の画素についてのループ内フィルタ106の処理については、以下のようにして行う。
まず、特定ブロックに含まれる、水平方向のChip分割境界から4画素までの範囲の画素について、DF処理を施す。このDF処理においては、参照対象画素として、当該Chip分割境界に接する分割領域の処理を担当する他の処理装置より、当該Chip分割境界から4画素までの範囲の画素についてのDF処理前の画素値データの転送を受ける。
なお、このDF処理は、水平方向のChip分割境界に接する特定ブロックに対し、特定ブロックに含まれる画素及び当該Chip分割境界を挟んで当該特定ブロックに対向するブロックに含まれる画素の画素値に基づいて行われるフィルタ処理であるといえる。つまり、このDF処理においては、参照対象画素として、当該対向するブロックを含む画像領域の処理を担当する他の処理装置より、当該対向するブロックに含まれる画素についてのDF処理前の画素値データの転送を受ける。以降、水平方向であるChip分割境界においてのDF処理を「水平境界DF処理」と称することとする。
次に、受け取った画素値データを用いて水平境界DF処理を施した後の画素に対してSAO処理を施す。このSAO処理においては、参照対象画素として、当該Chip分割境界に接する分割領域の処理を担当する他の処理装置より、当該Chip分割境界から5画素目の範囲の画素についてのDF処理後の画素値データの転送を受ける。つまり、このSAO処理においては、参照対象画素として、前述の対向するブロックを含む領域の処理を担当する他の処理装置より、当該対向するブロックにChip分割境界とは反対側で隣接する画素についてのDF処理後の画素値データの転送を受ける。
図5Bは、水平方向のChip分割境界から4画素までの範囲の画素についてのループ内フィルタ106の処理を上述のようにして行う場合に、当該Chip分割境界に接する分割領域の処理を担当する処理装置から転送を受ける画素の位置を表したものである。
図5Bにおいて、[A]の範囲に位置する画素、すなわち、水平方向のChip分割境界から4画素までの範囲に位置する画素(前述の対向するブロックに含まれる画素)は、水平境界DF処理のための参照対象画素として転送を受ける画素である。これらの画素についてはDF処理前の画素値データを転送対象のデータとする。また、図5Bにおいて、[B]の範囲に位置する画素、すなわち、水平方向のChip分割境界から5画素目の画素(当該Chip分割境界とは反対側で前述の対向するブロックに隣接する画素)は、SAOのための参照対象画素として転送を受ける画素である。これらの画素についてはDF処理後の画素値データを転送対象のデータとする。
水平方向のChip分割境界に対してのループ内フィルタ106の処理をこのようにすることで、画素値データの転送対象となる画素する範囲が、Chip分割境界から8画素までの範囲から5画素までの範囲へと狭くなり、結果としてデータ転送量が削減される。
次に、垂直方向であるChip分割境界においてのループ内フィルタ106の処理におけるデータ転送量の削減手法について、図6A及び図6Bを用いて説明する。
図6Aは、画素の位置とDF処理による画素値の変化との関係を表している。
図6Aにおいて、黒丸印の位置の画素は、垂直方向であるChip分割境界におけるDF処理を行った場合に画素値が変更される可能性のある画素を表している。
一方、また、網掛けが付されている丸印の位置の画素、斜線が付されている丸印の位置の画素、及び白丸印の位置の画素は、いずれも、垂直方向であるChip分割境界におけるDF処理を行っても画素値が変更されない画素を表している。このうち、網掛けが付されている丸印の位置の画素は、水平エッジのフィルタ対象境界におけるDF処理を行った場合に画素値が変更される可能性のある画素を表している。また、斜線が付されている丸印の位置の画素及び白丸印の位置の画素は、どちらも、水平エッジのフィルタ対象境界におけるDF処理を行っても画素値が変更されない画素を表している。このうち、斜線が付されている丸印の位置の画素は、垂直エッジであるフィルタ対象境界におけるDF処理を行った場合には画素値が変更される可能性のある画素を表している。そして、白丸印の位置の画素は、垂直エッジであるフィルタ対象境界におけるDF処理を行っても画素値が変更されない画素を表している。
図6Aを参照すると、垂直方向のChip分割境界から5画素以上離れている画素は、Chip分割境界におけるDF処理による影響を受けないことが分かる。但し、前述したように、ループ内フィルタ106の処理においてDF処理後に行われるSAO処理は、処理対象画素から1画素の範囲までに位置している画素を参照し、これらの画素に基づいて当該処理対象画素の画素値を変更する処理である。このため、垂直方向のChip分割境界から5画素目の位置の画素を処理対象画素とするSAO処理では、当該Chip分割境界から4画素目の位置の画素が参照される。この4画素目の位置の画素には、図6Aにおいて黒丸印で表されている画素、すなわち、垂直方向であるChip分割境界におけるDF処理を行った場合に画素値が変更される可能性のある画素が含まれている。
そこで、まず、特定隣接ブロック内の画素を含む、垂直方向のChip分割境界から5画素以上の範囲の画素については、DF処理の後にSAO処理を行うようにする。但し、特定隣接ブロックに含まれる画素へのSAO処理については処理モードを制限し、当該Chip分割境界から4画素目の位置を参照する処理モードのSAO処理を行わないようにする。
なお、垂直方向のChip分割境界から4画素目の位置の画素とは、言い換えれば、特定ブロックに含まれる画素のうちの、特定隣接ブロックに隣接する画素といえる。この画素を「特定隣接画素」と称することとする。つまり、特定隣接ブロックに含まれる画素へのSAO処理については処理モードを制限し、特定隣接画素以外の画素を参照対象画素とするSAO処理を行うようにする。
但し、特定隣接画素は、垂直方向であるフィルタ対象境界におけるDF処理を行った場合には画素値が変更される可能性はあるものの、実際には当該DF処理によって変更されないこともある。そこで、特定隣接画素の画素値がDF処理によって変更されない場合には、上述したSAO処理における処理モードの制限を行わないようにしてもよい。
一方、特定ブロックに含まれる、垂直方向のChip分割境界から4画素までの範囲の画素についてのループ内フィルタ106の処理については、以下のようにして行う。
まず、特定ブロックに含まれる、垂直方向のChip分割境界から4画素までの範囲の画素について、DF処理を施す。このDF処理においては、参照対象画素として、当該Chip分割境界に接する分割領域の処理を担当する他の処理装置より、当該Chip分割境界から4画素までの範囲の画素についてのDF処理前の画素値データの転送を受ける。
なお、このDF処理は、垂直方向のChip分割境界に接する特定ブロックに対し、当該特定ブロックに含まれる画素及び当該Chip分割境界を挟んで当該特定ブロックに対向するブロックに含まれる画素の画素値に基づいて行われるフィルタ処理であるといえる。つまり、このDF処理においては、参照対象画素として、当該対向するブロックを含む画像領域の処理を担当する他の処理装置より、当該対向するブロックに含まれる画素についてのDF処理前の画素値データの転送を受ける。以降、垂直方向であるChip分割境界においてのDF処理を「垂直境界DF処理」と称することとする。
次に、受け取った画素値データを用いて垂直境界DF処理を施した後の画素に対してSAO処理を施す。このSAO処理においては、参照対象画素として、当該Chip分割境界に接する分割領域の処理を担当する他の処理装置より、Chip分割境界から5画素目の範囲の画素についてのDF処理後の画素値データの転送を受ける。つまり、このSAO処理においても、参照対象画素として、特定隣接ブロックを含む領域の処理を担当する他の処理装置より、当該Chip分割境界とは反対側で特定隣接ブロックに隣接する画素についてのDF処理後の画素値データの転送を受ける。
図6Bは、垂直方向のChip分割境界から4画素までの範囲の画素についてのループ内フィルタ106の処理を上述のようにして行う場合に、当該Chip分割境界に接する分割領域の処理を担当する処理装置から転送を受ける画素の位置を表したものである。
図6Bにおいて、[A]の範囲に位置する画素、すなわち、垂直方向のChip分割境界から4画素までの範囲に位置する画素(前述の対向するブロックに含まれる画素)は、垂直境界DF処理のための参照対象画素として転送を受ける画素である。これらの画素についてはDF処理前の画素値データを転送対象のデータとする。また、図6Bにおいて、[B]の範囲に位置する画素、すなわち、垂直方向のChip分割境界から5画素目の画素(当該Chip分割境界とは反対側で前述の対向するブロックに隣接する画素)は、SAO処理のための参照対象画素として転送を受ける画素である。これらの画素についてはDF処理後の画素値データを転送対象のデータとする。
垂直方向のChip分割境界に対してのループ内フィルタ106の処理をこのようにすることで、画素値データの転送対象となる画素する範囲が、Chip分割境界から8画素までの範囲から5画素までの範囲へと狭くなり、結果としてデータ転送量が削減される。
なお、以下の説明では、水平境界DF処理と垂直境界DF処理との区別が不要の場合には、単に「境界DF処理」と称することとする。つまり、境界DF処理は、特定の境界線(Chip分割境界)に接する特定ブロックに対して行われる、当該境界線を挟んで当該特定ブロックに隣接する対向ブロックに含まれる画素の画素値に基づいたDF処理であるといえる。
次に図7について説明する。図7は、図1におけるループ内フィルタ106の構成の一例である。
図7のループ内フィルタ106は、フィルタ処理部200−1及び200−2を有している。フィルタ処理部200−1及び200−2は、画像をChip分割境界で2つに分割した分割領域のうちの1つを各々が担当する。
フィルタ処理部200−1及び200−2の各々には、ループ内フィルタ106に入力される、図1の動画像符号化装置100における局部復号画像のうち、自身が処理を担当する分割領域の画像が入力される。この分割領域の画像は、複数の矩形のブロックに分割されている。
フィルタ処理部200−1とフィルタ処理部200−2とは同一の構成を有している。以下、フィルタ処理部200−1の構成について説明する。
フィルタ処理部200−1は、DF処理部201、SAO処理部202、SAO処理制御部203、及びメモリ204を有している。
DF処理部201には分割領域の画像が入力される。この画像を「DF前画像」と称することとする。DF処理部201は、DF前画像に対し、フィルタ制御部107から送られてくるDF処理用パラメータに基づいてDF処理を施す。DF処理用パラメータは、例えば、ブロック境界を挟む両側のブロックについての符号化情報である。DF前画像に対してDF処理が施されてDF処理部201から出力される画像を「DF後画像」と称することとする。
前述したようにDF処理は第1フィルタ処理の一例である。従って、DF処理部201では、複数の矩形のブロックに分割されている局部復号画像の画面における各ブロックに対して、当該各ブロックに含まれる画素及び当該各ブロックに隣接するブロックに含まれる画素の画素に基づいた第1フィルタ処理が行われる。このDF処理部201は第1フィルタ処理部の一例である。
SAO処理部202には、DF後画像に対し、フィルタ制御部107から送られてくるSAO処理用パラメータに基づいてSAO処理を施す。SAO処理用パラメータは、例えばオフセット量などである。DF後画像に対してSAO処理が施されてSAO処理部202から出力される画像を「SAO後画像」と称することとする。
フィルタ処理部200−1のSAO処理部202から出力されるSAO後画像はフレームメモリ210−1に格納される。また、フィルタ処理部200−2のSAO処理部202から出力されるSAO後画像はフレームメモリ210−2に格納される。
前述したように、SAO処理は第2フィルタ処理の一例である。従って、SAO処理部202では、第1フィルタ処理が行われた後の各ブロックに対して、当該各ブロックに含まれる画素及び当該各ブロックに隣接する画素の画素値に基づいた第2フィルタ処理が行われる。このSAO処理部202は第2フィルタ処理部の一例である。
SAO処理制御部203は、DF処理部によるDF処理が、Chip分割境界に接する特定ブロックに含まれる画素のうちの、特定隣接ブロックと隣接する特定隣接画素の画素値を変化させる可能性を有している場合に、SAO処理部202を制御する。この制御では、当該特定隣接ブロックに対するSAO処理を、特定隣接画素以外の画素に基づくものに制限して行わせるようにする。この制御により、特定ブロックに含まれる画素を常に用いることなく特定隣接ブロックに対するSAO処理が行われる。従って、特定ブロックに含まれる画素のDF処理後の画素値の算出に必要な画素の画素値データの転送を他の処理装置から受けなくて済むようになり、処理装置間で転送されるデータ量が減る。
なお、SAO処理制御部203は、特定ブロックに対するDF処理が特定隣接画素の画素値を変化させるか否かを判定するようにしてもよい。この場合において、SAO処理制御部203は、DF処理が特定隣接画素の画素値を変化させないと判定した場合には、特定隣接ブロックに対するSAO処理への上述の制限を行わないようにSAO処理部202を制御する。
メモリ204は、フィルタ処理部200−1から転送するデータを一時的に格納する記憶装置である。このメモリ204には、DF後画像の画素のうち、特定隣接ブロックに含まれる画素であって特定隣接画素に隣接する画素の画素値データが格納される。また、メモリ204には、DF前画像の画素のうちの特定ブロックに含まれる画素の画素値データ、並びに、Chip分割境界についてのDF処理及びSAO処理にそれぞれ用いられるDF処理用パラメータ及びSAO処理用パラメータのデータも格納される。
フィルタ処理部200−1のメモリに一旦格納された上述のデータは、その後、境界処理用データメモリ220−1に転送される。また、フィルタ処理部200−2のメモリに一旦格納された上述のデータは、その後、境界処理用データメモリ220−2に転送される。
分割境界フィルタ処理部230はChip分割境界についてのDF処理及びSAO処理を行う。分割境界フィルタ処理部230は、境界DF処理部231及び境界SAO処理部232を備えている。
境界DF処理部231は、境界処理用データメモリ220−1及び220−2の各々に格納されている、Chip分割境界を挟む一対の特定ブロックの各々に含まれる画素値に基づいたDF処理を、当該一対の特定ブロックの各々に対して行う。このDF処理では、Chip分割境界についてのDF処理のためのDF処理用パラメータが境界処理用データメモリ220−1及び220−2から読み出されて用いられる。この境界DF処理部231も第1フィルタ処理部の一例である。
境界SAO処理部232は、境界DF処理部231によるDF処理後の上記一対の特定ブロックの各々に対してSAO処理を行う。このSAO処理は、当該DF処理後の一対の特定ブロックに含まれる画素と、境界処理用データメモリ220−1及び220−2に格納されている、DF後画像の画素のうち特定隣接ブロックに含まれる画素であって特定隣接画素に隣接する画素との画素値に基づく。また、このSAO処理では、Chip分割境界についてのSAO処理のためのSAO処理用パラメータが分割境界処理用データメモリ220−1及び220−2から読み出されて用いられる。この境界SAO処理部232も第2フィルタ処理部の一例である。
境界SAO処理部232によりSAO処理が行われた後の上記一対の特定ブロックに含まれる画素の画素値データは、フレームメモリ210−1及び210−2に格納される。
フレームメモリ210−1には、フィルタ処理部200−1による処理後のSAO後画像が格納されているので、このうちの特定ブロックの部分を、分割境界フィルタ処理部230による処理後の一対の特定ブロックのうちの対応するものに置き換えて格納する。また、フレームメモリ210−2には、フィルタ処理部200−2による処理後のSAO後画像が格納されており、このうちの特定ブロックの部分を、分割境界フィルタ処理部230による処理後の一対の特定ブロックのうちの対応するものに置き換えて格納する。このフレームメモリ210−1及び210−2は、図1におけるフレームメモリ108に相当するものである。つまり、フレームメモリ210−1及び210−2に各々格納されている画像を結合することで、ループ内フィルタ106によるフィルタリング処理後の画像が得られる。
次に、SAO処理制御部203による制御処理について説明する。図8は、SAO処理制御部203が行うSAO処理制御処理の第1の例の処理内容を図解したフローチャートである。
この図8の処理は、SAO処理部202によるSAO処理の対象である、DF後画像を構成する各画素について行われる。
図8において、まず、S201において、SAO処理制御部203は、処理対象のブロックが、前述した特定隣接ブロック(特定ブロックにChip分割境界とは反対側で隣接するブロック)の画素を含むブロックであるか否かを判定する処理を行う。ここで、SAO処理制御部203は、特定隣接ブロックの画素を含むブロックであるとの判定を下したとき(判定結果がYesのとき)にはS202に処理を進める。一方、SAO処理制御部203は、特定隣接ブロックの画素を含むブロックではないとの判定を下したとき(判定結果がNoのとき)にはS204に処理を進める。
次に、S202において、SAO処理制御部203は、処理対象の画素を含む特定隣接ブロックに隣接している特定ブロックが接しているChip分割境界が、画面における垂直方向であるか否かを判定する処理を行う。ここで、ここで、SAO処理制御部203は、Chip分割境界が画面における垂直方向であるとの判定を下したとき(判定結果がYesのとき)にはS203に処理を進める。一方、SAO処理制御部203は、Chip分割境界が画面における垂直方向ではない(すなわち画面における水平方向である)との判定を下したとき(判定結果がNoのとき)にはS204に処理を進める。
S202の判定処理の判定結果がYesとなる場合は、特定ブロックに対するDF処理が特定隣接画素の画素値を変化させる可能性を有している場合である。そこで、SAO処理制御部203は、S203において、SAO処理部202を制御して、特定隣接ブロックに対するSAO処理を、特定隣接画素以外の画素に基づくものに制限して行う処理モードで処理させるようにする処理を行う。そして、その後、SAO処理制御部203はこの図8の処理を終了する。
一方、S202判定処理の判定結果がNoとなる場合は、特定ブロックに対するDF処理では特定隣接画素の画素値が変化しないことが確実である場合である。S204では、SAO処理制御部203は、SAO処理部202を制御して、SAO処理における処理モードに対する上述した制限を解除して、SAO処理における当該制限を行わないようにする処理を行い、この後はこの図8の処理を終了する。
以上までの処理がSAO処理制御処理の第1の例である。
ここで、図8のS203の処理における、SAO処理に対する処理モードの制限について説明する。
前述したように、SAO処理は、エッジオフセット処理とバンドオフセット処理とを含む処理である。このうちのバンドオフセット処理は、処理対象画素に基づいて当該処理対象画素自身の画素値を変更するものであるから、特定隣接ブロックに対するバンドオフセット処理が、特定隣接画素に基づいて行われることはない。一方、エッジオフセット処理は、処理対象の画素と、当該処理対象の画素を囲む8個の隣接画素のうちの2個との相対的な位置関係及び画素値の大小関係に基づいて、当該処理対象の画素にオフセットを与えるというものである。従って、特定隣接ブロックに対するエッジオフセット処理では、特定隣接画素に基づいて行われることがある。
ここで、図9を用いて、エッジオフセット処理におけるクラスを説明する。HEVCでは、エッジオフセット処理において対象画素に与えるオフセット量の決定のために参照される、処理対象の画素と2個の隣接画素との相対位置関係について、4種類のエッジオフセットクラスが定義されている。このクラスで定義されている画素の配列を図解したものが図9である。
図9において、クラス0は、処理対象画素と当該処理対象画素の両側で対向して隣接する一対の隣接画素とが画面における水平方向(0度の方向)に配列されているクラスである。また、クラス1は、処理対象画素と当該処理対象画素の両側で対向して隣接する一対の隣接画素とが画面における垂直方向(90度の方向)に配列されているクラスである。更に、クラス2は、処理対象画素と当該処理対象画素の両側で対向して隣接する一対の隣接画素とが画面における左上から右下の方向(斜め45度の方向)に配列されているクラスである。そして、クラス3は、処理対象画素と当該処理対象画素の両側で対向して隣接する一対の隣接画素とが画面における左下から右上の方向(斜め135度の方向)に配列されているクラスである。
図9に示したエッジオフセットクラスのうち、クラス0、2、及び3は、処理対象の画素に対して水平方向若しくは斜め方向の隣接画素がエッジオフセット処理において参照される。このため、Chip分割境界が画面における垂直方向である場合における特定隣接ブロックに対するエッジオフセット処理においてこれらのクラスを選択すると、処理のために特定隣接画素が参照されてしまう。
そこで、SAO処理制御部203は、図8のS203の処理において、SAO処理部202を制御して、エッジオフセット処理を実行する場合には、クラス1での処理を行わせるようにする。クラス1は処理対象画素と隣接画素とが画面における垂直方向に配列されているので、このようにすることで、Chip分割境界が画面における垂直方向である場合における特定隣接ブロックに対するエッジオフセット処理において、特定隣接画素が参照されない。
次に、SAO処理制御部203が行うSAO処理制御処理の第2の例について、図10を用いて説明する。
前述した第1の例では、特定隣接ブロックに隣接している特定ブロックが接しているChip分割境界が画面における垂直方向である場合に、特定ブロックに対するDF処理が特定隣接画素の画素値を変化させる可能性を有しているとの判定が下される。しかし、この場合に該当しても、実際には特定ブロックに対するDF処理が適用されない場合がある。これより説明する第2の例では、この特定ブロックに対するDF処理が適用されない場合を特定し、この場合には、SAO処理における処理モードに対する前述した制限を行わないようにするものである。
図2Bを用いて説明したように、DF処理は、フィルタ対象境界から最大4画素の範囲までに位置している画素の画素値を参照して、フィルタ対象境界から最大3画素の範囲までに位置している画素の画素値を変更する処理である。また、図3を用いて説明したように、DF処理は、画面における垂直エッジのフィルタ対象境界におけるDF処理が先に行われ、その後で、画面における水平エッジのフィルタ対象境界におけるDF処理が行われる。従って、Chip分割境界が画面における垂直方向である場合における特定ブロックに対するDF処理のうちの垂直エッジのフィルタ対象境界におけるDF処理では、特定隣接画素の画素値は変化しない。つまり、この場合において特定隣接画素の画素値を変化させるのは、水平エッジのフィルタ対象境界における特定ブロックに対するDF処理である。
HEVCでは、フィルタ対象境界は、8画素×8画素のブロックの境界であって、且つ、予測ユニット(Prediction Unit:PU)又は変換ユニット(Transform Unit:TU)の境界であると定められている。ここで、PUは、動画像符号化装置100での画面予測の処理における単位ブロックである。また、TUは、動画像符号化装置100での直交変換の処理における単位ブロックである。ここでは、このフィルタ対象境界を「判定対象フィルタ境界」と称することとする。
ここで、後の説明のため、判定対象フィルタ境界を挟んで隣接している一対の特定ブロック内の画素のうち、特定隣接画素とChip分割境界に隣接している画素の各々について、図10に図解しているように、配置に応じた識別名を付しておく。
すなわち、一対の特定ブロックのうちの一方である特定ブロックPに含まれている画素のうちChip分割境界に隣接している画素については、判定対象フィルタ境界から近い順に、p_0,0、p_1,0、p_2,0、及びp_3,0と名称を付す。また、当該特定ブロックPに含まれている画素のうち特定隣接画素については、判定対象フィルタ境界から近い順に、p_0,3、p_1,3、p_2,3、及びp_3,3と名称を付す。更に、一対の特定ブロックのうちの他方である特定ブロックQに含まれている画素のうちChip分割境界に隣接している画素については、判定対象フィルタ境界から近い順に、q_0,0、q_1,0、q_2,0、及びq_3,0と名称を付す。そして、当該特定ブロックQに含まれている画素のうち特定隣接画素については、判定対象フィルタ境界から近い順に、q_0,3、q_1,3、q_2,3、及びq_3,3と名称を付す。
HEVCでは、以下の2つの条件のどちらかが成立する場合には、判定対象フィルタ境界を挟んで隣接している一対の特定ブロックP及びQに対するDF処理は行われない。
[1]判定対象フィルタ境界についての境界強度値Bsが1以上でない(0である)こと。
[2]特定ブロックP及びQに含まれる画素の画素値について、下記の[式1]が成立しないこと。
|p_2.0-2*p_1.0+p_0.0|+|p_2.3-2*p_1.3+p_0.3|+
|q_2.0-2*q_1.0+q_0.0|+|q_2.3-2*q_1.3+q_0.3|<β ………… [式1]
なお、境界強度値Bsは、判定対象フィルタ境界におけるブロック歪みの強さを表す指標であり、この値が0である場合とは、判定対象フィルタ境界にはブロック歪みが無いと判定する場合である。より具体的には、特定ブロックP及びQの少なくとも一方のブロックが画面内予測のブロックである場合にはBsは2に設定される。また、特定ブロックP及びQの両方のブロックが画面間予測のブロックである場合には、下記の3つの条件[a]、[b]、及び[c]のうちの少なくとも1つを充たす場合にはBsは1に設定される。そして、この他の場合にはBsは0に設定される。
[a]少なくとも一方の特定ブロックに0ではない直交変換係数含まれている。
[b]特定ブロックPと特定ブロックQとの動きベクトルの差分が1画素以上である。
[c]特定ブロックPと特定ブロックQとで、動き補償における参照画像が異なるか、若しくは、動きベクトルの本数が異なる。
また、上記の[式1]の左辺は、元の画像(原画)の平坦度を表す指標を計算するためのものであり、「*」印は乗算を表している。右辺のβは閾値である。つまり、[式1]が成立する場合とは、元々の画像が平坦であると判定する場合である。なお、閾値βの値は、特定ブロックP及びQの各々の量子化パラメータの平均値に所定のオフセットを与えて得られる値に基づいて定められる。
SAO処理制御処理の第2の例では、第1の例では特定隣接画素の画素値を変化させる可能性を有しているとの判定が下される場合であっても、上記の[1]及び[2]のどちらかの条件が成立しない場合には、特定隣接画素の画素値は変化しないとの判定を下す。そして、この判定が下された場合には、SAO処理における処理モードに対する前述した制限を行わないようにする。但し、Chip分割境界の垂直エッジに対するDF処理の影響を排除するために、上記の[2]の条件については、[式1]を[式2]に改めて特定隣接画素についての画素値のみで条件判定を行えるようにする。
|p_2.3-2*p_1.3+p_0.3|+|q_2.3-2*q_1.3+q_0.3|<β ……………… [式2]
ここで図11について説明する。図10は、SAO処理制御部203が行うSAO処理制御処理の第2の例の処理内容を図解したフローチャートである。
図11において、図8に図解した第1の例のフローチャートにおけるものと同一の処理ステップには同一の処理ステップ番号を付しており、これらの処理ステップについては説明を省略する。
図11において、S202の判定結果がYesのときには、SAO処理制御部203はS211に処理を進める。SAO処理制御部203は、S211において、画面における垂直方向のChip分割境界に接する特定ブロックについての全ての判定対象フィルタ境界の境界強度値Bsを求め、そのいずれかが1以上であるか否かを判定する処理を行う。なお、境界強度値Bsを求めるために使用される各種のパラメータは、フィルタ制御部107(図1)から受け取る。
SAO処理制御部203は、このS211の判定処理において、境界強度値Bsが1以上である判定対象フィルタ境界が存在すると判定したとき(判定結果がYesのとき)には、S212に処理を進める。一方、SAO処理制御部203は、境界強度値Bsが1以上である判定対象フィルタ境界が存在しない(境界強度値Bsが全て0である)と判定したとき(判定結果がNoのとき)には、前述したS204に処理を進める。
次に、SAO処理制御部203は、S212において、上述の全ての判定対象フィルタ境界のいずれかに、前掲した[式2]が成立するものが存在するか否かを判定する処理を行う。なお、式1に使用される各種のパラメータは、フィルタ制御部107(図1)から受け取る。
SAO処理制御部203は、このS212の判定処理において、前掲した[式2]が成立する判定対象フィルタ境界が存在すると判定したとき(判定結果がYesのとき)には、前述したS203に処理を進める。一方、SAO処理制御部203は、前掲した[式2]が成立する判定対象フィルタ境界が存在しないと判定したとき(判定結果がNoのとき)には、前述したS204に処理を進める。
上述した処理制御処理の第2の例をSAO処理制御部203が行うようにしてもよい。
次に、図12について説明する。図12は、動画像符号化処理を行う大規模集積回路装置の一例の機能ブロック図である。
Large Scale Integration(LSI)1000は、HEVCに準拠した動画像符号化処理を行う大規模集積回路装置である。なお、このLSI1000は、画面を複数の領域に分割したときの分割領域のひとつに対する動画像符号化処理を担当する機能を有している。LSI1000は、Synchronous Dynamic Random Access Memory(SDRAM)2000が接続されて称される。
LSI1000は、画像入力部1100、符号化処理部1300、分割境界領域フィルタ処理部1400、チップ間データ転送IF1500、メモリ制御部1600、及び全体制御部1700を備えている。
画像入力部1100は、入力画像である動画像を受信する。受信された入力画像は、メモリ制御部1600を介してSDRAM2000に格納される。
ストリーム出力部1200は、SDRAM2000に格納されている、動画像符号化処理によって得られた符号化データストリームを、メモリ制御部1600を介して読み出して出力する。
符号化処理部1300は、入力画像である動画像に対して符号化処理を施して符号化データストリームを生成する。入力画像はSDRAM2000からメモリ制御部1600を介して読み出され、生成された符号化データストリームは、メモリ制御部1600を介してSDRAM2000へ格納される。
分割境界領域フィルタ処理部1400は、LSI1000が担当している分割領域における分割境界に接する特定ブロックについてのDF処理及びSAO処理を行うものである。分割境界領域フィルタ処理部1400は、処理に必要な各種のデータを、SDRAM2000における分割境界フィルタ用データ格納メモリ領域2100からメモリ制御部1600を介して取得する。また、分割境界領域フィルタ処理部1400は、処理後のデータを、メモリ制御部1600を介して、SDRAM2000におけるローカルデコード画像格納用フレームメモリ領域2200へ格納する。つまり、分割境界領域フィルタ処理部1400は図7における分割境界フィルタ処理部230の機能を提供する。また、SDRAM2000における分割境界フィルタ用データ格納メモリ領域2100及びローカルデコード画像格納用フレームメモリ領域2200は、それぞれ図7における境界処理用データメモリ220及びフレームメモリ210として機能する。
チップ間データ転送IF1500は、このLSI1000が処理を担当している分割領域に隣接している分割領域の動画像符号化処理を担当する他の処理装置との間で各種のデータの授受を行う。
メモリ制御部1600は、画像入力部1100、符号化処理部1300、分割境界領域フィルタ処理部1400、及びチップ間データ転送IF1500と、SDRAM2000との間での各種のデータの授受の制御を行う。
全体制御部1700は、LSI1000に備えられている、画像入力部1100、符号化処理部1300、分割境界領域フィルタ処理部1400、チップ間データ転送IF1500、及びメモリ制御部1600の各部の動作の制御を行う。
次に、符号化処理部1300の詳細構成について説明する。符号化処理部1300は、データ転送インタフェース部1310、画像前処理部1320、画像符号化処理部1330、可変長符号化処理部1340、隣接画素/隣接情報バッファ1350、及びコーデック制御部1360を備えている。
データ転送インタフェース部1310は、メモリ制御部1600を介して、SDRAM2000との間で各種のデータの授受を行う。
画像前処理部1320はイントラ予測部1321及び動きベクトル前段検索部1322を備えている。イントラ予測部1321は、入力画像に基づいて、画面内予測における予測モードの選択を行う。動きベクトル前段検索部1322は、画像符号化処理部1330で行われる動きベクトルの探索の前に動きベクトルの候補の絞込みを行う。
画像符号化処理部1330は、SDRAM2000に格納されている入力画像を、メモリ制御部1600を介して取得し、当該入力画像に対して符号化処理を施して符号化データを出力する。この画像符号化処理部1330の詳細構成について説明する。
減算器(DIFF)1331は、入力画像と、当該入力画像についての予測画像との差分である予測誤差を求める。
変換部(T)1332は、減算器1331から出力される予測誤差を直交変換し、得られた変換係数を出力する。
量子化部(Q)1333は、変換部1332から出力される変換係数を量子化して量子化データを得る。
逆量子化部(IQ)1334は、量子化部1333から出力される量子化データを逆量子化して変換係数を得る。
逆変換部(IT)1335は、逆量子化部1334から出力される変換係数を逆直交変換して予測誤差を求める。
動きベクトル探索部1336は、画像前処理部1320での処理結果を用いて動きベクトルの探索を行って動きベクトルを決定する。
予測画生成部1337は、画像前処理部1320での処理結果を用いて画面内予測を行って予測画像を生成する。
動き補償部1339は、逆変換部1335から出力される変換係数、動きベクトル探索部1336によって決定された動きベクトル、予測画生成部1337によって生成された予測画像を用いて局部復号画像を生成する。
ループ内フィルタ(LF)1339は、局部復号画像に発生する、ブロック歪みやリンギングを低減させ、処理後の画像を、メモリ制御部1600を介して、SDRAM2000におけるローカルデコード画像格納用フレームメモリ領域2200に格納する。ループ内フィルタ1339は、図7におけるフィルタ処理部200の機能を提供する。
可変長符号化処理部1340は、Context Adaptive Binary Arithmetic Coding(CABAC)処理部1341を備えている。CABAC処理部1341は、量子化部1333から出力される量子化データに対しエントロピー符号化処理を行い、得られたデータを符号化データとして、メモリ制御部1600を介してSDRAM2000に格納する。
隣接画素/隣接情報バッファ1350は、符号化処理部1300内の処理で使用される隣接画素の情報などを格納しておくバッファである。
CODEC制御部1360は、画像符号化処理部1330に備えられている各部の動作の制御を行う。
図12のLSI1000は以上のような構成を有している。
次に、画面を分割したときの各分割領域を図12のLSI1000で分担して動画像符号化処理を行う場合における、隣接した分割領域を各々担当するLSI1000での分割境界領域フィルタ処理のためのデータ転送の手順について、図13を用いて説明する。
図13において、LSI1000−1及び1000−2は、画面を分割したときの各分割領域を分担して動画像符号化処理を行う場合における、Chip分割領域を挟んで隣接している一対の分割領域を各々担当する大規模集積回路装置である。なお、LSI1000−1及び1000−2は、どちらも、図12に図解したLSI1000と同一の構成を備えている。なお、チップ間データ転送ブリッジ3000は、LSI1000−1とLSI1000−2との間での各種データの授受の管理を行う。
まず、LSI1000−1及び1000−2は、それぞれ自身が備えているLF1339−1及び1339−2を使用して、自身が担当している分割領域についてのDF処理及びSAO処理を並行して実行する。LSI1000−1及び1000−2は、これらの処理後の各分割領域の画像(SAO処理後画像)を、SDRAM2000−1及び2000−2におけるローカルデコード画像格納用フレームメモリ領域2200−1及び2200−2に各々格納する。(図13における矢印[1])
次に、LSI1000−2は、Chip分割境界から4画素までの範囲の画素についてのDF処理前の画素値データと、Chip分割境界から5画素目の範囲の画素についてのDF処理後の画素値データとを、LSI1000−1へ転送する。これらの画素値データは、チップ間データ転送ブリッジ3000を介してLSI1000−1で受信され、SDRAM2000−1における分割境界フィルタ用データ格納メモリ領域2100−1に格納される。(図13における矢印[2])また、LSI1000−2は、これらの転送データを、SDRAM2000−2における分割境界フィルタ用データ格納メモリ領域2100−2に格納しておく。
次に、LSI1000−1は、Chip分割境界から4画素までの範囲の画素についてのDF処理前の画素値データと、Chip分割境界から5画素目の範囲の画素についてのDF処理後の画素値データとを、LSI1000−2へ転送する。これらの画素値データは、チップ間データ転送ブリッジ3000を介して、LSI1000−2で受信される。(図13における矢印[3])また、LSI1000−1は、これらの転送データを、SDRAM2000−1における分割境界フィルタ用データ格納メモリ領域2100−1に格納しておく。
次に、LSI1000−1及び1000−2は、Chip分割境界についての特定ブロックに対するDF処理を各々実行する。このDF処理では、自身が有しているChip分割境界から4画素までの範囲の画素のDF処理前の画素値データと、転送されてきたChip分割境界から4画素までの範囲の画素とのDF処理前の画素値データとが用いられる。その後、LSI1000−1及び1000−2は、このDF処理後の特定ブロックに対するSAO処理を各々実行する。この処理では、このDF処理後の特定ブロックに含まれる画素の画素値データと、自身が有しているChip分割境界から5画素目の画素及び転送されてきたChip分割境界から5画素目の画素のDF処理後の画素値データとが用いられる。LSI1000−1及び1000−2は、このDF処理及びSAO処理に用いられる画素値データを、それぞれ、SDRAM2000−1及び2000−2における分割境界フィルタ用データ格納メモリ領域2100−1及び2100−2から読み出して用いる。(図13における矢印[4])
その後、LSI1000−1は、上述のSAO処理が実行された後の画素値データを、SDRAM2000−1におけるローカルデコード画像格納用フレームメモリ領域2200−1における特定ブロックの画素についての格納位置に格納する。また、LSI1000−2も、上述のSAO処理が実行された後の画素値データを、SDRAM2000−2におけるローカルデコード画像格納用フレームメモリ領域2200−2における特定ブロックの画素についての格納位置に格納する。(図13における矢印[5])
以上のようにして処理を行うことにより、LSI1000−1とLSI1000−2との間でループ内フィルタ処理のために転送されるデータ量が少なくなる。
一例として、Chip分割境界におけるループ内フィルタ処理を行うときの境界8画素当たりのデータ転送量の削減効果について説明する。
Chip分割境界から8画素以内の範囲に位置する画素のDF処理前の画素値データを転送して行う場合は、8画素×8画素=64画素分の画素値データが転送される。これに対し、Chip分割境界から8画素以内の範囲に位置する画素のDF処理前の画素値データと当該境界から5画素目に位置するDF処理後の画素値データとを転送する場合は、(4+1)画素×8画素=40画素分となる。従って画素値データの転送量は37.5パーセント削減される。これに加え、前者の場合にはDF処理用のパラメータを4ブロック分転送するのに対し、後者の場合には2ブロック分のDF処理用のパラメータの転送で済むので、DF処理用のパラメータの転送量が50パーセント削減される。(なお、DF処理用パラメータ(予測モード(画面内・画面間)フラグ、動きベクトル、参照画像識別情報、係数有無フラグ、TUエッジフラグ、量子化パラメータ等)は、1ブロック当たり約14Byteである。)なお、SAO処理パラメータについては、前者の場合と後者の場合とで転送量は変わらない。(なお、SAO処理パラメータ(SAOオフセット値等)は、CTB当たり約14Byteである。)以上を纏めると、前者の場合と後者の場合とで、データ転送量が全体として約40パーセント削減される。
次に動画像符号化処理をコンピュータで実行する場合について説明する。図14は、コンピュータ3000のハードウェア構成例を図解したものである。
Micro Processing Unit(MPU)3001は、コンピュータ3000全体の動作を制御する演算処理装置である。
Read Only Memory(ROM)3002は、所定の基本制御プログラムが予め記録されている読み出し専用半導体メモリである。MPU3001は、この基本制御プログラムをコンピュータ3000の起動時に読み出して実行することによって、コンピュータ3000の各構成要素の動作制御を行うようになる。
Random Access Memory(RAM)3003は、MPU3001が各種の制御プログラムを実行する際に、必要に応じて作業用記憶領域として使用する、随時書き込み読み出し可能な半導体メモリである。
ハードディスク装置3004は、MPU3001によって実行される各種の制御プログラムや各種のデータを記憶しておく記憶装置である。MPU3001は、ハードディスク装置34に記憶されている所定の制御プログラムを読み出して実行することによって、各種の制御処理を行うようになる。なお、ハードディスク装置3004は、例えば、半導体メモリを用いたSolid State Drive(SSD)であってもよい。
入力装置3005は、例えばキーボード装置やマウス装置であり、例えば使用者により操作されると、その操作内容に対応付けられている使用者からの各種情報の入力を取得し、取得した入力情報をMPU3001に送付する。
表示装置3006は例えば液晶ディスプレイであり、MPU3001から送付される表示データに応じて各種のテキストや画像を表示する。
インタフェース装置3007は、このコンピュータ3000に接続される各種機器との間での各種情報の授受の管理を行う。
記録媒体駆動装置3008は、可搬型記録媒体3010に記録されている各種の制御プログラムやデータの読み出しを行う装置である。MPU3001は、可搬型記録媒体3010に記録されている所定の制御プログラムを、記録媒体駆動装置3008を介して読み出して実行することによって、後述する各種の制御処理を行うようにしてもよい。なお、可搬型記録媒体3010としては、例えばCompact Disc Read Only Memory(CD−ROM)やDigital Versatile Disc Read Only Memory(DVD−ROM)などがある。また、可搬型記録媒体3010として、例えば、Universal Serial Bus(USB)規格のコネクタが備えられているフラッシュメモリなどでもよい。
なお、コンピュータ3000が備えている各構成要素はバスライン3009を介して接続されており、MPU3001の管理の下で各種のデータの授受が相互に行われる。
このようなコンピュータ3000に動画像符号化処理を行わせるには、例えば、これより説明する動画像符号化処理をMPU3001に行わせるための制御プログラムを作成する。作成された制御プログラムはハードディスク装置3004若しくは可搬型記録媒体3010に予め格納しておき、MPU3001に所定の指示を与えてこの制御プログラムを読み出させて実行させるようにしておく。こうすることで、コンピュータ3000による動画像符号化処理が実現される。
次に図15について説明する。図15は、動画像符号化処理の処理内容を図解したフローチャートである。
図15の処理が開始されると、MPU3001は、まず、S301において入力画像取得処理を行う。この処理は、動画像である入力画像を取得してRAM3003に一時的に格納する処理である。
次に、MPU3001は、S302において符号化処理を行う。この処理は、RAM3003に格納しておいた入力画像を読み出し、当該入力画像と該入力画像についての予測画像との差分を符号化して符号化データを生成してRAM3003に一時的に格納する処理である。なお、このS302の処理は、図1の動画像符号化装置100では画面内予測部109と、画面内評価部110と、動き評価部111と、動き補償部112と、スイッチ113、減算器102と変換及び量子化部103とによって行われる処理である。
次に、MPU3001は、S303において局部復号処理を行う。この処理は、RAM3003に格納しておいた符号化データを読み出して復号し、当該復号の結果と前述の予測画像とに基づいて局部復号画像を形成する処理である。なお、このS303の処理は、図1の動画像符号化装置100では逆量子化及び逆変換部104と加算器105とにより行われる処理である。
次に、MPU3001は、S304においてDF処理を行う。このDF処理は、局部復号画像の画面における各ブロックに対して、当該各ブロックに含まれる画素及び当該各ブロックに隣接するブロックに含まれる画素の画素に基づいて行う処理である。なお、MPU3001は、処理後の画素値データをRAM3003に格納する処理も行う。なお、このS304の処理は図7の構成におけるDF処理部201により行われる処理である。
次に、MPU3001は、S305においてSAO処理制御処理を行う。この制御処理は、S304による処理が、Chip分割境界に接する特定ブロックに含まれる画素のうちの、特定隣接ブロックと隣接する特定隣接画素の画素値を変化させる可能性を有している場合に、S306のSAO処理の処理内容を制御する処理である。この制御では、当該特定隣接ブロックに対するSAO処理を、特定隣接画素以外の画素に基づくものに制限して行わせるようにする。より具体的には、MPU3001は、このS305の処理として、図8及び図11に図解したSAO処理制御処理の第1の例及び第2の例のどちらかの処理を行う。なお、このS305の処理は図7の構成におけるSAO処理制御部203により行われる処理である。
次に、MPU3001は、S306においてSAO処理を行う。このSAO処理は、S304のDF処理が行われた後の各ブロックに対して、当該各ブロックに含まれる画素及び当該各ブロックに隣接する画素の画素値に基づいて行う処理であり、S305のSAO処理制御処理による制御の下で行われる処理である。なお、MPU3001は、処理後の画素値データをRAM3003に格納する処理も行う。なお、このS306の処理は図7の構成におけるSAO処理部202により行われる処理である。
次に、MPU3001は、S307において符号化データ出力処理を行う。この処理は、RAM3003に格納しておいた符号化データを読み出してエントロピー符号化を施し、得られたデータに各種の情報を所定のフォーマットで付加して符号化データストリームを生成して出力する処理である。なお、このS307の処理は、図1の動画像符号化装置100ではエントロピー符号化部115によって行われる処理である。
次に、MPU3001は、S308において分割境界処理用データ送信処理を行う。この処理は、Chip分割境界から4画素までの範囲の画素についてのS304のDF処理前の画素値データと、Chip分割境界から5画素目の範囲の画素についてのS304のDF処理後の画素値データとをRAM3003から読み出して送信する処理である。これらのデータの送信先は、入力画像における、コンピュータ3000が処理を担当している分割領域と、Chip分割境界を挟んで隣接している分割領域の動画像符号化処理を担当している他の処理装置である。
次に、MPU3001は、S309において分割境界処理用データ送信処理を行う。この処理は、Chip分割境界から4画素までの範囲の画素についてのS304のDF処理前の画素値データと、Chip分割境界から5画素目の範囲の画素についてのS304のDF処理後の画素値データとを受信してRAM3003に格納する処理である。なお、これらのデータの送信元は、S308の処理におけるデータの送信先の処理装置である。
次に、MPU3001は、S310において分割境界DF処理を行う。この処理は、RAM3003に格納されている、Chip分割境界を挟む一対の特定ブロックの各々に含まれる画素値に基づいたDF処理を、当該一対の特定ブロックの各々に対して行う処理である。なお、このS310の処理は図7の構成における境界DF処理部231により行われる処理である。
次に、MPU3001は、S311において分割境界SAO処理を行う。この処理は、S310の境界DF処理後の上記一対の特定ブロックの各々に対して行われるSAO処理である。この分割境界SAO処理は、S310の境界DF処理後の一対の特定ブロックに含まれる画素と、RAM3003に格納されている、DF後画像の画素のうち特定隣接ブロックに含まれる画素であって特定隣接画素に隣接する画素との画素値に基づく処理である。なお、このS311の処理は図7の構成における境界SAO処理部232により行われる処理である。
MPU3001は、このS311の処理を終えた後には、S301へ処理を戻して上述した処理を繰り返す。
以上までの処理が図15にフローチャートで図解した動画像符号化処理である。この処理がコンピュータ3000で実行されることにより、コンピュータ3000を用いての動画像符号化が実現される。
以上記載した各実施例を含む実施形態に関し、更に以下の付記を開示する。
(付記1)
入力画像と該入力画像についての予測画像との差分を符号化する符号化部と、
前記符号化部から出力される符号化データを復号し、該復号の結果と前記予測画像とに基づいて局部復号画像を得る局部復号部と、
前記局部復号画像に対して画像処理を行う画像処理部と、
前記画像処理後の前記局部復号画像に基づいて前記予測画像を得る予測部と、
を備え、
前記画像処理部は、
複数の矩形のブロックに分割されている前記局部復号画像の画面における各ブロックに対する第1フィルタ処理を、該各ブロックに含まれる画素及び該各ブロックに隣接するブロックに含まれる画素の画素値に基づいて行う第1フィルタ処理部と、
前記第1フィルタ処理が行われた後の各ブロックに対する第2フィルタ処理を、該各ブロックに含まれる画素及び該各ブロックに隣接する画素の画素値に基づいて行う第2フィルタ処理部と、
前記複数の矩形のブロックのうちの特定の境界線に接する特定ブロックに該境界線とは反対側で隣接する特定隣接ブロックに含まれる画素のうちの前記特定ブロックに隣接する画素に対する前記第1フィルタ処理が行われた後の画素の画素値を格納するメモリと、
を備え、
前記第2フィルタ処理部は、前記第1フィルタ処理が行われた後の前記特定ブロックに対する前記第2フィルタ処理を、前記メモリに格納されている、前記特定隣接ブロック内の画素のうちの前記特定ブロックに隣接する画素であって且つ前記特定隣接ブロックに対する前記第1フィルタ処理が行われた後の画素の画素値を用いて行う、
ことを特徴とする動画像符号化装置。
(付記2)
前記第1フィルタ処理が、前記特定ブロックに含まれる画素のうちの、前記特定隣接ブロックと隣接する特定隣接画素の画素値を変化させる可能性を有している場合に、前記第2フィルタ処理部を制御して、該特定隣接ブロックに対する前記第2フィルタ処理を、前記特定隣接画素以外の画素に基づくものに制限して行わせる制御部を更に備えることを特徴とする付記1に記載の動画像符号化装置。
(付記3)
前記制御部は、前記特定ブロックに対する前記第1フィルタ処理が前記特定隣接画素の画素値を変化させるか否かを判定し、前記第1フィルタ処理が前記特定隣接画素の画素値を変化させないと判定した場合には、前記特定隣接ブロックに対する前記第2フィルタ処理への前記制限を行わないように前記第2フィルタ処理部を制御することを特徴とする付記2に記載の動画像符号化装置。
(付記4)
前記第1フィルタ処理は、H.265|MPEG-H High Efficiency Video Coding(HEVC)標準におけるデブロッキングフィルタ処理であり、
前記第2フィルタ処理は、前記HEVC標準におけるサンプルアダプティブオフセット(SAO)処理である、
ことを特徴する付記1から3のうちのいずれか一項に記載の動画像符号化装置。
(付記5)
前記第1フィルタ処理は、H.265|MPEG-H High Efficiency Video Coding(HEVC)標準におけるデブロッキングフィルタ処理であり、
前記第2フィルタ処理は、前記HEVC標準におけるサンプルアダプティブオフセット(SAO)処理であり、
前記制御部は、前記SAO処理におけるエッジオフセットクラスとして、垂直方向に隣接する画素配列のクラスを選択することによって、前記特定隣接ブロックに対する前記第2フィルタ処理への前記制限を行うことを特徴とする付記2又は3に記載の動画像符号化装置。
(付記6)
前記第1フィルタ処理は、H.265|MPEG-H High Efficiency Video Coding(HEVC)標準におけるデブロッキングフィルタ処理であり、
前記制御部は、前記境界線の向きが前記画面における垂直方向でない場合には、前記特定ブロックに対する前記第1フィルタ処理が前記特定隣接画素の画素値を変化させないとの判定を下す、
ことを特徴とする付記3に記載の動画像符号化装置。
(付記7)
前記制御部は、前記境界線の向きが前記画面における垂直方向である場合であっても、前記境界線に接する特定ブロックが互いに隣接する境界についての境界強度値に、1以上であるものが存在しない場合には、前記特定ブロックに対する前記第1フィルタ処理が前記特定隣接画素の画素値を変化させないとの判定を下すことを特徴とする付記6に記載の動画像符号化装置。
(付記8)
前記制御部は、前記境界線の向きが前記画面における垂直方向である場合であって、且つ、前記境界線に接する特定ブロックが互いに隣接する境界についての境界強度値に1以上であるものが存在する場合において、該境界を挟んで隣接する一対の特定ブロックの一方に含まれる特定隣接画素のうちの該境界から近い順の3つの画素の画素値をそれぞれp_0,3、p_1,3、p_2,3とし、該一対の特定ブロックの他方に含まれる特定隣接画素のうちの該境界から近い順の3つの画素の画素値をq_0,3、q_1,3、q_2,3とし、βを所定の閾値とした場合における下記の式、
|p_2.3-2*p_1.3+p_0.3|+|q_2.3-2*q_1.3+q_0.3|<β
が成立するか否かを判定し、成立しないと判定した場合に、前記特定ブロックに対する前記第1フィルタ処理が前記特定隣接画素の画素値を変化させないとの判定を下すことを特徴とする付記7に記載の動画像符号化装置。
(付記9)
動画像符号化装置が行う動画像符号化方法であって、
入力画像と該入力画像についての予測画像との差分を符号化して符号化データを生成し、
前記符号化データを復号し、該復号の結果と前記予測画像とに基づいて局部復号画像を形成し、
前記局部復号画像に対して画像処理を行い、
前記画像処理後の前記局部復号画像に基づいて前記予測画像を生成し、
前記画像処理では、
複数の矩形のブロックに分割されている前記局部復号画像の画面における各ブロックに対する第1フィルタ処理を、該各ブロックに含まれる画素及び該各ブロックに隣接するブロックに含まれる画素の画素値に基づいて行い、
前記複数の矩形のブロックのうちの特定の境界線に接する特定ブロックに該境界線とは反対側で隣接する特定隣接ブロックに含まれる画素のうちの前記特定ブロックに隣接する画素に対する前記第1フィルタ処理が行われた後の画素の画素値を、前記動画像符号化装置が備えているメモリに格納し、
前記第1フィルタ処理が行われた後の各ブロックに対する第2フィルタ処理を、該各ブロックに含まれる画素及び該各ブロックに隣接する画素の画素値に基づいて行い、
前記第1フィルタ処理が行われた後の前記特定ブロックに対する前記第2フィルタ処理については、前記メモリに格納されている、前記特定隣接ブロック内の画素のうちの前記特定ブロックに隣接する画素であって且つ前記特定隣接ブロックに対する前記第1フィルタ処理が行われた後の画素の画素値を用いて行う、
ことを特徴とする動画像符号化方法。
(付記10)
動画像符号化処理をコンピュータに実行させるプログラムであって、
入力画像と該入力画像についての予測画像との差分を符号化して符号化データを生成し、
前記符号化データを復号し、該復号の結果と前記予測画像とに基づいて局部復号画像を形成し、
前記局部復号画像に対して画像処理を行い、
前記画像処理後の前記局部復号画像に基づいて前記予測画像を生成する
処理をコンピュータに実行させ、
前記画像処理では、
複数の矩形のブロックに分割されている前記局部復号画像の画面における各ブロックに対する第1フィルタ処理を、該各ブロックに含まれる画素及び該各ブロックに隣接するブロックに含まれる画素の画素値に基づいて行い、
前記複数の矩形のブロックのうちの特定の境界線に接する特定ブロックに該境界線とは反対側で隣接する特定隣接ブロックに含まれる画素のうちの前記特定ブロックに隣接する画素に対する前記第1フィルタ処理が行われた後の画素の画素値を、前記コンピュータが備えているメモリに格納し、
前記第1フィルタ処理が行われた後の各ブロックに対する第2フィルタ処理を、該各ブロックに含まれる画素及び該各ブロックに隣接する画素の画素値に基づいて行い、
前記第1フィルタ処理が行われた後の前記特定ブロックに対する前記第2フィルタ処理については、前記メモリに格納されている、前記特定隣接ブロック内の画素のうちの前記特定ブロックに隣接する画素であって且つ前記特定隣接ブロックに対する前記第1フィルタ処理が行われた後の画素の画素値を用いて行う、
ことを特徴とするプログラム。