JP2016143962A - 領域分割画像生成装置、画像復号装置、および符号化装置。 - Google Patents
領域分割画像生成装置、画像復号装置、および符号化装置。 Download PDFInfo
- Publication number
- JP2016143962A JP2016143962A JP2015017017A JP2015017017A JP2016143962A JP 2016143962 A JP2016143962 A JP 2016143962A JP 2015017017 A JP2015017017 A JP 2015017017A JP 2015017017 A JP2015017017 A JP 2015017017A JP 2016143962 A JP2016143962 A JP 2016143962A
- Authority
- JP
- Japan
- Prior art keywords
- value
- prediction
- image
- unit
- flag
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
【課題】従来技術の分割予測において、領域毎の代表予測値(最頻値)を導出する処理が複雑であり、代表予測値の導出に要するバッファのサイズが大きいという課題がある。【解決手段】本発明では、予測代表値の導出に利用する画素をブロックサイズによって定まるステップサイズでサンプリングして処理量、及びバッファのサイズを低減する。【選択図】図1
Description
本発明は、画像を表わす符号化データを復号する画像復号装置、および画像を符号化することによって符号化データを生成する画像符号化装置に関する。
複数視点の画像符号化技術には、複数の視点の画像を符号化する際に画像間の視差を予測することによって情報量を低減する視差予測符号化や、その符号化方法に対応した復号方法が提案されている。視点画像間の視差を表すベクトルを変位ベクトルと呼ぶ。変位ベクトルは、水平方向の要素(x成分)と垂直方向の要素(y成分)を有する2次元のベクトルであり、1つの画像を分割した領域であるブロック毎に算出される。また、複数視点の画像を取得するには、それぞれの視点に配置されたカメラを用いることが一般的である。複数視点の符号化では、各視点画像は、複数のレイヤにおいてそれぞれ異なるレイヤとして符号化される。複数のレイヤから構成される動画像の符号化方法は、一般に、スケーラブル符号化又は階層符号化と呼ばれる。スケーラブル符号化では、レイヤ間で予測を行うことで、高い符号化効率を実現する。レイヤ間で予測を行わずに基準となるレイヤは、ベースレイヤ、それ以外のレイヤは拡張レイヤと呼ばれる。レイヤが視点画像から構成される場合のスケーラブル符号化を、ビュースケーラブル符号化と呼ぶ。このとき、ベースレイヤはベースビュー、拡張レイヤは非ベースビューとも呼ばれる。さらに、ビュースケーラブルに加え、テクスチャ(画像)からなるテクスチャレイヤ(画像レイヤ)と、デプスマップ(距離画像)からなるデプスレイヤ(距離画像レイヤ)から構成される場合のスケーラブル符号化は、3次元スケーラブル符号化と呼ばれる。
例えば、非特許文献1のHEVCベースの3次元スケーラブル符号化技術がある。非特許文献1では、効率良くデプスマップを符号化するために、領域別DC符号化(SDC; Segment-wise DC Coding)というデプス符号化ツールがある。
領域別DC符号化は、デプスマップ上の対象ブロックにおいて、1又は複数の領域毎に、予測残差の平均値(DC値)を表わす予測残差DC情報(DCオフセット情報)を符号化する技術である。なお、インター予測、及びイントラ予測された予測画像に対する領域別DC符号化を、それぞれインターSDC、イントラSDCとも呼ぶ。
非特許文献1では、イントラSDCにおいてDMM予測(Depth Modeling Mode,デプスイントラ予測)が適用される場合、デプスマップ上の予測ブロックは、2つの領域へ分割され、入力画像と領域毎の予測値との残差(DC値)が上記領域別DC符号化される。一方、イントラSDCにおいてDMM予測が適用されない場合、あるいは、インターSDCの場合、Angular予測などによるイントラ予測、あるいは、動き補償によるインター予測から得られる予測ブロックを1領域として、入力画像と予測値との残差(DC値)が領域別DC符号化される。
非特許文献2では、上記イントラSDCにおいてDMM予測が適用されない場合、あるいは、インターSDCの場合において、領域分割予測(単に、分割予測とも呼ぶ)を行うか否かを示す領域分割予測フラグ(分割予測フラグとも呼ぶ)seg_pred_flagが1(真)の場合、Angular予測などによるイントラ予測、あるいは、動き補償によるインター予測から得られる予測ブロックを2つ以上の領域に分割し、領域毎に入力画像と予測値との残差(DC値)が領域別DC符号化される。
「3D-HEVC Draft Text 6 (JCT3V-J1001v5)」, Joint Collaborative Team on 3D Video Coding Extension Development of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11 10th Meeting: Strasbourg, FR, 18-24 October, 2014(2014年12月006日公開)
K. Zhang, J. An, X. Zhang, H. Huang, J-L. Lin, S. Lei,「3D-CE1: Segmental prediction in 3D-HEVC (JCT3V-J0032)」, Joint Collaborative Team on 3D Video Coding Extension Development of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11 9th Meeting: Strasbourg, FR, 18-24 October, 2014(2014年10月10日公開)
しかしながら、従来技術の領域分割予測において、領域毎の代表予測値(最頻値)を導出する処理が複雑であり、代表予測値の導出に要するバッファのサイズが大きいという課題がある。
本発明は、上記の問題に鑑みてなされたものであり、その目的は、予測代表値の導出に利用する画素をサンプリングして処理量、及びバッファのサイズを低減することが可能な画像復号装置等を実現することにある。
上記の課題を解決するために、本発明の態様1に係る領域分割画像生成装置は、対象PUの予測画像を参照して、第1の閾値を導出する閾値導出手段と、上記第1の閾値と前記予測画像の各画素位置の画素値を参照して、前記予測画像を2つの領域へ分割する領域分割手段と、上記分割された領域毎に、前記領域に対応する上記予測画像を参照して、代表値を導出する代表値導出手段と、上記領域の各々に対して、上記各領域に対応する上記代表値と、上記各領域に対応するDCオフセット値を加算し、上記各領域の復号画像を生成する加算手段を備えることを特徴とする。
上記の課題を解決するために、本発明の態様2に係る領域分割画像生成装置の代表値導出手段は、上記予測画像のブロックサイズnSと第1の最小ブロックサイズnMinSを参照して、サンプリングする画素のステップサイズnStepを導出するステップサイズ導出手段と、x方向およびy方向のオフセット座標(dX,dY)を導出するオフセット座標導出手段と、上記分割された領域毎に、各領域に属する上記予測画像上の画素であり、かつ、上記ステップサイズnStepと上記オフセット座標(dX,dY)で定まる画素位置(サンプリング位置)にある画素を参照して、各領域の最頻値を導出する最頻値導出手段を備えることを特徴とする。
上記の課題を解決するために、本発明の態様3に係る領域分割画像生成装置のステップサイズ導出手段は、上記ステップサイズnStepを、上記予測画像のブロックサイズnSを、第1の最小ブロックサイズnSの2を底とする対数値Log2MinSで右シフトすることで導出することを特徴とする。
上記の課題を解決するために、本発明の態様4に係る領域分割画像生成装置のステップサイズ導出手段は、上記予測画像のブロックサイズnSの2を底とする対数値Log2(nS)を第1の最小ブロックサイズnMinSの2を底とする対数値Log2MinSで減算した値と、0のうち最大値を2の乗数として、ステップサイズnStepを導出することを特徴とする。
上記の課題を解決するために、本発明の態様5に係る領域分割画像生成装置のステップサイズ導出手段は、上記ステップサイズnStepを、nStep=1<<Max( Log2(nS) - Log2MinS, 0)によって導出することを特徴とする。
上記の課題を解決するために、本発明の態様6に係る領域分割画像生成装置のオフセット座標導出手段は、上記ステップ幅サイズを2で除算した値から、第1の所定値を減算した値をオフセット座標とすることを特徴とする。
上記の課題を解決するために、本発明の態様7に係る領域分割画像生成装置の閾値導出手段は、前記予測画像上の最左上画素と最右上画素と最左下画素と最右下画素)の平均値を第1の閾値Tとすることを特徴とする。
上記の課題を解決するために、本発明の態様8に係る領域分割画像生成装置の領域分割手段は、前記画素値が前記第1の閾値T未満の場合、前記各画素位置を第1の領域に属すると判定し、前記各画素位置に対応する領域情報segIdxへ0を設定し、前記画素値が前記第1の閾値以上の場合、前記各画素位置を第2の領域に属すると判定し、前記各画素位置に対応する領域情報segIdxへ1を設定することを特徴とする。
上記の課題を解決するために、本発明の態様9に係る画像復号装置は、上記態様1から態様8の何れか一つに記載の領域分割画像生成装置を備えることを特徴とする。
上記の課題を解決するために、本発明の態様10に係る画像符号化装置は、上記態様1から態様8の何れか一つに記載の領域分割画像生成装置を備えることを特徴とする。
本発明の一態様によれば、代表予測値の導出に利用する画素をブロックサイズによって定まるステップサイズでサンプリングして処理量、及びバッファのサイズを低減する効果を奏する。
〔概要〕
以下、図面を参照しながら本発明の実施形態について説明する。
以下、図面を参照しながら本発明の実施形態について説明する。
図2は、本実施形態に係る画像伝送システム5の構成を示す概略図である。
画像伝送システム5は、複数のレイヤ画像を符号化した符号を伝送し、伝送された符号を復号した画像を表示するシステムである。画像伝送システム5は、画像符号化装置2、ネットワーク3、画像復号装置2及び画像表示装置4を含んで構成される。
画像符号化装置2には、複数のレイヤ画像(テクスチャ画像ともいう)を示す信号Tが入力される。レイヤ画像とは、ある解像度及びある視点で視認もしくは撮影される画像である。複数のレイヤ画像を用いて3次元画像を符号化するビュースケーラブル符号化を行う場合、複数のレイヤ画像のそれぞれは、視点画像と呼ばれる。ここで、視点は撮影装置の位置又は観測点に相当する。例えば、複数の視点画像は、被写体に向かって左右の撮影装置のそれぞれが撮影した画像である。画像符号化装置2は、この信号のそれぞれを符号化して符号化データ#1を生成する。符号化データ#1の詳細については、後述する。視点画像とは、例えば、ある視点において観測される2次元画像(平面画像)である。視点画像は、例えば2次元平面内に配置された画素毎の輝度値、又は色信号値で示される。
以下では、1枚の視点画像又は、その視点画像を示す信号をピクチャ(picture)と呼ぶ。本実施形態では、複数のレイヤ画像として、少なくともベースレイヤ画像と、ベースレイヤ画像以外の画像(拡張レイヤ画像)を含む画像の符号化および復号を扱う。複数のレイヤのうち、画像もしくは符号化パラメータにおいて参照関係(依存関係)にある2つのレイヤについて、参照される側の画像を、第1レイヤ画像、参照する側の画像を第2レイヤ画像と呼ぶ。例えば、ベースレイヤを参照して符号化される(ベースレイヤ以外の)エンハンスレイヤ画像がある場合、ベースレイヤ画像を第1レイヤ画像、エンハンスレイヤ画像を第2レイヤ画像として扱う。なお、エンハンスレイヤ画像の例としては、ベースビュー以外の視点画像やデプスマップなどがある。デプスマップ(depth map、「デプス画像」、「深度画像」、「距離画像」とも言う)とは、被写空間に含まれる被写体や背景の、視点(撮影装置等)からの距離に対応する信号値(「デプス値」、「深度値」、「デプス」等と呼ぶ)であって、二次元平面に配置された画素毎の信号値(画素値)からなる画像信号である。デプスマップを構成する画素は、視点画像を構成する画素と対応する。従って、デプスマップは、被写空間を二次元平面に射影した基準となる画像信号である視点画像を用いて、三次元の被写空間を表すための手がかりとなる。
ネットワーク3は、画像符号化装置2が生成した符号化データ#1を画像復号装置1に伝送する。ネットワーク3は、インターネット(internet)、広域ネットワーク(WAN:Wide Area Network)、小規模ネットワーク(LAN:Local Area Network)又はこれらの組み合わせである。ネットワーク3は、必ずしも双方向の通信網に限らず、地上波デジタル放送、衛星放送等の放送波を伝送する一方向又は双方向の通信網であっても良い。また、ネットワーク3は、DVD(Digital Versatile Disc)、BD(Blue-ray Disc:登録商標)等の符号化データ#1を記録した記憶媒体で代替されても良い。
画像復号装置1は、ネットワーク3が伝送した符号化データ#1のそれぞれを復号し、それぞれ復号した複数の復号レイヤ画像Td(復号視点画像TexturePic、及び復号デプスマップDepthPic)を生成して出力する。
画像表示装置4は、画像復号装置1が生成した複数の復号レイヤ画像Tdの全部又は一部を表示する。例えば、ビュースケーラブル符号化においては、全部の場合、3次元画像(立体画像)や自由視点画像が表示され、一部の場合、2次元画像が表示される。画像表示装置4は、例えば、液晶ディスプレイ、有機EL(Electro-luminescence)ディスプレイ等の表示デバイスを備える。
以下では、図1〜図14を参照しながら、本発明の一実施形態に係る画像復号装置1および画像符号化装置2について説明する。図3は、画像復号装置1の概略的構成を示す機能ブロック図である。
動画像復号装置1には、動画像符号化装置2がレイヤ画像(1又は複数の視点画像TexturePic、及び視点画像TexturePicに対応する同時刻のデプスマップDepthPic)を符号化した符号化データ#1が入力される。動画像復号装置1は、入力された符号化データ#1を復号して、レイヤ画像#2(1又は複数の視点画像TexturePic、及び視点画像TexturePicに対応する同時刻のデプスマップDepthPic)を外部に出力する。動画像復号装置1の詳細な説明に先立ち、符号化データ#1の構成を以下に説明する。
〔符号化データの構成〕
図4を用いて、動画像符号化装置2によって生成され、動画像復号装置1によって復号される符号化データ#1の構成例について説明する。符号化データ#1は、例示的に、シーケンス、およびシーケンスを構成する複数のピクチャを含む。
図4を用いて、動画像符号化装置2によって生成され、動画像復号装置1によって復号される符号化データ#1の構成例について説明する。符号化データ#1は、例示的に、シーケンス、およびシーケンスを構成する複数のピクチャを含む。
符号化データ#1におけるシーケンスレイヤ以下の階層の構造を図4に示す。図4の(a)〜(e)は、それぞれ、シーケンスSEQを規定するシーケンスレイヤ、ピクチャPICTを規定するピクチャレイヤ、スライスSを規定するスライスレイヤ、スライスデータを規定するスライスデータレイヤ、符号化ツリーに含まれる符号化単位(Coding Unit; CU)を規定する符号化ユニットレイヤを示す図である。
(シーケンスレイヤ)
シーケンスレイヤでは、処理対象のシーケンスSEQ(以下、対象シーケンスとも称する)を復号するために動画像復号装置1が参照するデータの集合が規定されている。シーケンスSEQは、図4(a)に示すように、ビデオパラメータセット(Video Parameter Set)、シーケンスパラメータセットSPS(Sequence Parameter Set)、ピクチャパラメータセットPPS(Picture Parameter Set)、ピクチャPICT、及び、付加拡張情報SEI(Supplemental Enhancement Information)を含んでいる。ここで#の後に示される値はレイヤIDを示す。図4では、#0と#1、すなわちレイヤ0とレイヤ1の符号化データが存在する例を示すが、レイヤの種類およびレイヤの数はこれによらない。
シーケンスレイヤでは、処理対象のシーケンスSEQ(以下、対象シーケンスとも称する)を復号するために動画像復号装置1が参照するデータの集合が規定されている。シーケンスSEQは、図4(a)に示すように、ビデオパラメータセット(Video Parameter Set)、シーケンスパラメータセットSPS(Sequence Parameter Set)、ピクチャパラメータセットPPS(Picture Parameter Set)、ピクチャPICT、及び、付加拡張情報SEI(Supplemental Enhancement Information)を含んでいる。ここで#の後に示される値はレイヤIDを示す。図4では、#0と#1、すなわちレイヤ0とレイヤ1の符号化データが存在する例を示すが、レイヤの種類およびレイヤの数はこれによらない。
ビデオパラメータセットVPSは、複数のレイヤから構成されている動画像において、複数の動画像に共通する符号化パラメータの集合および動画像に含まれる複数のレイヤおよび個々のレイヤに関連する符号化パラメータの集合が規定されている。
シーケンスパラメータセットSPSでは、対象シーケンスを復号するために動画像復号装置1が参照する符号化パラメータの集合が規定されている。例えば、ピクチャの幅や高さが規定される。
ピクチャパラメータセットPPSでは、対象シーケンス内の各ピクチャを復号するために動画像復号装置1が参照する符号化パラメータの集合が規定されている。例えば、ピクチャの復号に用いられる量子化幅の基準値(pic_init_qp_minus26)や重み付き予測の適用を示すフラグ(weighted_pred_flag)が含まれる。なお、PPSは複数存在してもよい。その場合、対象シーケンス内の各ピクチャから複数のPPSの何れかを選択する。
(ピクチャレイヤ)
ピクチャレイヤでは、処理対象のピクチャPICT(以下、対象ピクチャとも称する)を復号するために動画像復号装置1が参照するデータの集合が規定されている。ピクチャPICTは、図4の(b)に示すように、スライスS1〜SNSを含んでいる(NSはピクチャPICTに含まれるスライスの総数)。
ピクチャレイヤでは、処理対象のピクチャPICT(以下、対象ピクチャとも称する)を復号するために動画像復号装置1が参照するデータの集合が規定されている。ピクチャPICTは、図4の(b)に示すように、スライスS1〜SNSを含んでいる(NSはピクチャPICTに含まれるスライスの総数)。
なお、以下、スライスS1〜SNSのそれぞれを区別する必要が無い場合、符号の添え字を省略して記述することがある。また、以下に説明する符号化データ#1に含まれるデータであって、添え字を付している他のデータについても同様である。
(スライスレイヤ)
スライスレイヤでは、処理対象のスライスS(対象スライスとも称する、スライスセグメント)を復号するために動画像復号装置1が参照するデータの集合が規定されている。スライスSは、図4の(c)に示すように、スライスヘッダSH、及び、スライスデータSDATAを含んでいる。
スライスレイヤでは、処理対象のスライスS(対象スライスとも称する、スライスセグメント)を復号するために動画像復号装置1が参照するデータの集合が規定されている。スライスSは、図4の(c)に示すように、スライスヘッダSH、及び、スライスデータSDATAを含んでいる。
スライスヘッダSHには、対象スライスの復号方法を決定するために動画像復号装置1が参照する符号化パラメータ群が含まれる。スライスタイプを指定するスライスタイプ指定情報(slice_type)は、スライスヘッダSHに含まれる符号化パラメータの一例である。
スライスタイプ指定情報により指定可能なスライスタイプとしては、(1)符号化の際にイントラ予測のみを用いるIスライス、(2)符号化の際に単方向予測、又は、イントラ予測を用いるPスライス、(3)符号化の際に単方向予測、双方向予測、又は、イントラ予測を用いるBスライスなどが挙げられる。
スライスデータSDATAには、1又は複数のツリーブロックTBLK1〜TBLKNC(NCは、スライスデータSDATAに含まれるツリーブロックの総数)が含まれる。
(ツリーブロックレイヤ)
ツリーブロックレイヤでは、処理対象のツリーブロックTBLK(以下、対象ツリーブロックとも称する)を復号するために動画像復号装置1が参照するデータの集合が規定されている。
ツリーブロックレイヤでは、処理対象のツリーブロックTBLK(以下、対象ツリーブロックとも称する)を復号するために動画像復号装置1が参照するデータの集合が規定されている。
ツリーブロックTBLKは、ツリーブロックヘッダTBLKHと、符号化単位情報CU1〜CUNL(NLはツリーブロックTBLKに含まれる符号化単位情報の総数)とを含む。ここで、まず、ツリーブロックTBLKと、符号化単位情報CUとの関係について説明すると次のとおりである。
ツリーブロックTBLKは、イントラ予測またはインター予測、および、変換の各処理ためのブロックサイズを特定するためのユニットに分割される。
ツリーブロックTBLKの上記ユニットは、再帰的な4分木分割により分割されている。この再帰的な4分木分割により得られる木構造のことを以下、符号化ツリー(coding tree)と称する。
以下、符号化ツリーの末端のノードであるリーフ(leaf)に対応するユニットを、符号化ノード(coding node)として参照する。また、符号化ノードは、符号化処理の基本的な単位となるため、以下、符号化ノードのことを、符号化単位(CU)とも称する。
つまり、符号化単位情報(以下、CU情報と称する)CU1〜CUNLは、ツリーブロックTBLKを再帰的に4分木分割して得られる各符号化ノード(符号化単位)に対応する情報である。
また、符号化ツリーのルート(root)は、ツリーブロックTBLKに対応付けられる。換言すれば、ツリーブロックTBLKは、複数の符号化ノードを再帰的に含む4分木分割の木構造の最上位ノードに対応付けられる。
なお、各符号化ノードのサイズは、当該符号化ノードが直接に属する符号化ノード(すなわち、当該符号化ノードの1階層上位のノードのユニット)のサイズの縦横とも半分である。
(ツリーブロックヘッダ)
ツリーブロックヘッダTBLKHには、対象ツリーブロックの復号方法を決定するために動画像復号装置1が参照する符号化パラメータが含まれる。具体的には、図4の(d)に示すように、対象ツリーブロックの各CUへの分割パターンを指定するツリーブロック分割情報SP_TBLK、および、量子化ステップの大きさを指定する量子化パラメータ差分Δqp(qp_delta)が含まれる。
ツリーブロックヘッダTBLKHには、対象ツリーブロックの復号方法を決定するために動画像復号装置1が参照する符号化パラメータが含まれる。具体的には、図4の(d)に示すように、対象ツリーブロックの各CUへの分割パターンを指定するツリーブロック分割情報SP_TBLK、および、量子化ステップの大きさを指定する量子化パラメータ差分Δqp(qp_delta)が含まれる。
ツリーブロック分割情報SP_TBLKは、ツリーブロックを分割するための符号化ツリーを表す情報であり、具体的には、対象ツリーブロックに含まれる各CUの形状、サイズ、および、対象ツリーブロック内での位置を指定する情報である。
また、量子化パラメータ差分Δqpは、対象ツリーブロックにおける量子化パラメータqpと、当該対象ツリーブロックの直前に符号化されたツリーブロックにおける量子化パラメータqp’との差分qp−qp’である。
(CUレイヤ)
CUレイヤでは、処理対象のCU(以下、対象CUとも称する)を復号するために動画像復号装置1が参照するデータの集合が規定されている。
CUレイヤでは、処理対象のCU(以下、対象CUとも称する)を復号するために動画像復号装置1が参照するデータの集合が規定されている。
ここで、CU情報CUに含まれるデータの具体的な内容の説明をする前に、CUに含まれるデータの木構造について説明する。符号化ノードは、予測ツリー(prediction tree;PT)および変換ツリー(transform tree;TT)のルートのノードとなる。予測ツリーおよび変換ツリーについて説明すると次のとおりである。
予測ツリーにおいては、符号化ノードが1または複数の予測ブロックに分割され、各予測ブロックの位置とサイズとが規定される。
予測処理は、この予測ブロックごとに行われる。以下、予測の単位である予測ブロックのことを、予測単位(prediction unit;PU)とも称する。
予測ツリーにおける分割の種類は、大まかにいえば、イントラ予測の場合と、インター予測の場合との2つがある。
イントラ予測の場合、分割タイプPartModeは、2N×2N(符号化ノードと同一サイズ, PART_2Nx2N)と、N×N(PART_NxN)とがある。
また、インター予測の場合、分割タイプPartModeが、2N×2N(PART_2Nx2N)、2N×N(PART_2NxN)、N×2N(PART_Nx2N)、および、N×N(PART_NxN)などがある。
また、変換ツリーにおいては、符号化ノードが1または複数の変換ブロックに分割され、各変換ブロックの位置とサイズとが規定される。
変換処理は、この変換ブロックごとに行われる。以下、変換の単位である変換ブロックのことを、変換単位(transform unit;TU)とも称する。
(CU情報のデータ構造)
続いて、図4の(e)を参照しながらCU情報CUに含まれるデータの具体的な内容について説明する。図4の(e)に示すように、CU情報CUは、具体的には、スキップフラグSKIP、PT情報PTI、および、TT情報TTIを含む。
続いて、図4の(e)を参照しながらCU情報CUに含まれるデータの具体的な内容について説明する。図4の(e)に示すように、CU情報CUは、具体的には、スキップフラグSKIP、PT情報PTI、および、TT情報TTIを含む。
スキップフラグSKIPは、対象のPUについて、スキップモードが適用されているか否かを示すフラグであり、スキップフラグSKIPの値が1の場合、すなわち、対象CUにスキップモードが適用されている場合、そのCU情報CUにおけるPT情報PTI、および、TT情報TTIは省略される。
PT情報PTIは、CUに含まれるPTに関する情報である。言い換えれば、PT情報PTIは、PTに含まれる1または複数のPUそれぞれに関する情報の集合であり、動画像復号装置1により予測画像を生成する際に参照される。PT情報PTIは、図4の(d)に示すように、予測タイプ情報PType、および、予測情報PInfoを含んでいる。
予測タイプ情報PType(又は、CuPredMode)は、CUに含まれる1又は複数のPUについての予測画像生成方法として、イントラ予測を用いるのか、または、インター予測を用いるのかを指定する情報である。例えば、イントラ予測を用いる場合には、予測タイプ情報CuPredModeは、イントラ予測を示すMODE_INTRAに設定され、インター予測を用いる場合には、インター予測を示すMODE_INTERに設定される。イントラ予測を適用するCUをイントラCUと呼び、インターCUを適用するCUをインターCUとも呼ぶ。
予測情報PInfoは、予測タイプ情報PTypeが何れの予測方法を指定するのかに応じて、イントラ予測情報、または、インター予測情報より構成される。以下では、イントラ予測が適用されるPUをイントラPUとも呼称し、インター予測が適用されるPUをインターPUとも呼称する。
また、予測情報PInfoは、対象PUの分割タイプPartMode、サイズ、および、位置を指定する情報が含まれる。上述のとおり予測画像の生成は、PUを単位として行われる。予測情報PInfoの詳細については後述する。
TT情報TTIは、CUに含まれるTTに関する情報である。言い換えれば、TT情報TTIは、TTに含まれる1または複数のTUそれぞれに関する情報の集合であり、動画像復号装置1により残差データを復号する際に参照される。なお、以下、TUのことを変換ブロックと称することもある。
TT情報TTIは、図4の(d)に示すように、対象CUの各変換ブロックへの分割パターンを指定するTT分割情報SP_TU、および、TU情報TUI1〜TUINT(NTは、対象CUに含まれる変換ブロックの総数)を含んでいる。
TT分割情報SP_TUは、具体的には、対象CUに含まれる各TUの形状、サイズ、および、対象CU内での位置を決定するための情報である。例えば、TT分割情報SP_TUは、対象となるノードの分割を行うのか否かを示す情報(split_transform_unit_flag)と、その分割の深度を示す情報(trafoDepth)とから実現することができる。
また、TU分割情報SP_TUには、各TUに非ゼロの変換係数が存在するか否かの情報が含まれる。例えば、個々のTUに対する非ゼロ係数の存否情報(CBF;Coded Block Flag)がり、色空間毎に、輝度lumaに関するCBFをcbf_luma、色差Cbに関するCBFをcbf_cb、色差Crに関するCBFをcbf_crと称する。また、複数のTUに対する非ゼロ係数の存否情報(rqt_root_flag, 又はno_residual_data_flagとも称する)がTU分割情報SP_TUに含まれる。また、各TUに対する非ゼロの変換係数を符号化する代わりに、TUにおいて、1又は複数の領域毎に、予測残差の平均(DC)値を表わす予測残差DC情報(DCオフセット情報)を符号化する(領域別DC符号化を行う)か否かを示すSDCフラグsdc_flagが含まれる。なお、領域別DC符号化は、Segment-wise DC Coding (SDC)とも呼ばれる。特に、イントラ予測における領域別DC符号化を、イントラSDCと呼び、インター予測における領域別DC符号化をインターSDCと呼ぶ。なお、領域別DC符号化が適用される場合、CUサイズ、PUサイズ、及びTUサイズは等しくてもよい。
TU情報TUI1〜TUINTは、TTに含まれる1または複数のTUそれぞれに関する個別の情報である。例えば、TU情報TUIは、量子化予測残差を含んでいる。
各量子化予測残差は、動画像符号化装置2が以下の処理A、又は処理Bを、処理対象のブロックである対象ブロックに施すことによって生成した符号化データである。
(処理A:周波数変換・量子化を実施する場合)
処理A−1:符号化対象画像から予測画像を減算した予測残差をDCT変換(Discrete Cosine Transform)する;
処理A−2:処理A−1にて得られた変換係数を量子化する;
処理A−3:処理A−2にて量子化された変換係数を可変長符号化する;
なお、上述した量子化パラメータqpは、動画像符号化装置2が変換係数を量子化する際に用いた量子化ステップQPの大きさを表す(QP=2qp/6)。
処理A−1:符号化対象画像から予測画像を減算した予測残差をDCT変換(Discrete Cosine Transform)する;
処理A−2:処理A−1にて得られた変換係数を量子化する;
処理A−3:処理A−2にて量子化された変換係数を可変長符号化する;
なお、上述した量子化パラメータqpは、動画像符号化装置2が変換係数を量子化する際に用いた量子化ステップQPの大きさを表す(QP=2qp/6)。
(処理B:領域別DC符号化の場合(SDC; Segment-wise DC Coding))
処理B−1:符号化対象画像から予測画像を減算した予測残差の平均値(DC値)を算出する。
処理B−1:符号化対象画像から予測画像を減算した予測残差の平均値(DC値)を算出する。
処理B−2:処理B−1にて得られたDC値を可変長符号化する。
特に、領域別にDC値を符号化することを、領域別DC符号化(SDC; Segment-Wise DC Coding)と呼び、平坦な領域の予測残差の符号化に有効である。例えば、デプスマップの符号化において、各デプスブロックにおいて、1又は複数に分割された領域の予測残差の符号化に利用される。
(予測情報PInfo)
上述のとおり、予測情報PInfoには、インター予測情報およびイントラ予測情報の2種類がある。
上述のとおり、予測情報PInfoには、インター予測情報およびイントラ予測情報の2種類がある。
インター予測情報には、動画像復号装置1が、インター予測によってインター予測画像を生成する際に参照される符号化パラメータが含まれる。より具体的には、インター予測情報には、対象CUの各インターPUへの分割パターンを指定するインターPU分割情報、および、各インターPUについてのインター予測パラメータが含まれる。
インター予測パラメータには、予測リスト利用フラグpredFlagLX(X=0,1)と、参照ピクチャインデックスrefIdxLX(X=0,1)と、動きベクトルmvLX(X=0,1)が含まれる。予測リスト利用フラグpredFlagLXは、LX(X=0,1)参照リストと呼ばれる参照ピクチャリストが用いられるか否かを示すフラグであり、値が1の場合に対応する参照ピクチャリストが用いられる。2つの参照ピクチャリストが用いられる場合、つまり、predFlagL0=1, predFlagL1=1の場合が、双予測に対応し、1つの参照ピクチャリストを用いる場合、すなわち(predFlagL0, predFlagL1) = (1, 0)もしくは(predFlagL0, predFlagL1) = (0, 1)の場合が単予測に対応する。
一方、イントラ予測情報には、動画像復号装置1が、イントラ予測によってイントラ予測画像を生成する際に参照される符号化パラメータが含まれる。より具体的には、イントラ予測情報には、対象CUの各イントラPUへの分割パターンを指定するイントラPU分割情報、および、各イントラPUについてのイントラ予測パラメータが含まれる。イントラ予測パラメータは、各イントラPUについてのイントラ予測(予測モード)を復元するためのパラメータである。
デプスマップDepthPic、及びテクスチャTexturePicの符号化で共通に利用されるイントラ予測(DC予測、Planar予測、Angular予測)に関するパラメータ(イントラ予測パラメータ)には、MPM(Most Probable Mode、以下同様)に関するフラグであるmpm_flag、MPMを選択するためのインデックスであるmpm_idx、および、MPM以外の予測モードを指定するためのインデックス(残余予測モードインデックス)であるrem_idxが含まれる。また、以下において、単に“予測モード”と表記する場合、輝度予測モードのことを指す。色差予測モードについては、“色差予測モード”と表記し、輝度予測モードと区別する。また、予測モードを復元するパラメータには、色差予測モードを指定するためのパラメータであるchroma_modeが含まれる。なお、mpm_flagおよびrem_idxは、それぞれ、非特許文献1における“prev_intra_luma_pred_flag”(図5(a)のSYN02)および“rem_intra_luma_pred_mode”(図5 (a)のSYN03)に対応している。また、chroma_modeは、“intra_chroma_pred_mode”(不図示)に対応している。
デプスマップの符号化に利用されるデプスイントラ予測(DMM予測)に関する予測モード(イントラ拡張モード(図5 (a)のSYN01))を復元するためのパラメータ(デプスイントラ予測パラメータ, DMM予測モード情報)には、デプスイントラ予測の有無を示すフラグ(デプスイントラ予測有無フラグ)dim_not_present_flag(図5 (b)のSYN01A)、デプスイントラ予測の方式を選択するデプスイントラモードフラグdepth_intra_mode_flag(図5(b)のSYN01B)ウェッジレットパターンを指定するウェッジレットパターンインデックスwedge_full_tab_idx(図5(b)のSYN01C)がある。depth_intra_mode_flagは、予め導出されたウェッジレットパターンを用いて領域を分割するDMM1予測(INTRA_WEDGE)と、対応するテクスチャの輪郭分割に基づいて領域を分割するDMM4予測(INTRA_CONTOUR)を選択するフラグである。wedge_full_tab_idxは、DMM1予測において、領域分割に用いるウェッジレットパターンを、ウェッジレットパターンの配列(ウェッジレットパターンテーブル)から選択する値(インデックス)である。
また、イントラSDCやインターSDC、及びデプスイントラ予測に関する予測パラメータには、PU内の分割された1又は2つの領域のデプス予測値を補正するためのDCオフセット情報がある。DCオフセット情報は、予測画像の領域分割の分割数(領域数)を示す分割予測フラグseg_pred_flag(図6のSYN01)、分割で得られる分割領域Ri(i=0..dcNumSeg-1)のDCオフセット情報の有無を示すDCオフセット有無フラグdepth_dc_flag(図6のSYN02)、PU内の分割領域Ri(i=0..dcNumSeg-1)毎に、DCオフセット値の絶対値の大きさを示すシンタックス、すなわち、DCオフセット係数depth_dc_abs[i](図6のSYN03)と、DCオフセット値のサイン符号のシンタックス、サインフラグdepth_dc_sign_flag[i](図6のSYN04)から構成される。DCオフセット係数depth_dc_abs[i]、及びサインフラグdepth_dc_sign_flag[i]は、分割領域RiのDCオフセット値DcOffset[i]の導出に使われるシンタックスである。なお、変数dcNumSegは、PUの分割領域数を表わす。本実施形態では、領域数dcNumSegが1(dcNumSeg=1)もしくは2(dcNumSeg=2)の場合を特に説明するが、領域数dcNumSegが1、2、3の場合であっても良い。なお、領域数dcNumSegが1であるとは、領域(PU)を分割せずPU全体を一つの領域として処理することを示す。
〔動画像復号装置〕
以下では、本実施形態に係る動画像復号装置1の構成について、図1〜図14を参照して説明する。
以下では、本実施形態に係る動画像復号装置1の構成について、図1〜図14を参照して説明する。
(動画像復号装置の概要)
動画像復号装置1は、PU毎に予測画像を生成し、生成された予測画像と、符号化データ#1から復号された予測残差とを加算することによって復号画像#2を生成し、生成された復号画像#2を外部に出力する。
動画像復号装置1は、PU毎に予測画像を生成し、生成された予測画像と、符号化データ#1から復号された予測残差とを加算することによって復号画像#2を生成し、生成された復号画像#2を外部に出力する。
ここで、予測画像の生成は、符号化データ#1を復号することによって得られる符号化パラメータを参照して行われる。符号化パラメータとは、予測画像を生成するために参照されるパラメータのことである。符号化パラメータには、インター予測において参照される動きベクトルやイントラ予測において参照される予測モードなどの予測パラメータに加えて、PUのサイズや形状、ブロックのサイズや形状、および、原画像と予測画像との残差データなどが含まれる。以下では、符号化パラメータに含まれる情報のうち、上記残差データを除く全ての情報の集合を、サイド情報と呼ぶ。
また、以下では、復号の対象となるピクチャ(フレーム)、スライス、ツリーブロック、CU、ブロック、および、PUをそれぞれ、対象ピクチャ、対象スライス、対象ツリーブロック、対象CU、対象ブロック、および、対象PUと呼ぶことにする。
なお、ツリーブロックのサイズは、例えば64×64画素であり、CUのサイズは、例えば、64×64画素、32×32画素、16×16画素、8×8画素であり、PUのサイズは、例えば、64×64画素、32×32画素、16×16画素、8×8画素や4×4画素などである。しかしながら、これらのサイズは、単なる例示であり、ツリーブロック、CU、および、PUのサイズは以上に示したサイズ以外のサイズであってもよい。
(動画像復号装置の構成)
再び、図3を参照して、動画像復号装置1の概略的構成について説明すると次のとおりである。図は、動画像復号装置1の概略的構成について示した機能ブロック図である。図に示すように動画像復号装置1は、可変長復号部11、逆量子化・逆変換部13、予測画像生成部14、加算器15およびフレームメモリ16を備えている。
再び、図3を参照して、動画像復号装置1の概略的構成について説明すると次のとおりである。図は、動画像復号装置1の概略的構成について示した機能ブロック図である。図に示すように動画像復号装置1は、可変長復号部11、逆量子化・逆変換部13、予測画像生成部14、加算器15およびフレームメモリ16を備えている。
[可変長復号部]
可変長復号部11は、動画像復号装置1から入力された符号化データ#1に含まれる各種のパラメータを復号する。以下の説明では、可変長復号部11が、CABAC等のエントロピー符号化方式により符号化されているパラメータの復号を適宜行うものとする。可変長復号部11は、具体的には、以下の手順により、1フレーム分の符号化データ#1を復号する。
可変長復号部11は、動画像復号装置1から入力された符号化データ#1に含まれる各種のパラメータを復号する。以下の説明では、可変長復号部11が、CABAC等のエントロピー符号化方式により符号化されているパラメータの復号を適宜行うものとする。可変長復号部11は、具体的には、以下の手順により、1フレーム分の符号化データ#1を復号する。
まず、可変長復号部11は、1フレーム分の符号化データ#1を、逆多重化することで、図4に示した階層構造に含まれる各種情報に分離する。例えば、可変長復号部11は、各種ヘッダに含まれる情報を参照して、符号化データ#1を、スライス、ツリーブロックに順次分離する。
ここで、各種ヘッダには、(1)対象ピクチャのスライスへの分割方法についての情報、および(2)対象スライスに属するツリーブロックのサイズ、形状および対象スライス内での位置についての情報が含まれる。
そして、可変長復号部11は、ツリーブロックヘッダTBLKHに含まれるツリーブロック分割情報SP_TBLKを参照して、対象ツリーブロックを、CUに分割する。また、可変長復号部11は、対象CUについて得られる変換ツリーに関するTT情報TTI、および、対象CUについて得られる予測ツリーに関するPT情報PTIを復号する。
可変長復号部11は、対象CUについて得られたTT情報TTIをTU情報復号部12に供給する。また、可変長復号部11は、対象CUについて得られたPT情報PTIを予測画像生成部14に供給する。なお、TT情報TTIには、上述のとおり、変換ツリーに含まれるTUに対応するTU情報TUIが含まれる。また、PT情報PTIには、上述のとおり、対象予測ツリーに含まれる各PUに対応するPU情報PUI(各PUの予測情報Pinfo)が含まれる。
例えば、可変長復号部11は、図5(a)のSYN01に示すイントラ予測モード拡張intra_mode_ext()のシンタックステーブル(図5(b))に従って、デプスイントラ予測に係る符号化パラメータ、デプスイントラ予測有無フラグdim_not_present_flag、デプスイントラモードフラグdepth_intra_mode_flag、PU内の分割パターンを指定するウェッジレットパターンインデックスwedge_full_tab_idxを復号する。
デプスイントラ予測有無フラグは、デプスイントラ予測の有無を示すフラグであり、該フラグの値が1の場合、対象PUに関するデプスイントラ予測モードフラグdepth_intra_mode_flagが符号化データ中になく、イントラ予測モード番号‘0’〜‘34’(DC予測、Planar予測、Angular予測)のいずれかのイントラ予測方式が対象PUに利用されることを示す。また、該フラグが0の場合は、デプスイントラ予測モードdepth_intra_mode_flagが符号化データ中にあることを示す。
デプスイントラモードフラグdepth_intra_mode_flagは、デプスイントラ予測方式の選択に係るフラグである。該フラグが0の場合、デプスイントラ予測は、DMM1予測であることを示す。該フラグが1の場合、デプスイントラ予測は、DMM4予測であることを示す。
また、可変長復号部11は、復号したデプスイントラ予測有無フラグdim_not_present_flagに基づいて、対象PUのDMMフラグDmmFlagを下記式により導出する。
DmmFlag = !dim_not_present_flag
すなわち、DMMフラグには、デプスイントラ予測有無フラグの論理否定の値が設定される。DMMフラグDmmFlagは1の場合、デプスイントラ予測が利用されることを示し、DMMフラグDmmFlagが0の場合、デプスイントラ予測が利用されないことを示す。
すなわち、DMMフラグには、デプスイントラ予測有無フラグの論理否定の値が設定される。DMMフラグDmmFlagは1の場合、デプスイントラ予測が利用されることを示し、DMMフラグDmmFlagが0の場合、デプスイントラ予測が利用されないことを示す。
また、可変長復号部11は、デプスイントラ予測有無フラグdim_not_present_flagが0の場合、対象PUのイントラ予測モード(非デプスイントラ予測)に係るシンタックスとして、MPMフラグprev_intra_luma_pred_flag、推定予測モードMPMを指定するMPMインデックスmpm_idx、及び残余モードインデックスrem_intra_luma_pred_modeを復号する。
ここで、MPMフラグが1の場合は、対象PUのイントラ予測モードが推定予測モードMPMと一致することを示す。該フラグが0の場合は、予測モード番号‘0’〜‘34’(DC予測、Planar予測、Angular予測のいずれか)の中で、推定予測モードMPMを除くいずれかの予測モードであることを示す。
また、可変長復号部11は、インター予測であれば、PUに関するシンタックステーブル(不図示)に従って各シンタックスを復号して、各PUのインター予測パラメータ、すなわち、予測リスト利用フラグpredFlagLX(X=0,1)と、参照ピクチャインデックスrefIdxLX(X=0,1)と、動きベクトルmvLX(X=0,1)等を導出する。
また、可変長復号部11は、対象レイヤにおいて、デプス符号化ツールにおいて、インターSDCの可否を示すフラグinter_sdc_flag(インターSDC可否モードフラグ)と、イントラSDC、又はDMM1予測の可否を示すフラグ(イントラSDCDMM1予測可否フラグ)intra_sdc_wedge_flagと、DMM4予測の可否を示すフラグ(DMM4予測可否フラグ)intra_contour_flagを、パラメータセット(ビデオパラメータセットVPS、シーケンスパラメータセットSPS、ピクチャパラメータセットPPS、スライスヘッダSH)等から復号する。ここで、インターSDC可否フラグが1の場合、対象レイヤにおいて、インターSDCが適用されうることを示し、0の場合、適用されないことを示す。また、イントラSDCDMM1予測可否フラグが1の場合、対象レイヤにおいて、イントラSDC、又は、DMM1予測が適用されうることを示し、0の場合は、適用されないことを示す。また、DMM4予測可否フラグintra_contour_flagが1の場合、対象レイヤにおいて、DMM4予測が適用されうるを示し、0の場合は、適用されないことを示す。
また、可変長復号部11は、下記疑似コードに示すように、復号した予測タイプCuPredMode、分割タイプPartMode、インターSDC可否フラグinter_sdc_flag、及びイントラSDCDMM1予測可否フラグintra_sdc_wedge_flagを参照して、SDC可否フラグsdcEnableFlagを導出する。
if (CuPredMode == MODE_INTRA)
sdcEnableFlag = (inter_sdc_flag && PartMode == PART_2Nx2N)
else if (CuPredMode == MODE_INTRA)
sdcEnableFlag = (intra_sdc_wedge_flag && PartMode == PART_2Nx2N)
else
sdcEnableFalg = 0
sdcEnableFlag = (inter_sdc_flag && PartMode == PART_2Nx2N)
else if (CuPredMode == MODE_INTRA)
sdcEnableFlag = (intra_sdc_wedge_flag && PartMode == PART_2Nx2N)
else
sdcEnableFalg = 0
SDC可否フラグsdcEnableFlagが1(真)の場合、CUの符号化データに、SDCフラグsdc_flagが含まれることを示し、可変長復号部11は、符号化データよりSDCフラグsdc_flag(図5のSYN01)を復号する。SDC可否フラグが0の場合には、可変長復号部11は、SDCフラグsdc_flagの値を0と推定・導出(infer)する。
ここで、SDCフラグが1(真)の場合、対象CUにおいて、領域別DC符号化が利用されることを示し、該フラグが0(偽)の場合、利用されないことを示す。
以下では、本発明に関連の深い領域別DC符号化(イントラSDC、インターSDC)やデプスイントラ予測に利用されるDCオフセット情報の復号処理の詳細について説明する。
(DCオフセット情報復号部111)
可変長復号部11は、さらに、符号化データからDCオフセット情報を復号するDCオフセット情報復号部111(不図示)を備える。DCオフセット情報復号部111は、図6に示すDCオフセット情報に係るシンタックステーブルに従って、各シンタックス(seg_pred_flag, depth_dc_flag, depth_dc_abs[i], depth_dc_sign_flag[i])を復号する。
可変長復号部11は、さらに、符号化データからDCオフセット情報を復号するDCオフセット情報復号部111(不図示)を備える。DCオフセット情報復号部111は、図6に示すDCオフセット情報に係るシンタックステーブルに従って、各シンタックス(seg_pred_flag, depth_dc_flag, depth_dc_abs[i], depth_dc_sign_flag[i])を復号する。
まず、DCオフセット情報復号部111は、分割領域数dcNumSegを下記疑似コードに示すように導出する。すなわち、分割領域数dcNumSegは、SDCフラグsdc_flagが1(真)、かつDMMフラグDmmFlagが0(偽)のとき、分割予測フラグseg_pred_flag + 1の値に設定され、分割予測フラグseg_pred_flagが0(偽)の場合、DmmFlagが1(真)であれば2の値に設定され、0(偽)であれば、1の値へ設定される。
if( sdc_flag && !DmmFlag ) dcNumSeg = seg_pred_flag + 1
else if (!seg_pred_flag) dcNumSeg = DmmFlag ? 2 : 1
else if (!seg_pred_flag) dcNumSeg = DmmFlag ? 2 : 1
次に、DCオフセット情報復号部111は、SDCフラグが1(真)、かつDmmFlagが0(偽)の場合、PUを2つの領域へ分割して予測するマルチ分割予測の適否を示す分割予測フラグseg_pred_flagを、符号化データより復号する。SDCフラグが0(偽)、又はDmmFlagが1(真)の場合、分割予測フラグseg_pred_flagを0と推定する。
次に、DCオフセット情報復号部111は、SDCフラグが1(真)、又はDmmFlagが1(真)の場合、領域Ri(i=0..dcNumSeg-1)のDCオフセット情報の有無を示すDCオフセット有無フラグdepth_dc_flagを復号する。SDCフラグが0(偽)、かつDmmFlagが0(偽)の場合、DCオフセット有無フラグdepth_dc_flagを1と推定する。
続いて、DCオフセット情報復号部111は、DCオフセット有無フラグdepth_dc_flagが1(真)の場合、PU内の分割領域Ri(i=0..dcNumSeg-1)毎に、DCオフセット係数depth_dc_abs[i]と、サインフラグdepth_dc_sign_flag[i]を符号化データより復号する。なお、サインフラグdepth_dc_sign_flag[i]は、領域RiのDCオフセット絶対値(depth_dc_abs[i] + dcOffsetMin)が0より大きい場合、符号化データより復号され、それ以外の場合(DCオフセット絶対値が0)、0と推定される。DCオフセット有無フラグdepth_dc_flagが0(偽)の場合、領域RiのDCオフセット係数depth_dc_abs[i]、サインフラグdepth_dc_sign_flag[i]を0と推定する。
最後に、DCオフセット情報復号部111は、DCオフセット係数depth_dc_abs[i]のシンタックス値と、サインフラグdepth_dc_sign_flag[i]のシンタックス値、及びオフセット最小値dcOffsetMinとに基づいて、各PU内の分割領域Ri(i=0..dcNumSeg-1)に対応するDCオフセット値DcOffset[i]を下記式(eq.D1)により導出する。
DcOffset[i] =
( 1 - 2*depth_dc_sign_flag[i] ) * ( depth_dc_abs[i] + dcOffsetMin ) (eq.D1)
式(eq.D1)の右辺( 1 - 2*depth_dc_sign_flag[i] )は、DCオフセット値のサイン符号の算出に係る項であり、サインフラグdepth_dc_sign_flag[0]が0のとき、1の値をとり、サインフラグdetph_dc_sign_flag[0]が1のとき、−1の値をとる。
( 1 - 2*depth_dc_sign_flag[i] ) * ( depth_dc_abs[i] + dcOffsetMin ) (eq.D1)
式(eq.D1)の右辺( 1 - 2*depth_dc_sign_flag[i] )は、DCオフセット値のサイン符号の算出に係る項であり、サインフラグdepth_dc_sign_flag[0]が0のとき、1の値をとり、サインフラグdetph_dc_sign_flag[0]が1のとき、−1の値をとる。
式(eq.D1)の右辺( depth_dc_abs[i] + dcOffsetMin )は、DCオフセット値の絶対値の算出に係る項である。ここで、オフセット最小値dcOffsetMinは、DCオフセット値の絶対値の開始値を示すオフセット値である。
DCオフセット情報復号部111は、領域Ri(i=0..dcNumSeg-1)のオフセット最小値dcOffsetMinを、以下の疑似コードによって導出する。
if( seg_pred_flag ==0 ) dcOffsetMin = 2 - dcNumSeg
else {// seg_pred_flag==1
if ( i==0) dcOffsetMin = 0
else dcOffsetMin = (DcOffset[0] == 0 ) ? 1 : 0
} (eq.D2)
すなわち、DCオフセット情報復号部111は、分割予測フラグseg_pred_flagが0(偽)の場合、オフセット最小値dcOffsetMinに(2−dcNumSeg)を設定する。分割予測フラグseg_pred_flagが1(真)かつi=0(対象領域が領域R0)の場合、オフセット最小値dcOffsetMinは0に設定する。分割予測フラグseg_pred_flagが1(真)かつiが0以外(対象領域がR0以外)の場合、オフセット最小値dcOffsetMinに、領域R0のDCオフセット値(DcOffset[0] == 0)が0とき、1を設定し、それ以外の場合、0を設定する。
else {// seg_pred_flag==1
if ( i==0) dcOffsetMin = 0
else dcOffsetMin = (DcOffset[0] == 0 ) ? 1 : 0
} (eq.D2)
すなわち、DCオフセット情報復号部111は、分割予測フラグseg_pred_flagが0(偽)の場合、オフセット最小値dcOffsetMinに(2−dcNumSeg)を設定する。分割予測フラグseg_pred_flagが1(真)かつi=0(対象領域が領域R0)の場合、オフセット最小値dcOffsetMinは0に設定する。分割予測フラグseg_pred_flagが1(真)かつiが0以外(対象領域がR0以外)の場合、オフセット最小値dcOffsetMinに、領域R0のDCオフセット値(DcOffset[0] == 0)が0とき、1を設定し、それ以外の場合、0を設定する。
[逆量子化・逆変換部]
逆量子化・逆変換部13は、対象CUに含まれる各ブロックについて、TT情報TTIに基づいて逆量子化・逆変換処理を実行する。具体的には、逆量子化・逆変換部13は、各対象TUについて、対象TUに対応するTU情報TUIに含まれる量子化予測残差を逆量子化および逆直交変換することによって、対象TUに対応する画素毎の予測残差D(又はresSamples[x][y])を復元する。なお、ここで直交変換とは、画素領域から周波数領域への直交変換のことを指す。したがって、逆直交変換は、周波数領域から画素領域への変換である。また、逆直交変換の例としては、逆DCT変換(Inverse Discrete Cosine Transform)、および逆DST変換(Inverse Discrete Sine Transform)等が挙げられる。逆量子化・逆変換部13は、復元した予測残差Dを加算器15に供給する。なお、逆量子化・逆変換部13は、SDCフラグが1の場合、逆量子化・逆変換処理を省略し、対象TUの画素毎の予測残差D(又はresSamples[x][y])を0へ設定し、加算器15に供給する。
逆量子化・逆変換部13は、対象CUに含まれる各ブロックについて、TT情報TTIに基づいて逆量子化・逆変換処理を実行する。具体的には、逆量子化・逆変換部13は、各対象TUについて、対象TUに対応するTU情報TUIに含まれる量子化予測残差を逆量子化および逆直交変換することによって、対象TUに対応する画素毎の予測残差D(又はresSamples[x][y])を復元する。なお、ここで直交変換とは、画素領域から周波数領域への直交変換のことを指す。したがって、逆直交変換は、周波数領域から画素領域への変換である。また、逆直交変換の例としては、逆DCT変換(Inverse Discrete Cosine Transform)、および逆DST変換(Inverse Discrete Sine Transform)等が挙げられる。逆量子化・逆変換部13は、復元した予測残差Dを加算器15に供給する。なお、逆量子化・逆変換部13は、SDCフラグが1の場合、逆量子化・逆変換処理を省略し、対象TUの画素毎の予測残差D(又はresSamples[x][y])を0へ設定し、加算器15に供給する。
[予測画像生成部]
予測画像生成部14は、対象CUに含まれる各PUについて、PT情報PTIに基づいて予測画像を生成する。具体的には、予測画像生成部14は、各対象PUについて、対象PUに対応するPU情報PUI(予測情報Pinfo)に含まれるパラメータに従ってイントラ予測またはインター予測を行うことにより、復号済み画像である局所復号画像P’から予測画像Predを生成する。予測画像生成部14は、生成した予測画像Predを加算器15に供給する。なお、予測画像生成部14の構成については、後述する。
予測画像生成部14は、対象CUに含まれる各PUについて、PT情報PTIに基づいて予測画像を生成する。具体的には、予測画像生成部14は、各対象PUについて、対象PUに対応するPU情報PUI(予測情報Pinfo)に含まれるパラメータに従ってイントラ予測またはインター予測を行うことにより、復号済み画像である局所復号画像P’から予測画像Predを生成する。予測画像生成部14は、生成した予測画像Predを加算器15に供給する。なお、予測画像生成部14の構成については、後述する。
[加算器]
加算器15は、予測画像生成部14より供給される予測画像Predと、逆量子化・逆変換部13より供給される予測残差Dとを加算することによって、対象CUについての復号画像Pを生成する。
加算器15は、予測画像生成部14より供給される予測画像Predと、逆量子化・逆変換部13より供給される予測残差Dとを加算することによって、対象CUについての復号画像Pを生成する。
[フレームメモリ]
フレームメモリ16には、復号された復号画像Pが順次記録される。フレームメモリ16には、対象ツリーブロックを復号する時点において、当該対象ツリーブロックよりも先に復号された全てのツリーブロック(例えば、ラスタスキャン順で先行する全てのツリーブロック)に対応する復号画像が記録されている。
フレームメモリ16には、復号された復号画像Pが順次記録される。フレームメモリ16には、対象ツリーブロックを復号する時点において、当該対象ツリーブロックよりも先に復号された全てのツリーブロック(例えば、ラスタスキャン順で先行する全てのツリーブロック)に対応する復号画像が記録されている。
また、対象CUを復号する時点において、当該対象CUよりも先に復号された全てのCUに対応する復号画像が記録されている。
なお、動画像復号装置1において、画像内の全てのツリーブロックに対して、ツリーブロック単位の復号画像生成処理が終わった時点で、動画像復号装置1に入力された1フレーム分の符号化データ#1に対応する復号画像#2が外部に出力される。
(予測モードの定義)
前述の通り、予測画像生成部14は、PT情報PTIに基づいて予測画像を生成して出力する。対象CUがインターCUの場合、予測画像生成部14に入力されるPU情報PTIは、例えば、動きベクトルmvLX(X=0,1)、及びフレームメモリ16に格納された復号済画像を参照画像として指定するための、参照画像インデックスrefIdxLX(X=0,1)、単予測(L0予測、L1予測)又は、双方向予測等のインター予測方式を指定するインター予測識別子inter_pred_idxを含む。
前述の通り、予測画像生成部14は、PT情報PTIに基づいて予測画像を生成して出力する。対象CUがインターCUの場合、予測画像生成部14に入力されるPU情報PTIは、例えば、動きベクトルmvLX(X=0,1)、及びフレームメモリ16に格納された復号済画像を参照画像として指定するための、参照画像インデックスrefIdxLX(X=0,1)、単予測(L0予測、L1予測)又は、双方向予測等のインター予測方式を指定するインター予測識別子inter_pred_idxを含む。
対象CUがイントラCUの場合、予測画像生成部14に入力されるPU情報PTIは、予測モード(IntraPredMode)と、色差予測モード(IntraPredModeC)を含む。図7は、動画像復号装置1で利用されるイントラ予測方式の分類と対応する予測モード番号の例を示している。Planar予測(INTRA_PLANAR)に‘0’、DC予測(INTRA_DC)に‘1’、Angular予測(INTRA_ANGULAR)に‘2’〜 ‘34’、DMM1予測(INTRA_WEDGE)に‘35’、DMM4予測(INTRA_CONTOUR)に‘36’の予測モード番号がそれぞれ割り当てられている。また、DMM1予測、及びDMM4予測は、総称して、デプスイントラ予測とも呼ばれる。デプスイントラ予測は、デプスマップ上の対象ブロック(デプスブロックとも称する)は、2つの非矩形の平坦領域から構成され、各平坦領域のデプス値は固定値で表現されるというデプスモデルに基づいている。また、デプスモデルは、各画素が属する領域を表わすパーティション情報、及び各領域のデプス値情報から構成される。DMM予測において、デプスブロックの分割方法として、DMM1と呼ばれるウェッジレット分割 (Wedgelet Partition)、及びDMM4と呼ばれる輪郭分割(Contour Partition)がある。
(予測画像生成部の詳細)
次に、図8を用いて予測画像生成部14の構成についてさらに詳しく説明する。図8は予測画像生成部14の構成例について示す機能ブロック図である。
次に、図8を用いて予測画像生成部14の構成についてさらに詳しく説明する。図8は予測画像生成部14の構成例について示す機能ブロック図である。
図8に示すように、予測画像生成部14は、予測単位設定部141、参照画素設定部142、スイッチ143、イントラ予測部145、インター予測部146、及び予測画像補正部147を備える。
予測単位設定部141は、対象CUに含まれるPUを規定の設定順序で対象PUに設定し、対象PUに関する情報(対象PU情報)を出力する。対象PU情報には、対象PUのサイズnS、対象PUのCU内の位置、対象PUの輝度または色差プレーンを示すインデックス(輝度色差インデックスcIdx)が少なくとも含まれる。
参照画素設定部142は、予測タイプ情報CuPredModeがイントラ予測を示す場合、入力される対象PU情報に基づいて、フレームメモリに記録されている対象PU周辺の復号画像の画素値(復号画素値)を読出し、予測画像生成時に参照される参照画素を設定する。参照画素値p[x][y]は復号画素値r[x][y]を利用して次式により設定される。
p[x][y]=r[xB+x][yB+y] x=-1, y=-1 .. (nS*2-1)、および、x=0..(nS*2-1),y=-1
ここで、(xB,yB)は対象PU内左上画素の位置、nSは対象PUのサイズを表し、対象PUの幅または高さのうち大きい方の値を示す。上式では、基本的には、対象PUの上辺に隣接する復号画素のラインおよび対象PUの左辺に隣接する復号画素のコラムに含まれる復号画素値を対応する参照画素値にコピーしている。なお、特定の参照画素位置に対応する復号画素値が存在しない、または、参照できない場合には、既定の値、例えば、1<<(BitDepth-1)を利用してもよい。ここで、BitDepthは、画素のビット深度である。また、既定の値の代わりに、対応する復号画素値の近傍に存在する参照可能な復号画素値を利用してもよい。
ここで、(xB,yB)は対象PU内左上画素の位置、nSは対象PUのサイズを表し、対象PUの幅または高さのうち大きい方の値を示す。上式では、基本的には、対象PUの上辺に隣接する復号画素のラインおよび対象PUの左辺に隣接する復号画素のコラムに含まれる復号画素値を対応する参照画素値にコピーしている。なお、特定の参照画素位置に対応する復号画素値が存在しない、または、参照できない場合には、既定の値、例えば、1<<(BitDepth-1)を利用してもよい。ここで、BitDepthは、画素のビット深度である。また、既定の値の代わりに、対応する復号画素値の近傍に存在する参照可能な復号画素値を利用してもよい。
また、参照画素設定部142は、予測タイプ情報CuPredModeがインター予測を示す場合、入力される対象PU情報のうち、参照ピクチャインデックスrefIdxLX(X=0,1)で指定されるフレームメモリに記録されている参照ピクチャで、対象PU内左上画素の位置(xB,yB)に動きベクトルmvLX(X=0,1)を加算した座標を基準に、所定範囲の復号画像の画素値(復号画素値)を読み出し、インター予測時に参照される参照画素を設定する。
スイッチ143は、入力される対象PU情報のうち、予測タイプ情報CuPredModeに基づいて、参照画素を対応する出力先へ出力する。より具体的には、予測タイプ情報CuPredModeがイントラ予測を示す場合、参照画素をイントラ予測部145へ供給する。また、予測タイプ情報CuPredModeがインター予測を示す場合、参照画素をインター予測部146へ供給する。
インター予測部146は、入力されるPU情報(予測利用フラグpredFlagLX(X=0,1)、動きベクトルmvLX、PUサイズnS等)と参照画素p[x][y]に基づいて、動き補償を実行し、対象PUの予測画像predSamplesを生成して出力する。
イントラ予測部145は、入力されるPU情報(予測モードpredModeIntra、PUサイズnS等)と参照画素p[x][y]に基づいて、予測モードpredModeIntraに対応する予測処理を行い、対象PUの予測画像predSamplesを生成して出力する。
予測画像補正部147は、SDCフラグが1(真)の場合の場合、供給される予測画像predSamples[][]を領域分割し、分割情報segIdx[ x ][ y ]を導出する。segIdx[x][y]は画素位置(x,y)の画素が属する領域を識別する値(インデックス)である。分割情報のインデックスは0からdcNumSeg-1の値をとる。特に領域数dcNumSegが2の場合には、0、1から構成されるマップである。その後、領域毎の代表予測値PM[ i ] (i=0…dcNumSeg-1)を導出し、領域毎に代表予測値PM [ i ]と、領域毎のDCオフセット値DcOffet[ i ](i=0…dcNumSeg-1)を加算して、補正予測画像predSampels’[][]を導出する。なお、代表予測値は、単に代表値とも呼ぶ。
predSamples’[x][y] = PM [ segIdx[x][y] ] + DcOffset[segIdx[x][y]],
with x,y=0..nS-1.
with x,y=0..nS-1.
予測画像補正部147は、SDCフラグが0(偽)の場合、供給される予測画像predSamples[][]をそのまま補正予測画像predSamples’[][]として出力する。なお、予測画像生成部14の構成は、図8に限定されず、予測画像補正部147の予測画像predSamplesが入力される配線の前に、スイッチ143S1(不図示)を配置し、SDCフラグが1(真)の場合、スイッチ143S1へ入力される予測画像predSamplesを予測画像補正部147へ供給し、SDCフラグが0(偽)の場合には、予測画像補正部147をバイパスして、補正予測画像predSamples’として出力してもよい。
図10は、対象CUにおいて、領域分割予測(分割予測)が適用される場合、分割予測が適用されない場合、領域別DC符号化が適用されない場合の各々の動作の概略を示すフローチャート図である。
(S101)対象CUの予測タイプがイントラ予測であるか判定する。予測タイプがイントラ予測である場合(CuPredMode==MODE_INTRA)(同図のステップS101でYes)、ステップS102へ遷移する。それ以外の場合(インター予測、CuPredMode==MODE_INTER, CuPredMode!=MODE_INTRA)(同図のステップS101でNo)、ステップS103へ遷移する。
(S102)対象CUに含まれるPU毎にイントラ予測をして、予測画像を生成する。
(S103)対象CUに含まれるPU毎にインター予測をして、予測画像を生成する。
(S104)対象CUのSDCフラグsdc_flagが1(真)の場合(同図のステップS104でYes)、ステップS105へ遷移する。それ以外の場合(sdc_flagが0(偽))(同図のステップS104でNo)、ステップS108へ遷移する。
(S105)PU毎に対応する分割予測フラグseg_pred_flagが1(真)であるか判定する。分割予測フラグseg_pred_flagが1(真)の場合(同図のステップS105でYes)、ステップS106へ遷移する。
(S106)PU毎に分割予測を行う。なお、分割予測の詳細は後述する。
(S107)PU毎に予測画像と対応するDCオフセットを加算して、PUの復号画像を生成する。
(S108)対象CUに含まれるTU毎に逆量子化・逆変換をして、残差を復元する。
(S109)対象CUの残差と予測画像を加算して、復号画像を生成する。
(S101)対象CUの予測タイプがイントラ予測であるか判定する。予測タイプがイントラ予測である場合(CuPredMode==MODE_INTRA)(同図のステップS101でYes)、ステップS102へ遷移する。それ以外の場合(インター予測、CuPredMode==MODE_INTER, CuPredMode!=MODE_INTRA)(同図のステップS101でNo)、ステップS103へ遷移する。
(S102)対象CUに含まれるPU毎にイントラ予測をして、予測画像を生成する。
(S103)対象CUに含まれるPU毎にインター予測をして、予測画像を生成する。
(S104)対象CUのSDCフラグsdc_flagが1(真)の場合(同図のステップS104でYes)、ステップS105へ遷移する。それ以外の場合(sdc_flagが0(偽))(同図のステップS104でNo)、ステップS108へ遷移する。
(S105)PU毎に対応する分割予測フラグseg_pred_flagが1(真)であるか判定する。分割予測フラグseg_pred_flagが1(真)の場合(同図のステップS105でYes)、ステップS106へ遷移する。
(S106)PU毎に分割予測を行う。なお、分割予測の詳細は後述する。
(S107)PU毎に予測画像と対応するDCオフセットを加算して、PUの復号画像を生成する。
(S108)対象CUに含まれるTU毎に逆量子化・逆変換をして、残差を復元する。
(S109)対象CUの残差と予測画像を加算して、復号画像を生成する。
(予測画像補正部147の詳細)
図1は、予測画像補正部147の構成を示すブロック図である。図1に示すように、予測画像補正部147は、領域分割画像生成部148、加算器147Aを備え、さらに、領域分割画像生成部148は、閾値導出部148T、領域分割部148L、及び代表値導出部148M(代表予測値導出部とも称す)を備える。図9は、予測画像補正部147の動作を示すフローチャートである。
図1は、予測画像補正部147の構成を示すブロック図である。図1に示すように、予測画像補正部147は、領域分割画像生成部148、加算器147Aを備え、さらに、領域分割画像生成部148は、閾値導出部148T、領域分割部148L、及び代表値導出部148M(代表予測値導出部とも称す)を備える。図9は、予測画像補正部147の動作を示すフローチャートである。
予測画像補正部147は、SDCフラグが1(真)の場合、かつ、分割予測フラグseg_pred_flagが1(真)の場合、入力される予測画像predSamples[][](図1上のpredS[][])を領域分割画像生成部148の各部、すなわち、閾値導出部148T、領域分割部148L、及び代表値導出部148Mへ供給する。以降では、predSamples[][]を略して、predS[][]とも表記する。
閾値導出部148Tは、供給された予測画像predS[][]を参照して、閾値Tを導出し、領域分割部148Lへ供給する(図9のステップS101)。具体的には、下記式に示すように、閾値Tには、予測画像predS[][]上の最左上画素predS[0][0]、最右上画素predS[0][nS-1]、最左下画素predS [nS-1][0]、及び最右下画素predS[nS-1][nS-1]の4画素の平均値が設定される。
T = (predS[0][0] + predS[0][nS-1] + predS[nS-1][0] + predS[nS-1][nS-1] + 2)>>2
なお、閾値Tは、上記式に限定されず、上記4画素のうち、最小値と最大値の平均値としてもよい。
なお、閾値Tは、上記式に限定されず、上記4画素のうち、最小値と最大値の平均値としてもよい。
領域分割部148Lは、供給された予測画像predS[][]と閾値Tを参照して、対象PUを複数の領域(Ri=0..dcNumSeg-1)へ分割し、その分割を示す分割情報segIdx[x][y](x,y=0..nS-1)を代表値導出部148Mへ供給する(図9のステップS102)。
具体的には、対象PUの画素位置(x,y)毎に、画素値predS[x][y]と閾値Tとの大小を比較し、画素値predS[x][y]が閾値T未満(以下)の場合、第1の領域R0に属すると判定し、画素位置(x,y)の分割情報segIdx[x][y]へ0を設定する。それ以外の場合(画素値predS[x][y]が閾値T以上(より大きい))、第2の領域R1に属すると判定し、画素位置(x,y)の分割情報segIdx[x][y]へ1を設定する。例えば、下記式によって導出される。
segIdx[x][y] = predS[x][y]<T ? 0 : 1 (eq.DX1)
代表値導出部148Mは、供給された予測画像predS[][]と分割情報segIdx[][]を参照して、各領域Ri(i=0..dcNumSeg-1)毎の代表予測値PM[i]を導出し、加算器147Aへ供給する(図9のステップS103)。
代表値導出部148Mは、供給された予測画像predS[][]と分割情報segIdx[][]を参照して、各領域Ri(i=0..dcNumSeg-1)毎の代表予測値PM[i]を導出し、加算器147Aへ供給する(図9のステップS103)。
加算器147Aは、供給された代表予測値PM [i](i=0..dcNumSeg-1)と対応するDCオフセット値DcOffet[i](i=0…dcNumSeg -1)を加算して、補正予測画像predS’[][]を導出する(図9のステップ104)。
predS’[x][y] = PM [ segIdx[x][y] ] + DcOffset[segIdx[x][y]], with x,y=0..nS-1.
<代表値導出部148Mの詳細(実施例1)>
代表値導出部148Mは、図11に示すように、さらに、ステップサイズ導出部148M1、オフセット座標導出部148M2、最頻値導出部148M3を備える。
代表値導出部148Mは、図11に示すように、さらに、ステップサイズ導出部148M1、オフセット座標導出部148M2、最頻値導出部148M3を備える。
ステップサイズ導出部148M1は、外部より供給された対象PUのブロックサイズnSと、サンプリングされたPUのブロックサイズnMinS(=1<<log2MinS, log2MinSはサンプリング後のPUのブロックサイズの2を底とする対数値)を参照して、式(eq.DX2Alt)で、ステップサイズnStepを導出する。すなわち、サンプリングのステップサイズnStepは、対象PUのサイズnSによって可変であり、ブロックサイズnSがnMinSより小さい場合(以下)には、ステップサイズnStepは1となり、ブロックサイズnSがnMinS以上の場合、ステップサイズnStepは{ 1<<(Log2(nS) - log2MinS) }となる。
nStep = 1 << Max( 0, Log2(nS) - log2MinS) (eq.DX2Alt)
なお、ステップサイズ導出部148M1は、式(eq.DX2Alt)の代わりに、式(eq.DX2Alt2)によって、ステップサイズnStepを導出してもよい。すなわち、ステップサイズ導出部148M1は、対象PUのブロックサイズnSとサンプリング後のPUのサイズnMinSを比較して、nSがnMinSより大きい(以上)場合には、nSをnMinSで除算した値をステップサイズnStepへ設定し、それ以外の場合(nSがnMinS以下(nSがnMinS未満))、nStepへ1を設定する。
なお、ステップサイズ導出部148M1は、式(eq.DX2Alt)の代わりに、式(eq.DX2Alt2)によって、ステップサイズnStepを導出してもよい。すなわち、ステップサイズ導出部148M1は、対象PUのブロックサイズnSとサンプリング後のPUのサイズnMinSを比較して、nSがnMinSより大きい(以上)場合には、nSをnMinSで除算した値をステップサイズnStepへ設定し、それ以外の場合(nSがnMinS以下(nSがnMinS未満))、nStepへ1を設定する。
nStep = nS > nMinS ? nS/nMinS : 1 (eq.DX2Alt2)
ここで、Max(u, v)は、引数u, vのうち、値の大きい引数の値を返す演算子であり、式(eq.DMax)で表わされる。
ここで、Max(u, v)は、引数u, vのうち、値の大きい引数の値を返す演算子であり、式(eq.DMax)で表わされる。
Max(x, y) = x < y ? x : y (eq.DMax)
オフセット座標導出部148M2は、最頻値導出部148M3における頻度計算の対象とする画素位置の導出で参照するオフセット(dX,dY)を以下の式(eq.DX4)で導出する。すなわち、定数Cをオフセット(dX,dY)へ設定する。定数Cは0..(nStep - 1)の範囲の整数値であり、例えば、0とするのが好適である。
dX = dY = C (eq.DX4)
なお、最頻値導出部148M3は、ステップサイズnSを参照して上記オフセット(dX,dY)を式(eq.DX4a)で導出しても良い。
なお、最頻値導出部148M3は、ステップサイズnSを参照して上記オフセット(dX,dY)を式(eq.DX4a)で導出しても良い。
dX = dY = (nStep >> 1 ) - alpha (eq.DX4a)
ここで、変数alphaは、オフセット座標を調整するための定数であり、alpha = 0..(nStep/2- 1)の整数値であり、例えば、0や1に設定される。ここで、図12に、予測画像のサイズnS=16(図では、width=height=nS=16)、ステップサイズnStep=4、オフセットdX = dY=1としたときの、サンプリング位置の一例を示す。
ここで、変数alphaは、オフセット座標を調整するための定数であり、alpha = 0..(nStep/2- 1)の整数値であり、例えば、0や1に設定される。ここで、図12に、予測画像のサイズnS=16(図では、width=height=nS=16)、ステップサイズnStep=4、オフセットdX = dY=1としたときの、サンプリング位置の一例を示す。
代表値導出部148M3は、供給された予測画像predS[][]と分割情報segIdx[][]とステップサイズnStepとオフセット(dX,dY)を参照して、領域Ri(i=0..dcNumSeg-1)毎のヒストグラムHist[i][V] (i=0..dcNumSeg-1, V = 0..BitDepth - 1)を導出する。具体的には、下記疑似コードに示すように、開始点S = (dX, dY)として、x方向にnStep画素、y方向にnStep画素毎に、領域Riに属する予測画像predS[][]上の画素値をカウントし、ヒストグラムHist[i][V]及び最頻値PM[i]を導出する。ここで、疑似コードにおいて、変数nSizeは、nS×nSの予測画像をnStepでサンプリングした予測画像の縦幅及び横幅を表わし、nSize=nS/nStepである。なお、予め、配列Hist[][]の各要素は0に、領域Riの代表値(最頻値)PM[i]は所定値InitValueに初期化されているものとする。なお、所定値InitValueは、0..BitDepth - 1の範囲の整数値であり、例えば、0や(1<<(BitDepth - 1)や(1<<BitDepth) - 1に設定される。また、所定値InitValueは、固定値ではなく、閾値Tの値に設定してもよい。すなわち、代表値PM[i]の初期値を閾値Tとする。予測画像predSamplesによって定まる閾値Tを用いることで、予測代表値の初期値の誤差を低減する効果を奏する。また、InitValueは予測画像predSamplesの平均値としてもよい。
(最頻値PM[i]の導出に係る疑似コード1(図13 (a))
for (v=0; v< nSize; v++){ //SL01
y = v * nStep + dY; //SL02
for(u=0; u< nSize; u++){ //SL03
x = u * nStep + dX; //SL04
V = predS[ x ][ y ]; //SL05
I = segIdx[ x ][ y ];
Hist[ I ][V] = Hist[ I ][ V ] + 1; //SL06
if ( Hist[ I ][ V ] > Hist[ I ][ PM[ I ] ] ){ //SL07
PM [ I ] = V;
}
}
}
ここでHist[I][V] は、領域RIにおいて、値Vをとる場合の数(頻度)を示す。Hist[][]は、頻度を、とりうる領域の数と値の範囲だけ格納するための配列(ヒストグラム)であり最頻値を導出するために利用される。上記疑似コードをステップで表わせば、以下の通りである。
for (v=0; v< nSize; v++){ //SL01
y = v * nStep + dY; //SL02
for(u=0; u< nSize; u++){ //SL03
x = u * nStep + dX; //SL04
V = predS[ x ][ y ]; //SL05
I = segIdx[ x ][ y ];
Hist[ I ][V] = Hist[ I ][ V ] + 1; //SL06
if ( Hist[ I ][ V ] > Hist[ I ][ PM[ I ] ] ){ //SL07
PM [ I ] = V;
}
}
}
ここでHist[I][V] は、領域RIにおいて、値Vをとる場合の数(頻度)を示す。Hist[][]は、頻度を、とりうる領域の数と値の範囲だけ格納するための配列(ヒストグラム)であり最頻値を導出するために利用される。上記疑似コードをステップで表わせば、以下の通りである。
(最頻値PM[i]の導出フロー)
(SL01) y方向に関する係るループの開始点である。vを変数として、0.. nSize-1までループ内の処理(SL02〜SL07)が実行される。
(SL02) y座標を導出する(y = v*nStep + dy)。
(SL03) x方向に関する係るループの開始点である。uを変数として、0.. nSize-1までループ内の処理(SL04〜SL07)が実行される。uは、ループ内処理が1回実行される毎に1加算される。
(SL04) x座標を導出する(x = u*nStep + dx )。
(SL05) 画素位置(x,y)にある予測画像predS[x][y]を変数Vへ設定し、対応する分割情報segIdx[x][y]を変数Iへ設定する。
(SL06) 対象の予測画像の値Vの頻度Hist[ I ][ V ]に1を加算する。
(SL07) 対象の予測画像の値Vの頻度Hist[ I ][ V ]の値が、領域RIの予測画像の最頻値PM[ I ]の頻度Hist[ I ][ PM[ I ] ]より大きい場合、領域RIIの予測画像値の最頻値PM[ I ](代表値PM[ I ]) の値を対象の予測画像Vの値へ更新する。
(SL01) y方向に関する係るループの開始点である。vを変数として、0.. nSize-1までループ内の処理(SL02〜SL07)が実行される。
(SL02) y座標を導出する(y = v*nStep + dy)。
(SL03) x方向に関する係るループの開始点である。uを変数として、0.. nSize-1までループ内の処理(SL04〜SL07)が実行される。uは、ループ内処理が1回実行される毎に1加算される。
(SL04) x座標を導出する(x = u*nStep + dx )。
(SL05) 画素位置(x,y)にある予測画像predS[x][y]を変数Vへ設定し、対応する分割情報segIdx[x][y]を変数Iへ設定する。
(SL06) 対象の予測画像の値Vの頻度Hist[ I ][ V ]に1を加算する。
(SL07) 対象の予測画像の値Vの頻度Hist[ I ][ V ]の値が、領域RIの予測画像の最頻値PM[ I ]の頻度Hist[ I ][ PM[ I ] ]より大きい場合、領域RIIの予測画像値の最頻値PM[ I ](代表値PM[ I ]) の値を対象の予測画像Vの値へ更新する。
(配列Hist[][]の必要メモリサイズについて)
配列Hist[][]の必要メモリサイズを計算すると、segIdx[ x ][ y ]の値域が0..nRegion-1で、予測画像predSの値域が0..(1<<BitDepth)-1である場合には、dcNumSeg×(1<<BitDepth)個の要素を有する配列となる。ここでdcNumSegは分割領域数であり、BitDepthは、予測画像のビット深度であり、Ceil(x)は、x以上の最小の整数を返す天井関数である。
配列Hist[][]の必要メモリサイズを計算すると、segIdx[ x ][ y ]の値域が0..nRegion-1で、予測画像predSの値域が0..(1<<BitDepth)-1である場合には、dcNumSeg×(1<<BitDepth)個の要素を有する配列となる。ここでdcNumSegは分割領域数であり、BitDepthは、予測画像のビット深度であり、Ceil(x)は、x以上の最小の整数を返す天井関数である。
また、頻度Hist[ I ][ V ]の値の最大値CMaxは、サンプリングされる領域の予測画像の値が全て同じ場合に発生し、サンプリングされる予測画像がnSize×nSizeである場合に、CMax=nSize×nSizeである。
すると、0から(1<<(2*nSize))の値を有しうる頻度Hist[ I ][ V ]を格納するためにCeil(log2(2*nSize×nSize+1))ビット(=2*Ceil(log2(nSize))+1ビット)のビット幅が必要である。nSizeを2の倍数の場合に制限すれば、2*log2(nSize)+1となる。
従って、バッファ(配列Hist[][])の必要メモリサイズは、領域数と、頻度の要素数、1要素のビット幅を掛け合わせた{ dcNumSeg×(1<<BitDepth)×(2*log2(nSize)+1) } ビットとなる。
ここで、dcNumSeg=2、BitDepth = 10の場合には、サンプリングを行わない(StepShift=0)(従来技術)の場合、nSize=nSであるから、予測画像のサイズnSが最大となる場合に必要メモリサイズも最大となる。予測画像のサイズnSの最大値をnS=64とすると、log2(nS)=6であるから、必要メモリサイズは、2×1024×(2×6+1)=26624ビットになる。
予測画像のサイズに応じてサンプリングのステップサイズnStepが定まる当実施形態のサンプリングを行う場合にnSizeは、予測画像のサイズnSによらず、サンプリング後のブロックサイズはnMinS(=1<<Log2MinS)と一定となり、必要メモリサイズは、dcNumSeg×(1<<BitDepth)×(2*log2(nMinS)+1)ビットとなる。ここでnMinS=2とすると、2×1024×(2×2+1)=10240ビットである。これにより、62%(=100*(26624-10240)/26624)のメモリ削減が可能である。
なお、予測画像のサイズによらずサンプリングのステップサイズnStepを固定とする場合、例えば、nStep = CStepで固定の場合、必要メモリサイズは、dcNumSeg×(1<<BitDepth)×(2*log2(nS/CStep)+1)ビットとなる。当実施形態の手法では、予測画像のサイズnSが64、サンプリング後の予測画像のサイズnMinSが4であれば、ステップサイズNStep= 64/4 = 16である。一方、ステップサイズが固定の場合、当実施形態と同様のメモリ削減を行うには、CStep=16とする必要がある。しかしながら、この場合、予測画像のサイズがサンプリングのステップサイズnStep以下の場合には、サンプリング数が1以下とり、ヒストグラムの精度が低下する。当実施形態のように、予測画像のサイズに応じてサンプリングのステップサイズを導出する方法によれば、予測画像のサイズによらず必要メモリサイズが決まる。逆にいえば、所定のメモリサイズを上限とする中で、各予測画像の最大数のサンプリングが行われるため、ヒストグラムの精度が高い。また、予測画像のサイズによらずに、サンプル数が決定されるため、ループ処理も容易となる。
なお、領域分割予測が適用されるPUのサイズが、分割タイプが2N×2Nである8×8、16×16、32×32、64×64であれば、サンプリング数を十分に確保するため、Log2MinS=2とすれば、ステップサイズnStepは、それぞれ、2、4、8、16となる。
なお、デプスマップは、性質上、局所的には、前景と背景の2値へ近似することができるため、サンプリングをしても、ヒストグラムの精度を落とすことなく、各領域の最頻値を導出することができる。すなわち、符号化効率は維持しつつ、バッファ(配列Hist)のサイズを削減することができる。
<ステップサイズ導出部の変形例1>
実施例1のステップサイズ導出部148M1は、外部より供給された対象PUのブロックサイズnSと、第1の定数StepShiftを参照して、式(eq.DX2)に示すように、最頻値導出部148M3における頻度計算の対象とする画素位置(サンプリング位置)の導出で参照するステップサイズnStepを導出するステップサイズ導出部148M1aとしてもよい。すなわち、対象PUのブロックサイズnSを右にStepShiftビットシフトしてステップサイズnStepを導出する。
実施例1のステップサイズ導出部148M1は、外部より供給された対象PUのブロックサイズnSと、第1の定数StepShiftを参照して、式(eq.DX2)に示すように、最頻値導出部148M3における頻度計算の対象とする画素位置(サンプリング位置)の導出で参照するステップサイズnStepを導出するステップサイズ導出部148M1aとしてもよい。すなわち、対象PUのブロックサイズnSを右にStepShiftビットシフトしてステップサイズnStepを導出する。
nStep = nS>>StepShift (eq.DX2)
StepShiftには所定の定数、例えば2を用いる。
StepShiftには所定の定数、例えば2を用いる。
このとき、サンプリングされたブロックのサイズ(nS / nStep)は、1<< StepShiftとなる。StepShift=2の場合、サンプリングされたブロックのサイズは4×4になる。
なお、ブロックサイズに限らず2以上のステップサイズnStepを使うように、式(eq.DX2)の代わりに下記式を用いても良い。
nStep = Max(nS>> StepShift, 2) (eq.DX2Max)
一般に、ブロックサイズによらずnStepMin(>=1)以上のステップサイズnStepを使うように、式(eq.DX2)の代わりに式(eq.DX2Gen)を用いてもよい。
一般に、ブロックサイズによらずnStepMin(>=1)以上のステップサイズnStepを使うように、式(eq.DX2)の代わりに式(eq.DX2Gen)を用いてもよい。
nStep = Max (nS>> StepShift, nStepMin) (eq.DX2Gen)
さらに、ブロックサイズに限らず16以下のステップサイズnStepを使うように、式(eq.DX2)の代わりに下記式を用いても良い。
さらに、ブロックサイズに限らず16以下のステップサイズnStepを使うように、式(eq.DX2)の代わりに下記式を用いても良い。
nStep = Min(nS>> StepShift, 16) (eq.DX2Min)
ここで、Min(u, v)は、引数u, vのうち、値の小さい引数の値を返す演算子であり、式(eq.DMin)で表わされる。
ここで、Min(u, v)は、引数u, vのうち、値の小さい引数の値を返す演算子であり、式(eq.DMin)で表わされる。
Min(x, y) = x < y ? x : y (eq.DMin)
以上、変形例1のステップサイズ導出部148M1aは、下記、擬似コードに示すように、0から1<< StepShift−1の各u、vに対して、サンプリングした予測画像predS[][]を参照し、領域iの最頻値PM [ i ]を導出する。ステップサイズ導出部148M1aは、予測画像のサイズnSによらず、固定のループを行えば良いので実装が容易になるという効果がある。
for (v=0; v< 1<< StepShift; v++){ //SL01
y = v * nStep + dY; //SL02
for(u=0; u< 1<< StepShift; u++){ //SL03
x = u * nStep + dX; //SL04
V = predS[ x ][ y ]; //SL05
I = segIdx[ x ][ y ];
Hist[ I ][V] = Hist[ I ][ V ] + 1; //SL06
if ( Hist[ I ][ V ] > Hist[ I ][ PM[ I ] ] ){ //SL07
PM [ I ] = V;
}
}
}
y = v * nStep + dY; //SL02
for(u=0; u< 1<< StepShift; u++){ //SL03
x = u * nStep + dX; //SL04
V = predS[ x ][ y ]; //SL05
I = segIdx[ x ][ y ];
Hist[ I ][V] = Hist[ I ][ V ] + 1; //SL06
if ( Hist[ I ][ V ] > Hist[ I ][ PM[ I ] ] ){ //SL07
PM [ I ] = V;
}
}
}
以上、変形例1のステップサイズ導出部148M1aは、実施例1のステップサイズ導出部148M1と比較して、Log2()の演算をなくすことができ、より簡単に、PUサイズによらずサンプリング数が固定となるように、サンプリングのステップサイズnStepを導出することができる。
<最頻値導出部の変形例2>
代表予測値導出部148Mの備える最頻値導出部148M3は、1次元の配列Hist[]によって最頻値を導出する変形例2の最頻値導出部148M3bとしてもよい。ある値AのsegIdx[ x ][ y ]に属する領域RAのヒストグラムHA(図14であれば画素値V=Pmin..Tの範囲の頻度分布)と、ある値B(!=A)のsegIdx[ x ][ y ]に属する領域のヒストグラムHB(図14であれば画素値V=T+1..Pmaxの範囲の頻度分布)が重ならないことを利用すれば、領域Ri(i=0..dcNumSeg-1)毎にヒストグラムを保持する2次元配列ではなく、全ての領域で共通のヒストグラム(1次元の配列)とすることができる。この場合、バッファ(配列Hist)に必要なメモリサイズは、(1<<BitDepth)×(2*log2(nSize)+1)ビットとなる。従って、実施例1の最頻値導出部148M3と比較して、変形例2の最頻値導出部148M3bはバッファに必要なメモリサイズを1/ dcNumSegに削減することができる。
代表予測値導出部148Mの備える最頻値導出部148M3は、1次元の配列Hist[]によって最頻値を導出する変形例2の最頻値導出部148M3bとしてもよい。ある値AのsegIdx[ x ][ y ]に属する領域RAのヒストグラムHA(図14であれば画素値V=Pmin..Tの範囲の頻度分布)と、ある値B(!=A)のsegIdx[ x ][ y ]に属する領域のヒストグラムHB(図14であれば画素値V=T+1..Pmaxの範囲の頻度分布)が重ならないことを利用すれば、領域Ri(i=0..dcNumSeg-1)毎にヒストグラムを保持する2次元配列ではなく、全ての領域で共通のヒストグラム(1次元の配列)とすることができる。この場合、バッファ(配列Hist)に必要なメモリサイズは、(1<<BitDepth)×(2*log2(nSize)+1)ビットとなる。従って、実施例1の最頻値導出部148M3と比較して、変形例2の最頻値導出部148M3bはバッファに必要なメモリサイズを1/ dcNumSegに削減することができる。
1次元の配列Hist[]を用いた最頻値PM[i]の導出フローは、既に説明した2次元配列Hist[][]を用いた最頻値PM[i]の導出フローにおいて、ステップSL06〜SL07を以下に示す疑似コードに置き換えたものとなる。
(最頻値PM[i]の導出に係る疑似コード2)
Hist [ V ] = Hist [ V ] + 1; //SL06a
if ( Hist [ V ] > Hist [ PM [ I ] ] ){ //SL07a
PM [ I ] = V;
}
ここで、各Hist[V]は、対象PUにおいて値Vをとる場合の数(頻度)を示す。Hist[]は、頻度を、とりうる値の範囲だけ格納するための1次元配列(ヒストグラム)である。
Hist [ V ] = Hist [ V ] + 1; //SL06a
if ( Hist [ V ] > Hist [ PM [ I ] ] ){ //SL07a
PM [ I ] = V;
}
ここで、各Hist[V]は、対象PUにおいて値Vをとる場合の数(頻度)を示す。Hist[]は、頻度を、とりうる値の範囲だけ格納するための1次元配列(ヒストグラム)である。
上記疑似コードをステップで表わせば、以下の通りである。
(SL06a) 予測画素値Vの頻度Hist [ V ]に1を加算する。
(SL07a) 予測画素値Vの頻度Hist [ V ]の値が、PUの予測画像値の最頻値PM[ I ]の頻度Hist [ PM [ I ] ]より大きい場合、領域Iの予測画像値の最頻値PM[ I ](予測代表値PM[ I ]) の値をVへ更新する。
(SL06a) 予測画素値Vの頻度Hist [ V ]に1を加算する。
(SL07a) 予測画素値Vの頻度Hist [ V ]の値が、PUの予測画像値の最頻値PM[ I ]の頻度Hist [ PM [ I ] ]より大きい場合、領域Iの予測画像値の最頻値PM[ I ](予測代表値PM[ I ]) の値をVへ更新する。
上記構成は、代表値導出部148Mの一つの構成要素、最頻値導出部148M3を置き替えるものであるから、代表値導出部148Mの他の構成要素、例えば様々な構成のステップサイズ導出部148M1と組み合わせて、代表値導出部148Mを構成することができる。
(ステップサイズを用いない場合の具体例)
変形1の最頻値導出部148M3aは、サンプリングする画素としてステップサイズを用いない場合(nStep = 1)にも適用することができ、バッファ(配列Hist)に必要なメモリサイズは、(1<<BitDepth)×(2*log2(nS)+1)ビットとなる。2次元配列を用いる最頻値導出部148M3と比較して、変形例1の最頻値導出部148M3Aはバッファに必要なメモリサイズを1/ dcNumSegに削減することができる。
変形1の最頻値導出部148M3aは、サンプリングする画素としてステップサイズを用いない場合(nStep = 1)にも適用することができ、バッファ(配列Hist)に必要なメモリサイズは、(1<<BitDepth)×(2*log2(nS)+1)ビットとなる。2次元配列を用いる最頻値導出部148M3と比較して、変形例1の最頻値導出部148M3Aはバッファに必要なメモリサイズを1/ dcNumSegに削減することができる。
この場合の擬似コードは以下になる。
(最頻値PM[i]の導出に係る疑似コード3)
for (y=0; y< nS; y++){ //SL01
for(x=0; x< nS; x++){ //SL03
V = predS[ x ][ y ]; //SL05
Hist[V] = Hist[ V ] + 1; //SL06
if ( Hist[ V ] > Hist[ PM[segIdx[ x ][ y ] ] ] ){ //SL07
PM [ I ] = V;
}
}
}
これは以下と同値である。
for (y=0; y< nS; y++){ //SL01
for(x=0; x< nS; x++){ //SL03
V = predS[ x ][ y ]; //SL05
Hist[V] = Hist[ V ] + 1; //SL06
if ( Hist[ V ] > Hist[ PM[segIdx[ x ][ y ] ] ] ){ //SL07
PM [ I ] = V;
}
}
}
これは以下と同値である。
for (y=0; y< nS; y++){
for(x=0; x< nS; x++){
Hist[predS[ x ][ y ]] = Hist[predS[ x ][ y ] ] + 1;
if ( Hist[predS[ x ][ y ] ] > Hist[ PM[ I ] ] ){
PM [ I ] = predS[ x ][ y ];
}
}
}
for(x=0; x< nS; x++){
Hist[predS[ x ][ y ]] = Hist[predS[ x ][ y ] ] + 1;
if ( Hist[predS[ x ][ y ] ] > Hist[ PM[ I ] ] ){
PM [ I ] = predS[ x ][ y ];
}
}
}
(ステップサイズを用いる場合の具体例)
ステップサイズ導出部の変形例1で説明したステップサイズ(nStep = nS>>StepShift)によりサンプリングする例を以下に示す。nSize=nS/nStep=nS / nS>>StepShift = 1<< StepShiftである。
ステップサイズ導出部の変形例1で説明したステップサイズ(nStep = nS>>StepShift)によりサンプリングする例を以下に示す。nSize=nS/nStep=nS / nS>>StepShift = 1<< StepShiftである。
(最頻値PM[i]の導出に係る疑似コード4)
nStep = nS>>StepShift
for (v=0; v< (1<< StepShift); v++){ //SL01
y = v * nStep + dY; //SL02
for(u=0; u< (1<< StepShift); u++){ //SL03
x = u * nStep + dX; //SL04
V = predS[ x ][ y ]; //SL05
I = segIdx[ x ][ y ];
Hist[V] = Hist[ V ] + 1; //SL06
if ( Hist[ V ] > Hist[ PM[ I ] ] ){ //SL07
PM [ I ] = V;
}
}
}
nStep = nS>>StepShift
for (v=0; v< (1<< StepShift); v++){ //SL01
y = v * nStep + dY; //SL02
for(u=0; u< (1<< StepShift); u++){ //SL03
x = u * nStep + dX; //SL04
V = predS[ x ][ y ]; //SL05
I = segIdx[ x ][ y ];
Hist[V] = Hist[ V ] + 1; //SL06
if ( Hist[ V ] > Hist[ PM[ I ] ] ){ //SL07
PM [ I ] = V;
}
}
}
既に説明したサブサンプリングによる方法(特にステップサイズ導出部の変形例1)と、最頻値導出部の変形例1で説明した領域で共通のヒストグラム配列(1次元配列)を利用した最頻値導出であれば、バッファ(配列Hist)に必要なメモリサイズは、(1<<BitDepth)×(2* StepShift +1)ビットとなる。
<最頻値導出部の変形例3>
最頻値の導出に利用する配列Hist[I][V]のメモリサイズは、一要素Hist[I][V]に必要なビット数×要素数であるので、一要素Hist[I][V]に必要なビット数を削減すればさらにメモリサイズの削減が可能である。一要素Hist[I][V]に必要なビット数は、要素の値域が0からCMaxの場合、Ceil(log2(Cmax+1))であるからCMaxを制限することで削減が可能である。以下、この方法を変形例3として説明する。
最頻値の導出に利用する配列Hist[I][V]のメモリサイズは、一要素Hist[I][V]に必要なビット数×要素数であるので、一要素Hist[I][V]に必要なビット数を削減すればさらにメモリサイズの削減が可能である。一要素Hist[I][V]に必要なビット数は、要素の値域が0からCMaxの場合、Ceil(log2(Cmax+1))であるからCMaxを制限することで削減が可能である。以下、この方法を変形例3として説明する。
実施例1の最頻値導出部148M3では、最頻値の導出に利用する配列Hist[I][V](あるいは、変形例2の最頻値導出部148M3bの配列Hist[V])の値が最大値CMaxをとるのは、サンプリングされる領域の予測画像の値が全て同じ場合であった。この場合、最大値は、サンプリングされる予測画像の数(1<<(2*nSize))となる。配列Histの値域(0..CMax)の表現に係るビット幅を削減するために、最大値CMaxを2の指数乗―1にしても良い。この場合の変形例3を最頻値導出部148M3cとして説明する。変形例3を最頻値導出部148M3cは、CMaxを所定の定数Mを用いて以下の式により導出する。
CMax = 2^M−1 (eq.DX5)
ここで2^Mは、2のM乗を示す。
ここで2^Mは、2のM乗を示す。
なお、制限のない場合のCMax = nSize×nSizeであるから、制限によるメモリ数削減を得るには、2^M−1<nSize×nSize、すなわち、M<Log2 (nSize×nSize+1)である必要がある。実際には、上記制限を満たす最大のMであるM=2*Log2(nSize)もしくは、それより1だけ小さいM=2*Log2(nSize)−1が適当である。
より具体的に、nStep = nS>>StepShiftの場合には、nSize=1<<StepShiftであるから、M=2^(2*StepShiftもしくはM=2*StepShift−1が適当である。すなわち、CMax=2^(2*StepShift)−1、もしくは、Cmax=2^ (2*StepShift-1)が適当である。
nStep = nS>>StepShiftによりステップする場合の最頻値導出部148M3の動作の具体例を説明するため、以下擬似コードを示す。
nStep = nS>>StepShift
for (v=0; v< 1<< StepShift; v++){ //SL01
y = v * nStep + dY; //SL02
for(u=0; u< 1<< StepShift; u++){ //SL03
x = u * nStep + dX; //SL04
V = predS[ x ][ y ]; //SL05
I = segIdx[ x ][ y ];
Hist[V] = Min(Hist[ V ]+1, Cmax) ; //SL06M3
if ( Hist[ V ] > Hist[ PM[ I ] ] ){ //SL07
PM [ I ] = V;
}
}
}
上記最頻値導出部148M3は、SL06M3に示すように、対象の予測画像V(=predS[ x ][ y ])に対応する頻度の値(Hist[ V ]、Hist[predS[ x ][ y ]])をインクリメントし更新する際、Hist[ V ]+1とCmaxの最小値を用いて、Cmaxにクリップした後、更新後の頻度Hist[ V ]を導出する。
for (v=0; v< 1<< StepShift; v++){ //SL01
y = v * nStep + dY; //SL02
for(u=0; u< 1<< StepShift; u++){ //SL03
x = u * nStep + dX; //SL04
V = predS[ x ][ y ]; //SL05
I = segIdx[ x ][ y ];
Hist[V] = Min(Hist[ V ]+1, Cmax) ; //SL06M3
if ( Hist[ V ] > Hist[ PM[ I ] ] ){ //SL07
PM [ I ] = V;
}
}
}
上記最頻値導出部148M3は、SL06M3に示すように、対象の予測画像V(=predS[ x ][ y ])に対応する頻度の値(Hist[ V ]、Hist[predS[ x ][ y ]])をインクリメントし更新する際、Hist[ V ]+1とCmaxの最小値を用いて、Cmaxにクリップした後、更新後の頻度Hist[ V ]を導出する。
<代表値導出部148Mの具体例>
以下、発明者の実験によれば、実施例1のステップサイズ導出部148M1においてStepShift=2の場合に、符号化効率を低減することなくメモリを削減できる。なお、最頻値導出部の変形例2で説明した1次元配列による頻度Hist[](ヒストグラム)、最頻値導出部の変形例3で説明した最大値の制限も合わせて利用する。上記構成の代表値導出部148Mの動作を示す擬似コードを以下に示す。
以下、発明者の実験によれば、実施例1のステップサイズ導出部148M1においてStepShift=2の場合に、符号化効率を低減することなくメモリを削減できる。なお、最頻値導出部の変形例2で説明した1次元配列による頻度Hist[](ヒストグラム)、最頻値導出部の変形例3で説明した最大値の制限も合わせて利用する。上記構成の代表値導出部148Mの動作を示す擬似コードを以下に示す。
nStep = nS>>2
for (v=0; v< 4; v++){ //SL01
y = v * nStep + dY; //SL02
for(u=0; u< 4; u++){ //SL03
x = u * nStep + dX; //SL04
Hist[predS[ x ][ y ]] = Min(Hist[predS[ x ][ y ] ]+1, Cmax) ; //SL06M3
if ( Hist[predS[ x ][ y ] ] > Hist[ PM[segIdx[ x ][ y ]] ] ){ //SL07
PM [ segIdx[ x ][ y ]] = predS[ x ][ y ];
}
}
}
上記において、CMax = 15(2^(2* StepShift)-1=2^4-1=15)、もしくは7(2^(2* StepShift)-1=2^4-1=7)の定数とする。
for (v=0; v< 4; v++){ //SL01
y = v * nStep + dY; //SL02
for(u=0; u< 4; u++){ //SL03
x = u * nStep + dX; //SL04
Hist[predS[ x ][ y ]] = Min(Hist[predS[ x ][ y ] ]+1, Cmax) ; //SL06M3
if ( Hist[predS[ x ][ y ] ] > Hist[ PM[segIdx[ x ][ y ]] ] ){ //SL07
PM [ segIdx[ x ][ y ]] = predS[ x ][ y ];
}
}
}
上記において、CMax = 15(2^(2* StepShift)-1=2^4-1=15)、もしくは7(2^(2* StepShift)-1=2^4-1=7)の定数とする。
従って、式(eq.DX5)により、Histの各要素の値域は、0から2^M−1であるからこの値域を表現するために必要なビット幅RはMビットとなる。従って、配列Histの必要メモリサイズは、2次元配列のHist[][]であれば、MS1 = { dcNumSeg×(1<<BitDepth)×(R) } ビット、1次元配列のHist[]であれば、MS2 = { (1<<BitDepth)×(R) } ビットとなる。
頻度Hist[I][V](Hist[V])の最大値をM=(2* StepShift)から導出されるCmaxに制限する(頻度をCmaxにクリップしてから更新する)場合には、最大値を制限しない(ビットレンジ制限とも称す)場合と比較して、配列Histに必要なメモリサイズを2* StepShift / (2* StepShift+1)に削減することができる。StepShift=2の場合には、4/5に削減することができる。また、M=(2* StepShift)-1に制限する場合には、ビットレンジ制限しない場合と比較して、配列Histに必要なメモリサイズを2* StepShift-1 / (2* StepShift+1)に削減することができる。StepShift=2の場合には、3/5に削減することができる。
なお、上記のように頻度の最大値をクリップする場合には、近い値を有する2つのピークがある場合において、最大頻度の位置を区別できない可能性が生じる。しかしながら、点数nSize×nSizeのデプスマップを2つ以上の領域に分割する場合において、1つの領域の要素数は最大nSize×nSizeであるから、ヒストグラムの頻度値の最大値はnSize×nSizeである。これをnSize×nSize−1に制限しても(M=2*Log2(nSize)=(2* StepShift)に相当)、あるピークがnSize×nSizeである場合には、他方のピークの最大値は1であるから、ピークの特定には影響を与えない。従って、最頻値導出において同じ結果となる。他方、ヒストグラムの頻度値の最大値を(nSize×nSize)/2−1に制限する(M=2*Log2(nSize)−1=(2* StepShift-1)に相当)場合、2つのピークの頻度が各々(nSize×nSize)/2、(nSize×nSize)/2である場合と、2つのピークの頻度が各々(nSize×nSize)/2+1、(nSize×nSize)/2−1の場合を区別できない。しかしながら、このような場合が生じる場合は低い確率であるから実質的には、最頻値導出の結果に与える影響は軽微である。また、発明者の実験においても、この場合の性能低下がないことが実験により得られている。
<最頻値導出部の変形例4>
実施例1の最頻値導出部148M3では、最頻値の導出に利用する配列Hist[I][V](あるいは、変形例1の最頻値導出部148M3bの配列Hist[V])のビン幅BinWは1であったが、これに限定されず、例えば、Histの1要素のビット幅Rが、所定ビット数BD1となるようにビン幅BinWを式(eq.DX6)で決定してもよい。
実施例1の最頻値導出部148M3では、最頻値の導出に利用する配列Hist[I][V](あるいは、変形例1の最頻値導出部148M3bの配列Hist[V])のビン幅BinWは1であったが、これに限定されず、例えば、Histの1要素のビット幅Rが、所定ビット数BD1となるようにビン幅BinWを式(eq.DX6)で決定してもよい。
BinW = 1<<Max(BitDepth - BD1, 0) (eq.DX6)
このとき、最頻値導出部148M3は、何れかの構成の
V = predS[ x ][ y ]; //SL05
の代わりに、以下の式により画素値を量子化し頻度を導出する。
このとき、最頻値導出部148M3は、何れかの構成の
V = predS[ x ][ y ]; //SL05
の代わりに、以下の式により画素値を量子化し頻度を導出する。
V = predS[ x ][ y ] >> (BitDepth - BD1)
ここで、BitDepthは、予測画像predS[][]のビット深度である。すなわち、ヒストグラムのビン幅BinWは、予測画像のビット深度BitDepthよりBD1減算した値と0の大きい方の値で、1を左シフトした値である。すなわち、予測画像predS[][]を(1<<Max(BitDepth - BD1, 0))で量子化した値をVとする。例えば、BitDepth = 10、BD1 = 8であれば、ビン幅BinW は、BinW = 1<<(Max(10 - 8, 0) = 4となる。BitDepth = 8、BD1 = 8であれば、ビン幅BinWは、BinW = 1<<(Max(8 - 8, 0) = 1となるため、配列Histに必要なメモリサイズMSは、予測画像predS[][](あるいは入力画像)のビット深度BitDepthによらず、2次元配列のHist[][]であれば、MS1 = { dcNumSeg×(1<<BD1)×R } ビット、1次元配列のHist[]であれば、MS2 = { (1<<BD1)× R } ビットとなり、固定値とすることができる。すなわち、頻度計算に必要なバッファ(配列Hist)のサイズは、予測画像のサイズ、予測画像のビット深度に依存せずに、固定値にすることができる。ここで、ビット幅Rは、ビットレンジを制限しない場合は、 R= (2*Log2MinS + 1)ビット、変形例2のようにビットレンジを制限する場合は、R = (2*Log2MinS - MaxShift + 1)である。従って、実施例1、変形例1、変形例2の最頻値導出部に比べて、さらに、バッファ(配列Hist)のメモリサイズを削減することができる。なお、デプスマップは、性質上、局所的には、前景と背景の2値へ近似することができるため、デプス値を量子化しても(ビン幅を大きくしても)、ヒストグラムの精度を落とすことなく、各領域の最頻値を導出することができる。すなわち、符号化効率は維持しつつ、バッファ(配列Hist)のサイズを削減することができる。
ここで、BitDepthは、予測画像predS[][]のビット深度である。すなわち、ヒストグラムのビン幅BinWは、予測画像のビット深度BitDepthよりBD1減算した値と0の大きい方の値で、1を左シフトした値である。すなわち、予測画像predS[][]を(1<<Max(BitDepth - BD1, 0))で量子化した値をVとする。例えば、BitDepth = 10、BD1 = 8であれば、ビン幅BinW は、BinW = 1<<(Max(10 - 8, 0) = 4となる。BitDepth = 8、BD1 = 8であれば、ビン幅BinWは、BinW = 1<<(Max(8 - 8, 0) = 1となるため、配列Histに必要なメモリサイズMSは、予測画像predS[][](あるいは入力画像)のビット深度BitDepthによらず、2次元配列のHist[][]であれば、MS1 = { dcNumSeg×(1<<BD1)×R } ビット、1次元配列のHist[]であれば、MS2 = { (1<<BD1)× R } ビットとなり、固定値とすることができる。すなわち、頻度計算に必要なバッファ(配列Hist)のサイズは、予測画像のサイズ、予測画像のビット深度に依存せずに、固定値にすることができる。ここで、ビット幅Rは、ビットレンジを制限しない場合は、 R= (2*Log2MinS + 1)ビット、変形例2のようにビットレンジを制限する場合は、R = (2*Log2MinS - MaxShift + 1)である。従って、実施例1、変形例1、変形例2の最頻値導出部に比べて、さらに、バッファ(配列Hist)のメモリサイズを削減することができる。なお、デプスマップは、性質上、局所的には、前景と背景の2値へ近似することができるため、デプス値を量子化しても(ビン幅を大きくしても)、ヒストグラムの精度を落とすことなく、各領域の最頻値を導出することができる。すなわち、符号化効率は維持しつつ、バッファ(配列Hist)のサイズを削減することができる。
<代表値導出部の変形例>
代表値導出部において、予測画像predS[][]と分割情報segIdx[][]とステップサイズnSとオフセット(dX,dY)を参照して、領域Ri(i=0..dcNumSeg-1)毎の最頻値を導出する最頻値導出部148M3の代わりに、領域Ri(i=0..dcNumSeg-1)毎に、領域Riに属する画素の平均値Pave[i]を導出する平均値導出部148M4を用いてもよい。なお、平均値Pave[i]は、領域Riに属する画素であって、ステップサイズnSとオフセット(dX,dY)で定まる画素位置であって、かつ、領域Riに属する画素の平均値としてもよい。この場合、頻度計算に必要なバッファが不要となる。
代表値導出部において、予測画像predS[][]と分割情報segIdx[][]とステップサイズnSとオフセット(dX,dY)を参照して、領域Ri(i=0..dcNumSeg-1)毎の最頻値を導出する最頻値導出部148M3の代わりに、領域Ri(i=0..dcNumSeg-1)毎に、領域Riに属する画素の平均値Pave[i]を導出する平均値導出部148M4を用いてもよい。なお、平均値Pave[i]は、領域Riに属する画素であって、ステップサイズnSとオフセット(dX,dY)で定まる画素位置であって、かつ、領域Riに属する画素の平均値としてもよい。この場合、頻度計算に必要なバッファが不要となる。
〔動画像符号化装置〕
以下において、本実施形態に係る動画像符号化装置2について、図15を参照して説明する。
以下において、本実施形態に係る動画像符号化装置2について、図15を参照して説明する。
(動画像符号化装置の概要)
動画像符号化装置2は、概略的に言えば、入力画像#10を符号化することによって符号化データ#1を生成し、出力する装置である。ここで、入力画像#10は、1又は複数の視点画像TexturePic、及び視点画像TexturePicに対応する同時刻のデプスマップDepthPicからなるレイヤ画像である。
動画像符号化装置2は、概略的に言えば、入力画像#10を符号化することによって符号化データ#1を生成し、出力する装置である。ここで、入力画像#10は、1又は複数の視点画像TexturePic、及び視点画像TexturePicに対応する同時刻のデプスマップDepthPicからなるレイヤ画像である。
(動画像符号化装置の構成)
まず、図15を用いて、動画像符号化装置2の構成例について説明する。図15は、動画像符号化装置2の構成について示す機能ブロック図である。図15に示すように、動画像符号化装置2は、符号化設定部21、逆量子化・逆変換部22、予測画像生成部23、加算器24、フレームメモリ25、減算器26、変換・量子化部27、および符号化データ生成部29を備えている。
まず、図15を用いて、動画像符号化装置2の構成例について説明する。図15は、動画像符号化装置2の構成について示す機能ブロック図である。図15に示すように、動画像符号化装置2は、符号化設定部21、逆量子化・逆変換部22、予測画像生成部23、加算器24、フレームメモリ25、減算器26、変換・量子化部27、および符号化データ生成部29を備えている。
符号化設定部21は、入力画像#10に基づいて、符号化に関する画像データおよび各種の設定情報を生成する。
具体的には、符号化設定部21は、次の画像データおよび設定情報を生成する。
まず、符号化設定部21は、入力画像#10を、スライス単位、ツリーブロック単位、CU単位に順次分割することにより、対象CUについてのCU画像#100を生成する。
また、符号化設定部21は、分割処理の結果に基づいて、ヘッダ情報H’を生成する。ヘッダ情報H’は、(1)対象スライスに属するツリーブロックのサイズ、形状および対象スライス内での位置についての情報、並びに、(2)各ツリーブロックに属するCUのサイズ、形状および対象ツリーブロック内での位置についてのCU情報CU’を含んでいる。
さらに、符号化設定部21は、CU画像#100、および、CU情報CU’を参照して、PT設定情報PTI’を生成する。PT設定情報PTI’には、(1)対象CUの各PUへの可能な分割パターン、および、(2)各PUに割り付ける可能な予測モード、の全ての組み合わせに関する情報が含まれる。
符号化設定部21は、CU画像#100を減算器26に供給する。また、符号化設定部21は、ヘッダ情報H’を符号化データ生成部29に供給する。また、符号化設定部21は、PT設定情報PTI’を予測画像生成部23に供給する。
逆量子化・逆変換部22は、変換・量子化部27より供給される、ブロック毎の量子化予測残差を、逆量子化、および、逆直交変換することによって、ブロック毎の予測残差を復元する。逆直交変換については、図3に示す逆量子化・逆変換部13について、既に説明したとおりであるので、ここではその説明を省略する。
また、逆量子化・逆変換部22は、ブロック毎の予測残差を、TT分割情報(後述)により指定される分割パターンに従って統合し、対象CUについての予測残差Dを生成する。逆量子化・逆変換部22は、生成した対象CUについての予測残差Dを、加算器24に供給する。
予測画像生成部23は、フレームメモリ25に記録されている局所復号画像P’、および、PT設定情報PTI’を参照して、対象CUについての予測画像Predを生成する。予測画像生成部23は、予測画像生成処理により得られた予測パラメータを、PT設定情報PTI’に設定し、設定後のPT設定情報PTI’を符号化データ生成部29に転送する。なお、予測画像生成部23による予測画像生成処理は、動画像復号装置1の備える予測画像生成部14と同様であるので、ここでは説明を省略する。
加算器24は、予測画像生成部23より供給される予測画像Predと、逆量子化・逆変換部22より供給される予測残差Dとを加算することによって、対象CUについての復号画像Pを生成する。
フレームメモリ25には、復号された復号画像Pが順次記録される。フレームメモリ25には、対象ツリーブロックを復号する時点において、当該対象ツリーブロックよりも先に復号された全てのツリーブロック(例えば、ラスタスキャン順で先行する全てのツリーブロック)に対応する復号画像が記録されている。
減算器26は、CU画像#100から予測画像Predを減算することによって、対象CUについての予測残差Dを生成する。減算器26は、生成した予測残差Dを、変換・量子化部27に供給する。
変換・量子化部27は、予測残差Dに対して、直交変換および量子化を行うことで量子化予測残差を生成する。なお、ここで直交変換とは、画素領域から周波数領域への変換のことをさす。また、逆直交変換の例としては、DCT変換(Discrete Cosine Transform)、およびDST変換(Discrete Sine Transform)等が挙げられる。
具体的には、変換・量子化部27は、CU画像#100、および、CU情報CU’を参照し、対象CUの1または複数のブロックへの分割パターンを決定する。また、決定された分割パターンに従って、予測残差Dを、各ブロックについての予測残差に分割する。
また、変換・量子化部27は、各ブロックについての予測残差を直交変換することによって周波数領域における予測残差を生成した後、当該周波数領域における予測残差を量子化することによってブロック毎の量子化予測残差を生成する。なお、変換部・量子化部27は、SDCフラグが1の場合、周波数変換・量子化を省略し、対象TUの画素毎の予測残差D(又はresSamples[x][y])を0とする。
また、変換・量子化部27は、生成したブロック毎の量子化予測残差と、対象CUの分割パターンを指定するTT分割情報と、対象CUの各ブロックへの可能な全分割パターンに関する情報とを含むTT設定情報TTI’を生成する。変換・量子化部27は、生成したTT設定情報TTI’を逆量子化・逆変換部22および符号化データ生成部29に供給する。
符号化データ生成部29は、ヘッダ情報H’、TT設定情報TTI’、およびPT設定情報PTI’を符号化し、符号化したヘッダ情報H、TT設定情報TTI、およびPT設定情報PTIを多重化して符号化データ#1を生成し、出力する。
(DCオフセット情報符号化部291)
符号化データ生成部29は、さらに、入力されたDCオフセット情報に係る符号化パラメータを符号化し、DCオフセット情報の符号化データを生成するDCオフセット情報符号化部291を備える。DCオフセット情報符号化部291は、各シンタックス(seg_pred_flag, depth_dc_flag, depth_dc_abs[i], depth_dc_sign_flag[i])の値を導出する。その後、図6に示すDCオフセット情報に係るシンタックステーブルに従って、各シンタックス(seg_pred_flag, depth_dc_flag, depth_dc_abs[i], depth_dc_sign_flag[i])の値を符号化する。
符号化データ生成部29は、さらに、入力されたDCオフセット情報に係る符号化パラメータを符号化し、DCオフセット情報の符号化データを生成するDCオフセット情報符号化部291を備える。DCオフセット情報符号化部291は、各シンタックス(seg_pred_flag, depth_dc_flag, depth_dc_abs[i], depth_dc_sign_flag[i])の値を導出する。その後、図6に示すDCオフセット情報に係るシンタックステーブルに従って、各シンタックス(seg_pred_flag, depth_dc_flag, depth_dc_abs[i], depth_dc_sign_flag[i])の値を符号化する。
まず、DCオフセット情報符号化部291は、分割予測フラグseg_pred_flagが1(真)の場合、該シンタックス値を符号化する。分割予測フラグseg_pred_flagが0(偽)の場合、該シンタックス値の符号化を省略する。
次に、DCオフセット情報符号化部291は、入力される各PU内の分割領域Ri(i=0..dcNumSeg-1)に対応するDCオフセット値DcOffset[i]から、DCオフセット情報有無フラグdepth_dc_flag、DCオフセット係数depth_dc_abs[i]、及びサインフラグdepth_dc_sign_flag[i]のシンタックス値を導出する。
まず、PU内の全ての領域Riにおいて、DCオフセット値DcOffset[i]が0の場合、DCオフセット情報有無フラグdepth_dc_flagを0とする。それ以外の場合には、DCオフセット情報有無フラグdepth_dc_flagを1とし、式(eq.E1)によって、DCオフセット係数depth_dc_abs[i]のシンタックス値を導出する。すなわち、DCオフセット値DcOffset[i]の絶対値から、オフセット最小値dcOffsetMinの値を減算した値を、DCオフセット係数のシンタックス値とする。
depth_dc_abs[i] = Abs ( DcOffset[i] ) - dcOffsetMin (eq.E1)
ここで、演算子Abs(X)は、Xの絶対値を返す演算子である。また、オフセット最小値dcOffsetMinは、既に説明済の式(eq.D2)によって導出される。なお、オフセット最小値の導出処理は、復号装置側と符号化装置側とで、同一の処理によって導出するように予め取り決めておくものとする。
ここで、演算子Abs(X)は、Xの絶対値を返す演算子である。また、オフセット最小値dcOffsetMinは、既に説明済の式(eq.D2)によって導出される。なお、オフセット最小値の導出処理は、復号装置側と符号化装置側とで、同一の処理によって導出するように予め取り決めておくものとする。
続いて、DCオフセット情報符号化部291は、例えば、式(eq.E2)によって、DCオフセット値のサイン符号に係るサインフラグdepth_dc_sign_flag[i]のシンタックス値を導出する。すなわち、DCオフセット値DcOffset[i]が0以上(0より大きい)の場合、サインフラグdepth_dc_sign_flag[i]のシンタックス値を0とし、DCオフセット値DcOffset[i]が0未満(0以下)の場合、サインフラグdepth_dc_sign_flag[i]のシンタックス値を1とする。
depth_dc_sign_flag [i] = DcOffset[i]>= 0 ? 0 : 1 (eq.E2)
〔応用例〕
上述した動画像符号化装置2及び動画像復号装置1は、動画像の送信、受信、記録、再生を行う各種装置に搭載して利用することができる。なお、動画像は、カメラ等により撮像された自然動画像であってもよいし、コンピュータ等により生成された人工動画像(CGおよびGUIを含む)であってもよい。
上述した動画像符号化装置2及び動画像復号装置1は、動画像の送信、受信、記録、再生を行う各種装置に搭載して利用することができる。なお、動画像は、カメラ等により撮像された自然動画像であってもよいし、コンピュータ等により生成された人工動画像(CGおよびGUIを含む)であってもよい。
まず、上述した動画像符号化装置2及び動画像復号装置1を、動画像の送信及び受信に利用できることを、図16を参照して説明する。
図16(a)は、動画像符号化装置2を搭載した送信装置PROD_Aの構成を示したブロック図である。図16(a)に示すように、送信装置PROD_Aは、動画像を符号化することによって符号化データを得る符号化部PROD_A1と、符号化部PROD_A1が得た符号化データで搬送波を変調することによって変調信号を得る変調部PROD_A2と、変調部PROD_A2が得た変調信号を送信する送信部PROD_A3と、を備えている。上述した動画像符号化装置2は、この符号化部PROD_A1として利用される。
送信装置PROD_Aは、符号化部PROD_A1に入力する動画像の供給源として、動画像を撮像するカメラPROD_A4、動画像を記録した記録媒体PROD_A5、及び、動画像を外部から入力するための入力端子PROD_A6、及び、画像を生成または加工する画像処理部A7を更に備えていてもよい。図16(a)においては、これら全てを送信装置PROD_Aが備えた構成を例示しているが、一部を省略しても構わない。
なお、記録媒体PROD_A5は、符号化されていない動画像を記録したものであってもよいし、伝送用の符号化方式とは異なる記録用の符号化方式で符号化された動画像を記録したものであってもよい。後者の場合、記録媒体PROD_A5と符号化部PROD_A1との間に、記録媒体PROD_A5から読み出した符号化データを記録用の符号化方式に従って復号する復号部(不図示)を介在させるとよい。
図16(b)は、動画像復号装置1を搭載した受信装置PROD_Bの構成を示したブロック図である。図16(b)に示すように、受信装置PROD_Bは、変調信号を受信する受信部PROD_B1と、受信部PROD_B1が受信した変調信号を復調することによって符号化データを得る復調部PROD_B2と、復調部PROD_B2が得た符号化データを復号することによって動画像を得る復号部PROD_B3と、を備えている。上述した動画像復号装置1は、この復号部PROD_B3として利用される。
受信装置PROD_Bは、復号部PROD_B3が出力する動画像の供給先として、動画像を表示するディスプレイPROD_B4、動画像を記録するための記録媒体PROD_B5、及び、動画像を外部に出力するための出力端子PROD_B6を更に備えていてもよい。図16(b)においては、これら全てを受信装置PROD_Bが備えた構成を例示しているが、一部を省略しても構わない。
なお、記録媒体PROD_B5は、符号化されていない動画像を記録するためのものであってもよいし、伝送用の符号化方式とは異なる記録用の符号化方式で符号化されたものであってもよい。後者の場合、復号部PROD_B3と記録媒体PROD_B5との間に、復号部PROD_B3から取得した動画像を記録用の符号化方式に従って符号化する符号化部(不図示)を介在させるとよい。
なお、変調信号を伝送する伝送媒体は、無線であってもよいし、有線であってもよい。また、変調信号を伝送する伝送態様は、放送(ここでは、送信先が予め特定されていない送信態様を指す)であってもよいし、通信(ここでは、送信先が予め特定されている送信態様を指す)であってもよい。すなわち、変調信号の伝送は、無線放送、有線放送、無線通信、及び有線通信の何れによって実現してもよい。
例えば、地上デジタル放送の放送局(放送設備など)/受信局(テレビジョン受像機など)は、変調信号を無線放送で送受信する送信装置PROD_A/受信装置PROD_Bの一例である。また、ケーブルテレビ放送の放送局(放送設備など)/受信局(テレビジョン受像機など)は、変調信号を有線放送で送受信する送信装置PROD_A/受信装置PROD_Bの一例である。
また、インターネットを用いたVOD(Video On Demand)サービスや動画共有サービスなどのサーバ(ワークステーションなど)/クライアント(テレビジョン受像機、パーソナルコンピュータ、スマートフォンなど)は、変調信号を通信で送受信する送信装置PROD_A/受信装置PROD_Bの一例である(通常、LANにおいては伝送媒体として無線又は有線の何れかが用いられ、WANにおいては伝送媒体として有線が用いられる)。ここで、パーソナルコンピュータには、デスクトップ型PC、ラップトップ型PC、及びタブレット型PCが含まれる。また、スマートフォンには、多機能携帯電話端末も含まれる。
なお、動画共有サービスのクライアントは、サーバからダウンロードした符号化データを復号してディスプレイに表示する機能に加え、カメラで撮像した動画像を符号化してサーバにアップロードする機能を有している。すなわち、動画共有サービスのクライアントは、送信装置PROD_A及び受信装置PROD_Bの双方として機能する。
次に、上述した動画像符号化装置2及び動画像復号装置1を、動画像の記録及び再生に利用できることを、図17を参照して説明する。
図17(a)は、上述した動画像符号化装置2を搭載した記録装置PROD_Cの構成を示したブロック図である。図17(a)に示すように、記録装置PROD_Cは、動画像を符号化することによって符号化データを得る符号化部PROD_C1と、符号化部PROD_C1が得た符号化データを記録媒体PROD_Mに書き込む書込部PROD_C2と、を備えている。上述した動画像符号化装置2は、この符号化部PROD_C1として利用される。
なお、記録媒体PROD_Mは、(1)HDD(Hard Disk Drive)やSSD(Solid State Drive)などのように、記録装置PROD_Cに内蔵されるタイプのものであってもよいし、(2)SDメモリカードやUSB(Universal Serial Bus)フラッシュメモリなどのように、記録装置PROD_Cに接続されるタイプのものであってもよいし、(3)DVD(Digital Versatile Disc)やBD(Blu-ray Disc:登録商標)などのように、記録装置PROD_Cに内蔵されたドライブ装置(不図示)に装填されるものであってもよい。
また、記録装置PROD_Cは、符号化部PROD_C1に入力する動画像の供給源として、動画像を撮像するカメラPROD_C3、動画像を外部から入力するための入力端子PROD_C4、及び、動画像を受信するための受信部PROD_C5、及び、画像を生成または加工する画像処理部C6を更に備えていてもよい。図17(a)においては、これら全てを記録装置PROD_Cが備えた構成を例示しているが、一部を省略しても構わない。
なお、受信部PROD_C5は、符号化されていない動画像を受信するものであってもよいし、記録用の符号化方式とは異なる伝送用の符号化方式で符号化された符号化データを受信するものであってもよい。後者の場合、受信部PROD_C5と符号化部PROD_C1との間に、伝送用の符号化方式で符号化された符号化データを復号する伝送用復号部(不図示)を介在させるとよい。
このような記録装置PROD_Cとしては、例えば、DVDレコーダ、BDレコーダ、HD(Hard Disk)レコーダなどが挙げられる(この場合、入力端子PROD_C4又は受信部PROD_C5が動画像の主な供給源となる)。また、カムコーダ(この場合、カメラPROD_C3が動画像の主な供給源となる)、パーソナルコンピュータ(この場合、受信部PROD_C5が動画像の主な供給源となる)、スマートフォン(この場合、カメラPROD_C3又は受信部PROD_C5又は画像処理部C6が動画像の主な供給源となる)なども、このような記録装置PROD_Cの一例である。
図17(b)は、上述した動画像復号装置1を搭載した再生装置PROD_Dの構成を示したブロックである。図17(b)に示すように、再生装置PROD_Dは、記録媒体PROD_Mに書き込まれた符号化データを読み出す読出部PROD_D1と、読出部PROD_D1が読み出した符号化データを復号することによって動画像を得る復号部PROD_D2と、を備えている。上述した動画像復号装置1は、この復号部PROD_D2として利用される。
なお、記録媒体PROD_Mは、(1)HDDやSSDなどのように、再生装置PROD_Dに内蔵されるタイプのものであってもよいし、(2)SDメモリカードやUSBフラッシュメモリなどのように、再生装置PROD_Dに接続されるタイプのものであってもよいし、(3)DVDやBDなどのように、再生装置PROD_Dに内蔵されたドライブ装置(不図示)に装填されるものであってもよい。
また、再生装置PROD_Dは、復号部PROD_D2が出力する動画像の供給先として、動画像を表示するディスプレイPROD_D3、動画像を外部に出力するための出力端子PROD_D4、及び、動画像を送信する送信部PROD_D5を更に備えていてもよい。図17(b)においては、これら全てを再生装置PROD_Dが備えた構成を例示しているが、一部を省略しても構わない。
なお、送信部PROD_D5は、符号化されていない動画像を送信するものであってもよいし、記録用の符号化方式とは異なる伝送用の符号化方式で符号化された符号化データを送信するものであってもよい。後者の場合、復号部PROD_D2と送信部PROD_D5との間に、動画像を伝送用の符号化方式で符号化する符号化部(不図示)を介在させるとよい。
このような再生装置PROD_Dとしては、例えば、DVDプレイヤ、BDプレイヤ、HDDプレイヤなどが挙げられる(この場合、テレビジョン受像機等が接続される出力端子PROD_D4が動画像の主な供給先となる)。また、テレビジョン受像機(この場合、ディスプレイPROD_D3が動画像の主な供給先となる)、デジタルサイネージ(電子看板や電子掲示板等とも称され、ディスプレイPROD_D3又は送信部PROD_D5が動画像の主な供給先となる)、デスクトップ型PC(この場合、出力端子PROD_D4又は送信部PROD_D5が動画像の主な供給先となる)、ラップトップ型又はタブレット型PC(この場合、ディスプレイPROD_D3又は送信部PROD_D5が動画像の主な供給先となる)、スマートフォン(この場合、ディスプレイPROD_D3又は送信部PROD_D5が動画像の主な供給先となる)なども、このような再生装置PROD_Dの一例である。
(ハードウェア的実現およびソフトウェア的実現)
また、上述した動画像復号装置1および動画像符号化装置2の各ブロックは、集積回路(ICチップ)上に形成された論理回路によってハードウェア的に実現してもよいし、CPU(Central Processing Unit)を用いてソフトウェア的に実現してもよい。
また、上述した動画像復号装置1および動画像符号化装置2の各ブロックは、集積回路(ICチップ)上に形成された論理回路によってハードウェア的に実現してもよいし、CPU(Central Processing Unit)を用いてソフトウェア的に実現してもよい。
後者の場合、上記各装置は、各機能を実現するプログラムの命令を実行するCPU、上記プログラムを格納したROM(Read Only Memory)、上記プログラムを展開するRAM(Random Access Memory)、上記プログラムおよび各種データを格納するメモリ等の記憶装置(記録媒体)などを備えている。そして、本発明の目的は、上述した機能を実現するソフトウェアである上記各装置の制御プログラムのプログラムコード(実行形式プログラム、中間コードプログラム、ソースプログラム)をコンピュータで読み取り可能に記録した記録媒体を、上記各装置に供給し、そのコンピュータ(またはCPUやMPU)が記録媒体に記録されているプログラムコードを読み出し実行することによっても、達成可能である。
上記記録媒体としては、例えば、磁気テープやカセットテープ等のテープ類、フロッピー(登録商標)ディスク/ハードディスク等の磁気ディスクやCD−ROM(Compact Disc Read-Only Memory)/MOディスク(Magneto-Optical disc)/MD(Mini Disc)/DVD(Digital Versatile Disc)/CD−R(CD Recordable)/ブルーレイディスク(Blu-ray Disc:登録商標)等の光ディスクを含むディスク類、ICカード(メモリカードを含む)/光カード等のカード類、マスクROM/EPROM(Erasable Programmable Read-Only Memory)/EEPROM(Electrically Erasable and Programmable Read-Only Memory)/フラッシュROM等の半導体メモリ類、あるいはPLD(Programmable logic device)やFPGA(Field Programmable Gate Array)等の論理回路類などを用いることができる。
また、上記各装置を通信ネットワークと接続可能に構成し、上記プログラムコードを通信ネットワークを介して供給してもよい。この通信ネットワークは、プログラムコードを伝送可能であればよく、特に限定されない。例えば、インターネット、イントラネット、エキストラネット、LAN(Local Area Network)、ISDN(Integrated Services Digital Network)、VAN(Value-Added Network)、CATV(Community Antenna television/Cable Television)通信網、仮想専用網(Virtual Private Network)、電話回線網、移動体通信網、衛星通信網等が利用可能である。また、この通信ネットワークを構成する伝送媒体も、プログラムコードを伝送可能な媒体であればよく、特定の構成または種類のものに限定されない。例えば、IEEE(Institute of Electrical and Electronic Engineers)1394、USB、電力線搬送、ケーブルTV回線、電話線、ADSL(Asymmetric Digital Subscriber Line)回線等の有線でも、IrDA(Infrared Data Association)やリモコンのような赤外線、Bluetooth(登録商標)、IEEE802.11無線、HDR(High Data Rate)、NFC(Near Field Communication)、DLNA(登録商標)(Digital Living Network Alliance)、携帯電話網、衛星回線、地上波デジタル網等の無線でも利用可能である。なお、本発明は、上記プログラムコードが電子的な伝送で具現化された、搬送波に埋め込まれたコンピュータデータ信号の形態でも実現され得る。
本発明は、画像データが符号化された符号化データを復号する画像復号装置、および、画像データが符号化された符号化データを生成する画像符号化装置に好適に適用することができる。また、画像符号化装置によって生成され、画像復号装置によって参照される符号化データのデータ構造に好適に適用することができる。
1 動画像復号装置(画像復号装置)
11 可変長復号部
111 DCオフセット情報復号部
13 逆量子化・逆変換部
14 予測画像生成部
141 予測単位設定部
142 参照画素設定部
143 スイッチ
145 イントラ予測部
145D DC予測部
145P Planar予測部
145A Angular予測部
145T DMM予測部
146 インター予測部
147 予測画像補正部
147A 加算器
148 領域分割画像生成部(領域分割画像生成装置)
148M 代表値導出部(代表予測値導出部)
148L 領域分割部
148T 閾値導出部
15 加算器
16 フレームメモリ
2 動画像符号化装置
21 符号化設定部
22 逆量子化・逆変換部
23 予測画像生成部
24 加算器
25 フレームメモリ
26 減算器
27 変換・量子化部
29 符号化データ生成部
291 DCオフセット情報符号化部
11 可変長復号部
111 DCオフセット情報復号部
13 逆量子化・逆変換部
14 予測画像生成部
141 予測単位設定部
142 参照画素設定部
143 スイッチ
145 イントラ予測部
145D DC予測部
145P Planar予測部
145A Angular予測部
145T DMM予測部
146 インター予測部
147 予測画像補正部
147A 加算器
148 領域分割画像生成部(領域分割画像生成装置)
148M 代表値導出部(代表予測値導出部)
148L 領域分割部
148T 閾値導出部
15 加算器
16 フレームメモリ
2 動画像符号化装置
21 符号化設定部
22 逆量子化・逆変換部
23 予測画像生成部
24 加算器
25 フレームメモリ
26 減算器
27 変換・量子化部
29 符号化データ生成部
291 DCオフセット情報符号化部
Claims (10)
- 対象PUの予測画像を参照して、第1の閾値を導出する閾値導出手段と、
上記第1の閾値と前記予測画像の各画素位置の画素値を参照して、前記予測画像を2つの領域へ分割する領域分割手段と、
上記分割された領域毎に、前記領域に対応する上記予測画像を参照して、代表値を導出する代表値導出手段と、
上記領域の各々に対して、上記各領域に対応する上記代表値と、上記各領域に対応するDCオフセット値を加算し、上記各領域の復号画像を生成する加算手段とを備えることを特徴とする領域分割画像生成装置。 - 上記代表値導出手段は、
上記予測画像のブロックサイズnSと第1の最小ブロックサイズnMinSを参照して、サンプリングする画素のステップサイズnStepを導出するステップサイズ導出手段と、
x方向およびy方向のオフセット座標(dX,dY)を導出するオフセット座標導出手段と、
上記分割された領域毎に、各領域に属する上記予測画像上の画素であり、かつ、上記ステップサイズnStepと上記オフセット座標(dX,dY)で定まる画素位置(サンプリング位置)にある画素を参照して、各領域の最頻値を導出する最頻値導出手段とを備えることを特徴とする請求項1に記載の領域分割画像生成装置。 - 上記ステップサイズ導出手段は、上記ステップサイズnStepを、上記予測画像のブロックサイズnSを、第1の最小ブロックサイズnSの2を底とする対数値Log2MinSで右シフトすることで導出することを特徴とする請求項2に記載の領域分割画像生成装置。
- 上記ステップサイズ導出手段は、上記予測画像のブロックサイズnSの2を底とする対数値Log2(nS)を第1の最小ブロックサイズnMinSの2を底とする対数値Log2MinSで減算した値と、0のうち最大値を2の乗数として、ステップサイズnStepを導出することを特徴とする請求項2に記載の領域分割画像生成装置。
- 上記ステップサイズ導出手段は、上記ステップサイズnStepを、nStep=1<<Max(Log2(nS)−Log2MinS,0)によって導出することを特徴とする請求項2に記載の領域分割画像生成装置。
- 上記オフセット座標導出手段は、上記ステップサイズを2で除算した値から、第1の所定値を減算した値をオフセット座標とすることを特徴とする請求項2に記載の領域分割画像装置。
- 前記閾値導出手段は、前記予測画像上の最左上画素と最右上画素と最左下画素と最右下画素)の平均値を第1の閾値Tとすることを特徴とする請求項1に記載の領域分割画像生成装置。
- 上記領域分割手段は、前記画素値が前記第1の閾値T未満の場合、前記各画素位置を第1の領域に属すると判定し、前記各画素位置に対応する領域情報segIdxへ0を設定し、
前記画素値が前記第1の閾値T以上の場合、前記各画素位置を第2の領域に属すると判定し、前記各画素位置に対応する領域情報segIdxへ1を設定することを特徴とする請求項1に記載の領域分割画像生成装置。 - 上記請求項1から請求項8の何れか一項に記載の領域分割画像生成装置を備える画像復号装置。
- 上記請求項1から請求項8の何れか一項に記載の領域分割画像生成装置を備える画像符号化装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015017017A JP2016143962A (ja) | 2015-01-30 | 2015-01-30 | 領域分割画像生成装置、画像復号装置、および符号化装置。 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015017017A JP2016143962A (ja) | 2015-01-30 | 2015-01-30 | 領域分割画像生成装置、画像復号装置、および符号化装置。 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2016143962A true JP2016143962A (ja) | 2016-08-08 |
Family
ID=56568894
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015017017A Pending JP2016143962A (ja) | 2015-01-30 | 2015-01-30 | 領域分割画像生成装置、画像復号装置、および符号化装置。 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2016143962A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018199001A1 (ja) * | 2017-04-28 | 2018-11-01 | シャープ株式会社 | 画像復号装置及び画像符号化装置 |
-
2015
- 2015-01-30 JP JP2015017017A patent/JP2016143962A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018199001A1 (ja) * | 2017-04-28 | 2018-11-01 | シャープ株式会社 | 画像復号装置及び画像符号化装置 |
US10939137B2 (en) | 2017-04-28 | 2021-03-02 | Sharp Kabushiki Kaisha | Image decoding device and image encoding device |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10142653B2 (en) | Image decoding apparatus, image coding apparatus, and coded data transformation apparatus | |
US10136161B2 (en) | DMM prediction section, image decoding device, and image coding device | |
US10225567B2 (en) | Image decoder, image encoder, and encoded data converter | |
KR101930896B1 (ko) | 이미지 디코딩 장치 및 이미지 디코딩 방법 | |
WO2016203981A1 (ja) | 画像復号装置及び画像符号化装置 | |
WO2016203881A1 (ja) | 算術復号装置及び算術符号化装置 | |
US20180115780A1 (en) | Image decoding device and image coding device | |
CN114402597B (zh) | 应用自适应环路滤波器的视频或图像编码 | |
CA3100316A1 (en) | Image encoding device, encoded stream extraction device, and image decoding device | |
US20190297320A1 (en) | Image decoding device and image encoding device | |
CN114586349A (zh) | 基于滤波编译视频的设备和方法 | |
CN114586350A (zh) | 基于交叉分量自适应环路滤波的图像编译装置和方法 | |
CN114930816A (zh) | 对图像进行编译的装置和方法 | |
JP2013150178A (ja) | 画像復号装置、および画像符号化装置 | |
JP2020061701A (ja) | 動画像符号化装置および動画像復号装置 | |
JP2015073213A (ja) | 画像復号装置、画像符号化装置、符号化データ変換装置、および、注目領域表示システム | |
JP2013118424A (ja) | 画像復号装置、画像符号化装置、および符号化データのデータ構造 | |
JP2016143962A (ja) | 領域分割画像生成装置、画像復号装置、および符号化装置。 | |
JP2013223049A (ja) | 画像復号装置、および画像符号化装置 | |
CN114762349A (zh) | 用于图像/视频编译的高级别语法信令方法和装置 | |
CN114762339A (zh) | 基于变换跳过和调色板编码相关高级语法元素的图像或视频编码 | |
JP6162289B2 (ja) | 画像復号装置および画像復号方法 | |
JP2016072941A (ja) | Dmm予測装置、画像復号装置、および画像符号化装置 | |
JP2016076904A (ja) | Dcオフセット情報復号装置、画像復号装置、およびdcオフセット情報符号化装置。 | |
JP2013251827A (ja) | 画像フィルタ装置、画像復号装置、画像符号化装置、およびデータ構造 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20161104 |