(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024117561
(43)【公開日】2024-08-29
(54)【発明の名称】3Dデータ復号装置および3Dデータ符号化装置
(51)【国際特許分類】
H04N 19/597 20140101AFI20240822BHJP
H04N 19/70 20140101ALI20240822BHJP
【FI】
H04N19/597
H04N19/70
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2023023717
(22)【出願日】2023-02-17
【国等の委託研究の成果に係る記載事項】(出願人による申告)令和4年度、総務省、「戦略的情報通信研究開発推進事業(国際標準獲得型(5G高度化))/3次元空間データの無線伝送に向けた高能率圧縮技術の研究開発」、産業技術力強化法第17条の適用を受ける特許出願
(71)【出願人】
【識別番号】000005049
【氏名又は名称】シャープ株式会社
(74)【代理人】
【識別番号】100161207
【弁理士】
【氏名又は名称】西澤 和純
(74)【代理人】
【識別番号】100129115
【弁理士】
【氏名又は名称】三木 雅夫
(74)【代理人】
【識別番号】100133569
【弁理士】
【氏名又は名称】野村 進
(74)【代理人】
【識別番号】100131473
【弁理士】
【氏名又は名称】覚田 功二
(72)【発明者】
【氏名】徳毛 靖昭
(72)【発明者】
【氏名】高田 圭一郎
(72)【発明者】
【氏名】猪飼 知宏
(72)【発明者】
【氏名】中條 健
(72)【発明者】
【氏名】青野 友子
【テーマコード(参考)】
5C159
【Fターム(参考)】
5C159LB05
5C159MA00
5C159MA04
5C159MA05
5C159MA21
5C159MC11
5C159ME01
5C159ME11
5C159PP15
5C159PP16
5C159RC12
5C159TB12
5C159UA02
5C159UA05
5C159UA11
(57)【要約】
【課題】動画像符号化方式を用いた3Dデータの符号化・復号において、メッシュ変位画像をYCbCr4:2:0フォーマットの画像として符号化・復号し、符号化による歪を低減し、3Dデータを高品質に符号化・復号することを目的とする。
【解決手段】
符号化データを復号する3Dデータ復号装置において、上記符号化データからメッシュ変位画像を復号する画像復号部と、上記メッシュ変位画像からメッシュ変位を生成する変位アンマッピング部と、を備え、上記変位アンマッピング部は、座標位置の対応関係に応じて、2次元画像を1次元信号に変換することを特徴とする。
【選択図】
図5
【特許請求の範囲】
【請求項1】
符号化データを復号する3Dデータ復号装置において、
上記符号化データからメッシュ変位画像を復号する画像復号部と、
上記メッシュ変位画像からメッシュ変位を生成する変位アンマッピング部と、を備え、
上記変位アンマッピング部は、座標位置の対応関係に応じて、2次元画像を1次元信号に変換することを特徴とする3Dデータ復号装置。
【請求項2】
上記変位アンマッピング部は、上記メッシュ変位画像の色差コンポーネントと、上記メッシュ変位の座標成分と、を対応付ける情報に基づき、上記メッシュ変位を生成することを特徴とする請求項1に記載の3Dデータ復号装置。
【請求項3】
上記変位アンマッピング部は、上記符号化データに色差サンプル位置情報が含まれる場合、上記色差サンプル位置情報を無視することを特徴とする請求項1または2に記載の3Dデータ復号装置。
【請求項4】
3Dデータを符号化する3Dデータ符号化装置において、
メッシュ変位からメッシュ変位画像を生成する変位マッピング部と、
上記メッシュ変位画像を符号化する画像符号化部と、を備え、
上記変位マッピング部は、色差コンポーネント識別子に応じて、1次元信号を2次元画像に変換することを特徴とする3Dデータ符号化装置。
【請求項5】
上記変位マッピング部は、上記メッシュ変位画像の色差コンポーネントと、上記メッシュ変位の座標成分と、を対応付ける情報に基づき、上記メッシュ変位画像を生成することを特徴とする請求項4に記載の3Dデータ符号化装置。
【請求項6】
上記画像符号化部は、未定義を示す色差サンプル位置情報を符号化することを特徴とする請求項4または5に記載の3Dデータ符号化装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、3Dデータ符号化装置および3Dデータ復号装置に関する。
【背景技術】
【0002】
3Dデータを効率的に伝送または記録するために、3Dデータを2次元画像に変換し、動画像符号化方式で符号化し、符号化データを生成する3Dデータ符号化装置、および、当該符号化データから2次元画像を復号して、3Dデータを再構成する3Dデータ復号装置がある。
【0003】
具体的な3Dデータ符号化方式としては、例えば、MPEG-IのISO/IEC 23090-5 V3C (Volumetric Video-based Coding) and V-PCC (Video-based Point Cloud Compression)が挙げられる。V3Cは、点の位置と属性情報から構成されるポイントクラウドを符号化、復号することができる。さらに、ISO/IEC 23090-12 (MPEG Immersive Video、MIV)及び標準化中のISO/IEC 23090-29 (Video-based Dynamic Mesh Coding、V-DMC)により、多視点映像、メッシュ映像の符号化、復号にも利用される。V-DMC方式は、非特許文献1をベースに開発中であり非特許文献2に最新のドラフト文書が開示されている。
【0004】
これら3Dデータ符号化方式では、3Dデータを構成するジオメトリやアトリビュートを画像としてH.265/HEVC (High Efficiency Video Coding)、H.266/VVC (Versatile Video Coding)のような動画像符号化方式を用いて符号化・復号する。
【0005】
点群の場合には、ジオメトリ画像は投影面へのデプスであり、アトリビュート画像は、アトリビュートを投影面に投影された画像である。
【0006】
非特許文献1のような3Dデータ(メッシュ)は、ベースメッシュ、メッシュ変位、メッシュ変位配列、テクスチャマッピング画像から構成される。ベースメッシュはDracoのような頂点符号化方式が利用でき、ジオメトリ画像は、メッシュ変位を2次元化したメッシュ変位画像であり、アトリビュート画像はテクスチャマッピング画像である。これらは上述のようにHEVC、VVCのような動画像符号化方式を用いて符号化・復号される。
【先行技術文献】
【非特許文献】
【0007】
【非特許文献1】[V-CG] Apple’s Dynamic Mesh Coding CfP Response, ISO/IEC JTC 1/SC 29/WG 7 m59281, April 2022
【非特許文献2】WD 2.0 of V-DMC (ISO_IEC_WD_23090-29_v2.0_d10_clean), ISO/IEC JTC 1/SC 29/WG 7 N0546, February 2023
【発明の概要】
【発明が解決しようとする課題】
【0008】
非特許文献1をベースとして開発中のV-DMC方式では、メッシュ変位画像をYCbCr4:2:0フォーマットの画像として符号化・復号する場合、メッシュ変位と画像コンポーネントの対応関係が一意に定まらないという課題がある。
【0009】
本発明は、動画像符号化方式を用いた3Dデータの符号化・復号において、メッシュ変位画像をYCbCr4:2:0フォーマットの画像として符号化・復号し、符号化による歪を低減し、3Dデータを高品質に符号化・復号することを目的とする。
【課題を解決するための手段】
【0010】
上記の課題を解決するために、本発明の一態様に係る3Dデータ復号装置は、符号化データを復号する3Dデータ復号装置において、上記符号化データからメッシュ変位画像を復号する画像復号部と、上記メッシュ変位画像からメッシュ変位を生成する変位アンマッピング部と、を備え、上記変位アンマッピング部は、座標位置の対応関係に応じて、2次元画像を1次元信号に変換することを特徴とする。
【0011】
上記の課題を解決するために、本発明の一態様に係る3Dデータ符号化装置は、3Dデータを符号化する3Dデータ符号化装置において、メッシュ変位からメッシュ変位画像を生成する変位マッピング部と、上記メッシュ変位画像を符号化する画像符号化部と、を備え、上記変位マッピング部は、色差コンポーネント識別子に応じて、1次元信号を2次元画像に変換することを特徴とする。
【発明の効果】
【0012】
本発明の一態様によれば、メッシュ変位画像の符号化による歪を低減し、3Dデータを高品質に符号化・復号することができる。
【図面の簡単な説明】
【0013】
【
図1】本実施形態に係る3Dデータ伝送システムの構成を示す概略図である。
【
図2】符号化ストリームのデータの階層構造を示す図である。
【
図3】3Dデータ復号装置31の概略構成を示す機能ブロック図である。
【
図4】ベースメッシュ復号部303の構成を示す機能ブロック図である。
【
図5】メッシュ変位復号部305の構成を示す機能ブロック図である。
【
図6】メッシュ再構成部307の構成を示す機能ブロック図である。
【
図7】座標変換パラメータ及び変位マッピングパラメータをシーケンスレベル(ASPS)で伝送する構成のシンタックスの例である。
【
図8】座標変換パラメータ及び変位マッピングパラメータをピクチャ/フレームレベル(AFPS)で伝送する構成のシンタックスの例である。
【
図9】変位アンマッピング部3052及び変位マッピング部1074の動作を説明するための図である。
【
図10】変位アンマッピング部3052及び変位マッピング部1074の動作を説明するための図である。
【
図11】メッシュ再構成部307の動作を説明するための図である。
【
図12】3Dデータ符号化装置11の概略構成を示す機能ブロック図である。
【
図13】ベースメッシュ符号化部103の構成を示す機能ブロック図である。
【
図14】メッシュ変位符号化部107の構成を示す機能ブロック図である。
【
図15】メッシュ分離部115の構成を示す機能ブロック図である。
【
図16】メッシュ分離部115の動作を説明するための図である。
【発明を実施するための形態】
【0014】
以下、図面を参照しながら本発明の実施形態について説明する。
【0015】
図1は、本実施形態に係る3Dデータ伝送システム1の構成を示す概略図である。
【0016】
3Dデータ伝送システム1は、符号化対象3Dデータを符号化した符号化ストリームを伝送し、伝送された符号化ストリームを復号し3Dデータを表示するシステムである。3Dデータ伝送システム1は、3Dデータ符号化装置11、ネットワーク21、3Dデータ復号装置31、及び3Dデータ表示装置41を含んで構成される。
【0017】
3Dデータ符号化装置11には3DデータTが入力される。
【0018】
ネットワーク21は、3Dデータ符号化装置11が生成した符号化ストリームTeを3Dデータ復号装置31に伝送する。ネットワーク21は、インターネット(Internet)、広域ネットワーク(WAN:Wide Area Network)、小規模ネットワーク(LAN:Local Area Network)またはこれらの組み合わせである。ネットワーク21は、必ずしも双方向の通信網に限らず、地上デジタル放送、衛星放送等の放送波を伝送する一方向の通信網であっても良い。また、ネットワーク21は、DVD(Digital Versatile Disc:登録商標)、BD(Blu-ray Disc:登録商標)等の符号化ストリームTeを記録した記憶媒体で代替されても良い。
【0019】
3Dデータ復号装置31は、ネットワーク21が伝送した符号化ストリームTeのそれぞれを復号し、復号した1または複数の復号3DデータTdを生成する。
【0020】
3Dデータ表示装置41は、3Dデータ復号装置31が生成した1または複数の復号3DデータTdの全部または一部を表示する。3Dデータ表示装置41は、例えば、液晶ディスプレイ、有機EL(Electro-luminescence)ディスプレイ等の表示デバイスを備える。ディスプレイの形態としては、据え置き、モバイル、HMD等が挙げられる。また、3Dデータ復号装置31が高い処理能力を有する場合には、画質の高い画像を表示し、より低い処理能力しか有しない場合には、高い処理能力、表示能力を必要としない画像を表示する。
【0021】
<符号化ストリームTeの構造>
本実施形態に係る3Dデータ符号化装置11および3Dデータ復号装置31の詳細な説明に先立って、3Dデータ符号化装置11によって生成され、3Dデータ復号装置31によって復号される符号化ストリームTeのデータ構造について説明する。
【0022】
図2は、符号化ストリームTeにおけるデータの階層構造を示す図である。符号化ストリームTeは、V3C sample stream、V3C unit streamの何れかのデータ構造を有する。V3C sample streamは、sample stream headerとV3C unitを含む。V3C unit stream はV3C unitを含む。
【0023】
V3C unitはV3C unit headerとV3C unit payloadを含む。V3C unit (=V3C unit header)の先頭はV3C unitの種類を示すIDであるUnit Typeであり、V3C_VPS、V3C_AD、V3C_AVD、V3C_GVD、V3C_OVDなどのラベルで示す値をとる。
【0024】
Unit TypeがV3C_VPS (Video Parameter Set)の場合には、V3C parameter setを含む。
【0025】
Unit TypeがV3C_AD (Atlas Data、Atlasデータ)の場合には、VPS ID、atlasID、sample stream nal headerと複数のNAL unitを含む。ID(Idenfication)であり0以上の整数値をとる。
【0026】
NAL unitはNALUnitTypeとlayerIDとTemporalIDとRBSP (Raw byte sequence
payload)を含む。
【0027】
NAL unitはNALUnitTypeにより識別され、ASPS (Atlas Sequence Parameter Set)、AAPS (Atlas Adaptation Parameter Set)、ATL (Atlas Tile layer)、SEI (Supplemental Enhancemend Information)などを含む。
【0028】
ATLは、ATL headerとATL data unitを含み、ATL data unitは、patch information dataなどのパッチの位置、サイズなどの情報を含む。
【0029】
SEIは、SEIの種類を示すpayloadType、SEIのサイズ(バイト数)を示すpayloadSize、SEIのデータのsei_payloadを含む。
【0030】
Unit TypeがV3C_AVD (Attribute Video Data、アトリビュートデータ)の場合には、VPS ID、atlasID、アトリビュート画像のIDのattrIdx、パーティションIDのpartIdx、マップIDのmapIdx、Auxiliaryデータか否かを示すフラグauxFlag、video streamを含む。video streamはHEVCやVVCなどで符号化されたデータを示す。V-DMCではテクスチャ画像に対応する。
【0031】
Unit TypeがV3C_GVD (Geometory Video Data、ジオメトリデータ)の場合には、VPS ID、atlasID、mapIdx、auxFlag、video streamを含む。V-DMCではメッシュ変位に対応する。
【0032】
Unit TypeがV3C_OVD (Occumancy Video Data、オキュパンシデータ)の場合には、VPS ID、atlasID、video streamを含む。
【0033】
Unit TypeがV3C_MD (Mesh data、メッシュデータ)の場合には、VPS ID、atlasID、mesh_payloadを含む。V-DMCではベースメッシュに対応する。
【0034】
(第1の実施形態に係る3Dデータ復号装置の構成)
図3は、第1の実施形態に係る3Dデータ復号装置31の概略構成を示す機能ブロック図である。3Dデータ復号装置31は、逆多重化部301、アトラス情報復号部302、ベースメッシュ復号部303、メッシュ変位復号部305、メッシュ再構成部307、アトリビュート復号部306、色空間変換部308から構成される。3Dデータ復号装置31は、3Dデータの符号化データを入力し、アトラス情報、メッシュ、アトリビュート画像を出力する。
【0035】
逆多重化部301は、バイトストリームフォーマット、ISOBMFF(ISO Base Media File Format)などで多重化された符号化データを入力し、逆多重化して、アトラス情報符号化ストリーム(V3C_ADのAtlas Data stream、NALunit)、ベースメッシュ符号化ストリーム(V3C_MDのmesh_payload)、メッシュ変位符号化ストリーム(V3C_GVDのvideo stream)、アトリビュート画像符号化ストリーム(V3C_AVDのvideo stream)を出力する。
【0036】
アトラス情報復号部302は、逆多重化部301から出力されるアトラス情報符号化ストリームを入力し、アトラス情報を復号する。
【0037】
ベースメッシュ復号部303は、頂点符号化(3Dデータ圧縮符号化方式、例えばDraco)で符号化されたベースメッシュ符号化ストリームを復号し、ベースメッシュを出力する。ベースメッシュについては後述する。
【0038】
メッシュ変位復号部305は、VVCやHEVCなどで符号化されたメッシュ変位符号化ストリームを復号し、メッシュ変位を出力する。
【0039】
メッシュ再構成部307は、ベースメッシュ、メッシュ変位を入力し、3D空間におけるメッシュを再構成する。
【0040】
アトリビュート復号部306は、VVCやHEVCなどで符号化されたアトリビュート画像符号化ストリームを復号し、YCbCrフォーマットのアトリビュート画像を出力する。アトリビュート画像は、UV軸に展開されたテクスチャ画像(UVアトラス方式で変換されたテクスチャマッピング画像)でもよい。
【0041】
色空間変換部308は、アトリビュート画像をYCbCrフォーマットからRGBフォーマットへ色空間変換する。なお、RGBフォーマットとして符号化されたアトリビュート画像符号化ストリームを復号し、色空間変換を省略した構成でもよい。
【0042】
(ベースメッシュの復号)
図4は、ベースメッシュ復号部303の構成を示す機能ブロック図である。ベースメッシュ復号部303は、メッシュ復号部3031、動き情報復号部3032、メッシュ動き補償部3033、参照メッシュメモリ3034、スイッチ3035、スイッチ3036から構成される。ベースメッシュ復号部303は、ベースメッシュの出力の前に図示しないベースメッシュ逆量子化部を含んだ構成でもよい。スイッチ3035およびスイッチ3036は、復号対象のベースメッシュが他のベースメッシュ(例えば、すでに符号化・復号済みのベースメッシュ)を参照せずに符号化(イントラ符号化)されている場合、動き補償を行わない側に接続する。そうではなく、復号対象のベースメッシュが他のベースメッシュを参照して符号化(インター符号化)されている場合、動き補償を行う側に接続する。動き補償を行う場合には、すでに復号された頂点座標と動き情報を参照して、対象の頂点座標を導出する。
【0043】
メッシュ復号部3031は、イントラ符号化されたベースメッシュ符号化ストリームを復号し、ベースメッシュを出力する。符号化方式としてはDracoなどを用いる。
【0044】
動き情報復号部3032は、インター符号化されたベースメッシュ符号化ストリームを復号し、後述の参照メッシュの各頂点に対する動き情報を出力する。符号化方式としては算術符号化などのエントロピー符号化を用いる。
【0045】
メッシュ動き補償部3033は、参照メッシュメモリ3034から入力される参照メッシュの各頂点に対して、動き情報に基づき動き補償を行い、動き補償されたメッシュを出力する。
【0046】
参照メッシュメモリ3034は、以降の復号処理で参照するために、復号したメッシュを保持するメモリである。
【0047】
(メッシュ変位の復号)
図5は、メッシュ変位復号部305の構成を示す機能ブロック図である。メッシュ変位復号部305は、変位アンマッピング部3052(画像アンパック部、変位復号部)、逆量子化部3053、逆変換部3054、座標系変換部3055から構成される。また、変位アンマッピング部を変位マッピング部と呼んでもよい。図に示すように、メッシュ変位復号部305はさらに画像復号部3051を含んだ構成でもよいし、メッシュ変位復号部305は、画像復号部3051を含まず、変位画像(変位配列)の復号は動画像復号装置31を用いる構成でもよい。また、メッシュ変位復号部305は、逆量子化部3053を含まず、画質制御は動画像復号装置31のみで行う構成でもよい。
【0048】
アトラス情報復号部302は、符号化データから、座標系を示す座標系変換情報(asps_vdmc_ext_displacement_coordinate_system、afps_vdmc_ext_displacement_coordinate_system)を復号する。また、メッシュ変位と画像コンポーネントの対応関係を示す変位マッピング情報(asps_vdmc_ext_displacement_chroma_location_type、afps_vdmc_ext_displacement_chroma_location_type)を復号する。変位マッピング情報は、画像コンポーネントと、上記メッシュ変位の座標成分とを対応付ける情報(識別子)ともいえる。あるいは、変位マッピング情報は、色差画像コンポーネントと、上記メッシュ変位の座標成分とを対応付ける情報(識別子)ともいえる。なお、別にゲーティングフラグを設けて、ゲーティングフラグが1の場合のみ、各座標系変換情報を復号してもよい。ゲーティングフラグは、例えばasps_vdmc_ext_displacement_coordinate_system_update_flag、afps_vdmc_ext_displacement_coordinate_system_update_flagである。また、変位マッピング情報にも、ゲーティングフラグを設けて、ゲーティングフラグが1の場合のみ、変位マッピング情報を復号してもよい。ゲーティングフラグは、例えばasps_vdmc_ext_displacement_chroma_location_flag、afps_vdmc_ext_displacement_chroma_location_flagである。
【0049】
(座標系)
メッシュ変位(3次元ベクトル)の座標系は以下の2種類の座標系を用いる。
【0050】
デカルト座標系:3D空間全体で共通に定義される直交座標系。(X,Y,Z)座標系。同一時刻(同一フレーム内、同一タイル内)で方向が変化しない直交座標系。
【0051】
ローカル座標系:3D空間における領域毎もしくは頂点毎に定義される直交座標系。同一時刻(同一フレーム内、同一タイル内)で方向が変化しうる直交座標系。normal (D) 、tangent (U), bi-tangent (V)座標系。すなわち、ある頂点(ある頂点を含む面)における法線ベクトルn_vecによって示される第1の軸(D)、及び法線ベクトルn_vecに直交する2つの接線ベクトルt_vec,b_vecによって示される第2の軸(U)、第3の軸(V)からなる直交座標系である。n_vec,t_vec,b_vecは3次元ベクトルである。(D, U, V)座標系は(n, t, b)座標系と呼称してもよい。
【0052】
(シーケンスレベルの制御パラメータの復号・導出)
ここで、メッシュ変位復号部305で用いる制御パラメータについて説明する。
【0053】
図7は、座標系変換パラメータ及び変位マッピングパラメータをシーケンスレベル(ASPS:Atlas Sequence Parameter Set)で伝送する構成のシンタックスの例である。ASPSでは、asps_vdmc_extension()シンタックスにより、座標系変換パラメータ及び変位マッピングパラメータを伝送する。各フィールドのセマンティクスは以下の通りである。
【0054】
asps_vdmc_ext_displacement_coordinate_system_update_flag:メッシュ変位の座標系を更新するか否かを示すフラグである。本フラグがtrue(例えば1)に等しい場合、後述のasps_vdmc_ext_displacement_coordinate_systemの値に基づきメッシュ変位の座標系を更新する。本フラグがfalse(例えば0)に等しい場合、メッシュ変位の座標系は更新しない。
【0055】
asps_vdmc_ext_displacement_coordinate_system:メッシュ変位の座標系を示す座標系変換情報。値が所定の第1の値(例えば0)に等しい場合、デカルト座標系を示す。値が別の第2の値(例えば1)に等しい場合、ローカル座標系を示す。シンタックス要素が現れない場合、値を第1の値(0)と推定してデフォルトの座標系は、デカルト座標系とする。
【0056】
asps_vdmc_ext_displacement_chroma_location_flag:メッシュ変位と画像コンポーネント(輝度及び/または色差コンポーネント)のマップ方法を更新するか否かを示すフラグである。本フラグがtrueに等しい場合、後述のasps_vdmc_ext_displacement_chroma_location_typeの値に基づきメッシュ変位と画像コンポーネント(輝度及び/または色差コンポーネント)のマップ方法を更新する。本フラグがfalseに等しい場合、メッシュ変位と画像コンポーネント(輝度及び/または色差コンポーネント)のマップ方法は更新しない。
【0057】
asps_vdmc_ext_displacement_chroma_location_type:メッシュ変位と画像コンポーネント(輝度及び/または色差コンポーネント)のマップ方法を示す変位マッピング情報。ここでは2x2のZスキャン(y, x)、(y, x+1)、(y+1, x)、(y+1, x+1)を用いて、4つの変位ベクトル単位で2次元画像にマッピングする場合に、さらに特定のコンポーネントの特定の位置をサンプリング(間引く)方法を説明する。(n, t, b)のスキャン位置posを用いて、4つのメッシュ変位3次元ベクトル(n0, t0, b0), (n1, t1, b1), (n2, t2, b2), (n3, t3, b3)は、以下で導出してもよい。
【0058】
(n0, t0, b0) = (n, t, b) (pos==subpos*4又はpos%4==0又はmod0ポジション)
(n1, t1, b1) = (n, t, b) (pos==subpos*4+1又はpos%4==1又はmod1ポジション)
(n2, t2, b2) = (n, t, b) (pos==subpos*4+2又はpos%4==2又はmod2ポジション)
(n3, t3, b3) = (n, t, b) (pos==subpos*4+3又はpos%4==3又はmod3ポジション)
ここでsubposは整数、%は剰余(mod)を示す。modXポジションはposの4の剰余がXであるポジションを示す。2次元的な位置では、
(n0, t0, b0) = (n, t, b) (x==subx*2, y==suby*2又はx%2==0 && y%2==0又は左上ポジション)
(n1, t1, b1) = (n, t, b) (x==subx*2+1, y==suby*2又はx%2==1 && y%2==0又は右上ポジション)
(n2, t2, b2) = (n, t, b) (x==subx*2, y==suby*2+1又はx%2==0 && y%2==1又は左下ポジション)
(n3, t3, b3) = (n, t, b) (x==subx*2+1, y==suby*2+1又はx%2==1 && y%2==1又は右下ポジション)
ここでsubx, subyは整数。
【0059】
asps_vdmc_ext_displacement_chroma_location_typeの値の意味は以下の通りである。
【0060】
0:4つのメッシュ変位3次元ベクトル(n0, t0, b0), (n1, t1, b1), (n2, t2, b2), (n3, t3, b3)のうち、座標軸の第1成分n0, n1, n2, n3を第1の画像コンポーネント(Yコンポーネント、compIdx=0)にマップする。座標軸の第2成分のうちmod0ポジションのt0を第2の画像コンポーネント(Cbコンポーネント、以下、compIdx=1)にマップする。座標軸の第3成分のうちmod0ポジションのb0を第3の画像コンポーネント(Crコンポーネント、以下、compIdx=2)にマップする。
【0061】
1:4つのメッシュ変位3次元ベクトルのうち、座標軸の第1成分n0, n1, n2, n3をcompIdx0にマップする。座標軸の第2成分のうちmod1ポジションのt1をcompIdx=1にマップする。座標軸の第3成分のうちmod1ポジションのb1をcompIdx=2にマップする。
【0062】
2:4つのメッシュ変位3次元ベクトルのうち、座標軸の第1成分n0, n1, n2, n3をcompIdx=0にマップする。座標軸の第2成分のうちmod2ポジションのt2をcompIdx=1にマップする。座標軸の第3成分のうちmod2ポジションのb2をcompIdx=2にマップする。
【0063】
3:4つのメッシュ変位3次元ベクトルのうち、座標軸の第1成分n0, n1, n2, n3をcompIdx=0にマップする。座標軸の第2成分のうちmod3ポジションのt3をcompIdx=1にマップする。座標軸の第3成分のうちmod3ポジションのb3をcompIdx=2にマップする。
【0064】
4:4つのメッシュ変位3次元ベクトルのうち、座標軸の第1成分n0, n1, n2, n3をcompIdx=0にマップする。座標軸の第2成分のうちmod0ポジションのt0をcompIdx=1にマップする。座標軸の第3成分のうちmod1ポジションのb1をcompIdx=2にマップする。
【0065】
5:4つのメッシュ変位3次元ベクトルのうち、座標軸の第1成分n0, n1, n2, n3をcompIdx=0にマップする。座標軸の第2成分のうちmod0ポジションのt0をcompIdx=1にマップする。座標軸の第3成分のうちmod2ポジションのb2をcompIdx=2にマップする。
【0066】
6:4つのメッシュ変位3次元ベクトルのうち、座標軸の第1成分n0, n1, n2, n3をcompIdx=0にマップする。座標軸の第2成分のうちmod0ポジションのt0をcompIdx=1にマップする。座標軸の第3成分のうちmod3ポジションのb3をcompIdx=2にマップする。
【0067】
7:4つのメッシュ変位3次元ベクトルのうち、座標軸の第1成分n0, n1, n2, n3をcompIdx=0にマップする。座標軸の第2成分のうちmod1ポジションのt1をcompIdx=1にマップする。座標軸の第3成分のうちmod2ポジションのb2をcompIdx=2にマップする。
【0068】
8:4つのメッシュ変位3次元ベクトルのうち、座標軸の第1成分n0, n1, n2, n3をcompIdx=0にマップする。座標軸の第2成分のうちmod1ポジションのt1をcompIdx=1にマップする。座標軸の第3成分のうちmod3ポジションのb3をcompIdx=2にマップする。
【0069】
9:4つのメッシュ変位3次元ベクトルのうち、座標軸の第1成分n0, n1, n2, n3をcompIdx=0にマップする。座標軸の第2成分のうちmod2ポジションのt2をcompIdx=1にマップする。座標軸の第3成分のうちmod3ポジションのb3をcompIdx=2にマップする。
【0070】
シンタックス要素が現れない場合、デフォルトの動作は、値が0に対応する動作とする。
【0071】
ここでcompIdxはcomponent indexを示す変数であり、0, 1, 2は各々luma, chroma Cb, chroma Crに対応してもよい。
【0072】
また、座標系変換情報と変位マッピング情報のシンタックスを区別せず符号化データから1つのシンタックス要素を復号してもよい。具体的にはasps_vdmc_ext_displacement_coordinate_systemとasps_vdmc_ext_displacement_chroma_location_typeをまとめて1つのシンタックス要素asps_vdmc_ext_displacement_coordinate_system_and_chroma_location_typeとする構成としてもよい。
【0073】
なお、asps_vdmc_ext_displacement_coordinate_system_and_chroma_location_typeがafps_vdmc_ext_displacement_coordinate_system_and_chroma_location_typeの場合も、各々置き換えて同様の処理をすればよい。
【0074】
例えば、asps_vdmc_ext_displacement_coordinate_system_and_chroma_location_typeはNビット整数で上位1ビット(下位Nビット目)がasps_vdmc_ext_displacement_coordinate_systemを示し、下位N-1ビットがasps_vdmc_ext_displacement_chroma_location_typeを示す構成としてもよい。Nは正の整数である。たとえばN=4。
【0075】
asps_vdmc_ext_displacement_coordinate_system = asps_vdmc_ext_displacement_coordinate_system_and_chroma_location_type >> (N-1)
asps_vdmc_ext_displacement_chroma_location_type = asps_vdmc_ext_displacement_coordinate_system_and_chroma_location_type & mask
ここでmask = (1 << (N-1)) - 1。
【0076】
また、3Dデータ符号化装置11では以下で導出してもよい。
【0077】
asps_vdmc_ext_displacement_coordinate_system_and_chroma_location_type = (asps_vdmc_ext_displacement_coordinate_system << (N-1)) | (asps_vdmc_ext_displacement_chroma_location_type
(ピクチャ/フレームレベルの制御パラメータの復号・導出)
図8は、座標系変換パラメータ及び変位マッピングパラメータをピクチャ/フレームレベル(AFPS:Atlas Frame Parameter Set)で伝送する構成のシンタックスの例である。AFPSでは、afps_vdmc_extension()シンタックスにより、座標系変換パラメータ及び変位マッピングパラメータを伝送する。各フィールドのセマンティクスは以下の通りである。
【0078】
afps_vdmc_ext_displacement_coordinate_system_update_flag:メッシュ変位の座標系を更新するか否かを示すフラグである。本フラグがtrueに等しい場合、後述のafps_vdmc_ext_displacement_coordinate_systemの値に基づきメッシュ変位の座標系を更新する。本フラグがfalseに等しい場合、メッシュ変位の座標系は更新しない。
【0079】
afps_vdmc_ext_displacement_coordinate_system:メッシュ変位の座標系を示す座標系変換情報。値が第1の値(例えば0)に等しい場合、デカルト座標系を示す。値が第2の値(例えば1)に等しい場合、ローカル座標系を示す。シンタックス要素が現れない場合、値をASPSで復号した値と推定してデフォルトの座標系は、ASPSによって示される座標系とする。
【0080】
afps_vdmc_ext_displacement_chroma_location_flag:メッシュ変位と画像コンポーネント(輝度及び/または色差コンポーネント)のマップ方法を更新するか否かを示すフラグである。本フラグがtrueに等しい場合、後述のafps_vdmc_ext_displacement_chroma_location_typeの値に基づきメッシュ変位と画像コンポーネント(輝度及び/または色差コンポーネント)のマップ方法を更新する。本フラグがfalseに等しい場合、メッシュ変位と画像コンポーネント(輝度及び/または色差コンポーネント)のマップ方法は更新しない。
【0081】
afps_vdmc_ext_displacement_chroma_location_type:メッシュ変位と画像コンポーネント(輝度及び/または色差コンポーネント)のマップ方法を示す変位マッピング情報。値の意味はasps_vdmc_ext_displacement_chroma_location_typeのセマンティクスで説明した通りである。シンタックス要素が現れない場合、値をASPSで復号した値と推定してデフォルトの動作は、ASPSで示される動作とする。
【0082】
また、afps_vdmc_ext_displacement_coordinate_systemとafps_vdmc_ext_displacement_chroma_location_typeをまとめて1つのシンタックス要素afps_vdmc_ext_displacement_coordinate_system_and_chroma_location_typeとする構成としてもよい。例えば、afps_vdmc_ext_displacement_coordinate_system_and_chroma_location_typeはNビット整数で上位1ビット(下位Nビット目)がafps_vdmc_ext_displacement_coordinate_systemを示し、下位N-1ビットがafps_vdmc_ext_displacement_chroma_location_typeを示す構成としてもよい。Nは正の整数である。
【0083】
afps_vdmc_ext_displacement_coordinate_system = afps_vdmc_ext_displacement_coordinate_system_and_chroma_location_type >> (N-1)
afps_vdmc_ext_displacement_chroma_location_type = afps_vdmc_ext_displacement_coordinate_system_and_chroma_location_type & mask
ここでmask = (1 << (N-1)) - 1。
【0084】
また、3Dデータ符号化装置11では以下で導出してもよい。
【0085】
afps_vdmc_ext_displacement_coordinate_system_and_chroma_location_type = (afps_vdmc_ext_displacement_coordinate_system << (N-1)) | (afps_vdmc_ext_displacement_chroma_location_type
(座標系変換パラメータの導出)
メッシュ変位復号部305は、座標系変換パラメータdisplacementCoordinateSystemを、以下により導出する。
【0086】
if ( afps_vdmc_ext_displacement_coordinate_system_update_flag ) {
displacementCoordinateSystem = afps_vdmc_ext_displacement_coordinate_system
} else if ( asps_vdmc_ext_displacement_coordinate_system_update_flag ) {
displacementCoordinateSystem = asps_vdmc_ext_displacement_coordinate_system
} else {
displacementCoordinateSystem = 0
}
あるいは、複数のレベルにシンタックス要素が現れる場合、下位のレベルの値で上書きして座標系変換パラメータdisplacementCoordinateSystemを導出してもよい。
【0087】
displacementCoordinateSystem = 0
if ( asps_vdmc_ext_displacement_coordinate_system_update_flag ) {
displacementCoordinateSystem = asps_vdmc_ext_displacement_coordinate_system
}
if ( afps_vdmc_ext_displacement_coordinate_system_update_flag ) {
displacementCoordinateSystem = afps_vdmc_ext_displacement_coordinate_system
}
(変位マッピングパラメータの導出)
メッシュ変位復号部305は、変位マッピングパラメータdisplacementChromaLocationTypeを、以下により導出する。
【0088】
if ( afps_vdmc_ext_displacement_chroma_location_flag ) {
displacementChromaLocationType = afps_vdmc_ext_displacement_chroma_location_type
} else if ( asps_vdmc_ext_displacement_chroma_location_flag ) {
displacementChromaLocationType = asps_vdmc_ext_displacement_chroma_location_type
} else {
displacementChromaLocationType = 0
}
あるいは、複数のレベルにシンタックス要素が現れる場合、下位のレベルの値で上書きして変位マッピングパラメータdisplacementChromaLocationTypeを導出してもよい。
【0089】
displacementChromaLocationType = 0
if ( asps_vdmc_ext_displacement_chroma_location_flag ) {
displacementChromaLocationType = asps_vdmc_ext_displacement_chroma_location_type
}
if ( afps_vdmc_ext_displacement_chroma_location_flag ) {
displacementChromaLocationType = afps_vdmc_ext_displacement_chroma_location_type
}
(メッシュ変位復号部の動作)
画像復号部3051は、VVCやHEVCなどで符号化されたメッシュ変位符号化ストリーム(V3C_GVDのvideo stream)を復号し、(量子化された)メッシュ変位を画素値とする復号画像(メッシュ変位画像、メッシュ変位配列)を出力する。画像はYCbCr4:2:0フォーマットであってもよい。またメッシュ変位画像は変換されたメッシュ変位画像でもよい。またメッシュ変位画像の残差であってもよい。3次元の画像の各成分を画像コンポーネント(又は、色コンポーネント、または、コンポーネント)と呼ぶ。
【0090】
変位アンマッピング部3052は、メッシュ変位画像からメッシュ変位を生成する。具体的には、座標位置の対応関係に応じて2次元画像のメッシュ変位画像のgFrame[compIdx][y][x]からコンポーネントcompIdx単位の1次元信号のメッシュ変位Qdisp[compIdx][pos]を導出する。1次元信号の導出に際して、gFrame[compIdx][y][x]から座標位置の対応関係に応じて2次元画像のQdisp2[compIdx][y][x]を導出し、Qdisp2[compIdx][y][x]からQdisp[compIdx][pos]を導出してもよい。なお、gFrameは、ジオメトリ画像符号化ストリーム(V3C_GVDのvideo stream)から復号される画像配列DecGeoFrames[mapIdx][frameIdx]であってもよい。以下のgFrame[compIdx][y][x]はDecGeoFrames[mapIdx][frameIdx][compIdx][y][x]であってもよい。ここで座標位置の対応関係は、後述のラスタスキャンでもよいし2x2 Zスキャンであっってもよい。また、変位マッピングパラメータdisplacementChromaLocationTypeや後述の色差サンプル位置情報を用いて変更する構成でもよい。
【0091】
一つの構成では、変位マッピングパラメータdisplacementChromaLocationTypeの値に基づき、メッシュ変位画像(
図9、
図10)から(量子化された)メッシュ変位配列Qdisp2を導出する。2次元のメッシュ変位画像から2次元のメッシュ変位を導出する例を以下で説明する。ジオメトリ画像がYUV420画像(DecGeoChromaFormat==1)の場合において、以下を適用する。
【0092】
画像の幅W、高さHにおいて(y=0..H-1, x=0..W-1)に対して以下を適用する。ここでyc=y/2、xc=x/2。
【0093】
輝度(Y)画像コンポーネントからメッシュ変位配列の第1成分Qdisp2[0]を導出する。
【0094】
Qdisp2[0][y][x] = gFrame[0][y][x]
変位アンマッピング部3052は、compIdx=1..2において2x2のZスキャンの特定位置(modXポジション、X=0..3のいずれか)にジオメトリ画像gFrameの値を割り当て、他の位置(modYポジション、Y=X以外の0..3)に0を割り当てるように、サンプリングして、compIdx=1の色差(Cb)画像コンポーネントからメッシュ変位配列の第2成分Qdisp2[1]を導出し、compIdx=2の色差(Cr)画像コンポーネントからメッシュ変位配列の第3成分Qdisp2[2]を導出する。ここでmodXポジションは、displacementChromaLocationTypeから選択してもよい。
【0095】
if ( displacementChromaLocationType == 0 ) {
Qdisp2[1][2*yc ][2*xc ] = gFrame[1][yc][xc]
Qdisp2[1][2*yc+1][2*xc ] = 0
Qdisp2[1][2*yc ][2*xc+1] = 0
Qdisp2[1][2*yc+1][2*xc+1] = 0
Qdisp2[2][2*yc ][2*xc ] = gFrame[2][yc][xc]
Qdisp2[2][2*yc+1][2+xc ] = 0
Qdisp2[2][2*yc ][2*xc+1] = 0
Qdisp2[2][2*yc+1][2*xc+1] = 0
} else if ( displacementChromaLocationType == 1 ) {
Qdisp2[1][2*yc ][2*xc ] = 0
Qdisp2[1][2*yc+1][2*xc ] = gFrame[1][yc][xc]
Qdisp2[1][2*yc ][2*xc+1] = 0
Qdisp2[1][2*yc+1][2*xc+1] = 0
Qdisp2[2][2*yc ][2*xc ] = 0
Qdisp2[2][2*yc+1][2*xc ] = gFrame[2][yc][xc]
Qdisp2[2][2*yc ][2*xc+1] = 0
Qdisp2[2][2*yc+1][2*xc+1] = 0
} else if ( displacementChromaLocationType == 2 ) {
Qdisp2[1][2*yc ][2*xc ] = 0
Qdisp2[1][2*yc+1][2*xc ] = 0
Qdisp2[1][2*yc ][2*xc+1] = gFrame[1][yc][xc]
Qdisp2[1][2*yc+1][2*xc+1] = 0
Qdisp2[2][2*yc ][2*xc ] = 0
Qdisp2[2][2*yc+1][2*xc ] = 0
Qdisp2[2][2*yc ][2*xc+1] = gFrame[2][yc][xc]
Qdisp2[2][2*yc+1][2*xc+1] = 0
} else if ( displacementChromaLocationType == 3 ) {
Qdisp2[1][2*yc ][2*xc ] = 0
Qdisp2[1][2*yc+1][2*xc ] = 0
Qdisp2[1][2*yc ][2*xc+1] = 0
Qdisp2[1][2*yc+1][2*xc+1] = gFrame[1][yc][xc]
Qdisp2[2][2*yc ][2*xc ] = 0
Qdisp2[2][2*yc+1][2*xc ] = 0
Qdisp2[2][2*yc ][2*xc+1] = 0
Qdisp2[2][2*yc+1][2*xc+1] = gFrame[2][yc][xc]
}
さらに以下を追加してもよい。
【0096】
if ( displacementChromaLocationType == 4 ) {
Qdisp2[1][2*yc ][2*xc ] = gFrame[1][yc][xc]
Qdisp2[1][2*yc+1][2*xc ] = 0
Qdisp2[1][2*yc ][2*xc+1] = 0
Qdisp2[1][2*yc+1][2*xc+1] = 0
Qdisp2[2][2*yc ][2*xc ] = 0
Qdisp2[2][2*yc+1][2*xc ] = gFrame[2][yc][xc]
Qdisp2[2][2*yc ][2*xc+1] = 0
Qdisp2[2][2*yc+1][2*xc+1] = 0
} else if ( displacementChromaLocationType == 5 ) {
Qdisp2[1][2*yc ][2*xc ] = gFrame[1][yc][xc]
Qdisp2[1][2*yc+1][2*xc ] = 0
Qdisp2[1][2*yc ][2*xc+1] = 0
Qdisp2[1][2*yc+1][2*xc+1] = 0
Qdisp2[2][2*yc ][2*xc ] = 0
Qdisp2[2][2*yc+1][2*xc ] = 0
Qdisp2[2][2*yc ][2*xc+1] = gFrame[2][yc][xc]
Qdisp2[2][2*yc+1][2*xc+1] = 0
} else if ( displacementChromaLocationType == 6 ) {
Qdisp2[1][2*yc ][2*xc ] = gFrame[1][yc][xc]
Qdisp2[1][2*yc+1][2*xc ] = 0
Qdisp2[1][2*yc ][2*xc+1] = 0
Qdisp2[1][2*yc+1][2*xc+1] = 0
Qdisp2[2][2*yc ][2*xc ] = 0
Qdisp2[2][2*yc+1][2*xc ] = 0
Qdisp2[2][2*yc ][2*xc+1] = 0
Qdisp2[2][2*yc+1][2*xc+1] = gFrame[2][yc][xc]
} else if ( displacementChromaLocationType == 7 ) {
Qdisp2[1][2*yc ][2*xc ] = 0
Qdisp2[1][2*yc+1][2*xc ] = gFrame[1][yc][xc]
Qdisp2[1][2*yc ][2*xc+1] = 0
Qdisp2[1][2*yc+1][2*xc+1] = 0
Qdisp2[2][2*yc ][2*xc ] = 0
Qdisp2[2][2*yc+1][2*xc ] = 0
Qdisp2[2][2*yc ][2*xc+1] = gFrame[2][yc][xc]
Qdisp2[2][2*yc+1][2*xc+1] = 0
} else if ( displacementChromaLocationType == 8 ) {
Qdisp2[1][2*yc ][2*xc ] = 0
Qdisp2[1][2*yc+1][2*xc ] = gFrame[1][yc][xc]
Qdisp2[1][2*yc ][2*xc+1] = 0
Qdisp2[1][2*yc+1][2*xc+1] = 0
Qdisp2[2][2*yc ][2*xc ] = 0
Qdisp2[2][2*yc+1][2*xc ] = 0
Qdisp2[2][2*yc ][2*xc+1] = 0
Qdisp2[2][2*yc+1][2*xc+1] = gFrame[2][yc][xc]
} else if ( displacementChromaLocationType == 9 ) {
Qdisp2[1][2*yc ][2*xc ] = 0
Qdisp2[1][2*yc+1][2*xc ] = 0
Qdisp2[1][2*yc ][2*xc+1] = gFrame[1][yc][xc]
Qdisp2[1][2*yc+1][2*xc+1] = 0
Qdisp2[2][2*yc ][2*xc ] = 0
Qdisp2[2][2*yc+1][2*xc ] = 0
Qdisp2[2][2*yc ][2*xc+1] = 0
Qdisp2[2][2*yc+1][2*xc+1] = gFrame[2][yc][xc]
}
なお、第2成分(compIdx=1)と第3成分(compIdx=2)で個別の変位マッピングパラメータを復号、導出する構成としてもよい。displacementChromaLocationType[0]、displacementChromaLocationType[1]を用いる。なおdisplacementChromaLocationType[compIdx-1]=Xの場合はmodXポジションにgFrameの値を割り当て、それ以外のmodYポジション(Y=X以外の0..3)に0を割り当てる。
【0097】
画像の幅W、高さHにおいて(y=0..H-1, x=0..W-1)に対して以下を適用する。ここでyc=y/2、xc=x/2。
【0098】
Qdisp2[0][y][x] = gFrame[0][y][x]
for (compIdx=1; compIdx<3; compIdx++) {
if ( displacementChromaLocationType[compIdx-1] == 0 ) {
Qdisp2[compIdx][2*yc ][2*xc ] = gFrame[compIdx][yc][xc]
Qdisp2[compIdx][2*yc ][2*xc+1] = 0
Qdisp2[compIdx][2*yc+1][2*xc ] = 0
Qdisp2[compIdx][2*yc+1][2*xc+1] = 0
} else if ( displacementChromaLocationType[compIdx-1] == 1 ) {
Qdisp2[compIdx][2*yc ][2*xc ] = 0
Qdisp2[compIdx][2*yc ][2*xc+1] = gFrame[compIdx][yc][xc]
Qdisp2[compIdx][2*yc+1][2*xc ] = 0
Qdisp2[compIdx][2*yc+1][2*xc+1] = 0
} else if ( displacementChromaLocationType[compIdx-1] == 2 ) {
Qdisp2[compIdx][2*yc ][2*xc ] = 0
Qdisp2[compIdx][2*yc ][2*xc+1] = 0
Qdisp2[compIdx][2*yc+1][2*xc ] = gFrame[compIdx][yc][xc]
Qdisp2[compIdx][2*yc+1][2*xc+1] = 0
} else if ( displacementChromaLocationType[compIdx-1] == 3 ) {
Qdisp2[compIdx][2*yc ][2*xc ] = 0
Qdisp2[compIdx][2*yc ][2*xc+1] = 0
Qdisp2[compIdx][2*yc+1][2*xc ] = 0
Qdisp2[compIdx][2*yc+1][2*xc+1] = gFrame[compIdx][yc][xc]
}
}
また、上記は以下のようにも導出できる。
【0099】
Qdisp2[compIdx][2*yc+yy][2*xc+xx] = gFrame[compIdx][yc][xc]
xx = 0, yy = 0 (displacementChromaLocationType[compIdx-1]==0)
xx = 1, yy = 0 (displacementChromaLocationType[compIdx-1]==1)
xx = 0, yy = 1 (displacementChromaLocationType[compIdx-1]==2)
xx = 1, yy = 1 (displacementChromaLocationType[compIdx-1]==3)
又は、
xx = displacementChromaLocationType[compIdx-1]%2
yy = displacementChromaLocationType[compIdx-1]/2
さらに変位アンマッピング部3052は、2次元のメッシュ変位画像Qdisp2をcomp=0..2に対して1次元のメッシュ変位Qdisp[compIdx][pos]を導出する。pos=0..NumDisp-1について以下を行う。NumDispは、メッシュ頂点の数である。
【0100】
Qdisp[0][pos] = Qdisp2[0][y][x]
Qdisp[1][pos] = Qdisp2[1][y][x]
Qdisp[2][pos] = Qdisp2[2][y][x]
ここでx=pos%DecGeoWidth、y=pos/DecGeoWidthである。またy=0..DecGeoHeight-1、x=DecGeoWidth-1において以下で導出してもよい。DecGeoWidthはジオメトリ画像の幅、DecGeoHeightはジオメトリ画像の高さである。
【0101】
Qdisp2[0][y][x] = Qdisp[0][y*DecGeoWidth+x]
Qdisp2[1][y][x] = Qdisp[1][y*DecGeoWidth+x]
Qdisp2[2][y][x] = Qdisp[2][y*DecGeoWidth+x]
上記の構成では簡易な処理で実現できる効果を奏する。
【0102】
2次元走査時の走査方法の一つは2x2のZスキャンであり、この場合には以下の方法を用いて2次元に変換する。この方が上述のサブサンプリングにおいて少なく画質が良くなる効果を奏する。pos4=0..NumDisp/4-1、compIdx=0..2について以下を行う。
【0103】
Qdisp[compIdx][pos] = Qdisp2[compIdx][2*yc ][2*xc ]
Qdisp[compIdx][pos] = Qdisp2[compIdx][2*yc ][2*xc+1]
Qdisp[compIdx][pos] = Qdisp2[compIdx][2*yc+1][2*xc ]
Qdisp[compIdx][pos] = Qdisp2[compIdx][2*yc+1][2*xc+1]
ここでpos=pos4*4、xc=pos4%DecGeoWidth =pos%(DecGeoWidth/4)、yc=pos4/DecGeoWidth=pos/(DecGeoWidth/4)である。
【0104】
pos=0..NumDisp-1、compIdx=0..2について以下を行ってもよい。
【0105】
Qdisp[compIdx][pos] = Qdisp2[compIdx][2*yc+yy][2*xc+xx]
ここでmodpos=pos%4、xc= pos%(DecGeoWidth/4)、yc=pos/(DecGeoWidth/4)、xx=modpos%2、yy=modpos/2
<1次元構成>
変位アンマッピング部3052は、2次元のメッシュ変位画像gFrameから1次元のメッシュ変位Qdispを直接導出してもよい。
【0106】
画像の幅W、高さHにおいて(y=0..H-1, x=0..W-1)に対して以下を適用する。ここでyc=y/2、xc=x/2。
【0107】
Qdisp[0][pos] = gFrame[0][y][x]
for (compIdx=1; compIdx<3; compIdx++) {
if ( displacementChromaLocationType[compIdx-1] == 0 ) {
Qdisp[compIdx][pos ] = gFrame[compIdx][yc][xc]
Qdisp[compIdx][pos+1] = 0
Qdisp[compIdx][pos+2] = 0
Qdisp[compIdx][pos+3] = 0
} else if ( displacementChromaLocationType[compIdx-1] == 1 ) {
Qdisp[compIdx][pos ] = 0
Qdisp[compIdx][pos+1] = gFrame[compIdx][yc][xc]
Qdisp[compIdx][pos+2] = 0
Qdisp[compIdx][pos+3] = 0
} else if ( displacementChromaLocationType[compIdx-1] == 2 ) {
Qdisp[compIdx][pos ] = 0
Qdisp[compIdx][pos+1] = 0
Qdisp[compIdx][pos+2] = gFrame[compIdx][yc][xc]
Qdisp[compIdx][pos+3] = 0
} else if ( displacementChromaLocationType[compIdx-1] == 3 ) {
Qdisp[compIdx][pos ] = 0
Qdisp[compIdx][pos+1] = 0
Qdisp[compIdx][pos+2] = 0
Qdisp[compIdx][pos+3] = gFrame[compIdx][yc][xc]
}
}
pos=pos+4
なお、Qdisp[compIdx][pos ]、Qdisp[compIdx][pos+1]、Qdisp[compIdx][pos+2]、Qdisp[compIdx][pos+3]は各々上述のmod0位置、mod1位置、mod2位置、mod3位置に対応する。なお、ジオメトリ画像の色差フォーマットであるDecGeoChromaFormat(色差コンポーネント識別子)に応じて処理を切り替えてもよい。すなわちDecGeoChromaFormat=1(4:2:0)の場合には上記処理を行い、DecGeoChromaFormat=3(4:4:4)の場合には下記処理をおこなう。
【0108】
Qdisp[0][pos] = gFrame[0][y][x]
Qdisp[1][pos] = gFrame[1][y][x]
Qdisp[2][pos] = gFrame[2][y][x]
pos=pos+1
上記の構成では、2x2のZスキャンを用いて一部の位置をサンプリングすることにより、メッシュ変位の精度低下を低減させる効果を奏する。
【0109】
さらに上記変数displacementChromaLocationTypeに応じて2x2のサンプリング位置を調整することにより、サブサンプリングによるメッシュ変位の精度低下を低減させる効果を奏する。
【0110】
上述の構成によれば、displacementChromaLocationTypeを符号化装置側で選択することでより精度が向上したメッシュ変位の復号が可能となる効果を奏する。
【0111】
また、上記変数displacementChromaLocationType、またはasps_vdmc_ext_displacement_chroma_location_type、afps_vdmc_ext_displacement_chroma_location_typeを用いずに、2x2のZスキャンにおけるあらかじめ定められた位置をサンプリングする。これによりメッシュ変位QdispまたはQdisp2を導出してもよい。この場合、処理を低減する効果を奏する。
【0112】
なお、復号したシンタックス(変位マッピング情報)から、変数displacementChromaLocationTypeの設定を行わず、displacementChromaLocationTypeの代わりに変位マッピング情報のシンタックス値をそのまま用いて、復号画像からメッシュ変位Qdispを導出してもよい。
【0113】
上述のように符号化データを復号する3Dデータ復号装置において、上記符号化データのV3C_GVDで示すジオメトリのvideo streamからメッシュ変位画像を復号する画像復号部3051と、上記メッシュ変位画像からメッシュ変位を生成する変位アンマッピング部3052を備え、上記変位アンマッピング部3052は、座標位置の対応関係に応じて2次元画像を1次元信号に変換することにより、変位を導出する。上記構成では、ISO/IEC 23090-5の拡張により、HEVC、VVCなどで符号化されたジオメトリ画像(メッシュ変位画像)から1次元のメッシュ変位を導出することで、高効率なメッシュ符号化が可能になるという効果を奏する。
【0114】
(色差サンプル位置情報とメッシュ変位復号部の動作)
ISO/IEC 23090-5で規定されるV3C_AVD映像ストリーム中のジオメトリ映像の色差サンプル位置情報ChromaSamplingPosition(ISO/IEC 23091-2コーディングに依存しないコードポイントの色差サンプル位置情報)を示すDecGeoChromaSamplingPositionと、メッシュ変位復号部の逆変位マッピング部の関係について説明する。色差サンプル位置情報の値によらず、以下の構成A、構成Bを行ってもよい。
【0115】
なお、色差サンプル位置情報の0, 1, 2, 3, 4, 5, 6は、各々垂直中心・水平コロケート、垂直中心・水平中心、垂直コロケート・水平コロケート、垂直コロケート・水平中心、垂直+1・水平コロケート、垂直+1・水平中心を示す。JPEGでは1、ITU-R BT.601やITU-R BT.709では0、ITU-T BT.2020やITU-T BT.2100では2が用いられることが多い。
【0116】
<構成A>
変位アンマッピング部3052は、上述のようにasps_vdmc_ext_displacement_chroma_location_typeまたはasps_vdmc_ext_displacement_chroma_location_typeに基づいてメッシュ変位を導出してもよい。すなわち、フィルタを用いた色差サンプルのアップサンプルは行わず、メッシュ変位配列の第2成分Qdisp2[1]と第3成分Qdisp2[2]については、2x2のZスキャンの特定位置(modXポジション、X=0..3のいずれか)にのみ色差サンプル(gFrame[1], gFrame[2])の値を割り当て、他の位置(modYポジション、Y=X以外の0..3)に0を割り当てるようにしてもよい。
【0117】
<構成B>
変位アンマッピング部3052は、色差サンプル位置情報の値が0に等しいとして、以下の疑似コードするような4タップのフィルタ(またはLanczos 2フィルタ)を用いてアップサンプル(水平・垂直方向にフィルタ処理)してもよい。または、Lanczos 3、Lanczos 4などのタップ数の異なるフィルタを用いてアップサンプルしてgFrameからQdisp2を導出してもよい。さらに、量子化パラメータに応じてフィルタを切り替えてもよい。なお、アップサンプル方法は、ISO/IEC 23090-5のAnnex B.3.6で記載の同様の方法を用いてもよい。
【0118】
for( c = 1; c < 3; c++ ) {
for( n = 0; n < 4; n++ ) {
yPos = Clip3( 0, ( PicHeight >> 2 ) - 1, yRef + n - 1 )
temp = 0
for( m = 0; m < 4; m++ ) {
xPos = Clip3( 0, ( PicWidth >> 2 ) - 1, xRef + m - 1 )
temp += fC[ xPhase, m ] * gFrame[ c ][ yPos ][ xPos ]
}
usChromaSample += fC[ yPhase, 0 ] * temp
}
usChromaSample = ( usChromaSample + offset ) >> shift
Qdisp2[ c ][ y ][ x ] = Clip3( 0, ( 1 << nominalBitDepth ) - 1, usChromaSample )
}
上述の構成によれば、色差サンプル位置情報を固定として処理するので処理量が低減される効果を奏する。
【0119】
(色差サンプル位置情報依存のメッシュ変位復号部の動作)
以下さらに、色差サンプル位置情報が利用可能な場合、またはメッシュ変位符号化ストリームにITU-T H.274 (Versatile supplemental enhancement information messages for coded video bitstreams)で規定されるVUI (Video usability information)パラメータのvui_chroma_sample_loc_type_frame(色差サンプル位置情報)が含まれる場合のメッシュ変位復号部305の動作例を説明する。なお、vui_chroma_sample_loc_type_frameとChromaSamplingPositionの値の意味は同じである。
【0120】
<構成1>
以下の(条件1)が全て成り立つ時、色差サンプル位置情報の値に基づいてYCbCr4:2:0フォーマットのメッシュ変位画像gFrameをYCbCr4:4:4フォーマットのメッシュ変位画像に変換(アップサンプル)してメッシュ変位Qdisp2を導出してもよい。色差サンプル位置情報の値が0に等しい場合、上述の構成Bの方法でアップサンプルしてもよい。あるいは、上述の構成Aの方法を行ってもよいにしてもよい。
【0121】
(条件1)
・色差サンプル位置情報の値が0,1,2,3,4,5のいずれかに等しい。
【0122】
・asps_vdmc_ext_displacement_chroma_location_typeまたはafps_vdmc_ext_displacement_chroma_location_typeが利用可能である。
【0123】
<構成2>
別の構成として、以下の(条件2)が全て成り立つ時、asps_vdmc_ext_displacement_chroma_location_typeまたはasps_vdmc_ext_displacement_chroma_location_typeに基づいてメッシュ変位を導出してもよい。すなわち、フィルタを用いた色差サンプルのアップサンプルは行わず、メッシュ変位配列の第2成分Qdisp2[1]と第3成分Qdisp2[2]については、2x2のZスキャンの特定位置(modXポジション、X=0..3のいずれか)にのみ色差サンプル(gFrame[1], gFrame[2])の値を割り当て、他の位置(modYポジション、Y=X以外の0..3)に0を割り当てるようにしてもよい。
【0124】
(条件2)
・色差サンプル位置情報の値が6(未定義)に等しい。
【0125】
・asps_vdmc_ext_displacement_chroma_location_typeまたはafps_vdmc_ext_displacement_chroma_location_typeが利用可能である。
【0126】
<構成3>
別の構成として、以下の(条件3)が全て成り立つ時、asps_vdmc_ext_displacement_chroma_location_typeまたはasps_vdmc_ext_displacement_chroma_location_typeに基づいてメッシュ変位を導出してもよい。あるいは、色差サンプル位置情報の値を0と推定してYCbCr4:2:0フォーマットのメッシュ変位画像をYCbCr4:4:4フォーマットのメッシュ変位画像への変換(アップサンプル)してメッシュ変位を導出してもよい。構成Bの方法を用いてアップサンプルしてもよい。
【0127】
(条件3)
・色差サンプル位置情報が利用不可である。
【0128】
・asps_vdmc_ext_displacement_chroma_location_typeまたはafps_vdmc_ext_displacement_chroma_location_typeが利用可能である。
【0129】
<構成4>
別の構成として、以下の(条件4)が全て成り立つ時、あらかじめ定められた方法(例えば、vdmc_ext_displacement_chroma_location_type=0に対応する方法)に基づいてメッシュ変位を導出してもよい。あるいは、あらかじめ定められた方法(例えば、DecGeoChromaSamplingPosition=0に対応する方法、またはvui_chroma_sample_loc_type_frame=0に対応する方法)に基づいてYCbCr4:2:0フォーマットのメッシュ変位画像をYCbCr4:4:4のメッシュ変位画像へ変換(アップサンプル)してメッシュ変位を導出してもよい。構成1と同様に、ISO/IEC 23090-5のAnnex B.3.6で定義される4タップのフィルタ構成Bの方法を用いてもよい。
【0130】
(条件4)
・アトラス情報符号化ストリームに変位マッピングパラメータ(asps_vdmc_ext_displacement_chroma_location_flag, asps_vdmc_ext_displacement_chroma_location_type, afps_vdmc_ext_displacement_chroma_location_flag, afps_vdmc_ext_displacement_chroma_location_type)が存在しない。
【0131】
上述の構成によれば、色差サンプル位置情報を符号化装置側で選択することでより精度が向上したメッシュ変位の復号が可能となる効果を奏する。
【0132】
逆量子化部3053は、量子化スケール値iscaleに基づき、逆量子化を行い、変換(例えば、ウェーブレット変換)後のメッシュ変位Tdispを導出する。Tdispはデカルト座標系であっても、ローカル座標系であってもよい。iscaleはメッシュ変位画像の各成分の量子化パラメータから導出される値である。
【0133】
Tdisp[0][pos] = (Qdisp[0][pos] * iscale[0] + iscaleOffset) >>iscaleShift
Tdisp[1][pos] = (Qdisp[1][pos] * iscale[1] + iscaleOffset) >>iscaleShift
Tdisp[2][pos] = (Qdisp[2][pos] * iscale[2] + iscaleOffset) >>iscaleShift
ここでiscaleOffset = 1<<(iscaleShift-1)。iscaleShiftは予め定められた定数であってもよいし、シーケンスレベル、ピクチャ/フレームレベル、タイル/パッチレベルなどで符号化し、符号化データから復号した値を用いてもよい。
【0134】
逆変換部3054は、逆変換g(例えば、逆ウェーブレット変換)を行い、メッシュ変位dを導出する。
【0135】
d[0][pos] = g(Tdisp[0][pos])
d[1][pos] = g(Tdisp[1][pos])
d[2][pos] = g(Tdisp[2][pos])
座標系変換部3055は、座標系変換パラメータdisplacementCoordinateSystemの値に基づきメッシュ変位(メッシュ変位の座標系)をデカルト座標系に変換する。具体的には、displacementCoordinateSystem = 1の場合、ローカル座標系の変位からデカルト座標系の変位へ変換する。ここで、dは座標系変換前メッシュ変位を示す3次元ベクトルである。dispは座標系変換後のメッシュ変位を示す3次元ベクトルであり、デカルト座標系である。n_vec,t_vec,b_vecは、対象領域もしくは対象頂点のローカル座標系の各軸に対応する(デカルト座標系の)3次元ベクトルである。
【0136】
if (displacementCoordinateSystem == 0) {
disp = d
} else if (displacementCoordinateSystem == 1){
disp = d[0] * n_vec + d[1] * t_vec + d[2] * b_vec
}
上記のベクトル乗算で示された導出方法をスカラーで個別に表現すると以下になる。
【0137】
if (displacementCoordinateSystem == 0) {
for (i = 0; i < 3; i++) {disp[i] = d[i]}
} else if (displacementCoordinateSystem == 1){
for (i = 0; i < 3; i++) {disp[i] = d[0] * n_vec[i] + d[1] * t_vec[i] + d[2] * b_vec[i]}
}
なお、disp=dとして変換前後で同じ変数名を割り当て、座標変換によってdの値を更新する構成としてもよい。
【0138】
あるいは、以下の構成でもよい。
【0139】
if (displacementCoordinateSystem == 0) {
disp = d
} else if (displacementCoordinateSystem == 1){
disp = d[0] * n_vec + d[1] * t_vec + d[2] * b_vec
} else if (displacementCoordinateSystem == 2){
disp = d[0] * n_vec2 + d[1] * t_vec2 + d[2] * b_vec2
}
ここで、n_vec2,t_vec2,b_vec2は隣接領域のローカル座標系の各軸に対応する(デカルト座標系の)3次元ベクトルである。
【0140】
また、以下の構成でもよい。
【0141】
if (displacementCoordinateSystem == 0) {
disp = d
} else if (displacementCoordinateSystem == 1){
disp = d[0] * n_vec3 + d[1] * t_vec3 + d[2] * b_vec3
}
ここで、n_vec3,t_vec3,b_vec3は変動をおさえた対象領域のローカル座標系の各軸に対応する(デカルト座標系の)3次元ベクトルである。例えば、以下のように以前の座標系と現在の座標系から復号に用いる座標系のベクトルを導出する
n_vec3 = (w*n_vec3 + (WT-w)*n_vec)>>wShift
t_vec3 = (w*t_vec3 + (WT-w)*t_vec)>>wShift
b_vec3 = (w*b_vec3 + (WT-w)*b_vec)>>wShift
ここで例えばwShift=2,3,4、WT=1<<wShift、w=1..WT-1。例えばw=3、wShift=3の場合、
n_vec3 = (3*n_vec3 + 5*n_vec)>>3
t_vec3 = (3*t_vec3 + 5*t_vec)>>3
b_vec3 = (3*b_vec3 + 5*b_vec)>>3
また、以下の構成のように符号化データから復号されるパラメータdisplacementCoordinateSystemの値に応じて選択可能とした構成でもよい。
【0142】
if (displacementCoordinateSystem == 0) {
disp = d
} else if (displacementCoordinateSystem == 1){
disp = d[0] * n_vec + d[1] * t_vec + d[2] * b_vec
} else if (displacementCoordinateSystem == 6){
disp = d[0] * n_vec3 + d[1] * t_vec3 + d[2] * b_vec3
}
画像復号部3051では、通常、第1コンポーネントにおいて予測精度の高いイントラ予測方法やインター予測方法(例、タップ数の多い補間画像生成)を用いる。そのため、第1コンポーネントの輝度画像に割り当てられた(量子化された)メッシュ変位画像は、第2、第3コンポーネントの色差画像に割り当てられた(量子化された)メッシュ変位画像よりも高画質となる(効率的に符号化されている)。従って、輝度画像に割り当てられた、メッシュ変位画像の精度は高くなる。一方、ある頂点を含む面は、法線方向へのずれが大きな見た目上の変化になることから、法線方向の変位成分が画質に重要である。従って、法線方向の変位成分を輝度画像に割り当てることによって、同じ符号量であっても法線方向の変位成分の精度を高めることができる。
【0143】
(メッシュの再構成)
図6は、メッシュ再構成部307の構成を示す機能ブロック図である。メッシュ再構成部307は、メッシュ分割部3071、メッシュ変形部3072から構成される。
【0144】
メッシュ分割部3071は、ベースメッシュ復号部303から出力されるベースメッシュを分割し、分割メッシュを生成する。
【0145】
図11(a)は、ベースメッシュの一部(三角形)を示したものであり、三角形は頂点v1, v2, v3から構成される。v1, v2, v3は3次元ベクトルである。メッシュ分割部3071は、三角形の各辺の中間に新たな頂点v12, v13, v23を追加することによって分割メッシュを生成し、出力する(
図11(b))。
【0146】
v12 = (v1 + v2) / 2
v13 = (v1 + v3) / 2
v23 = (v2 + v3) / 2
また以下でもよい。
【0147】
v12 = (v1 + v2 + 1) >>1
v13 = (v1 + v3 + 1) >>1
v23 = (v2 + v3 + 1) >>1
メッシュ変形部3072は、分割メッシュと、メッシュ変位とを入力し、メッシュ変位d12, d13, d23を加算することによって変形メッシュを生成し、出力する(
図11(c))。メッシュ変位はメッシュ変位復号部305(座標系変換部3055)の出力である。d12, d13, d23はメッシュ分割部3071で追加された各頂点v12, v13, v23に対応するメッシュ変位である。
【0148】
v12' = v12 + d12
v13' = v13 + d13
v23' = v23 + d23
なお、d12 = disp[0][]、d23 = disp[1][]、d23 = disp[3][]であってもよい。
【0149】
上述のように、座標系変換パラメータ及び/又は変位マッピングパラメータをシーケンスレベル、ピクチャ/フレームレベルで切り替え可能な構成とすることで、3Dデータの特性に応じて最適な座標系の選択や画像と変位画像のマッピング(画像パッキング)の選択が可能となる。従って、3Dデータを高品質に符号化・復号することができる。
【0150】
(第1の実施形態に係る3Dデータ符号化装置の構成)
図12は、第1の実施形態に係る3Dデータ符号化装置11の概略構成を示す機能ブロック図である。3Dデータ符号化装置11は、アトラス情報符号化部101、ベースメッシュ符号化部103、ベースメッシュ復号部104、メッシュ変位更新部106、メッシュ変位符号化部107、メッシュ変位復号部108、メッシュ再構成部109、アトリビュート更新部110、パディング部111、色空間変換部112、アトリビュート符号化部113、多重化部114、メッシュ分離部115から構成される。3Dデータ符号化装置11は、3Dデータとしてアトラス情報、ベースメッシュ、メッシュ変位、メッシュ、アトリビュート画像を入力し、符号化データを出力する。
【0151】
アトラス情報符号化部101は、アトラス情報を符号化する。
【0152】
ベースメッシュ符号化部103は、ベースメッシュを符号化し、ベースメッシュ符号化ストリームを出力する。符号化方式としてはDracoなどを用いる。
【0153】
ベースメッシュ復号部104は、ベースメッシュ復号部303と同様のため説明は省略する。
【0154】
メッシュ変位更新部106は、(オリジナルの)ベースメッシュ、及び復号済みのベースメッシュに基づき、メッシュ変位を調整し、更新されたメッシュ変位を出力する。
【0155】
メッシュ変位符号化部107は、更新されたメッシュ変位を符号化し、メッシュ変位符号化ストリームを出力する。符号化方式としては、VVCやHEVCなどを用いる。
【0156】
メッシュ変位復号部108は、メッシュ変位復号部305と同様のため説明は省略する。
【0157】
メッシュ再構成部109は、メッシュ再構成部307と同様のため説明は省略する。
【0158】
アトリビュート更新部110は、(オリジナルの)メッシュ、メッシュ再構成部109(メッシュ変形部3072)から出力される再構成されたメッシュ、アトリビュート画像を入力し、再構成されたメッシュの位置(座標)に合致したアトリビュート画像に更新し、更新したアトリビュート画像を出力する。
【0159】
パディング部111は、アトリビュート画像を入力し、画素値が空の領域に対してパディング処理を行う。
【0160】
色空間変換部112は、RGBフォーマットからYCbCrフォーマットへ色空間変換を行う。
【0161】
アトリビュート符号化部113は、色空間変換部112から出力されるYCbCrフォーマットのアトリビュート画像を符号化し、アトリビュート画像符号化ストリームを出力する。符号化方式としては、VVCやHEVCなどを用いる。
【0162】
多重化部114は、アトラス情報符号化ストリーム、ベースメッシュ符号化ストリーム、メッシュ変位符号化ストリーム、アトリビュート画像符号化ストリームを多重化して符号化データとして出力する。多重化方式としては、バイトストリームフォーマット、ISOBMFFなどを用いる。
【0163】
(メッシュ分離部の動作)
メッシュ分離部115は、メッシュからベースメッシュとメッシュ変位を生成する。
【0164】
図15は、メッシュ分離部115の構成を示す機能ブロック図である。メッシュ分離部115は、メッシュ間引き部1151、メッシュ分割部1152、メッシュ変位導出部1153から構成される。
【0165】
メッシュ間引き部1151は、メッシュから一部の頂点を間引くことによってベースメッシュを生成する。
【0166】
図16(a)は、メッシュの一部を示したものであり、メッシュは頂点v1, v2, v3, v4, v5, v6から構成される。v1, v2, v3, v4, v5, v6は各々3次元ベクトルである。メッシュ間引き部1151は、頂点v4, v5, v6を間引くことによって、ベースメッシュを生成し、出力する(
図16(b))。
【0167】
メッシュ分割部1152は、メッシュ分割部3071と同様、ベースメッシュを分割し、分割メッシュを生成する(
図16(c))。
【0168】
v4' = (v1 + v2) / 2
v5' = (v1 + v3) / 2
v6' = (v2 + v3) / 2
メッシュ変位導出部は、メッシュと分割メッシュに基づき、頂点v4', v5', v6'に対する頂点v4, v5, v6の変位d4, d5, d6をメッシュ変位として導出し、出力する(
図16(d))。
【0169】
d4 = v4 - v4'
d5 = v5 - v5'
d6 = v6 - v6'
(ベースメッシュの符号化)
図13は、ベースメッシュ符号化部103の構成を示す機能ブロック図である。ベースメッシュ符号化部103は、メッシュ符号化部1031、メッシュ復号部1032、動き情報符号化部1033、動き情報復号部1034、メッシュ動き補償部1035、参照メッシュメモリ1036、スイッチ1037、スイッチ1038から構成される。ベースメッシュ符号化部103は、ベースメッシュの入力後に図示しないベースメッシュ量子化部を含んだ構成でもよい。スイッチ1037およびスイッチ3038は、ベースメッシュを他のベースメッシュ(例えば、すでに符号化したベースメッシュ)を参照せずに符号化(イントラ符号化)する場合、動き補償を行わない側に接続する。そうではなく、ベースメッシュを他のベースメッシュを参照して符号化(インター符号化)する場合、動き補償を行う側に接続される。
【0170】
メッシュ符号化部1031は、ベースメッシュのイントラ符号化機能を有し、ベースメッシュをイントラ符号化し、ベースメッシュ符号化ストリームを出力する。符号化方式としてはDracoなどを用いる。
【0171】
メッシュ復号部1032は、メッシュ復号部3031と同様のため説明は省略する。
【0172】
動き情報符号化部1033は、ベースメッシュのインター符号化機能を有し、ベースメッシュをインター符号化し、ベースメッシュ符号化ストリームを出力する。符号化方式としては算術符号化などのエントロピー符号化を用いる。
【0173】
動き情報復号部1034は、動き情報復号部3032と同様のため説明は省略する。
【0174】
メッシュ動き補償部1035は、メッシュ動き補償部3033と同様のため説明は省略する。
【0175】
参照メッシュメモリ1036は、参照メッシュメモリ3034と同様のため説明は省略する。
【0176】
(メッシュ変位の符号化)
図14は、メッシュ変位符号化部107の構成を示す機能ブロック図である。メッシュ変位符号化部107は、座標系変換部1071、変換部1072、量子化部1073、変位マッピング部1074(画像パック部、変位符号化部)から構成される。図に示すように、メッシュ変位符号化部107はさらに画像符号化部1075を含んだ構成でもよい。あるいは、画像符号化部1075は、メッシュ変位符号化部107に含まれず、変位画像の符号化は、外部の画像符号化装置を用いる構成でもよい。
【0177】
座標系変換部1071は、座標変換パラメータdisplacementCoordinateSystemの値に基づき、メッシュ変位の座標系をデカルト座標系から変位を符号化する座標系(例えばローカル座標系)へ変換する。ここで、dispは座標系変換前メッシュ変位を示す3次元ベクトル、dは座標系変換後のメッシュ変位を示す3次元ベクトル、n_vec,t_vec,b_vecはローカル座標系の各軸を示す(デカルト座標系の)3次元ベクトルである。
【0178】
if (displacementCoordinateSystem == 0) {
d = disp
} else if (displacementCoordinateSystem == 1){
d = (disp * n_vec, disp * t_vec, disp * b_vec)
}
メッシュ変位符号化部107は、displacementCoordinateSystemの値をシーケンスレベルで更新してもよい。あるいは、ピクチャ/フレームレベルで更新してもよい。初期値はデカルト座標系を示す0である。
【0179】
displacementCoordinateSystemをシーケンスレベルで更新する場合、
図7の構成のシンタックスを用いる。asps_vdmc_ext_displacement_coordinate_system_update_flagには、座標系を更新する場合1を、座標系を更新しない場合0を設定する。asps_vdmc_ext_displacement_coordinate_systemには、デカルト座標系の場合0を、ローカル座標系の場合1を設定する。
【0180】
displacementCoordinateSystemをピクチャ/フレームレベルで変更する場合、
図8の構成のシンタックスを用いる。afps_vdmc_ext_displacement_coordinate_system_update_flagには、座標系を更新する場合1を、座標系を更新しない場合0を設定する。afps_vdmc_ext_displacement_coordinate_systemには、デカルト座標系の場合0を、ローカル座標系の場合1を設定する。
【0181】
変換部1072は、変換f(例えば、ウェーブレット変換)を行い、変換後のメッシュ変位Tdispを導出する。pos=0..NumDisp-1について以下を行う。ここでNumDispは、メッシュ頂点の数。
【0182】
Tdisp[0][pos] = f(d[0][pos])
Tdisp[1][pos] = f(d[1][pos])
Tdisp[2][pos] = f(d[2][pos])
量子化部1073は、メッシュ変位の各成分の量子化パラメータから導出される量子化スケール値scaleに基づき、量子化を行い、量子化後のメッシュ変位Qdispを導出する。
【0183】
Qdisp[0][pos] = Tdisp[0][pos] / scale[0]
Qdisp[1][pos] = Tdisp[1][pos] / scale[1]
Qdisp[2][pos] = Tdisp[2][pos] / scale[2]
あるいはscale値を2のべき乗で近似してQdispを下式で導出してもよい。
【0184】
scale[i] = 1 << scale2[i]
Qdisp[0][pos] = Tdisp[0][pos] >> scale2[0]
Qdisp[1][pos] = Tdisp[1][pos] >> scale2[1]
Qdisp[2][pos] = Tdisp[2][pos] >> scale2[2]
変位マッピング部1074は、変位マッピングパラメータdisplacementChromaLocationTypeの値に基づき、量子化後のメッシュ変位Qdisp2からYCbCr4:2:0フォーマットの画像を生成する。
【0185】
<2次元構成>
変位マッピング部1074は、(n, t, b)もしくは(x, y, z)の3次元ベクトルの変位信号列Qdisp[compIdx=0..2][pos]を、compIdx=0..2の3つのコンポーネントから構成される(x,y)の画素値を示す変位画像Qdisp2[compIdx][y][x]に変換する。2次元変位画像はジオメトリ画像であり、画像の幅をGeoWidth、高さをGeoHeightであらわす。なお3Dデータ復号装置31ではDecGeoWidth=GeoWidth、DecGeoHeight=GeoHeight。
【0186】
2次元走査時の走査方法の一つはラスタスキャンであり、この場合には以下の方法を用いて2次元に変換する。
【0187】
pos=0..NumDisp-1について以下を行う。
【0188】
Qdisp2[0][y][x] = Qdisp[0][pos]
Qdisp2[1][y][x] = Qdisp[1][pos]
Qdisp2[2][y][x] = Qdisp[2][pos]
ここでx=pos%GeoWidth、y=pos/GeoWidthである。ここで/は、切り捨てによる整数除算、%は剰余を示す。またy=0..GeoHeight-1、x=GeoWidth-1において以下で導出してもよい。
【0189】
Qdisp2[0][y][x] = Qdisp[0][y*GeoWidth+x]
Qdisp2[1][y][x] = Qdisp[1][y*GeoWidth+x]
Qdisp2[2][y][x] = Qdisp[2][y*GeoWidth+x]
上記の構成では簡易な処理で実現できる効果を奏する。
【0190】
2次元走査時の走査方法の一つは2x2のZスキャンであり、この場合には以下の方法を用いて2次元に変換する。この方が上述のサブサンプリングにおいて少なく画質が良くなる効果を奏する。pos4=0..NumDisp/4-1、compIdx=0..2について以下を行う。
【0191】
Qdisp2[compIdx][2*yc ][2*xc ] = Qdisp[compIdx][pos]
Qdisp2[compIdx][2*yc ][2*xc+1] = Qdisp[compIdx][pos+1]
Qdisp2[compIdx][2*yc+1][2*xc ] = Qdisp[compIdx][pos+2]
Qdisp2[compIdx][2*yc+1][2*xc+1] = Qdisp[compIdx][pos+3]
ここでpos=pos4*4、xc=pos4%GeoWidth =pos%(GeoWidth/4)、yc=pos4/GeoWidth=pos/(GeoWidth/4)である。
【0192】
以下の導出方法でも同じである。pos=0..NumDisp-1、compIdx=0..2について以下を行う。
【0193】
Qdisp2[compIdx][2*yc+yy][2*xc+xx] = Qdisp[compIdx][pos]
ここでmodpos=pos%4、xc= pos%(GeoWidth/4)、yc=pos/(GeoWidth/4)、xx=modpos%2、yy=modpos/2。
【0194】
図9及び
図10は、変位アンマッピング部3052及び変位マッピング部1074の動作を説明するための図である。ここでcompIdx=1..2についてはサブサンプリングを行う。
【0195】
// (量子化された)メッシュ変位配列の第1成分Qdisp2[0]を輝度(Y)画像コンポーネントにパック
x=0..W-1, y=0..H-1について以下を行う。
【0196】
gFrame[0][y][x] = Qdisp2[0][y][x]
xc=0..W/2-1, yc=0..H/2-1について以下を行う。
【0197】
if ( displacementChromaLocationType == 0 ) {
// (量子化された)メッシュ変位配列の第2成分Qdisp2[1]の一部を色差(Cb)画像コンポーネントにパック
gFrame[1][yc][xc] = Qdisp2[1][2*yc][2*xc]
// (量子化された)メッシュ変位配列の第3成分Qdisp2[2]の一部を色差(Cr)画像コンポーネントにパック
gFrame[2][yc][xc] = Qdisp2[2][2*yc][2*xc]
} else if ( displacementChromaLocationType == 1 ) {
gFrame[1][yc][xc] = Qdisp2[1][2*yc+1][2*xc]
gFrame[2][yc][xc] = Qdisp2[2][2*yc+1][2*xc]
} else if ( displacementChromaLocationType == 2 ) {
gFrame[1][yc][xc] = Qdisp2[1][2*yc][2*xc+1]
gFrame[2][yc][xc] = Qdisp2[2][2*yc][2*xc+1]
} else if ( displacementChromaLocationType == 3 ) {
gFrame[1][yc][xc] = Qdisp2[1][2*yc+1][2*xc+1]
gFrame[2][yc][xc] = Qdisp2[2][2*yc+1][2*xc+1]
}
さらに以下を追加してもよい。
【0198】
if ( displacementChromaLocationType == 4 ) {
gFrame[1][yc][xc] = Qdisp2[1][2*yc][2*xc]
gFrame[2][yc][xc] = Qdisp2[2][2*yc+1][2*xc]
} else if ( displacementChromaLocationType == 5 ) {
gFrame[1][yc][xc] = Qdisp2[1][2*yc][2*xc]
gFrame[2][yc][xc] = Qdisp2[2][2*yc][2*xc+1]
} else if ( displacementChromaLocationType == 6 ) {
gFrame[1][yc][xc] = Qdisp2[1][2*yc][2*xc]
gFrame[2][yc][xc] = Qdisp2[2][2*yc+1][2*xc+1]
} else if ( displacementChromaLocationType == 7 ) {
gFrame[1][yc][xc] = Qdisp2[1][2*yc+1][2*xc]
gFrame[2][yc][xc] = Qdisp2[2][2*yc][2*xc+1]
} else if ( displacementChromaLocationType == 8 ) {
gFrame[1][yc][xc] = Qdisp2[1][2*yc+1][2*xc]
gFrame[2][yc][xc] = Qdisp2[2][2*yc+1][2*xc+1]
} else if ( displacementChromaLocationType == 9 ) {
gFrame[1][yc][xc] = Qdisp2[1][2*yc][2*xc+1]
gFrame[2][yc][xc] = Qdisp2[2][2*yc+1][2*xc+1]
}
なお、第2成分(compIdx=1)と第3成分(compIdx=2)で個別の変位マッピングパラメータを復号、導出する構成としてもよい。displacementChromaLocationType[0]、displacementChromaLocationType[1]を用いる。
【0199】
画像の幅W、高さHにおいて(y=0..H-1, x=0..W-1)に対して以下を適用する。ここでyc=y/2、xc=x/2。
【0200】
gFrame[0][y][x] = Qdisp2[0][y][x]
for (compIdx=1; compIdx<3; compIdx++) {
if ( displacementChromaLocationType[compIdx-1] == 0 ) {
gFrame[compIdx][yc][xc] = Qdisp2[compIdx][2*yc ][2*xc ]
} else if ( displacementChromaLocationType[compIdx-1] == 1 ) {
gFrame[compIdx][yc][xc] = Qdisp2[compIdx][2*yc ][2*xc+1]
} else if ( displacementChromaLocationType[compIdx-1] == 2 ) {
gFrame[compIdx][yc][xc] = Qdisp2[compIdx][2*yc+1][2*xc ]
} else if ( displacementChromaLocationType[compIdx-1] == 3 ) {
gFrame[compIdx][yc][xc] = Qdisp2[compIdx][2*yc+1][2*xc+1]
}
}
<1次元構成>
変位アンマッピング部3052は、上記QdispからQdisp2への走査の後に、Qdisp2からgFrameへのマッピングを行わず、直接1次元のメッシュ変位QDispから2次元のメッシュ変位画像gFrameを導出してもよい。
【0201】
画像の幅W、高さHにおいて(y=0..H-1, x=0..W-1)に対して以下を適用する。ここでyc=y/2、xc=x/2。
【0202】
gFrame[0][y][x] = Qdisp[0][pos]
compIdx=1,2に対して、
for (compIdx=1; compIdx<3; compIdx++) {
if ( displacementChromaLocationType[compIdx-1] == 0 ) {
gFrame[compIdx][yc][xc] = Qdisp[compIdx][pos ]
} else if ( displacementChromaLocationType[compIdx-1] == 1 ) {
gFrame[compIdx][yc][xc] = Qdisp[compIdx][pos+1]
} else if ( displacementChromaLocationType[compIdx-1] == 2 ) {
gFrame[compIdx][yc][xc] = Qdisp[compIdx][pos+2]
} else if ( displacementChromaLocationType[compIdx-1] == 3 ) {
gFrame[compIdx][yc][xc] = Qdisp[compIdx][pos+3]
}
}
pos=pos+4
なお、DecGeoChromaFormatに応じて処理を切り替えてもよい。すなわちDecGeoChromaFormat=1(4:2:0)の場合には上記処理を行い、DecGeoChromaFormat=3(4:4:4)の場合には下記処理をおこなう。
【0203】
gFrame[0][y][x] = Qdisp[0][pos]
gFrame[1][y][x] = Qdisp[1][pos]
gFrame[2][y][x] = Qdisp[2][pos]
pos=pos+1
メッシュ変位符号化部107は、displacementChromaLocationTypeの値をシーケンスレベルで更新してもよい。あるいは、ピクチャ/フレームレベルで更新してもよい。displacementChromaLocationTypeの初期値は0である。
【0204】
displacementChromaLocationTypeの値の意味はasps_vdmc_ext_displacement_chroma_location_typeで説明した通りである。
【0205】
displacementChromaLocationTypeをシーケンスレベルで更新する場合、
図7の構成のシンタックスを用いる。asps_vdmc_ext_displacement_chroma_location_typeには、displacementChromaLocationTypeの値を設定する。
【0206】
displacementChromaLocationTypeをピクチャ/フレームレベルで更新する場合、
図8の構成のシンタックスを用いる。afps_vdmc_ext_displacement_chroma_location_typeには、displacementChromaLocationTypeの値を設定する。
【0207】
画像符号化部1075は、(量子化された)メッシュ変位画像を含むYCbCr4:2:0フォーマットの画像を符号化し、メッシュ変位符号化ストリームを出力する。符号化方式としては、VVCやHEVCなどを用いる。
【0208】
(VUIパラメータを考慮したメッシュ変位の符号化)
画像符号化部1075は、ITU-T H.274で規定されるVUIパラメータを符号化してもよい。例えば、VUIパラメータのvui_chroma_sample_loc_type_frame(色差サンプル位置情報)を0,1,2,3,4,5のいずれかの値で符号化してもよい。あるいは、vui_chroma_sample_loc_type_frame=6(未定義)で符号化してもよい。
【0209】
vui_chroma_sample_loc_type_frameを0,1,2,3,4,5のいずれかの値で符号化する場合、メッシュ変位からYCbCr4:4:4フォーマットのメッシュ変位画像を生成し、vui_chroma_sample_loc_type_frameに基づいてYCbCr4:2:0フォーマットのメッシュ変位画像に変換(ダウンサンプル)してもよい。
【0210】
vui_chroma_sample_loc_type_frame=6で符号化する場合、メッシュ変位からYCbCr4:4:4フォーマットのメッシュ変位画像を生成し、vui_chroma_sample_loc_type_frame=0(デフォルト)に基づいてYCbCr4:2:0フォーマットのメッシュ変位画像に変換(ダウンサンプル)してもよい。あるいは、色差コンポーネントを間引いてYCbCr4:2:0フォーマットのメッシュ変位画像を生成してもよい。
【0211】
また、画像符号化部1075は、ITU-T H.274で規定されるVUIパラメータを符号化しなくてもよい。VUIパラメータを符号化しない場合、メッシュ変位からYCbCr4:4:4フォーマットのメッシュ変位画像を生成し、あらかじめ定められた方法(例えば、vui_chroma_sample_loc_type_frame=0に対応する方法)に基づいてYCbCr4:2:0フォーマットのメッシュ変位画像に変換(ダウンサンプル)してもよい。あるいは、色差コンポーネントを間引いてYCbCr4:2:0フォーマットのメッシュ変位画像を生成してもよい。
【0212】
上述のように、座標系変換パラメータ及び/又は変位マッピングパラメータをシーケンスレベル、ピクチャ/フレームレベルで切り替え可能な構成とすることで、3Dデータの特性に応じて最適な座標系の選択や画像パッキングの選択が可能となる。従って、3Dデータを高品質に符号化・復号することができる。
【0213】
以上、図面を参照してこの発明の一実施形態について詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、この発明の要旨を逸脱しない範囲内において様々な設計変更等をすることが可能である。
【0214】
〔応用例〕
上述した3Dデータ符号化装置11及び3Dデータ復号装置31は、3Dデータの送信、受信、記録、再生を行う各種装置に搭載して利用することができる。なお、3Dデータは、カメラ等により撮像された自然3Dデータであってもよいし、コンピュータ等により生成された人工3Dデータ(CGおよびGUIを含む)であってもよい。
【0215】
本発明の実施形態は上述した実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能である。すなわち、請求項に示した範囲で適宜変更した技術的手段を組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【産業上の利用可能性】
【0216】
本発明の実施形態は、3Dデータが符号化された符号化データを復号する3Dデータ復号装置、および、3Dデータが符号化された符号化データを生成する3Dデータ符号化装置に好適に適用することができる。また、3Dデータ符号化装置によって生成され、3Dデータ復号装置によって参照される符号化データのデータ構造に好適に適用することができる。
【符号の説明】
【0217】
11 3Dデータ符号化装置
101 アトラス情報符号化部
103 ベースメッシュ符号化部
1031 メッシュ符号化部
1032 メッシュ復号部
1033 動き情報符号化部
1034 動き情報復号部
1035 メッシュ動き補償部
1036 参照メッシュメモリ
1037 スイッチ
1038 スイッチ
104 ベースメッシュ復号部
106 メッシュ変位更新部
107 メッシュ変位符号化部
1071 座標系変換部
1072 変換部
1073 量子化部
1074 変位マッピング部
1075 画像符号化部
108 メッシュ変位復号部
109 メッシュ再構成部
110 アトリビュート更新部
111 パディング部
112 色空間変換部
113 アトリビュート符号化部
114 多重化部
115 メッシュ分離部
1151 メッシュ間引き部
1152 メッシュ分割部
1153 メッシュ変位導出部
21 ネットワーク
31 3Dデータ復号装置
301 逆多重化部
302 アトラス情報復号部
303 ベースメッシュ復号部
3031 メッシュ復号部
3032 動き情報復号部
3033 メッシュ動き補償部
3034 参照メッシュメモリ
3035 スイッチ
3036 スイッチ
305 メッシュ変位復号部
3051 画像復号部
3052 変位アンマッピング部
3053 逆量子化部
3054 逆変換部
3055 座標系変換部
307 メッシュ再構成部
306 アトリビュート復号部
3071 メッシュ分割部
3072 メッシュ変形部
308 色空間変換部
41 3Dデータ表示装置