(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2025107109
(43)【公開日】2025-07-17
(54)【発明の名称】メッシュ復号装置、メッシュ復号方法及びプログラム
(51)【国際特許分類】
G06T 9/00 20060101AFI20250710BHJP
G06T 17/20 20060101ALI20250710BHJP
【FI】
G06T9/00 100
G06T17/20 500
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2024000910
(22)【出願日】2024-01-06
【国等の委託研究の成果に係る記載事項】(出願人による申告)令和5年度、総務省、「3次元空間データの無線伝送に向けた高能率圧縮技術の研究開発」委託事業、産業技術力強化法第17条の適用を受ける特許出願
(71)【出願人】
【識別番号】000208891
【氏名又は名称】KDDI株式会社
(74)【代理人】
【識別番号】110001564
【氏名又は名称】フェリシテ弁理士法人
(72)【発明者】
【氏名】徐 建鋒
(72)【発明者】
【氏名】海野 恭平
(72)【発明者】
【氏名】河村 圭
【テーマコード(参考)】
5B080
【Fターム(参考)】
5B080AA14
5B080AA19
5B080CA05
5B080GA22
(57)【要約】
【課題】基本メッシュが少なくとも1つの面を有することを保証すること
【解決手段】本発明に係るメッシュ復号装置200は、イントラフレームのビットストリームからイントラフレームにおける頂点の座標及び接続情報を復号するイントラ復号部202Bと、インターフレームのビットストリームから復号した動きベクトルと参照フレームにおいて復号対象の頂点に対応する頂点の座標とを加算することで復号対象の頂点の座標を復号するインター復号部202Eとを備え、イントラフレーム及びインターフレームにおける基本メッシュは少なくとも1つの面を有する。
【選択図】
図7
【特許請求の範囲】
【請求項1】
メッシュ復号装置であって、
イントラフレームのビットストリームから、前記イントラフレームにおける頂点の座標及び接続情報を復号するイントラ復号部と、
インターフレームのビットストリームから復号した動きベクトルと、参照フレームにおいて復号対象の頂点に対応する頂点の座標とを加算することで、前記復号対象の頂点の座標を復号するインター復号部とを備え、
前記イントラフレーム及び前記インターフレームにおける基本メッシュは、少なくとも1つの面を有することを特徴とするメッシュ復号装置。
【請求項2】
フレーム毎でまたはサブメッシュ毎で頂点数を示す制御信号は、少なくとも3つ以上の頂点を含むように制限されることを特徴とする請求項1に記載のメッシュ復号装置。
【請求項3】
前記制御信号は、アトラスタイル内のパッチ内の頂点数を指定する制御信号であることを特徴とする請求項2に記載のメッシュ復号装置。
【請求項4】
前記制御信号は、サブメッシュ内の頂点数を指定する制御信号であることを特徴とする請求項2に記載のメッシュ復号装置。
【請求項5】
前記制御信号は、復号されたメッシュ内の頂点数を指定する制御信号であることを特徴とする請求項2に記載のメッシュ復号装置。
【請求項6】
メッシュ復号方法であって、
イントラフレームのビットストリームから、前記イントラフレームにおける頂点の座標及び接続情報を復号する工程Aと、
インターフレームのビットストリームから復号した動きベクトルと、参照フレームにおいて復号対象の頂点に対応する頂点の座標とを加算することで、前記復号対象の頂点の座標を復号する工程Bとを有し、
前記工程A及び前記工程Bにおいて、前記イントラフレーム及び前記インターフレームにおける基本メッシュは、少なくとも1つの面を有することを特徴とするメッシュ復号方法。
【請求項7】
コンピュータを、メッシュ復号装置として機能させるプログラムであって、
前記メッシュ復号装置は、
イントラフレームのビットストリームから、前記イントラフレームにおける頂点の座標及び接続情報を復号するイントラ復号部と、
インターフレームのビットストリームから復号した動きベクトルと、参照フレームにおいて復号対象の頂点に対応する頂点の座標とを加算することで、前記復号対象の頂点の座標を復号するインター復号部とを備え、
前記イントラフレーム及び前記インターフレームにおける基本メッシュは、少なくとも1つの面を有することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メッシュ復号装置、メッシュ復号方法及びプログラムに関する。
【背景技術】
【0002】
非特許文献1又は非特許文献4には、非特許文献5のフレームワークに従って、非特許文献2又は3を用いてメッシュを符号化する技術が開示されている。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】Khaled Mammou, Jungsun Kim, Alexis M Tourapis, Dimitri Podborski, and Krasimir Kolarov, “[V-CG] Apple’s Dynamic Mesh Coding CfP Response,” April 2022, ISO/IEC JTC 1/SC 29/WG 7 m59281.
【非特許文献2】Google Draco、2022年5月26日アクセス[Online]、https://google.github.io/draco
【非特許文献3】Jean-Eudes Marvie, Olivier Mocquard, “[V-DMC][EE4.4-related] An efficient EdgeBreaker implementation,” April 2023, ISO/IEC JTC 1/SC 29/WG 7 m63344.
【非特許文献4】“WD 5.0 of V-DMC,” Oct. 2023, ISO/IEC JTC 1/SC 29/WG 7 N00744.
【非特許文献5】“Information technology - Coded Representation of Immersive Media - Part 5: Visual Volumetric Video-based Coding (V3C) and Video-based Point Cloud Compression (V-PCC),” ISO/IEC JTC 1/SC 29/WG 7, ISO/IEC 23090-5:2021(2E).
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、従来技術では、基本メッシュが少なくとも1つの面を有することを保証できないという問題点があった。 そこで、本発明は、上述の課題に鑑みてなされたものであり、上述の基本メッシュが少なくとも1つの面を有することを保証することができるメッシュ復号装置、メッシュ復号方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0005】
本発明の第1の特徴は、メッシュ復号装置であって、イントラフレームのビットストリームから、前記イントラフレームにおける頂点の座標及び接続情報を復号するイントラ復号部と、インターフレームのビットストリームから復号した動きベクトルと、参照フレームにおいて復号対象の頂点に対応する頂点の座標とを加算することで、前記復号対象の頂点の座標を復号するインター復号部とを備え、前記イントラフレーム及び前記インターフレームにおける基本メッシュは、少なくとも1つの面を有することを要旨とする。
【0006】
本発明の第2の特徴は、メッシュ復号方法であって、イントラフレームのビットストリームから、前記イントラフレームにおける頂点の座標及び接続情報を復号する工程Aと、インターフレームのビットストリームから復号した動きベクトルと、参照フレームにおいて復号対象の頂点に対応する頂点の座標とを加算することで、前記復号対象の頂点の座標を復号する工程Bとを有し、前記工程A及び前記工程Bにおいて、前記イントラフレーム及び前記インターフレームにおける基本メッシュは、少なくとも1つの面を有することを要旨とする。
【0007】
本発明の第3の特徴は、コンピュータを、メッシュ復号装置として機能させるプログラムであって、前記メッシュ復号装置は、イントラフレームのビットストリームから、前記イントラフレームにおける頂点の座標及び接続情報を復号するイントラ復号部と、インターフレームのビットストリームから復号した動きベクトルと、参照フレームにおいて復号対象の頂点に対応する頂点の座標とを加算することで、前記復号対象の頂点の座標を復号するインター復号部とを備え、前記イントラフレーム及び前記インターフレームにおける基本メッシュは、少なくとも1つの面を有することを要旨とする。
【発明の効果】
【0008】
本発明によれば、基本メッシュが少なくとも1つの面を有することを保証することができるメッシュ復号装置、メッシュ復号方法及びプログラムを提供することができる。
【図面の簡単な説明】
【0009】
【
図1】
図1は、一実施形態に係るメッシュ処理システム1の構成の一例を示す図である。
【
図2】
図2は、一実施形態に係るメッシュ復号装置200の機能ブロックの一例を示す図である。
【
図3A】
図3Aは、基本メッシュ及び細分割メッシュの一例を示す図である。
【
図3B】
図3Bは、基本メッシュ及び細分割メッシュの一例を示す図である。
【
図4】
図4は、一実施形態に係るメッシュ復号装置200の基本メッシュ復号部202の機能ブロックの一例を示す図である。
【
図5】
図5は、一実施形態に係るメッシュ復号装置200の基本メッシュ復号部202のイントラ復号部202Bの機能ブロックの一例を示す図である。
【
図6】
図6は、Pフレームの基本メッシュの頂点とIフレームの基本メッシュの頂点との間の対応関係の一例を示す図である。
【
図7】
図7は、一実施形態に係るメッシュ復号装置200の基本メッシュ復号部202のインター復号部202Eの機能ブロックの一例を示す図である。
【
図8】
図8は、一実施形態に係るメッシュ復号装置200の基本メッシュ復号部202のインター復号部202Eの動きベクトル予測部202E3による復号対象の頂点のMVPの算出方法の一例を説明するための図である。
【
図9】
図9は、一実施形態に係るメッシュ復号装置200の基本メッシュ復号部202のインター復号部202Eの動きベクトル予測部202E3の動作の一例を示すフローチャートを示す。
【
図11】
図11は、復号済みの動きベクトル数と復号対象の頂点の周りにある頂点の数との関係を示す統計データの一例を示す図である。
【
図12】
図12は、Worst caseの一例を説明するための図である。
【
図13】
図13は、一実施形態に係るメッシュ復号装置200の基本メッシュ復号部202のインター復号部202Eの変更例2について説明するための図である。
【
図14】
図14は、一実施形態に係るメッシュ復号装置200の基本メッシュ復号部202のインター復号部202Eの変更例2について説明するための図である。
【
図15】
図15は、一実施形態に係るメッシュ復号装置200の基本メッシュ復号部202のインター復号部202Eの変更例3について説明するための図である。
【
図16】
図16は、一実施形態に係るメッシュ復号装置200の基本メッシュ復号部202の変更例1の機能ブロックの変更例を示す図である。
【
図17】
図17は、一実施形態に係るメッシュ復号装置200の基本メッシュ復号部202の変更例1について説明するための図である。
【
図18】
図18は、一実施形態に係るメッシュ復号装置200の基本メッシュ復号部202のメッシュバッファ部202Cについて説明するための図である。
【
図19】
図19は、一実施形態に係るメッシュ復号装置200の基本メッシュ復号部202のメッシュバッファ部202Cについて説明するための図である。
【
図20】
図20は、変更例2に係るメッシュ復号装置200の基本メッシュ復号部202の変更例について説明するための図である。
【
図21】
図21は、変更例2に係るメッシュ復号装置200の基本メッシュ復号部202の変更例について説明するための図である。
【
図23】
図23は、各フレームでサブメッシュの数が変動するケースの一例を示す図である。
【
図24】
図24は、フレーム間で対応するサブメッシュが異なるSubmeshIDを有するケースの一例を示す図である。
【発明を実施するための形態】
【0010】
以下、本発明の実施の形態について、図面を参照しながら説明する。なお、以下の実施形態における構成要素は、適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組み合わせを含む様々なバリエーションが可能である。したがって、以下の実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
【0011】
<第1実施形態>
以下、
図1~
図24を参照して、本実施形態に係るメッシュ処理システムについて説明する。
【0012】
図1は、本実施形態に係るメッシュ処理システム1の構成の一例を示す図である。
図1に示すように、メッシュ処理システム1は、メッシュ符号化装置100及びメッシュ復号装置200を備えている。
【0013】
図2は、本実施形態に係るメッシュ復号装置200の機能ブロックの一例を示す図である。
【0014】
図2に示すように、メッシュ復号装置200は、多重分離部201と、基本メッシュ復号部202と、細分割部203と、メッシュ復号部204と、パッチ統合部205と、変位量復号部206と、映像復号部207と、アトラスデータ復号部208とを有する。
【0015】
ここで、基本メッシュ復号部202、細分割部203、メッシュ復号部204及び変位量復号部206は、メッシュを分割したパッチ単位で処理を行うように構成されており、その後、これらの処理結果についてパッチ統合部205で統合されるように構成されていてもよい。
【0016】
図3Aの例では、メッシュが、基本面1及び2で構成されるパッチ1と、基本面3及び4で構成されるパッチ2とに分割されている。
【0017】
多重分離部201は、多重化されたビットストリームを、基本メッシュビットストリームと変位量ビットストリームとテクスチャビットストリームとアトラス(atlas)ビットストリームとに分離するように構成されている。
【0018】
アトラスデータ復号部208は、アトラスビットストリームを復号して制御情報を出力するように構成されている。かかる制御信号は、メタデータとして基本メッシュ復号部202、細分割部203、メッシュ復号部204、変位量復号部206及び映像復号部207で利用されてもよい。
【0019】
<基本メッシュ復号部202>
基本メッシュ復号部202は、基本メッシュビットストリームを復号し、基本メッシュを生成して出力するように構成されている。
【0020】
ここで、基本メッシュは、3次元空間における複数の頂点と、かかる複数の頂点を接続する辺とで構成される。
【0021】
なお、
図3Aに示すように、基本メッシュは、3つの頂点で表現される基本面を組み合わせて構成される。
【0022】
基本メッシュ復号部202は、例えば、非特許文献2に示すDraco又は非特許文献3に記載されている技術を用いて、基本メッシュビットストリームを復号するように構成されていてもよい。
【0023】
また、基本メッシュ復号部202は、細分割手法の種別を制御する制御情報として、後述の「subdivision_method_id」を生成するように構成されていてもよい。
【0024】
図4に示すように、基本メッシュ復号部202は、分離部202Aと、イントラ復号部202Bと、メッシュバッファ部202Cと、接続情報復号部202Dと、インター復号部202Eとを備える。
【0025】
分離部202Aは、基本メッシュビットストリームを、IフレームのビットストリームとPフレームのビットストリームとに分類するように構成されている。
【0026】
(イントラ復号部202B)
イントラ復号部202Bは、例えば、非特許文献2に示すDraco又は非特許文献3に記載されている技術を用いて、Iフレームのビットストリームから、Iフレームの頂点の座標及び接続情報を復号するように構成されている。
【0027】
図5は、イントラ復号部202Bの機能ブロックの一例を示す図である。
【0028】
図5に示すように、イントラ復号部202Bは、任意イントラ復号部202B1と、整列部202B2とを有する。
【0029】
任意イントラ復号部202B1は、非特許文献2に示すDraco又は非特許文献3に記載されている技術を含む任意の方式を用いて、Iフレームのビットストリームから、Iフレームの順序無し頂点の座標及び接続情報を復号するように構成されている。
【0030】
整列部202B2は、順序無し頂点を所定の順序に並び替えることによって頂点を出力するように構成されている。
【0031】
所定の順序として、例えば、モートンコード順を用いてもよく、ラスタスキャン順を用いてもよい。
【0032】
また、整列部202B2は、復号された基本メッシュにおいて座標が一致する複数の頂点である重複頂点をまとめて、単一頂点としてから、所定の順序に並び替えてもよい。
【0033】
メッシュバッファ部202Cは、イントラ復号部202Bによって復号されたIフレームの頂点の座標及び接続情報を蓄積するように構成されている。ここで、重複頂点として存在する頂点のインデックスA(k)及びB(k)のペアを所定順で保存する特定バッファが設けられていてもよい。
【0034】
接続情報復号部202Dは、メッシュバッファ部202Cから取り出したIフレーム又は参照フレームの接続情報をPフレームの接続情報にするように構成されている。
【0035】
インター復号部202Eは、メッシュバッファ部202Cから取り出した参照フレームの頂点の座標とPフレームのビットストリームから復号した動きベクトルとを加算することによって、Pフレームの頂点の座標を復号するように構成されている。
【0036】
更に、インター復号部202Eは、かかる特定バッファに保存されている重複頂点として存在する頂点のインデックスA(k)及びB(k)のペアにより、Pフレームの頂点のインデックスを調整することが可能である。
【0037】
ここで、上述のインデックスの全部又は一部は、ビットストリームから復号される。かかる復号方法は、算術符号化でもよい。この結果、算術符号化を用いて復号対象のインデックスの最大値に制限が無くなるという効果が期待できる。
【0038】
例えば、ue(v)という算術符号化を使ってもよい。ue(v)は、左端ビットファーストで符号なし整数0次の指数ゴロム符号化(Exp-Golomb)を示す。
【0039】
具体的には、ue(v)の構文要素の解析プロセスは、ビットストリーム内の現在の位置から始まり、最初の非ゼロビットを含むビットを読み取って、0に等しい先行ビット数を数えることから始まる。このプロセスは、次のように指定される。
leadingZeroBits=-1
for(b=0;!b;leadingZeroBits++
b=read_bits(l)
次に、変数codeNumが、次のように割り当てられる。
【0040】
codeNum=2leadingZeroBits-1+read_bits(leadingZeroBits)
ただし、read_bits(leadingZeroBits)の返す値は、最上位ビットが先に書かれた符号なし整数の2進表現として解釈される。また、ue(v)の値は、codeNumの値に等しい。
【0041】
表1は、ビット列を「接頭辞」ビットと「接尾辞」ビットとに分離して、Exp-Golombコードの構造を示している。
【0042】
【0043】
ここで、「接頭辞」ビットは、leadingZeroBitsの計算で指定されたように解析されるビットであり、表1のビット列の列に0又は1として表示される。
【0044】
「接尾辞」ビットは、codeNumの計算で解析されるビットであり、表1においてxiとして表示される。iは、0からleadingZeroBits-1までの範囲にある。各xiは、0又は1のいずれかに等しい。
【0045】
表2は、ビット列をcodeNumの値に明示的に割り当てる方法を示す。ここで、ue(v)の値は、codeNumの値に等しい。
【0046】
【0047】
本実施形態では、
図6に示すように、Pフレームの基本メッシュの頂点と参照フレーム(Iフレーム又はPフレーム)の基本メッシュの頂点との間で対応関係が存在する。ここで、インター復号部202Eによって復号される動きベクトルは、Pフレームの基本メッシュの頂点の座標とIフレームの基本メッシュの頂点の座標との差分ベクトルである。
【0048】
なお、インター復号部202Eは、ビットストリームから、現フレーム又は現サブメッシュの頂点数を復号してもよい。
【0049】
ここで、インター復号部202Eが、上述のビットストリームから現フレーム又は現サブメッシュの頂点数を復号する場合、かかるビットストリームの適合性の要件は、復号した現フレーム又は現サブメッシュの頂点数が参照フレーム又は参照サブメッシュの頂点数と等しくなければならないということである。
【0050】
なお、インター復号部202Eは、上述のビットストリームから現フレーム又は現サブメッシュの頂点数を復号する場合、復号した現フレーム又は現サブメッシュの頂点数と参照フレーム又は参照サブメッシュの頂点数とが異なる場合、ビットストリームから復号した現フレーム又は現サブメッシュの頂点数を優先して利用するように構成されている。
【0051】
また、インター復号部202Eは、参照フレーム又は参照サブメッシュの頂点数を、そのまま現フレーム又は現サブメッシュの頂点数として利用してもよい。
【0052】
かかる場合、インター復号部202Eは、現フレーム又は現サブメッシュの頂点数が参照フレーム又は参照サブメッシュの頂点数よりも多い場合、参照フレーム又は参照サブメッシュに対して、ダミー頂点及びダミー頂点の接続情報を追加してもよい。
【0053】
ここで、インター復号部202Eは、かかるダミー頂点の座標を固定値(例えば、(0,0,0))としてもよいし、所定頂点(例えば、参照フレームの最後の頂点)からコピーしてもよい。
【0054】
また、インター復号部202Eは、ダミー頂点の接続情報として、参照フレーム又は参照サブメッシュにおける頂点の接続情報の最初から必要な分をコピーしてもよい。
【0055】
かかる構成によれば、現フレーム又は現サブメッシュの復号動作を保障するという効果が期待できる。
【0056】
なお、 基本メッシュが少なくとも1つの面を持ち、かかる面が少なくとも3つ以上の頂点を持つため、フレーム毎又はサブメッシュ毎で頂点数を示す制御信号は、少なくとも3つ以上の頂点を含むように制限される。
【0057】
例えば、非参考文献4の8.3.7.3節で定義されている制御信号pdu_vertex_count_minus_1[titleID][patchIdx]、H.8.1.3.8節で定義されている制御信号sismu_inter_vertex_count[subMeshID]及びI.8.3.7節で定義されている制御信号mesh_vertex_countが、表3に示すように変更され、3つ以上の頂点を含むように制限される。
【0058】
ここで、制御信号pdu_vertex_count_minus_1[titleID][patchIdx]は、[titleID]で指定されるtileID(タイルID)と等しいtileIDを有するアトラスタイル内で[patchIdx]で指定されるpatchID(パッチID)と等しいpatchIDを有するパッチ内の頂点数を指定する制御信号である。
【0059】
制御信号sismu_inter_vertex_count[subMeshID]は、[subMeshID]で指定されるSubmeshIDと等しいSubmeshIDを有するサブメッシュ内の頂点数を指定する制御信号である。
【0060】
制御信号mesh_vertex_countは、復号されたメッシュ内の頂点数を指定する制御信号である。
【0061】
【0062】
かかる構成によれば、頂点が1や2といった意味がないデータで動作してしまうという事態を防ぐことができるという効果が期待できる。
【0063】
(インター復号部202E)
図7は、インター復号部202Eの機能ブロックの一例を示す図である。
【0064】
図7に示すように、インター復号部202Eは、動きベクトル残差復号部202E1と、動きベクトルバッファ部202E2と、動きベクトル予測部202E3と、動きベクトル算出部202E4と、加算器202E5とを有する。
【0065】
動きベクトル残差復号部202E1は、PフレームのビットストリームからMVR(Motion Vector Residual)を生成するように構成されている。
【0066】
ここで、MVRは、MV(Motion Vector)とMVP(Motion Vector Prediction)との差分を示す動きベクトル残差である。MVは、対応するIフレームの頂点の座標とPフレームの頂点の座標との間の差分ベクトル(動きベクトル)である。MVPは、MVを用いて対象の頂点のMVの予測した値(動きベクトルの予測値)である。
【0067】
動きベクトルバッファ部202E2は、動きベクトル算出部202E4によって出力されたMVを順次に保存するように構成されている。
【0068】
動きベクトル予測部202E3は、復号対象の頂点と接続している頂点について、動きベクトルバッファ部202E2から復号済みのMVを取得し、
図8に示すように、取得された復号済みのMVの全部又は一部を用いて、復号対象の頂点のMVPを出力するように構成されている。
【0069】
動きベクトル算出部202E4は、動きベクトル残差復号部202E1で生成されたMVRと動きベクトル予測部202E3から出力されたMVPとを加算し、復号対象の頂点のMVを出力するように構成されている。
【0070】
加算器202E5は、対応関係を持つ参照フレーム(Iフレーム又はPフレーム)の復号済みの基本メッシュから得られた復号対象の頂点に対応する頂点の座標と、動きベクトル算出部202E3から出力された動きベクトルMVとを加算し、復号対象の頂点の座標を出力するように構成されている。
【0071】
以下、インター復号部202Eの各部の詳細について説明する。
【0072】
図9に、動きベクトル予測部202E3の動作の一例を示すフローチャートを示す。以下、動きベクトル予測部202E3の動作を「平均予測法」と呼ぶ。
【0073】
図9に示すように、ステップS1001において、動きベクトル予測部202E3は、MVP及びNに0を設定する。
【0074】
ステップS1002において、動きベクトル予測部202E3は、動きベクトルバッファ部202E2から、復号対象の頂点の周りの頂点のMVの集合を取得し、後続の処理が終わっていない頂点を特定し、Noに遷移し、全ての頂点について後続の処理が終わっている場合は、Yesに遷移する。
【0075】
ステップS1003において、動きベクトル予測部202E3は、処理対象の頂点のMVが、復号済みでなければ、Noに遷移し、処理対象の頂点のMVが、復号済みであれば、Yesに遷移する。
【0076】
ステップS1004において、動きベクトル予測部202E3は、MVPにMVを加算し、Nに1を加算する。
【0077】
ステップS1005において、動きベクトル予測部202E3は、Nが0より大きければ、MVPをNで除した結果を出力し、Nが0であれば、0を出力し、処理を終了する。
【0078】
すなわち、動きベクトル予測部202E3は、復号対象の頂点の周りにある頂点の復号済みの動きベクトルを平均することによって、復号対象のMVPを出力するように構成されている。
【0079】
なお、動きベクトル予測部202E3は、かかる復号済みの動きベクトルの集合が空集合の場合、MVPを0とするように構成されていてもよい。
【0080】
動きベクトル算出部202E4は、式(1)によって、動きベクトル予測部202E3によって出力されたMVP及び動きベクトル残差復号部202E1によって生成されたMVRから、復号対象の頂点のMVを算出するように構成されていてもよい。
【0081】
MV(k)=MVP(k)+MVR(k) … (1)
ここで、kは、頂点のインデックスである。MV、MVR及びMVPは、x成分、y成分及びz成分を有するベクターである。
【0082】
かかる構成によれば、MVPを用いて、MVの代わりにMVRのみを符号化するため、符号化効率を高める効果が期待できる。
【0083】
加算器202E5は、動きベクトル算出部202E4によって算出された頂点のMVと、かかる頂点に対応する参照フレームの頂点の座標とを加算することによって、かかる頂点の座標を算出し、接続情報(Connectivity)を参照フレームのままにするように構成されている。
【0084】
具体的には、加算器202E5は、式(2)を用いて、k番目の頂点の座標v’i(k)を算出するように構成されていてもよい。
【0085】
v’i(k)=v’j(k)+MV(k) … (2)
ここで、v’i(k)は、復号対象のフレームで復号するk番目の頂点の座標であり、v’j(k)は、参照フレームの復号したk番目の頂点の座標であり、MV(k)は、復号対象のフレームのk番目のMVであり、k=1,2…,Kである。
【0086】
また、復号対象のフレームの接続情報は、参照フレームの接続情報と同一にされる。
【0087】
なお、動きベクトル予測部202E3は、復号済みのMVを用いてMVPを算出するため、復号の順番がMVPに影響を及ぼす。
【0088】
かかる復号の順番は、参照フレームの基本メッシュの頂点の復号の順番にする。一般的に、一定の繰り返しパターンを用いて、起点となるエッジから基本面を1つずつ増やす復号手法であれば、復号した基本メッシュの頂点の順番が復号の過程で決められる。
【0089】
例えば、動きベクトル予測部202E3は、参照フレームの基本メッシュにおいて、Edgebreakerを用いて、頂点の復号の順番を決めてもよい。
【0090】
かかる構成によれば、頂点の座標の代わりに参照フレームからのMVを符号化するため、符号化効率を高める効果が期待できる。
【0091】
(インター復号部202Eの変更例1)
以下、インター復号部202Eの変更例1について説明する。
【0092】
インター復号部202Eの動きベクトル予測部202E3は、復号対象の頂点の周りにある頂点の復号済みの動きベクトルを平均するという「平均予測法」において、事前に決めた最大の利用数を超えないように、復号対象の頂点の周りにある頂点の復号済みの動きベクトルを全部又は一部のみ利用してMVPを算出する。
【0093】
なお、事前に決めた最大の利用数は、制御信号としてビットストリームから復号される。
【0094】
また、動きベクトル予測部202E3は、復号対象の頂点の周りにある頂点の復号済みの動きベクトル数が最大の利用数を超える場合、一定のルールで最大の利用数までピックアップする。
【0095】
例えば、動きベクトル予測部202E3は、かかるルールとして、復号順で最初又は最後の頂点を選ぶことにする。
【0096】
図10Aに示すようなメッシュに対する復号順は、矢印によって示されるように、頂点v
D→v
C→v
A→v
Bである。
【0097】
図10Bは、復号済みの隣接頂点数の最大値を3にする時に、各頂点v
A~v
DのMVPを算出する際に利用する復号対象の頂点の周りにある頂点のリストである。
【0098】
かかる構成によれば、最大隣接頂点数を決めることによって、符号化効率を維持又は微減しながら計算量及びメモリー量を削減する効果が期待できる。
【0099】
ただし、上述の効果を発揮するため、メッシュ符号化装置100で適切な最大隣接頂点数を設定し、関連の制御信号としてビットストリームに書き込む必要がある。
【0100】
よって、上述の最大隣接頂点数として設定可能な範囲は、メッシュ復号装置200で用意するメモリー量を決めるため、最大隣接頂点数に関して合理的な制約として最大隣接頂点数は、予め定めた最大値以下となるように符号化/復号される。
【0101】
このように、最大隣接頂点数に関して合理的な制約を規定することでメッシュ復号装置200の設計を容易にする効果が期待できる。
【0102】
一般的に、Closed 2-manifold triangle meshにおける隣接頂点数の平均は、約6であるが、統計的には、最大隣接頂点数は、7~8である場合が多い。なお、
図11に示すように、復号対象の頂点の周りにある頂点の数(横軸)に応じて、復号済みの動きベクトル数(縦軸)が動的に変化する。
【0103】
よって、上述の最大隣接頂点数として設定可能な範囲を絞ることが望ましい。
【0104】
例えば、
図11に示すように、統計上、復号済みの動きベクトル数が最も多い復号対象の頂点の周りにある頂点の数である「3」を、上述の制御信号において最大隣接頂点数として設定可能な範囲内に含めるようにしたり、統計的な隣接頂点数の平均の一定比率(例えば、50%や120%)或いはNビット(例えば、3ビット)までカバーできる自然数より大きくない値を、上述の制御信号において最大隣接頂点数として設定可能な範囲の上限(最大値)にしたりすることで、計算量及びメモリー量を削減する効果が発揮できる。
【0105】
一方、最大隣接頂点数として設定可能な範囲を、大きい値、例えば、Worst caseの256或いは8ビットにすると、メモリー量だけではなく、計算量も削減する効果が発揮できない可能性がある。
【0106】
図12は、Worst caseの一例であり、n≧256のときに、復号済みの隣接頂点数が256を超える。
図12において、頂点n+1における復号済みの隣接頂点数はnである。
【0107】
仮に、最大隣接頂点数の上限を256に設定した場合、メッシュ復号装置200では、
図10Bに示すように、膨大なメモリーだけではなく、膨大な計算量が必要となる。よって、上述の最大隣接頂点数として設定可能な範囲の上限(最大値)は、8であることにしてもよい。
【0108】
さらに、上述の制御信号において最大隣接頂点数として設定可能な範囲は、明確な値にしてもよいし、他の制御信号やデータから算出されてもよい。
【0109】
例えば、Level1により、制御信号において最大隣接頂点数として設定可能な範囲が規定されてもよい。
【0110】
或いは、以下の式(3)で、基本メッシュの頂点数から、制御信号において最大隣接頂点数として設定可能な範囲の上限が算出されてもよい。
【0111】
制御信号において最大隣接頂点数として設定可能な範囲の上限=log2(基本メッシュの頂点数) … 式(3)
かかる構成によれば、適正に最大隣接頂点数の設定可能な範囲を決めることができ、Worst caseでも、確実に計算量及びメモリー量の両方を削減する効果が期待できる。
【0112】
なお、インター復号部202Eは、インターフレームのビットストリームから復号したMVと、参照フレームにおいて復号対象の頂点に対応する頂点の座標とを加算することで、復号対象の頂点の座標を復号する。
【0113】
また、動きベクトル予測部202E3は、隣接頂点リストを参照して、前記復号対象の頂点に隣接する復号済みの頂点の動きベクトルの全部又は一部を平均することによって、前記復号対象の頂点の動きベクトルの予測値を算出する。ここで、隣接頂点リストは、各頂点に隣接する頂点のリストである。
【0114】
動きベクトル予測部202E3は、現フレームにおける隣接頂点リストとして、参照フレームにおける隣接頂点リストを再利用することができる。ここで、かかる隣接頂点リストには、最大利用数(設定された最大隣接頂点数)までピックアップされた復号済みの頂点が含まれているものとする。
【0115】
ここで、動きベクトル予測部202E3は、参照フレームにおける各頂点と現フレームにおける各頂点とが1対1の対応関係を有しており、参照フレームにおける各頂点の復号順及び現フレームにおける各頂点の復号順が同じであり、且つ、参照フレームにおいて最大利用数までピックアップされた復号済みの頂点を含む隣接頂点リストが既に保存されているという条件(再利用条件)が満たされる場合、参照フレームにおける隣接頂点リストを再利用することができる。
【0116】
例えば、参照フレームが復号された際に、参照フレームがPフレーム又はSフレームである場合、最大利用数までピックアップされた復号済みの頂点を含む隣接頂点リストが存在する。
【0117】
そのため、動きベクトル予測部292E3は、参照フレームが復号された際に、参照フレームがPフレーム又はSフレームである場合、復号された参照フレームを参照フレームバッファに保存すると共に、参照フレームにおける隣接頂点リストを特定バッファに保存する。
【0118】
そして、動きベクトル予測部292E3は、現フレームが復号される際に、参照フレームのタイプがPフレーム又はSフレームであれば、特定バッファに保存されている参照フレームにおける隣接頂点リストを、現フレームにおける隣接頂点リストとして再利用する。
【0119】
ただし、特定バッファには、1又は複数のフレームにおける最大利用数までピックアップされた復号済みの頂点を含む隣接頂点リストが保存されている可能性がある。
【0120】
そこで、動きベクトル予測部202E3は、特定バッファに複数のフレームにおける隣接頂点リストが保存されている場合、参照フレームに対応するフレーム(参照フレームと同じフレームインデックスを含むフレーム)における隣接頂点リストを、現フレームにおける隣接頂点リストとして再利用する。
【0121】
動きベクトル予測部202E3は、参照フレームバッファに対する操作を、特定バッファに対しても適用する。ここで、参照フレームバッファに対する操作は、例えば、非特許文献4又は非特許文献5の章9.2.4.4に記載されているmarking processである。
【0122】
かかる構成によれば、現フレームにおいて最大利用数までピックアップされた復号済みの頂点を含む隣接頂点リストを作成するための計算量を削減するという効果が期待できる。
【0123】
ただし、かかる場合、1又は複数のフレームにおける隣接頂点リストを保存するための特定バッファが必要である。ここで、特定バッファのサイズを最小化するために、上述の再利用条件に更なる条件が追加されてもよい。
【0124】
例えば、動きベクトル予測部202E3は、上述の再利用条件に加えて、更に参照フレームが復号順で現フレームの直前フレームであるという条件が満たされる場合に、参照フレームにおける隣接頂点リストを、現フレームにおける隣接頂点リストとして再利用することができる。
【0125】
かかる場合、動きベクトル予測部202E3は、復号順で現フレームの直前フレームにおける隣接頂点リストのみを特定バッファに保存してもよい。また、動きベクトル予測部202E3は、参照フレームバッファに対する操作について特定バッファに適用させない。かかる構成によれば、特定バッファのサイズを削減するという効果が期待できる。
【0126】
(インター復号部202Eの変更例2)
以下、
図13を参照して、インター復号部202Eの変更例2について説明する。
【0127】
インター復号部202Eの動きベクトル算出部202E4は、モード1及びモード0を有する。
【0128】
モード1では、動きベクトル算出部202E4は、動きベクトル残差復号部202E1で生成されたMVRと動きベクトル予測部202E3から出力されたMVPとを加算し、復号対象の頂点のMVを出力する(
図13のA参照)。
【0129】
一方、モード0では、動きベクトル算出部202E4は、動きベクトル残差復号部202E1で生成されたMVRを復号対象の頂点のMVとして出力する(
図13のB参照)。
【0130】
なお、モード0における動きベクトル算出部202E4の動作は、動きベクトル予測部202E3から出力されたMVPをゼロにするという動作に相当する。
【0131】
さらに、動きベクトル算出部202E4は、復号順で連続のN(N≧1)個の頂点のMVのモードを同一にしてもよい。
【0132】
動きベクトル算出部202E4は、上述のN個の頂点を1つのグループにする。かかるグループのサイズ(グループサイズ)Nは、1以上である。動きベクトル算出部202E4は、ビットストリームから、かかるグループサイズを算出できる制御信号(
図13に示すgroup size)を復号する。
【0133】
ただし、最後のグループに残った頂点の数がグループサイズより小さい場合、動きベクトル算出部202E4は、残った頂点の全部をグループに入れることにする。
【0134】
このように、連続するN個の頂点を同じモードにすると、モードの符号量を削減できるため、符号化効率を向上させる効果が期待できる。
【0135】
ここで、同じモードを持つ連続する頂点の数が多いほど、モードの符号量の削減効果が大きい。したがって、メッシュ符号化装置100で適切なgroup sizeを設定し、メッシュ復号装置200で制御信号としてビットストリームから復号する必要がある。
【0136】
よって、かかる制御信号において設定可能な範囲は、実際に同じモードを持つ連続する頂点の数より小さくないことが望ましい。
【0137】
例えば、全頂点がほとんど同じモードを選択した場合は、group sizeを全頂点数にしてもよい。
【0138】
表4は、モード0を選択した頂点の数が8割以上である場合や、モード1を選択した頂点の数が9割以上である場合の例を示す。
【0139】
よって、上述の制御信号において設定可能な範囲が1から予め定めた最大値までカバーできるようにする。かかる最大値は、基本メッシュの全頂点数以上にする。
【0140】
【0141】
なお、上述の制御信号(group size)を自然数にすると、全頂点数以上に設定する場合、絶対値が大きいので、符号量が大きくなる。
【0142】
したがって、上述の制御信号を対数にすることも可能である。具体的に、制御信号をlog2_group_sizeとして、以下の式(4)で、グループサイズが算出されてもよい。
【0143】
group size=2log2_group_size … 式(4)
ここで、フレームの中にグループが1つのみであれば、そのグループを最後のグループにする。つまり、group sizeが頂点の数より大きいと、全頂点をグループに入れることにする。
【0144】
さらに、上述の制御信号において設定可能な範囲は、明確な値にしてもよいし、他の制御信号やデータから算出されてもよい。
【0145】
例えば、Level1により、かかる制御信号において設定可能な範囲は、規定されてもよい。
【0146】
或いは、かかる制御信号において設定可能な範囲は、基本メッシュの頂点数から算出されてもよい。
【0147】
例えば、かかる制御信号において設定可能な範囲について、基本メッシュの頂点数をカバーできる2の冪乗である最小の自然数にしてもよい。
【0148】
さらに、上述の制御信号において設定可能な範囲について、小さい範囲にした上で、
図14に示すように、別の制御信号の所定フラグ(Mode flag)を導入してもよい。かかる場合、
図14に示すように、動きベクトル算出部202E4は、かかる所定フラグがTRUE(Mode flag=1)であれば、全ての頂点を1つのグループにし(すなわち、全ての頂点の数をグループサイズとし)、FALSEであれば、上述の制御信号から算出したグループサイズのままにする。
【0149】
なお、上述の制御信号は、シーケンス毎で設定されてもよいし、フレーム毎で設定されてもよい。上述の制御信号が、シーケンス毎で設定されると、全フレームのグループサイズが同じである。
【0150】
かかる構成によれば、適正にグループサイズの設定可能な範囲を決めることで、あらゆる状況を対応でき、確実にモードの符号量を削減し、符号化効率を向上させる効果が期待できる。
【0151】
(インター復号部202Eの変更例3)
上述のインター復号部202Eの更なる変更例では、上述のインター復号部202Eを実施する前に、以下の機能ブロックを追加するように構成されている。
【0152】
具体的には、
図15に示すように、インター復号部202Eは、
図8に示す構成に加えて、重複頂点探索部202E6と、mv_signalled_flag取得部(フラグ取得部)202E7と、動きベクトル取得部202E8とを備える。
【0153】
ここで、derived_my_present_flag(第1フラグ)が、Pフレームのビットストリームの最初に含まれており、少なくとも0又は1という2値を持つ。
【0154】
また、mv_signalled_flag(第2フラグ)は、derived_my_present_flagがNoを示す場合に、Pフレームのビットストリーム含まれ、頂点毎に0又は1という2値を持つ。
【0155】
mv_signalled_flag取得部202E7は、derived_my_present_flagがNoを示す場合(例えば、derived_my_present_flagが0である場合)、Pフレームのビットストリームから全頂点の動きベクトルを復号し、Pフレームのビットストリームから全頂点のmy_signalled_flagを復号せずに、my_signalled_flagの値を1にする。
【0156】
mv_signalled_flag取得部202E7は、derived_my_present_flagがYesを示す場合(例えば、derived_my_present_flagが1である場合)、Pフレームの各頂点で異なる処理を行う。mv_signalled_flag取得部202E7は、mv_signalled_flagを用いて、各頂点の処理方法について決めてもよい。
【0157】
また、mv_signalled_flag取得部202E7は、derived_my_present_flagがYesを示す場合で、且つ、ある頂点のmv_signalled_flagがYesを示す場合、かかる頂点の動きベクトルについて動きベクトル取得部202E8における処理を実施せず、
図7に示すインター復号部202E又はその変更例と同様の処理を行う。
【0158】
また、mv_signalled_flag取得部202E7は、derived_my_present_flagがYesを示す場合で、かつ、ある頂点のmv_signalled_flagがNoを示す場合、かかる頂点の動きベクトルについて動きベクトル取得部202E8における処理を実施し、当該頂点の動きベクトルを取得する。
【0159】
例えば、mv_signalled_flag取得部202E7は、derived_my_present_flagがYesを示す場合、Pフレームのビットストリームから頂点毎にmv_signalled_flagを復号する。
【0160】
mv_signalled_flag取得部202E7は、derived_my_present_flagがYesを示す場合で、且つ、ある頂点のmv_signalled_flagがYesを示す場合、かかる頂点の予測モード(MVモード)を2とする。
【0161】
一方、mv_signalled_flag取得部202E7は、derived_my_present_flagがYesを示す場合で、且つ、ある頂点のmv_signalled_flagがNoを示す場合、かかる頂点の予測モードを2以外とする。
【0162】
また、mv_signalled_flag取得部202E7は、derived_my_present_flagがNoを示す場合、Pフレームの全頂点のmv_signalled_flagをビットストリームから復号せず、その値を1にし、当該頂点のMVモードが2以外にする。
【0163】
重複頂点探索部202E6は、復号した参照フレームの基本メッシュの幾何情報から、座標が一致する頂点(以下、重複頂点と呼ぶ)のインデックスを探索してバッファ(図示せず)に保存するように構成されている。
【0164】
具体的には、重複頂点探索部202E6の入力は、復号した参照フレームの基本メッシュの各頂点のインデックス(復号順)及び位置座標である。
【0165】
また、重複頂点探索部202E6の出力は、各頂点のインデックス(vindex0)に係る重複頂点が存在する場合、かかるインデックス(vindex1)を保存し、かかる重複頂点が存在しないと、当該頂点のインデックス(vindex0)自身或いは各頂点のインデックスで使われない特定な値(例えば、―1)を保存するリストである。ここで、かかるリストは、index0の順で、バッファrepVertに保存される。
【0166】
また、vindex1の頂点が、vindex0の前に復号されるため、vindex0>vindex1の関係となる。
【0167】
重複頂点探索部202E6は、参照フレームの基本メッシュの各頂点(インデックス:vindex0)に対して、復号した参照フレームの基本メッシュの最初頂点(インデックス:0)から直前の頂点(インデックス:vindex0―1)に係る重複頂点が存在するか否かについて判断し、かかる重複頂点が存在すると判断した場合、少なくとも以下の3種類の方法のいずれかで、かかる重複頂点のインデックスを出力する。
【0168】
(方法1)
重複頂点探索部202E6は、以下のように、順次に座標が一致する重複頂点を探す。重複頂点が存在する時は、vrefががvindex1であり、重複頂点が存在しない時は、vRefが-1である。
【0169】
vRef =firstVertexIndexDuplicated(vindex0)
where
firstVertexIndexDuplicated(v){
for( i = 0; i<v; i++){
if(referenceSubmeshVertexPositions[ i ] ==
referenceSubmeshVertexPositions[ v ]) {
return i
}
}
return -1
}
(方法2)
重複頂点探索部202E6は、二分探索を用いた座標が一致する重複頂点を探す。例えば、重複頂点探索部202E6は、連想配列クラスmapのfind関数を利用してもよい。
(方法3)
重複頂点探索部202E6は、ハッシュテーブルを用いた座標が一致する重複頂点を探す。例えば、重複頂点探索部202E6は、ハッシュ連想配列クラスunordered_mapのfind関数を利用してもよい。
【0170】
なお、参照フレームの基本メッシュで重複頂点を見つける方法として、重複頂点が存在する頂点について、特別なシグナルから位置座標ではなく重複頂点のインデックスを復号する方法が用いられてもよい。
【0171】
動きベクトル取得部202E8は、MVmodeが2である場合(derived_my_present_flagがYesを示し、当該頂点のmv_signalled_flagがNoを示す場合)、当該頂点の重複頂点が存在するため、動きベクトルバッファ部202E2から、重複頂点探索部202E6から出力された当該頂点のインデックス(vindex0)に係る重複頂点のインデックス(vindex1)を持つ頂点の動きベクトルを取得し、かかる頂点の動きベクトルを、当該頂点の動きベクトルとするように構成されている。
【0172】
つまり、重複頂点のインデックス(vindex1)202E6の出力であり、ビットストリームから復号されない。
【0173】
ここで、MVmodeが2以外である場合に(derived_my_present_flagがNoを示す場合、又は、derived_my_present_flagYesを示し、当該頂点のmv_signalled_flagがYesを示す場合)、動きベクトル取得部202E8の代わりに、
図7に示すインター復号部202E又はその変更例と同様の処理が行われる。
【0174】
かかる構成によれば、重複頂点が存在する頂点に対して動きベクトルの復号計算及び符号量の削減効果が期待できる。
【0175】
上述のインター復号部202Eの更なる変更例では、重複頂点探索部202E6は、参照フレームの基本メッシュの全ての頂点の中から重複頂点を探すのではなく、mv_signalled_flagがNoである頂点の中からのみ重複頂点を探す。
【0176】
ただし、重複頂点探索部202E6の入力は、復号した参照フレームの基本メッシュの各頂点のインデックス(復号順)及び位置座標に加えて、mv_signalled_flagも含む。
【0177】
本変更例によれば、全頂点ではなく重複頂点を持つ頂点のみで重複頂点を探すため、動きベクトルの復号計算の削減効果が期待できる。
【0178】
上述のインター復号部202Eの更なる変更例では、mv_signalled_flag取得部202E7は、2段階で、mv_signalled_flagを復号する。
【0179】
mv_signalled_flag取得部202E7は、N個の頂点を1つのグループにした上で、グループ毎で、Pフレームのビットストリームからmv_group_signalled_flag(第3フラグ)を復号し、mv_group_signalled_flagが1であるグループの全頂点のmv_signalled_flagを1とし、mv_group_signalled_flagが0であるグループの頂点毎で、Pフレームのビットストリームからmv_group_signalled_flagを復号する。
【0180】
本変更例によれば、2段階で、mv_group_signalled_flagを復号するため、動きベクトルの復号計算及び符号量の削減効果が期待できる。
【0181】
上述のインター復号部202Eの更なる変更例では、mv_signalled_flag取得部202E7は、頂点毎ではなく、重複頂点を持つ頂点では、Pフレームのビットストリームからmv_signalled_flagを復号し、重複頂点を持ってない頂点では、Pフレームのビットストリームからmv_signalled_flagを復号せず、mv_signalled_flagを1とする。
【0182】
なお、インター復号部202Eは、mv_signalled_flagより前に重複頂点を持つ頂点数を示す制御信号をビットストリームから復号する。
【0183】
かかる制御信号により、重複頂点探索部202E6の処理を実施しなくても、mv_signalled_flagの復号が可能にする。
【0184】
また、ビットストリームの適合性の要件として、重複頂点探索部202E6で出力する重複頂点を持つ頂点数と制御信号によって示される頂点数とが一致することにする。
【0185】
また、重複頂点探索部202E6は、全ての重複頂点インデックスを別のリストに保存する。例えば、重複頂点探索部202E6は、以下の(方法1の変更例)に示すように、duplicated_vertex_listに、全ての重複頂点インデックスを保存してもよい。
【0186】
(方法1の変更例)
重複頂点探索部202E6は、以下に示すように、順次に座標が一致する重複頂点を探す。重複頂点が存在する時は、vRefがvindex1であり、重複頂点が存在しない時は、vRefが-1である。
【0187】
vRef =firstVertexIndexDuplicated(vindex0,duplicated_vertex_list)
where
firstVertexIndexDuplicated(v,duplicated_vertex_list){
for( i = 0; i<v; i++){
if(referenceSubmeshVertexPositions[ i ] ==
referenceSubmeshVertexPositions[ v ]) {
duplicated_vertex_list.push_back(v)
return i
}
}
return -1
}
本変更例によれば、全頂点ではなく重複頂点を持つ頂点のみでmv_signalled_flagを設けるため、動きベクトルの復号計算及び符号量の削減効果が期待できる。
【0188】
上述のインター復号部202Eの更なる変更例では、mv_signalled_flag取得部202E7は、重複頂点を持ってない頂点のmv_signalled_flagを0にしてもよい。
【0189】
ここで、mv_signalled_flag取得部202E7は、重複頂点を持たない頂点のmv_signalled_flagが0である場合、参照フレームの基本メッシュにおいて、重複頂点は存在しないが、同じ動きベクトルを持つ頂点が存在するので、インターフレームのビットストリームから当該頂点と同じ動きベクトルを持つ頂点のインデックスを復号し、当該頂点の動きベクトルを取得する。
【0190】
具体的には、動きベクトル取得部202E8は、MVmodeが2である場合に(derived_my_present_flagがYesを示し、当該頂点のmv_signalled_flagがNoを示す場合)、かかる頂点の重複頂点が存在する時に、動きベクトルバッファ部202E2から、重複頂点探索部202E6によって出力された当該頂点のインデックス(vindex0)に係る重複頂点のインデックス(vindex1)を持つ頂点の動きベクトルを取得し、かかる頂点の動きベクトルを、当該頂点の動きベクトルにするように構成されているが、本変更例では、当該頂点の重複頂点が存在しない時に、ビットストリームから当該頂点と同じ動きベクトルを持つ頂点のインデックス(vindex1)を復号し、かかるインデックス(vindex1)を持つ頂点の動きベクトルを取得し、かかる頂点の動きベクトルを、当該頂点の動きベクトルにするように構成されている。
【0191】
本変更例によれば、重複頂点を持たない頂点でも、mv_signalled_flagがNoを示す場合、動きベクトルを別の頂点から取得するため、動きベクトルの復号計算及び符号量の削減効果が期待できる。
【0192】
なお、上述の変更例について同時に利用できる場合とできない場合もある。同時に利用できない場合は、どの変更例を利用するかについて示す制御信号を設けて、ビットストリームから、かかる制御信号を復号し、どの変更例を利用するかについて判断する。ただし、かかる制御信号は、既存の制御信号を拡張してもよい。
【0193】
上述のインター復号部202Eの更なる変更例では、重複頂点探索部202E6は、参照フレームがインターフレームであれば、復号対象のフレームで、参照フレームにおいて取得した結果を再利用する。
【0194】
ただし、参照フレームがイントラフレームであれば、重複頂点探索部202E6は、重複頂点に関する情報を持っているとして、かかる情報を再利用してもよい。
【0195】
具体的に、第1に、重複頂点探索部202E6は、ビットストリームから、参照フレームにおいて取得した結果(重複頂点を持つ頂点数を含む重複頂点に関する情報)を、復号対象フレームで再利用するかどうかを示す制御信号を復号する。ただし、重複頂点探索部202E6は、かかる制御信号について、既存の制御信号をそのまま又は拡張して利用してもよい。
【0196】
第2に、重複頂点探索部202E6は、かかる制御信号がYesである場合、参照フレームがインターフレームであれば、参照フレームにおいて取得した結果を、復号対象フレームで再利用する。ただし、重複頂点探索部202E6は、参照フレームがイントラフレームであれば、重複頂点に関する情報を持っているとして、かかる情報を再利用してもよい。
【0197】
具体的に、参照フレームに係る重複頂点探索部202E6の出力(上述の結果)は、各頂点のインデックス(vindex0)に係る重複頂点が存在する場合、かかる重複頂点のインデックス(vindex1)を保存し、かかる重複頂点が存在しない場合、当該頂点のインデックス(vindex0)自身或いはインデックスが使えない特定な値(例えば、―1)を保存するリストである。
【0198】
ここで、かかるリストは、vindex0の順で、バッファrepVertに保存される。
【0199】
以下の例では、重複頂点が存在しない場合、当該頂点のインデックス(vindex0)自身が保存される。また、フレームのインデックスtRefを明示するため、バッファrepVerttRefで表示する。
【0200】
repVerttRef(vindex0)=vRef
vRef=vindex1 if vindex0及びvindex1が重複頂点である
vRef=vindex0 if vindex0及びvindex1が重複頂点ではない
復号対象フレームtにおいて、repVerttRefが再利用される場合、重複頂点探索部202E6は、復号対象フレームの参照フレームの基本メッシュの各頂点(インデックス:vindex0)に対して、重複頂点の探索が不要であり、repVerttRefをそのままで利用するだけでよい。
【0201】
repVertt(vindex0)=vindex0 if repVerttRef(vindex0)=vindex0
repVertt(vindex0)=repVerttRef(vindex0) if repVerttRef(vindex0)!=vindex0
本変更例によれば、重複頂点を探さないため、動きベクトルの復号計算の削減効果が期待できる。
【0202】
上述のインター復号部202Eの更なる変更例では、mv_signalled_flag取得部(フラグ取得部)202E7は、参照フレームがインターフレームであれば、参照フレームにおいて取得したmv_signalled_flagを復号対象のフレームで再利用する。
【0203】
ただし、参照フレームがイントラフレームであれば、mv_signalled_flag取得部202E7は、mv_signalled_flagを持っているとして、かかるmv_signalled_flagを再利用してもよい。
【0204】
具体的には、derived_my_present_flagがYesを示す場合、mv_signalled_flag取得部202E7は、Pフレームのビットストリームから頂点毎に、mv_signalled_flagを復号せず、参照フレームのmv_signalled_flagとの差分を復号する。
【0205】
また、全てのmv_signalled_flagで差分がない時に、制御信号が設けられてもよい。その場合は、mv_signalled_flag取得部202E7は、かかる制御信号を復号し、かかる制御信号が特定な値(例えば、TRUE)であれば、参照フレームのmv_signalled_flagをそのままで対象フレームのmv_signalled_flagとし、かかる制御信号が特定な値(例えば、FALSE)であれば、参照フレームのmv_signalled_flagとの差分を更に復号し、対象フレームのmv_signalled_flagを算出する。
【0206】
本変更例によれば、mv_signalled_flagの符号量削減効果が期待できる。
【0207】
なお、上述の変更例について同時に利用できる場合とできない場合もある。同時に利用できない場合は、どの変更例を利用するかについて示す制御信号を設けて、ビットストリームから、かかる制御信号を復号し、どの変更例を利用するかについて判断する。
【0208】
(基本メッシュ復号部202の変更例1)
以下、
図16及び
図17を参照して、基本メッシュ復号部202の変更例1について説明する 。
【0209】
図16に示すように、本変更例1に係る基本メッシュ復号部202は、分離部202Aと、イントラ復号部202Bと、メッシュバッファ部202Cと、インター復号部202Eと、スキップ復号部202Fとを備える。
【0210】
スキップ復号部202Fは、指定された参照フレームの復号基本メッシュをそのまま用いて、復号対象フレームの基本メッシュを復号するように構成されている。
【0211】
なお、本実施形態において、フレームは、メッシュ(Mesh)又はサブメッシュ(Submesh)のいずれであってもよい。
【0212】
例えば、
図17に示すように、smh_typeにおける「P_SUBMESH」は、Pフレームに対応し、smh_typeにおける「I_SUBMESH」は、Iフレームに対応し、smh_typeにおける「SKIP_SUBMESH」は、Sフレームに対応してもよい。
【0213】
(スキップ復号部202F)
スキップ復号部202Fは、メッシュバッファ部202Cから指定された参照フレームの復号基本メッシュ(参照用の復号基本メッシュ)を取り出し、取り出した参照用の復号基本メッシュの頂点の座標及び当該頂点のインデックスをそのまま用いて、復号対象フレームの基本メッシュの頂点の座標及び当該頂点のインデックスを復号するように構成されている。
【0214】
ここで、メッシュバッファ部202Cは、少なくとも1枚の参照フレームを持ち、参照フレーム毎で少なくとも1枚の復号された基本メッシュを保存するように構成されている。
【0215】
スキップ復号部202Fは、ビットストリームから復号した制御信号又は所定ルールを用いて、指定された参照用の復号基本メッシュについて特定してもよい。
【0216】
例えば、かかる所定ルールは、メッシュバッファ部202Cから参照フレームリストの1番目の参照フレームを取り出すこと、或いは、復号対象フレームにフレームインデックスが最も近い参照フレームを取り出すこと等であってもよい。
【0217】
本実施形態では、参照用の復号基本メッシュの頂点の座標及び当該頂点のインデックスをそのまま用いて基本メッシュの頂点の座標を復号するフレームを「Sフレーム」と呼ぶ。
【0218】
かかる構成によれば、スキップ復号部202Fにおいて動きベクトルを不要とすることができるため、符号量の大幅な削減効果及び計算量の大幅な削減効果が期待できる。
【0219】
(メッシュバッファ部202C)
メッシュバッファ部202Cは、1枚又は複数枚の参照用の復号基本メッシュを、所定順番で保存するように構成されている。
【0220】
なお、かかる基本メッシュは、フレーム番号やサブメッシュ番号等のメタデータや少なくとも各頂点の座標及び当該頂点のインデックスを有しており、参照フレームリストで決められた所定順番でメッシュバッファ部202Cに保存される。
【0221】
ここで、
図18に示すように、かかる参照フレームリスト(ref_list0)は、メッシュバッファ部202Cに保存されている全ての参照用の復号基本メッシュを特定する情報のリストである。
【0222】
参照フレームリストは、
図18に示すように、ビットストリームから復号された制御信号によって決められてもよいし、自然にフレームの復号順から算出されてもよい。
【0223】
なお、ビットストリームから復号された制御信号は、復号対象フレームとの相対的な距離で示されていてもいし、絶対値であるのフレームインデックスであってもよい。
【0224】
さらに、制御信号により、短期的な参照フレーム又は長期的な参照フレームが使われてもよい。
【0225】
例えば、短期的な参照フレームを使うと、当フレーム(cur)及び参照フレーム(ref)の表示順(Display Order)の差の絶対値(abs_delta_mfoc_st)及びその符号(sign_flag)をビットストリームから復号し、参照フレームの表示順(Display Order)を下式で指定してもよい。
If(sign_flag){
Display Order(ref)=Display Order(cur)+abs_delta_mfoc_st
}else{
Display Order(ref)=Display Order(cur)-abs_delta_mfoc_st
}
また、自然にフレームの復号順から算出する方法が用いられる場合、例えば、参照フレームリストにおいて、制御信号が存在していない時に、直前に復号済みのフレームから一定のフレーム数で順次に並べられてもよい。つまり、参照フレームリストは、{0, -1, -2,…, -(N―1)}とされてもよい。
【0226】
基本的に、参照フレームリストは、特別な事情(例えば、Re-ordering指示を受ける時)以外に各フレームで変化しない。
【0227】
メッシュバッファ部202Cは、以下のように更新されてもよい。
【0228】
メッシュバッファ部202Cは、基本メッシュが復号された時に、Iフレーム及びPフレームの場合、参照フレームリストで決められた所定順番により1枚又は複数枚の既存の参照フレームを削除し、復号済みのフレームの基本メッシュを含めて1枚又は複数枚の基本メッシュを入れて、又は、複数枚の基本メッシュから1枚の基本メッシュを作成して入れて、参照フレームの順番を調整する。
【0229】
かかる削除作業は、メッシュバッファ部202Cが満了する時のみに実施されてもよい。なお、メッシュバッファ部202Cで保存できる基本メッシュの数は、事前に決められている。ここで、本実施形態では、かかる基本メッシュの数に到達すると、メッシュバッファ部202Cが満了すると定義するものとする
上述の作成作業では、復号済みのフレームの基本メッシュ及びメッシュバッファ部202Cに保存されている既存の基本メッシュに対応する頂点の座標について重み付け平均して1枚の基本メッシュにしてもよい。
【0230】
かかる重み付け平均で用いられる重みは、事前に決められていてもよいし、フレームインデックスを用いて算出されてもよいし、制御信号から復号されてもよい。
【0231】
ただし、メッシュバッファ部202Cは、Sフレームである時には、かかる更新を実施してもよいし、かかる更新を実施しなくてもよい。
【0232】
なお、メッシュバッファ部202Cは、ビットストリームから復号された制御信号によりRe-orderingの指示を示す制御信号を受けた時に、
図19に示すように、参照フレームリストを更新し、更新した参照フレームリスト(ref_list0)で決められた所定順番により参照フレームの順番を調整する。
【0233】
(インター復号部202E)
インター復号部202Eは、メッシュバッファ部202Cから取り出した参照フレームの頂点の座標とPフレームのビットストリームから復号した動きベクトルとを加算することによって、Pフレームの頂点の座標を復号するように構成されている。
【0234】
さらに、インター復号部202Eは、かかる特定バッファに保存されている重複頂点として存在する頂点のインデックスA(k)及びB(k)のペアにより、Pフレームの頂点のインデックスを調整することが可能である。かかるインデックスの全部又は一部は、ビットストリームから復号される。かかる復号方法は、算術符号化でもよい。かかる構成によれば、算術符号化を用いて復号対象のインデックスの最大値に制限が無くなるという効果が期待できる。例えば、ue(v)という算術符号化を使ってもよい。
【0235】
(基本メッシュ復号部202の変更例2)
以下、
図20を参照して、基本メッシュ復号部202の変更例2について説明する。
【0236】
以下、スキップ復号部202Fについて説明するが、インター復号部202Eへ適用してもよい。
【0237】
図20に示すように、スキップ復号部202Fでは、後続フレームを参照することが可能にするため、復号順(Decode Order)と表示順(Display Order)とが異なる。
【0238】
ここで、表示順は、符号化する際の入力の順番と同じであり、復号する際の出力の順番と同じである。
【0239】
一方、復号順は、符号化する際の出力の順番と同じであり、復号する際の入力の順番と同じである。
【0240】
なお、かかる参照フレームは、後続フレームと1枚又は複数枚の他フレームとを重み付け平均して算出されてもよい。
【0241】
ただし、後続フレームを含めて複数枚のフレームを参照する場合、
図14における新しいフレームタイプ(smh_type)として、MR_SUBMESH(MRフレームやBフレーム)を定義し、MR_SUBMESHは、ビットストリームから復号される。
【0242】
また、かかる他フレームは、
図21に示すように、対象フレームの直前の復号済のフレームであってもよい。
【0243】
かかる重みは、対象フレームと後続フレームと間のフレーム間隔及び対象フレームと他フレームとの間のフレーム間隔を用いて算出されてもよいし、事前に決められてもよい。
【0244】
基本メッシュ復号部202は、ビットストリームから制御信号(smh_mesh_frm_order_cnt_lsb)を復号し、かかる出力の順番を復号する。
【0245】
なお、上述の非特許文献4で定義したサブメッシュが存在するときに、全てのサブメッシュを同じ制御信号(smh_mesh_frm_order_cnt_lsb)にすること又は制御信号(smh_mesh_frm_order_cnt_lsb)を全てのサブメッシュに適用させることにする。
【0246】
かかる制御信号(smh_mesh_frm_order_cnt_lsb)によって示される値は、復号対象フレームの表示順との差分であってもよいし、事前に決めたフレーム集団MaxMeshFrmOrderCntLsbの中の順番であってもよい。
【0247】
なお、復号順(Decode Order)と表示順(Display Order)とが異なる時に、復号済みの基本メッシュが復号順(Decode Order)で並んでいると、基本メッシュ復号部202は、復号済みの基本メッシュを表示順(Display Order)に並び替えてもよい。
【0248】
なお、後続フレームを参照できるSフレームにおいて、2つのメッシュバッファ202Cが設けられていてもよいし、1つのメッシュバッファ部202のみが設けられている際には、表示順が復号対象フレームよりも後になる参照フレームを含めて少なくとも1枚の参照フレームが存在する。
【0249】
スキップ復号部202Fは、ビットストリームから復号した制御信号又は所定ルール又はRe-ordering指示を受けることにより、参照フレームを指定する。
【0250】
具体的には、スキップ復号部202Fは、かかる制御信号により参照フレームリストの中に参照フレームを指定する。
【0251】
或いは、スキップ復号部202Fは、参照フレームリストの1番目の参照フレームを指定する。
【0252】
或いは、スキップ復号部202Fは、Re-ordering指示を受けで、参照フレームリスト及びメッシュバッファ部202Cの参照フレーム順番を更新し、かかる参照フレームリストの1番目の参照フレームを指定する。
【0253】
なお、本実施形態では、Sフレームを復号しなくても他のフレームの復号に影響を及ぼさない。よって、Sフレームを一部又は全部を復号しない場合、Temporal scalabilityを実現できる。
【0254】
さらに、基本メッシュ復号部202は、制御信号により、複数の参照フレームを統合してSフレームの基本メッシュを復号してもよい。
【0255】
例えば、基本メッシュ復号部202は、前後2枚の参照フレームの基本メッシュにおいて、対応する頂点の座標を平均して、平均座標及び頂点のインデックスをそのまま用いて、復号対象フレームの基本メッシュの頂点の座標及び当該頂点のインデックスを復号するように構成されていてもよい。
【0256】
かかる構成によれば、スキップ復号部202F又はインター復号部202Eにおいて動きベクトルを不要としながらも高品質な基本メッシュにすることができるため、復号メッシュの質を向上させる効果が期待できる。さらに、Temporal scalabilityを実現できる効果が期待できる。
【0257】
ただし、Temporal scalabilityを実現するため、各フレームにおいて基本メッシュと変位量とテクスチャとをそれぞれ復号するかどうかを示す制御信号をそれぞれ定義し、ビットストリームからそれぞれ復号する。
【0258】
また、同じフレーム内において、アトラス及び基本メッシュのTemporal_IDを一致させてもよい。また、同じフレーム内において、アトラス及びテクスチャのTemporal_IDを一致させてもよい。また、同じフレーム内において、アトラス及び変位量のTemporal_IDを一致させてもよい。
【0259】
かかる構成によれば、フレームが復号できないことや無駄なデータを回避することができるという効果が期待できる。
【0260】
なお、同じTemporal_IDを持つ隣接するフレームの間隔が一定であることが望ましい。
【0261】
同じTemporal_IDを持つ隣接するフレームは、POCが最も近い。
【0262】
上述のようにフレームの間隔を一定にすることで、復号したフレームを表示する際に一定のフレームレートを保つ効果が期待できる。
【0263】
さらに、同じ表示順を持つアトラス及び基本メッシュの復号順を一致させてもよい。また、同じ表示順を持つアトラス及び変位量の復号順を一致させてもよい。また、同じ表示順を持つアトラス及びテクスチャの復号順を一致させてもよい。
【0264】
または、同じ表示順を持つアトラス及び基本メッシュのランダムアクセスポイントを一致させてもよい。また、同じ表示順を持つアトラス及び変位量のランダムアクセスポイントを一致させてもよい。また、同じ表示順を持つアトラス及びテクスチャのランダムアクセスポイントを一致させてもよい。なお、ランダムアクセスポイントは、非特許文献4又は非特許文献5で定義されている。
【0265】
かかる構成によれば、基本メッシュ、変位量及びテクスチャをそれぞれ復号する際に、互いの復号を待つことなく、メッシュを再現できるという効果が期待できる。
【0266】
さらに、復号対象フレームの制御信号Temporal_IDよりも高いTemporal_IDを持つフレームは、かかる復号対象フレームの参照フレームにしない。
【0267】
これによって、参照フレームが捨てられる可能性が無くなるという効果が期待できる。
【0268】
以下に、上述のTemporal_IDを用いてTemporal scalabilityを実現する一例について述べる。
【0269】
アトラス、基本メッシュ、変位量及びテクスチャのビットストリームは、ネットワーク抽象レイヤ(NAL)ユニットによりカプセル化される。NALユニットは、
図22のようなNALヘッダを持ってもよい。
【0270】
NALヘッダ内の最後の3ビットとして定義したTIDは、Temporal_IDプラス1である。TIDの範囲は、1から7までとし、ゼロを禁止する。
【0271】
NALヘッダ内のTIDの直前の6ビットとして定義されたLayerID/R6は、NALユニットが属するレイヤの識別子を指定する。
【0272】
LayerID/R6の値は、0~62の範囲内でなければならない。値63は、将来的にISO/IECによって指定される可能性がある。
【0273】
ビットストリームのデコードユニットのデータ量を決定する以外の目的で、メッシュ復号装置200は、NALユニット内の値63に続く全てのデータを無視し、指定されたプロファイルに準拠するメッシュ復号装置200は、LayerID-R6の値が0でない全てのNALユニットを無視する(つまり、ビットストリームから取り除き、破棄する)。
【0274】
LayerID/R6の値63は、将来の拡張で拡張レイヤ識別子を示すために使用することができる。
【0275】
なお、非特許文献4で定義されたサブメッシュが存在するときは、全てのサブメッシュを同じTIDにすること又はTIDを全てのサブメッシュに適用させることにする。
【0276】
アトラスについては、非特許文献5を利用でき、変位量及びテクスチャについては、映像符号化方式のHEVCやVVCを利用できるため、以下は、基本メッシュについて説明する。
【0277】
符号化された基本メッシュフレームの全ての BMCL NALユニットのLayerID/R6の値は、同じでなければならない。符号化された基本メッシュフレームのLayerID/R6の値は、符号化された基本メッシュフレームのBMCL NALユニットのLayerID/R6の値である。
【0278】
NALTypeが、NAL_EOBと等しい場合、LayerID/R6の値は、0と等しくなければならない。
【0279】
NALTypeが、非特許文献4で定義されたNAL_BLA_W_LPからNAL_RSV_BMCL_29までの範囲にある場合、つまり、IRAPコード化された基本メッシュフレームに属する場合、Temporal_IDは、0でなければならない。
【0280】
NALTypeが、NAL_TSA_R又はNAL_TSA_Nに等しい場合、Temporal_IDは、0に等しくてはならない。
【0281】
NALTypeが0に等しく、NALTypeがNAL_STSA_R又はNAL_STSA_Nに等しい場合、Temporal_IDは、0に等しくてはならない。
【0282】
Temporal_IDの値は、アクセスユニット内の全てのBMCL NALユニットについて同じでなければならない。
【0283】
コード化された基本メッシュフレーム又はアクセスユニットのTemporal_IDの値は、コード化された基本メッシュフレーム又はアクセスユニットのBMCL NALユニットのTemporal_IDの値である。
【0284】
サブレイヤ表現のTemporal_IDの値は、サブレイヤ表現内の全てのBMCL NALユニットのTemporal_IDの最大値である。
【0285】
非BMCL NALユニットのTemporal_IDの値は、以下のように制限される。
- NALTypeがNAL_BMSPSに等しい場合、Temporal_IDは0でなければならず、NALユニットを含むアクセスユニットのTemporal_IDは、0でなければならない。
- それ以外の場合で、NALTypeがNAL_EOS又はNAL_EOBに等しい場合、Temporal_IDは、0でなければならない。
- それ以外の場合で、NALTypeがNAL_AUD又はNALLFDDに等しい場合、Temporal_IDは、NALLユニットを含むアクセスユニットのTemporal_IDに等しくなければならない。
- それ以外の場合、Temporal_IDは、NALユニットを含むアクセスユニットのTemporal_ID以上でなければならない。
【0286】
なお、NALユニットがBMCLでない場合、Temporal_IDの値は、非BMCL NALユニットが適用される全てのアクセスユニットのTemporal_ID値の最小値に等しくなる。
【0287】
NALTypeがNAL_BMFPSに等しい場合、Temporal_IDは、最初の符号化基本メッシュフレームのTemporal_IDが0であるビットストリームの先頭に全ての基本メッシュフレームパラメータセット(BMFPS)が含まれるため、含まれるアクセスユニットのTemporal_ID以上であることができる。
【0288】
なお、スキップ復号部202Fは、指定されたtIDTargetを参照して、Temporal_IDがtIDTargetより高いNALユニットを復号せずに捨てることにする。
【0289】
ここで、tIDTargetは、事前に決めた値により指定されてもよいし、ネットワーク状況やメッシュ復号装置200の端末能力により指定されてもよい。
【0290】
例えば、有線のケースよりも無線のケースの方が低いtIDTargetが指定される。また、ネットワーク状況が悪い場合に、低いtIDTargetが指定される。また、低スペックのメッシュ復号装置200で復号される場合、低いtIDTargetが指定される。
【0291】
ただし、ビットストリームの適合性の要件としては、Temporal_IDがtIDTargetより高くないNALユニットが少なくとも1つはビットストリームに存在しなければならないということとする。
【0292】
なお、
図23に示すように、各フレーム(イントラフレーム、インターフレーム及びスキップフレーム)でサブメッシュの数が異なってもよい。
【0293】
かかる場合、イントラ復号部202B、インター復号部202E及びスキップ復号部202Fは、各フレームにおけるサブメッシュの各々に対して、重複しないサブメッシュIDを付与する。
【0294】
また、
図24に示すように、イントラ復号部202B、インター復号部202E及びスキップ復号部202Fは、フレーム間で対応するサブメッシュに対して異なるSubmeshID(サブメッシュID)を付与してもよい。
【0295】
ただし、インター復号部202E又はスキップ復号部202Fは、参照フレームの中で同じSubmeshIDを持つサブメッシュのみを参照することができるものとする。
【0296】
或いは、インター復号部202E又はスキップ復号部202Fは、参照フレームの中で同じ頂点数を持つサブメッシュのみを参照することができるものとする。
【0297】
或いは、イントラ復号部202B及びインター復号部202Eは、参照フレームの中で指定されたサブメッシュを参照することができるものとする。
【0298】
かかる場合、インター復号部202E又はスキップ復号部202Fは、参照フレーム内にサブメッシュが複数ある場合、現サブメッシュのビットストリームから、参照可能なサブメッシュのSubmeshIDを指定する制御信号を復号してもよい。
【0299】
一方、インター復号部202E又はスキップ復号部202Fは、参照フレーム内にサブメッシュが1つのみある場合、かかるサブメッシュを参照可能なサブメッシュとしてもよい。
【0300】
ただし、上述の制御信号が存在しない場合、インター復号部202E又はスキップ復号部202Fは、参照可能なサブメッシュのSubmeshIDを、現フレーム内のサブメッシュと同じSubmeshIDとする。
【0301】
また、インター復号部202E又はスキップ復号部202Fは、ビットストリームから、上述の制御信号が存在するかどうかを示す制御信号を復号してもよい。
【0302】
なお、インター復号部202E又はスキップ復号部202Fは、上述の参照可能なサブメッシュを決める方法を選択する制御信号を復号してもよい。
【0303】
細分割部203及び変位量復号部206は、非特許文献4に従ってもよい。
【0304】
本発明によれば、復号済みの隣接頂点を探索せず、参照フレームそのものを再利用することにより計算量を削減することができる。
【0305】
また、本実施形態によれば、インター予測符号化において、現フレームの基本メッシュの頂点数が参照フレーム又は参照サブメッシュの頂点数と異なる場合であっても現フレームの基本メッシュを復号することができる。
【0306】
また、本実施形態によれば、インター予測符号化において、現フレームの基本メッシュの頂点数が参照フレーム又は参照サブメッシュの頂点数と異なるという事態を回避することができる。
【0307】
また、本実施形態によれば、インター予測符号化において、現フレームの参照フレームの中にどのサブメッシュを参照するかという制御信号を導入することで、どのサブメッシュを参照するかについて特定することができる。
【0308】
また、本実施形態によれば、インター予測符号化において、現フレームの参照フレームの中にどのサブメッシュを参照するかという情報が無くても、どのサブメッシュを参照するかについて特定することができる。
【0309】
また、本実施形態によれば、基本メッシュが少なくとも1つの面を有することを保証することができる。
【0310】
また、本実施形態によれば、Temporal_scalability機能を実現することができる。
【0311】
さらに、本実施形態によれば、メッシュの符号化効率を向上させることができる。
【0312】
上述のメッシュ符号化装置100及びメッシュ復号装置200は、コンピュータに各機能(各工程)を実行させるプログラムであって実現されていてもよい。
【産業上の利用可能性】
【0313】
なお、本実施形態によれば、例えば、動画像通信において総合的なサービス品質の向上を実現できることから、国連が主導する持続可能な開発目標(SDGs)の目標9「レジリエントなインフラを整備し、持続可能な産業化を推進するとともに、イノベーションの拡大を図る」に貢献することが可能となる。
【符号の説明】
【0314】
1…メッシュ処理システム
100…メッシュ符号化装置
200…メッシュ復号装置
201…多重分離部
202…基本メッシュ復号部
202A…分離部
202B…イントラ復号部
202B1…任意イントラ復号部
202B2…整列部
202C…メッシュバッファ部
202D…接続情報復号部
202E…インター復号部
202E1…動きベクトル残差復号部
202E2…動きベクトルバッファ部
202E3…動きベクトル予測部
202E4…動きベクトル算出部
202E5…加算器
202E6…重複頂点探索部
202E7…mv_signalled_flag取得部
202E8…動きベクトル取得部
202F…スキップ復号部
203…細分割部
204…メッシュ復号部
205…パッチ統合部
206…変位量復号部
207…映像復号部
208…アトラスデータ復号部