IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ KDDI株式会社の特許一覧

特許7557319点群復号装置、点群復号方法及びプログラム
<>
  • 特許-点群復号装置、点群復号方法及びプログラム 図1
  • 特許-点群復号装置、点群復号方法及びプログラム 図2
  • 特許-点群復号装置、点群復号方法及びプログラム 図3
  • 特許-点群復号装置、点群復号方法及びプログラム 図4
  • 特許-点群復号装置、点群復号方法及びプログラム 図5
  • 特許-点群復号装置、点群復号方法及びプログラム 図6
  • 特許-点群復号装置、点群復号方法及びプログラム 図7
  • 特許-点群復号装置、点群復号方法及びプログラム 図8
  • 特許-点群復号装置、点群復号方法及びプログラム 図9
  • 特許-点群復号装置、点群復号方法及びプログラム 図10
  • 特許-点群復号装置、点群復号方法及びプログラム 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-18
(45)【発行日】2024-09-27
(54)【発明の名称】点群復号装置、点群復号方法及びプログラム
(51)【国際特許分類】
   H03M 7/30 20060101AFI20240919BHJP
   H04N 19/597 20140101ALI20240919BHJP
   H04N 19/70 20140101ALI20240919BHJP
   G06T 17/00 20060101ALI20240919BHJP
   G06T 9/40 20060101ALI20240919BHJP
【FI】
H03M7/30 Z
H04N19/597
H04N19/70
G06T17/00 500
G06T9/40
【請求項の数】 3
(21)【出願番号】P 2020151393
(22)【出願日】2020-09-09
(62)【分割の表示】P 2020104957の分割
【原出願日】2020-06-18
(65)【公開番号】P2021197723
(43)【公開日】2021-12-27
【審査請求日】2023-03-02
【国等の委託研究の成果に係る記載事項】(出願人による申告)令和元年度、総務省、「多様な用途、環境下での高精細映像の活用に資する次世代映像伝送・通信技術の研究開発」委託事業、産業技術力強化法第17条の適用を受ける特許出願
(73)【特許権者】
【識別番号】000208891
【氏名又は名称】KDDI株式会社
(74)【代理人】
【識別番号】110001564
【氏名又は名称】フェリシテ弁理士法人
(74)【代理人】
【識別番号】110001106
【氏名又は名称】弁理士法人キュリーズ
(72)【発明者】
【氏名】海野 恭平
(72)【発明者】
【氏名】河村 圭
【審査官】鉢呂 健
(56)【参考文献】
【文献】国際公開第2019/069711(WO,A1)
【文献】ZHANG, Xiang et al.,Implicit Geometry Partition for Point Cloud Compression,2020 Data Compression Conference (DCC),米国,IEEE,2020年03月24日,pp.73-82
(58)【調査した分野】(Int.Cl.,DB名)
H03M 3/00-9/00
H04N 19/00-19/98
G06T 9/40
G06T 17/00
(57)【特許請求の範囲】
【請求項1】
点群復号装置であって、
ノードの8つの子ノードに対応するMask_planarを生成するように構成されているツリー合成部を備え、
前記ツリー合成部は、
前記ノードが4分木分割又は2分木分割される場合、分割されなかった軸方向の原点に近い方の平面に属する子ノードに対応する前記Mask_planarの値を「0」に設定し、分割されなかった軸方向の原点に遠い方の平面に属する子ノードに対応する前記Mask_planarの値を「1」に設定するように構成されており、
前記ノードの各子ノードに点群データが存在するか否かを示すOccupancy mapを復号するように構成されており、
前記Mask_planarの値が「1」である子ノードに対して、前記子ノードに対応する前記Occupancy mapの値を「0」に設定するように構成されており、
前記Mask_planarの値が「0」である子ノードに対しては、ビットストリームに含まれるOccupancy codeの値を参照して、前記Occupancy mapの値を設定するように構成されていることを特徴とする点群復号装置。
【請求項2】
ノードの8つの子ノードに対応するMask_planarを生成するように構成されている工程Aと、
前記ノードの各子ノードに点群データが存在するか否かを示すOccupancy mapを復号する工程Bとを備え、
前記工程において、前記ノードが4分木分割又は2分木分割される場合、分割されなかった軸方向の原点に近い方の平面に属する子ノードに対応する前記Mask_planarの値を「0」に設定し、分割されなかった軸方向の原点に遠い方の平面に属する子ノードに対応する前記Mask_planarの値を「1」に設定し、
前記工程Bにおいて、
前記Mask_planarの値が「1」である子ノードに対して、前記子ノードに対応する前記Occupancy mapの値を「0」に設定し、
前記Mask_planarの値が「0」である子ノードに対しては、ビットストリームに含まれるOccupancy codeの値を参照して、前記Occupancy mapの値を設定することを特徴とする点群復号方法。
【請求項3】
点群復号装置で用いるプログラムであって、コンピュータに、
ノードの8つの子ノードに対応するMask_planarを生成するように構成されている工程Aと、
前記ノードの各子ノードに点群データが存在するか否かを示すOccupancy mapを復号する工程Bとを実行させ、
前記工程において、前記ノードが4分木分割又は2分木分割される場合、分割されなかった軸方向の原点に近い方の平面に属する子ノードに対応する前記Mask_planarの値を「0」に設定し、分割されなかった軸方向の原点に遠い方の平面に属する子ノードに対応する前記Mask_planarの値を「1」に設定し、
前記工程Bにおいて、
前記Mask_planarの値が「1」である子ノードに対して、前記子ノードに対応する前記Occupancy mapの値を「0」に設定し、
前記Mask_planarの値が「0」である子ノードに対しては、ビットストリームに含まれるOccupancy codeの値を参照して、前記Occupancy mapの値を設定することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、点群復号装置、点群復号方法及びプログラムに関する。
【背景技術】
【0002】
非特許文献1には、点群データの各点の位置情報を復号した後、点群データの各点の属性情報の復号に先立って、かかる位置情報を基に点群データの各点をソートする技術が開示されている。
【先行技術文献】
【非特許文献】
【0003】
【文献】Text of ISO/IEC 23090-9 DIS Geometry-based PCC、ISO/IEC/ JTC1/SC29/WG11 N19088
【文献】[G-PCC][New Proposal] Predictive Geometry Coding、ISO/IEC JTC1/SC29/WG11 m51012
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、従来技術では、位置情報を基に点群データの各点をソートする場合、全ての点群の点について位置情報の復号が完了しないと、属性情報の復号が開始できないという問題点があった。
【0005】
また、従来技術では、ソート処理を省略した場合、属性情報の復号処理における点群の処理順序が規定されていないという問題点があった。
【0006】
そこで、本発明は、上述の課題に鑑みてなされたものであり、属性情報の復号に際してソート処理が実行されなかった場合も、属性情報の復号処理を行う順序を一意に決定することで、復号した位置情報と属性情報とを一意に対応付けることができる点群復号装置、点群復号方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明の第1の特徴は、点群復号装置であって、復号対象の点群データの各点について位置情報を復号し、前記位置情報の復号順に昇順で前記点群データの各点にインデックスを付与し、前記インデックスを一次元の配列に格納するように構成されているツリー合成部を備えることを要旨とする。
【0008】
本発明の第2の特徴は、点群復号装置であって、ノードの8つの子ノードに対応するMask_planarを生成するように構成されているツリー合成部を備え、前記ツリー
合成部は、前記ノードが4分木分割又は2分木分割される場合、分割されなかった軸方向の原点に近い方の平面に属する子ノードに対応する前記Mask_planarの値を「
0」に設定し、分割されなかった軸方向の原点に遠い方の平面に属する子ノードに対応する前記Mask_planarの値を「1」に設定するように構成されていることを要旨
とする。
【0009】
本発明の第3の特徴は、点群復号装置であって、ノードの軸方向ごとにPlanar modeの適用可否を示すフラグを生成するように構成されているツリー合成部を備え、
前記ツリー合成部は、前記ノードが4分木又は2分木分割される場合、分割が発生しない軸方向に対応する前記Planar modeの適用可否を示すフラグの値を、前記Planar mode適用不可を示す値に設定するように構成されていることを要旨とする。
【0010】
本発明の第4の特徴は、点群復号方法であって、復号対象の点群データの各点について位置情報を復号する工程と、前記位置情報の復号順に昇順で前記点群データの各点にインデックスを付与する工程と、前記インデックスを一次元の配列に格納する工程とを有することを要旨とする。
【0011】
本発明の第5の特徴は、点群復号装置で用いるプログラムであって、コンピュータに、復号対象の点群データの各点について位置情報を復号する工程と、前記位置情報の復号順に昇順で前記点群データの各点にインデックスを付与する工程と、前記インデックスを一次元の配列に格納する工程とを実行させることを要旨とする。
【発明の効果】
【0012】
本発明によれば、属性情報の復号に際してソート処理が実行されなかった場合も、属性情報の復号処理を行う順序を一意に決定することで、復号した位置情報と属性情報とを一意に対応付けることができる点群復号装置、点群復号方法及びプログラムを提供することができる。
【図面の簡単な説明】
【0013】
図1】一実施形態に係る点群処理システム10の構成の一例を示す図である。
図2】一実施形態に係る点群復号装置200の機能ブロックの一例を示す図である。
図3】一実施形態に係る点群復号装置200の幾何情報復号部2010で受信する符号化データ(ビットストリーム)の構成の一例である。
図4】一実施形態に係るGPS2011のシンタックス構成の一例である。
図5】一実施形態に係る点群復号装置200のツリー合成部2020の処理の一例を示すフローチャートである。
図6図5のステップS506におけるノード情報復号処理の一例を示すフローチャートである。
図7図5のステップS506におけるノード情報復号処理の一例を示すフローチャートである。
図8図6のステップS601におけるMask_planarの設定方法の一例を示す図である。
図9】一実施形態に係る点群復号装置200の属性情報復号部2060で受信する符号化データ(ビットストリーム)の構成の一例である。
図10】一実施形態に係るAPS2061のシンタックス構成の一例である。
図11】一実施形態に係る点群復号装置200のLoD算出部2090の処理手順の一例を説明するフローチャートである。
【発明を実施するための形態】
【0014】
以下、本発明の実施の形態について、図面を参照しながら説明する。なお、以下の実施形態における構成要素は、適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組み合わせを含む様々なバリエーションが可能である。したがって、以下の実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
【0015】
(第1実施形態)
以下、図1図11を参照して、本発明の第1実施形態に係る点群処理システム10について説明する。図1は、本実施形態に係る実施形態に係る点群処理システム10を示す図である。
【0016】
図1に示すように、点群処理システム10は、点群符号化装置100及び点群復号装置200を有する。
【0017】
点群符号化装置100は、入力点群信号を符号化することによって符号化データ(ビットストリーム)を生成するように構成されている。点群復号装置200は、ビットストリームを復号することによって出力点群信号を生成するように構成されている。
【0018】
なお、入力点群信号及び出力点群信号は、点群内の各点の位置情報と属性情報とから構成される。属性情報は、例えば、各点の色情報や反射率である。
【0019】
ここで、かかるビットストリームは、点群符号化装置100から点群復号装置200に対して伝送路を介して送信されてもよい。また、ビットストリームは、記憶媒体に格納された上で、点群符号化装置100から点群復号装置200に提供されてもよい。
【0020】
(点群復号装置200)
以下、図2を参照して、本実施形態に係る点群復号装置200について説明する。図2は、本実施形態に係る点群復号装置200の機能ブロックの一例について示す図である。
【0021】
図2に示すように、点群復号装置200は、幾何情報復号部2010と、ツリー合成部2020と、近似表面合成部2030と、幾何情報再構成部2040と、逆座標変換部2050と、属性情報復号部2060と、逆量子化部2070と、RAHT部2080と、LoD算出部2090と、逆リフティング部2100と、逆色変換部2110とを有する。
【0022】
幾何情報復号部2010は、点群符号化装置100から出力されるビットストリームのうち、幾何情報に関するビットストリーム(幾何情報ビットストリーム)を入力とし、シンタックスを復号するように構成されている。
【0023】
復号処理は、例えば、コンテキスト適応二値算術復号処理である。ここで、例えば、シンタックスは、位置情報の復号処理を制御するための制御データ(フラグやパラメータ)を含む。
【0024】
ツリー合成部2020は、幾何情報復号部2010によって復号された制御データ及び後述するツリー内のどのノードに点群が存在するかを示すoccupancy codeを入力として、復号対象空間内のどの領域に点が存在するかというツリー情報を生成するように構成されている。
【0025】
本処理は、復号対象空間を直方体で区切り、occupancy codeを参照して各直方体内に点が存在するかを判断し、点が存在する直方体を複数の直方体に分割し、occupancy codeを参照するという処理を再帰的に繰り返すことで、ツリー情報を生成することができる。
【0026】
本実施形態では、上述の直方体を常に立方体として8分木分割を再帰的に行う「Octree」と呼ばれる手法、及び、8分木分割に加え、4分木分割及び2分木分割を行う「QtBt」と呼ばれる手法を使用することができる。「QtBt」を使用するか否かは、制御データとして点群符号化装置100側から伝送される。
【0027】
或いは、制御データによって後述するPredicitive codingを使用するように指定された場合、ツリー合成部2020は、点群符号化装置100において決定した任意のツリー構成に基づいて各点の座標を復号するように構成されている。
【0028】
近似表面合成部2030は、ツリー情報合成部2020によって生成されたツリー情報を用いて、近似表面情報を生成するように構成されている。
【0029】
近似表面情報は、例えば、物体の3次元点群データを復号する際等において、点群が物体表面に密に分布しているような場合に、個々の点群を復号するのではなく、点群の存在領域を小さな平面で近似して表現したものである。
【0030】
具体的には、近似表面合成部2030は、例えば、「Trisoup」と呼ばれる手法で、近似表面情報を生成することができる。「Trisoup」の具体的な処理としては、例えば、非特許文献1に記載の方法を用いることができる。また、Lidar等で取得した疎な点群を復号する場合は、本処理を省略することができる。
【0031】
幾何情報再構成部2040は、ツリー情報合成部2020によって生成されたツリー情報及び近似表面合成部2030によって生成された近似表面情報を元に、復号対象の点群データの各点の幾何情報(復号処理が仮定している座標系における位置情報)を再構成するように構成されている。
【0032】
逆座標変換部2050は、幾何情報再構成部2040によって再構成された幾何情報を入力として、復号処理が仮定している座標系から、出力点群信号の座標系に変換を行い、位置情報を出力するように構成されている。
【0033】
属性情報復号部2060は、点群符号化装置100から出力されるビットストリームのうち、属性情報に関するビットストリーム(属性情報ビットストリーム)を入力とし、シンタックスを復号するように構成されている。
【0034】
復号処理は、例えば、コンテキスト適応二値算術復号処理である。ここで、例えば、シンタックスは、属性情報の復号処理を制御するための制御データ(フラグ及びパラメータ)を含む。
【0035】
また、属性情報復号部2060は、復号したシンタックスから、量子化済み残差情報を復号するように構成されている。
【0036】
逆量子化部2070は、属性情報復号部2060によって復号された量子化済み残差情報と、属性情報復号部2060によって復号された制御データの一つである量子化パラメータとを元に、逆量子化処理を行い、逆量子化済み残差情報を生成するように構成されている。
【0037】
逆量子化済み残差情報は、復号対象の点群の特徴に応じて、RAHT部2080及びLoD算出部2090のいずれかに出力される。いずれに出力されるかは、属性情報復号部2060によって復号される制御データによって指定される。
【0038】
RAHT部2080は、逆量子化済み残差情報によって生成された逆量子化済み残差情報及び幾何情報再構成部2040によって生成された幾何情報を入力とし、RAHT(Region Adaptive Hierarchical Transform)と呼ばれるHaar変換(復号処理においては、逆Haar変換)の一種を用いて、各点の属
性情報を復号するように構成されている。RAHTの具体的な処理としては、例えば、非特許文献1に記載の方法を用いることができる。
【0039】
LoD算出部2090は、幾何情報再構成部2040によって生成された幾何情報を入力とし、LoD(Level of Detail)を生成するように構成されている。
【0040】
LoDは、ある点の属性情報から、他のある点の属性情報を予測し、予測残差を符号化或いは復号するといった予測符号化を実現するための参照関係(参照する点及び参照される点)を定義するための情報である。
【0041】
言い換えると、LoDは、幾何情報に含まれる各点を複数のレベルに分類し、下位のレベルに属する点については上位のレベルに属する点の属性情報を用いて属性を符号化或いは復号するといった階層構造を定義した情報である。
【0042】
LoDの具体的な決定方法としては、例えば、非特許文献1に記載の方法を用いてもよい。
【0043】
逆リフティング部2100は、LoD算出部2090によって生成されたLoD及び逆量子化済み残差情報によって生成された逆量子化済み残差情報を用いて、LoDで規定した階層構造に基づいて各点の属性情報を復号するように構成されている。逆リフティングの具体的な処理としては、例えば、非特許文献1に記載の方法を用いることができる。
【0044】
逆色変換部2110は、復号対象の属性情報が色情報であり且つ点群符号化装置100側で色変換が行われていた場合に、RAHT部2080又は逆リフティング部2100から出力される属性情報に逆色変換処理を行うように構成されている。かかる逆色変換処理の実行有無については、属性情報復号部2060によって復号された制御データによって決定される。
【0045】
点群復号装置200は、以上の処理により、点群内の各点の属性情報を復号して出力するように構成されている。
【0046】
(幾何情報復号部2010)
以下、図3図4を用いて幾何情報復号部2010で復号される制御データについて説明する。
【0047】
図3は、幾何情報復号部2010で受信する符号化データ(ビットストリーム)の構成の一例である。
【0048】
第1に、ビットストリームは、GPS2011を含んでいてもよい。GPS2011は、ジオメトリパラメータセットとも呼ばれ、幾何情報の復号に関する制御データの集合である。具体例については後述する。各GPS2011は、複数のGPS2011が存在する場合に個々を識別するためのGPS id情報を少なくとも含む。
【0049】
第2に、ビットストリームは、GSH2012A/2012Bを含んでいてもよい。G
SH2012A/2012Bは、ジオメトリスライスヘッダ或いはジオメトリデータユニ
ットヘッダとも呼ばれ、後述するスライスに対応する制御データの集合である。以降では、スライスという呼称を用いて説明するが、スライスをデータユニットと読み替えることもできる。具体例については後述する。GSH2012A/2012Bは、各GSH20
12A/2012Bに対応するGPS2011を指定するためのGPS id情報を少な
くとも含む。
【0050】
第3に、ビットストリームは、GSH2012A/2012Bの次に、スライスデータ
2013A/2013Bを含んでいてもよい。スライスデータ2013A/2013Bには、幾何情報を符号化したデータが含まれている。スライスデータ2013A/2013B
の一例としては、後述するoccupancy codeが挙げられる。
【0051】
以上のように、ビットストリームは、各スライスデータ2013A/2013Bに、1
つずつGSH2012A/2012B及びGPS2011が対応する構成となる。
【0052】
上述のように、GSH2012A/2012Bにて、どのGPS2011を参照するか
をGPS id情報で指定するため、複数のスライスデータ2013A/2013Bに対
して共通のGPS2011を用いることができる。
【0053】
言い換えると、GPS2011は、スライスごとに必ずしも伝送する必要がない。例えば、図3のように、GSH2012B及びスライスデータ2013Bの直前では、GPS2011を符号化しないようなビットストリームの構成とすることもできる。
【0054】
なお、図3の構成は、あくまで一例である。各スライスデータ2013A/2013B
に、GSH2012A/2012B及びGPS2011が対応する構成となっていれば、
ビットストリームの構成要素として、上述以外の要素が追加されてもよい。例えば、ビットストリームは、シーケンスパラメータセット(SPS)を含んでいてもよい。また、同様に、伝送に際して、図3と異なる構成に整形されてもよい。更に、後述する属性情報復号部2060で復号されるビットストリームと合成して単一のビットストリームとして伝送されてもよい。
【0055】
図4は、GPS2011のシンタックス構成の一例である。
【0056】
なお、以下で説明するシンタックス名は、あくまで一例である。以下で説明したシンタックスの機能が同様であれば、シンタックス名は異なっていても差し支えない。
【0057】
GPS2011は、各GPS2011を識別するためのGPS id情報(gps_g
eom_parameter_set_id)を含んでもよい。
【0058】
なお、図4のDescriptor欄は、各シンタックスが、どのように符号化されているかを意味している。ue(v)は、符号無し0次指数ゴロム符号であることを意味し、u(1)は、1ビットのフラグであることを意味する。
【0059】
GPS2011は、ツリー合成部2020でPredicitive codingを使用するかどうかを制御するためのフラグ(gps_predictive_mode_e
nabled_flag)を含んでもよい。
【0060】
例えば、gps_predictive_mode_enabled_flagの値が「1」の場合は、Predicitive codingを使用すると定義し、gps_pr
edictive_mode_enabled_flagの値が「0」の場合は、Pred
icitive codingを使用しないように定義されていてもよい。
【0061】
GPS2011は、ツリー合成部2020でPlanar modeを使用するかどうかを制御するフラグ(geometry_planar_mode_flag)を含んでも
よい。
【0062】
例えば、geometry_planar_mode_flagの値が「1」の場合は、
Planar modeを使用すると定義し、geometry_planar_mode_flagの値が「0」の場合は、Planar modeを使用しないように定義され
ていてもよい。
【0063】
GPS2011は、ツリー合成部2020で「QtBt」を行うかどうかを制御するためのフラグ(geom_tree_coded_axis_list_present_flag)を含んでもよい。
【0064】
例えば、geom_tree_coded_axis_list_present_flagの値が「1」の場合は、「QtBt」を行うと定義し、geom_tree_coded_
axis_list_present_flagの値が「0」の場合は、「Octree」
のみを行うと定義してもよい。
【0065】
或いは、geom_tree_coded_axis_list_present_flagの値が「1」の場合は、ノード形状として立方体以外の直方体も許容する(すなわち、「QtBt」も使用する)と定義し、geom_tree_coded_axis_list_
present_flagの値が「0」の場合は、ノード形状として立方体のみ許可する
(すなわち「Octree」のみを行う)と定義してもよい。
【0066】
上述の定義以外でも、「QtBt」が使用可能か否かを制御するように定義されていればよい。
【0067】
なお、geometry_planar_mode_flag及びgeom_tree_c
oded_axis_list_present_flagは、Predicitive codingを使用しない場合のみ復号されるように定義されていてもよい。
【0068】
(ツリー合成部2020)
図5図8を用いて、ツリー合成部2020の処理の一例を説明する。図5は、ツリー合成部2020の処理の一例を示すフローチャートである。
【0069】
図5に示すように、ステップS501において、ツリー合成部2020は、Predicitive codingを適用するか否かを判定する。
【0070】
例えば、ツリー合成部2020は、gps_predictive_mode_enab
led_flagの値を参照して、Predicitive codingを適用するか
否かを判断することができる。
【0071】
ツリー合成部2020は、Predicitive codingを適用すると判断した場合は、ステップS502の処理へ進み、Predicitive codingを適用しないと判断した場合は、ステップS504の処理へ進む。
【0072】
ステップS502において、ツリー合成部2020は、該当するスライス内に含まれる全ての点群データの位置情報の復号が完了したかどうかを判定する。
【0073】
ステップS502の処理は、例えば、GSHに、かかるスライスに含まれる点群データの数を示す情報を伝送しておき、かかる点群データ数と既に処理したデータ数とを比較することで、全ての点の処理が完了したか否かを判定することができる。
【0074】
ツリー合成部2020は、全ての点群データの位置情報(点群の全ての点の位置情報)
の復号が完了した場合は、ステップS507の処理へ進み、処理を終了する。一方、ツリー合成部2020は、全ての点群データの位置情報(点群内の全ての点の位置情報)の復号が完了していない場合は、ステップS503の処理へ進む。
【0075】
ステップS503において、ツリー合成部2020は、Predicitive codingによって点群データの1点の位置情報(点群内の1つの点の位置情報)を復号する。
【0076】
Predicitive codingは、復号済みの点群データから予測した位置情報と当該点群データの位置情報との差分を復号し、両者を加算することで、当該点群データの位置情報を復号する手段である。具体的な方法は、例えば、非特許文献2に記載の手法で実現できる。
【0077】
ツリー合成部2020は、ステップS503において点群データの1点の位置情報を復号した後、ステップS502の処理へ戻る。
【0078】
ツリー合成部2020は、Predicitive codingを適用すると判断した場合、ステップS502及びステップS503を繰り返し実行することで、全ての点群データの位置情報を復号することができる。
【0079】
ここで、ツリー合成部2020は、位置情報を復号した点群データの各点について、ステップS503で復号した順に昇順でindex(インデックス)を振ってもよい。更に、ツリー合成部2020は、かかるindexを順番に一次元の配列データOrder[i]に格納しておいてもよい。
【0080】
以上のように、ツリー合成部2020は、位置情報の復号方法の手段として、Predicitive codingを備え、Predicitive codingにおける復号順に基づいて、かかる点群データの各点に対してindexを付与し、かかるIndexを一次元の配列に格納するように構成されてもよい。
【0081】
このような構成とすることで、後述するLoD算出部2090においてソート処理が実行されなかった場合も、属性情報の復号処理を行う順序が一意に決定するため、復号した位置情報と属性情報とが一意に対応付けられるようになる。
【0082】
次に、Predicitive codingを適用しない場合の処理について説明する。
【0083】
ステップS504において、ツリー合成部2020は、「Octree」又は「QtBt」を適用する場合のツリー構造について、全てのDepthの処理を完了したかどうかを確認する。
【0084】
かかるスライスのDepthの値は、例えば、GSHで伝送しておくことができる。ツリー合成部2020は、かかるスライスのDepth値と既に処理したDepthの値とを比較することで、全てのDepthについて処理が完了したかどうかを判定することができる。
【0085】
ツリー合成部2020は、全てのDepthの処理が完了した場合には、ステップS507の処理へ進み、処理を終了する。一方、ツリー合成部2020は、全てのDepthの処理が完了していない場合は、ステップS505の処理へ進む。
【0086】
ステップS505において、ツリー合成部2020は、当該Depth内の全てのノードについて処理が完了したかどうかを判定する。
【0087】
当該Depth内に含まれるノード数については、直前に処理したDepthでのノード情報復号処理(ステップS506)の結果から算出することができる。また、最初に処理するDepthに含まれるノード数は1である。
【0088】
ツリー合成部2020は、当該Depthに含まれる全ノードの処理が完了した場合には、ステップS504の処理へ戻る。一方、ツリー合成部2020は、全ノードの処理が完了していない場合には、ステップS506の処理へ進む。
【0089】
ステップS506において、ツリー合成部2020は、「Octree」を用いる場合は、当該ノードを8分割で子ノードに分割し、「QtBt」を用いる場合は、該ノードを8分割、4分割又は2分割のいずれかで子ノードに分割し、Occupancy code等の情報に基づいて各子ノードに点群データが含まれるかどうかを示すOccupancy mapを復号する。
【0090】
例えば、Occupancy mapの値が「1」の場合は、対応する子ノード内に点群データが存在すると定義できる。また、例えば、Occupancy mapの値が「0」の場合は、対応する子ノード内に点群データが存在しないか或いは当該子ノード自体が存在しないと定義できる。
【0091】
よって、ツリー合成部2020は、同一のDepth内でOccupancy mapの値が「1」となっている子ノードの数をカウントすることで、次に処理するDepth内のノード数を知ることができる。ステップS506の具体的な処理の例は、後述する。
【0092】
ツリー合成部2020は、1つのノードについてOccupancy mapの生成が完了したら、ステップS505の処理へ戻る。
【0093】
以上のように、ツリー合成部2020は、Predicitive codingを適用しない場合は、ステップS504~506の処理を繰り返しながら、ノードサイズが1×1×1になるまでノードを再帰的に分割することで、点群データの位置情報を復号することができる。
【0094】
ここで、位置情報を復号した点群データの各点について、ステップS506で復号した順に昇順でindexを振り、index順に一次元の配列データOrder[i]に格納しておいてもよい。
【0095】
また、以上のように、ツリー合成部2020は、復号対象の点群データの各点について位置情報を復号し、位置情報を復号した順に昇順で各点にindexを付与してもよい。更に、ツリー合成部2020は、かかるindexを一次元の配列に格納するように構成されていてもよい。
【0096】
このような構成とすることで、後述するLoD算出部2090においてソート処理が実行されなかった場合も、属性情報の復号処理を行う順序が一意に決定するため、復号した位置情報と属性情報とが一意に対応付けられるようになる。
【0097】
図6は、ステップS506におけるノード情報復号処理の一例を示すフローチャートである。
【0098】
ステップS601において、ツリー合成部2020は、当該ノードの軸方向ごと(例えば、x軸、y軸、z軸のそれぞれ)について、Planar modeが適用可能かどうかを判定する。
【0099】
ツリー合成部2020は、Planar modeが適用可能な場合は、ステップS602の処理へ進む。一方、ツリー合成部2020は、Planar modeが適用不可の場合は、ステップS603の処理へ進む。
【0100】
ツリー合成部2020は、例えば、軸方向ごとにPlanar modeの適用可否を示すeligible_planar_flagを先に導出し、かかるeligible_
planar_flagの値を参照することで、Planar modeの適用可否を判
定することができる。
【0101】
例えば、eligible_planar_flagの値が「1」の時、当該ノードの当該軸方向にPlanar modeを適用可能であると定義し、eligible_pl
anar_flagの値が「0」の時、当該ノードの当該軸方向にPlanar mod
eを適用不可であると定義してもよい。
【0102】
ここで、当該ノードの当該軸方向が「QtBt」の適用により分割されない場合、対応するeligible_planar_flagの値を「0」に、すなわち、Planar
modeを適用不可に設定してもよい。
【0103】
すなわち、当該ノードの軸方向ごとにPlanar modeの適用可否を示すフラグを生成し、当該ノードが4分木分割又は2分木分割される場合、分割が発生しない軸方向に対応するPlanar modeの適用可否を示すフラグの値を、Planar mode適用不可を示す値に設定するように構成されていてもよい。
【0104】
ここで、当該ノードの当該軸方向が分割されるか否かは、種々の方法を用いて決定することができる。例えば、非特許文献1のように、事前に定めたルール及びノード形状により暗黙的に決定してもよいし、明示的に点群符号化装置100側で決定してビットストリームを介して伝送してもよい。
【0105】
例えば、GSHに、各Depthにて、どの軸方向を分割するかという情報を3ビット(各ビットがそれぞれ各軸方向に対応)ずつのシンタックスとして伝送してもよい。例えば、かかるビットの値が「1」の軸は分割する、かかるビットの値が「0」の軸は分割しないと定義することができる。
【0106】
ここで、例えば、当該ノードが属するDepthにおいて、当該軸方向に対応するビットが「0(=「分割しない」)」を示している場合、対応するeligible_pla
nar_flagの値を「0」に、すなわち、Planar modeを適用不可に設定
してもよい。
【0107】
ステップS602において、ツリー合成部2020は、Planar modeに関連するシンタックスを復号する。例えば、ツリー合成部2020は、非特許文献1に記載のis_planar_flagやplane_positionを復号する。ツリー合成部
2020は、かかるシンタックスを復号した後、ステップS603の処理へ進む。
【0108】
ステップS603において、ツリー合成部2020は、Mask_planarを設定
する。
【0109】
Mask_planarは、8ビットで構成されるビットマスクである。各ビットは、
当該ノードを3つの軸方向(例えばx軸、y軸、z軸)にそれぞれ2分割した場合の、各子ノードに対応している。例えば、あるビットの値が「1」であるとき、対応する子ノードが存在しない或いは対応する子ノードに点群データが存在しないと定義できる。同様に、あるビットの値が「0」であるとき、対応する子ノードに点群データが存在する可能性があると定義することができる。
【0110】
ここで、ツリー合成部2020は、「QtBt」によって分割が発生しなかった軸方向については、かかる軸方向で見たときに、座標が原点(0)に近い方の平面(Lower
plane)に属する子ノードに対応するビットは「0」となるように、座標が原点から遠い方の平面(Upper plane)に属する子ノードに対応するビットは「1」となるように、Mask_planarを設定してもよい。
【0111】
すなわち、ツリー合成部2020は、各ノードの8つの子ノードに対応するMask_
planarを生成し、当該ノードが4分木分割又は2分木分割される場合、分割されなかった軸方向の原点に近い方の平面に属する子ノードに対応するMask_planar
の値を「0」に設定し、分割されなかった軸方向の原点に遠い方の平面に属する子ノードに対応するMask_planarの値を「1」に設定するように構成されていてもよい
【0112】
かかる具体例を、図8に示す。
【0113】
例えば、図8(a)のように、当該ノードがz軸方向に分割されないようにQt(4分木分割)される場合、Mask_planarは、図8(a)に示すように、z軸方向の
Lower planeに対応するビットが「0」となり、z軸方向のUpper planeに対応するビットが「1」となる。なお、図8(a)においてpositionとして記載しているa~hのラベルは、図8(c)に記載の各子ノードの位置と対応している。
【0114】
同様に、図8(b)のように、x軸方向及びy軸方向の両方が分割されないようにBt(二分木分割)されている場合は、x軸方向及びy軸方向両方のLower planeに属する子ノードに対応するビットのみが「0」となり、それ以外のビットは「1」となる。
【0115】
以上のように、ツリー合成部2020は、Mask_planarを設定した後、ステ
ップS604の処理へ進む。
【0116】
ステップS604において、ツリー合成部2020は、Occupancy mapを復号する。ここで、Occupancy mapの復号には、上述のMask_plan
ar及び点群符号化装置100から伝送されたビットストリームに含まれるOccupancy codeが用いられる。
【0117】
Occupancy mapは、上述のMask_planarと同様に、8ビットで
構成されている。各ビットは、Mask_planarと同様に、当該ノードを3つの軸
方向(例えば、x軸、y軸、z軸)にそれぞれ2分割した場合の、各子ノードに対応している。
【0118】
ここで、ツリー合成部2020は、Mask_planarの値が「1」の子ノードに
ついては、Occupancy mapの対応するビットを「0(当該子ノードに点群データが存在しない)」と復号する。
【0119】
一方、ツリー合成部2020は、Mask_planarの値が「0」の子ノードにつ
いては、Occupancy codeを復号し、Occupancy codeの値が「1(当該子ノードに点群データが存在する)」の場合は、対応するOccupancy
mapのビットを「1」に設定し、Occupancy codeの値が「0(当該子ノードに点群データが存在しない)」の場合は、対応するOccupancy mapのビットを「0」に設定する。
【0120】
すなわち、ツリー合成部2020は、当該ノードの各子ノードに点群データが存在するか否かを示すOccupancy mapを復号し、上述のMask_planarの値
が「1」の子ノードに対しては、対応するOccupancy mapの値を「0」とし、上述のMask_planarの値が「0」の子ノードに対しては、ビットストリーム
に含まれるOccupancy codeの値を参照してOccupancy mapの値を設定するように構成されていてもよい。
【0121】
以上のような構成とすることで、Planar modeのために設けられたMask_planarを用いて「QtBt」時の制御を実現することができるため、仕様やそれ
に基づく装置の設計を簡素化することができる。
【0122】
なお、以上で説明したMask_planarの値は一例であり、上記で説明した「0
」と「1」のビットの意味を入れ替えてもよい。
【0123】
以上のように、ツリー合成部2020は、各ノードに対応する8ビットのOccupancy mapを復号できる。ツリー合成部2020は、Occupancy mapの復号後、ステップS605の処理へ進み、処理を終了する。
【0124】
なお、以上の手順は、図7に記載のように順番を入れ替えることもできる。具体的には、ツリー合成部2020は、Mask_planar設定及びOccupancy ma
p復号を先に行い、その後、Planar modeの利用可否の判断及びPlanar
modeに関連するシンタックスの復号処理を実行することもできる。
【0125】
この場合、Planar modeの利用可否の判断及びPlanar modeに関連するシンタックスの復号処理は、当該ノードについてではなく、当該ノードの各子ノードについてそれぞれ実行される。よって、ステップS701を追加し、ツリー合成部2020は、Occupancy mapで点群データが存在すると復号された全ての子ノードについて処理が完了するまでループ処理を行う。
【0126】
(属性情報復号部2060)
以下、図9及び図10を用いて、属性情報復号部2060で復号される制御データについて説明する。
【0127】
図9は、幾何情報復号部2060で受信する符号化データ(ビットストリーム)の構成の一例である。
【0128】
第1に、ビットストリームは、APS2061を含んでいてもよい。APS2061は、アトリビュートパラメータセットとも呼ばれ、属性情報の復号に関する制御データの集合である。具体例については後述する。各APS2061は、複数のAPS2061が存在する場合に個々を識別するためのAPS id情報を少なくとも含む。
【0129】
第2に、ビットストリームは、ASH2062A/2062Bを含んでいてもよい。A
SH2062A/2062Bは、アトリビュートスライスヘッダとも呼ばれ、後述するス
ライスに対応する制御データの集合である。具体例については後述する。ASH2062A/2062Bは、各ASH2062A/2062Bに対応するAPS2061を指定するためのAPS id情報を少なくとも含む。
【0130】
第3に、ビットストリームは、ASH2062A/2062Bの次に、スライスデータ
2063A/2063Bを含んでいてもよい。スライスデータ2063A/2063Bには、属性情報を符号化したデータが含まれている。
【0131】
以上のように、ビットストリームは、各スライスデータ2063A/2063Bに、1
つずつASH2062A/2062B及びAPS2061が対応する構成となる。
【0132】
上述のように、ASH2062A/2062Bにて、どのAPS2061を参照するか
をAPS id情報で指定するため、複数のスライスデータ2063A/2063Bに対
して共通のAPS2061を用いることができる。
【0133】
言い換えると、APS2061は、スライスごとに必ずしも伝送する必要がない。例えば、図9のように、ASH2062B及びスライスデータ2063Bの直前では、APS2061を符号化しないようなビットストリームの構成とすることもできる。
【0134】
なお、図9の構成は、あくまで一例である。各スライスデータ2063A/2063B
に、ASH2062A/2062B及びAPS2061が対応する構成となっていれば、
ビットストリームの構成要素として、上述以外の要素が追加されてもよい。例えば、ビットストリームは、シーケンスパラメータセット(SPS)を含んでいてもよい。
【0135】
また、同様に、伝送に際して、図9と異なる構成に整形されてもよい。更に、前記幾何情報復号部2010で復号されるビットストリームと合成して単一のビットストリームとして伝送されてもよい。例えば、スライスデータ2013A及び2063A、スライスデータ2013B及び2063Bを、それぞれ単一のスライスデータとして扱い、各スライスの直前にGSH2012A及びASH2062A、GSH2012B及びASH2062Bを、それぞれ配置する構成となっていてもよい。また、その際、各GSH及びASHに先立って、GPS2011及びAPS2061が配置されていてもよい。
【0136】
図10は、APS2061のシンタックス構成の一例である。
【0137】
APS2061は、各APS2061を識別するためのAPS id情報(aps_a
ttr_parameter_set_id)を含んでもよい。
【0138】
APS2061は、属性情報の復号方法を示す情報(attr_coding_type)を含んでもよい。例えば、attr_coding_typeの値が「0」の時は、逆リフティング部2100において可変の重み付きリフティング予測を行い、attr_co
ding_typeの値が「1」の時は、RAHT部2080にてRAHTを行い、at
tr_coding_typeの値が「2」の時は、逆リフティング部2100において固定の重みでのリフティング予測を行うというように規定されていてもよい。
【0139】
APS2061は、attr_coding_typeの値が「2」の時、すなわち、逆リフティング部2100において固定の重みでのリフティング予測を行う場合、スケーラブルリフティングを適用するかどうかを示すフラグ(lifting_scalabil
ity_enabled_flag)を含んでもよい。
【0140】
lifting_scalability_enabled_flagの値が「0」の場
合は、スケーラブルリフティングを適用しないと規定し、lifting_scalab
ility_enabled_flagの値が「1」の場合は、スケーラブルリフティングを適用すると規定されていてもよい。
【0141】
また、lifting_scalability_enabled_flagの値が「1
」の場合、すなわち、スケーラブルリフティングを適用する場合は、上述のように、画像復号装置200の実行時の外部パラメータとして、skipOctreeLayersを取得するよう規定されていてもよい。
【0142】
また、上述の「QtBt」を適用する場合、すなわち、geom_tree_coded_axis_list_present_flagの値が「1」の場合は、スケーラブルリフティングを適用しないこと、すなわち、lifting_scalability_enabled_flagの値が必ず「0」であることと規定されていてもよい。
【0143】
すなわち、「QtBt」を適用するかどうかを制御するフラグを復号する幾何情報復号部2010と、「スケーラブルリフティング」を適用するかどうかを制御するフラグを復号する属性情報復号部2060とを備え、「QtBt」が適用される場合には、「スケーラブルリフティング」は適用されないように制約されていてもよい。
【0144】
このように、「QtBt」とスケーラブルリフティングとを排他的に適用するように制約を掛けることで、機能の組み合わせを削減することで仕様をシンプルにし、実装を容易にできる。
【0145】
例えば、スケーラブルリフティングを適用する場合は、必ず「Octree」を適用するように制約することで、スケーラブルリフティングの処理において、ノード形状は必ず立方体であり、各分割で必ず8分木分割をする前提で処理が実行できるため、ノード形状が直方体で、分割の種類が8分木分割に加えて4分木及び2分木分割も許可されている場合と比較して、仕様を簡素化することができる。
【0146】
APS2061は、LoD算出部2090で算出するLoDのレベル数を指定するシンタックス(lifting_num_detail_levels_minus1)を含んでもよい。LoDの値は、1以上の整数値である必要があるため、例えば、当該シンタックスは、0以上の整数値としておき、当該シンタックスの値に「1」を加えた値を、LoDのレベル数としてもよい。
【0147】
APS2061は、LoD算出部2090におけるソート処理を実行するか否かを制御するフラグ(lifting_morton_sort_skip_enabled_fla
g)を含んでもよい。
【0148】
例えば、lifting_morton_sort_skip_enabled_flag
の値が「0」の時は、ソート処理を実行し、lifting_morton_sort_s
kip_enabled_flagの値が「1」の時は、ソート処理を実行しないと定義してもよい。
【0149】
また、例えば、lifting_morton_sort_skip_enabled_f
lagは、上述のlifting_num_detail_levels_minus1の値が「0」の場合、すなわち、LoDのレベル数が「1」の場合のみ、APS2061に含まれるように定義してもよい。
【0150】
gps_predictive_mode_enabled_flagの値が「0」の時、すなわち、Predicitive codingを適用しない時は、lifting_
morton_sort_skip_enabled_flagの値は必ず「0」であることという制約を定義してもよい。
【0151】
すなわち、Predicitive codingの適用可否を制御するフラグを復号する幾何情報復号部2010と、復号対象の点群データの属性情報の復号に先立って、かかる点群データを復号した位置情報に基づいてソートする処理を実行するか否かを制御するフラグを復号する属性情報復号部2060を備え、かかるPredicitive codingの適用可否を制御するフラグがPredicitive codingが適用不可であること示しているとき、ソートする処理を実行するか否かを制御するフラグの値が必ず「ソート処理を実行する」ということを意味する値に設定されていなければならないという制約を備えるように構成されていてもよい。
【0152】
また、属性情報の復号における「ソート処理を実行しない」という機能は、点群符号化装置100側での低遅延処理(符号化対象の点群データが入力されてから、対応する点群データがビットストリームに出力されるまでの遅延時間の短縮)を実現する機能である。かかる機能は、位置情報を逐次的に復号するPredicitive codingと組み合わせることで、特にその機能を発揮することができる。
【0153】
よって、「ソート処理を実行しない」という機能をPredicitive codingとの組み合わせのみに限定することで、機能の効果を保持しつつ、設計や検証を容易にすることができる。
【0154】
(LoD算出部2090)
以下、図11を用いて、LoD算出部2090の処理内容の一例について説明する。
【0155】
図11は、LoD算出部2090のフローチャートの一例である。
【0156】
ステップS1101において、LoD算出部2090は、幾何情報再構成部2040から出力された点群内の各点の位置情報を並び替える処理(ソート)を行う。
【0157】
具体的には、例えば、LoD算出部2090は、ツリー合成部2020によって生成された各点群データの位置情報に付与されたindexを昇順に格納した一次元の配列データOrder[i]を入力として、かかる位置情報に基づいてソートした結果で一次元の配列データOrder[i]を更新してもよい。LoD算出部2090は、例えば、かかる位置情報から生成できるMorton codeの昇順となるように、かかる位置情報をソートしてもよい。
【0158】
また、ソート処理を実行するか否かを制御するフラグ(lifting_morton_sort_skip_enabled_flag)が、ソート処理を実行しないことを示す
値をとっているとき、例えば、上述の例では、lifting_morton_sort_
skip_enabled_flagの値が「1」の時、LoD算出部2090は、かかるソート処理を実行しないこととしてもよい。
上述のソート処理が実行されない時、点群データの各点のindexは、ツリー合成部2020での復号順に付与されることと規定してもよい。更に、点群データの各点のindexは、かかるindexの昇順に一次元の配列データOrder[i]に格納されることと規定してもよい。
【0159】
上述のソート処理が実行されず、かつ、ツリー合成部2020でPredicitiv
e codingを適用すると判断された場合、点群データの各点のindexは、ツリー合成部2020でのPredicitive codingによる復号順に付与されることと規定してもよい。更に、点群データの各点のindexは、かかるindexの昇順に一次元の配列データOrder[i]に格納されることと規定してもよい。
【0160】
すなわち、LoD算出部2090は、復号対象の点群データの属性情報の復号に先立って、点群データを復号した位置情報に基づいてソートする処理を実行するか否かを決定し、ソート処理を実行しなかった場合は、一次元の配列に格納されたindexの順序に基づいて属性情報の復号を行うように構成されていてもよい。
【0161】
以上のような構成とすることで、上述のソート処理が実行されなかった場合も、属性情報の復号処理を行う順序が一意に決定するため、復号した位置情報と属性情報とが一意に対応付けられるようになる。
【0162】
以上のように、LoD算出部2090は、上述のソート処理を実行又は省略した後、ステップS1102の処理へ進む。
【0163】
ステップS1102において、LoD算出部2090は、各点の位置情報について、それぞれLoDを算出する。具体的なLoDの算出方法は、既知の手法が適用できるため、詳細な説明は省略する。
【0164】
LoD算出部2090は、各点群データのLoDを算出した後、ステップS1103の処理へ進む。
【0165】
ステップS1103において、LoD算出部2090は、各ノードについて、当該ノードのLoDより上位のLoDに属するノードを対象に、k最近傍探索を行う。具体的なk最近傍探索の方法は、既知の手法が適用できるため、詳細な説明は省略する。
【0166】
LoD算出部2090は、全てのノードについてk最近傍探索を行った後、ステップS1104の処理へ進み、終了する。
【0167】
また、上述の点群符号化装置100及び点群復号装置200は、コンピュータに各機能(各工程)を実行させるプログラムであって実現されていてもよい。
【0168】
なお、上記の各実施形態では、本発明を点群符号化装置100及び点群復号装置200への適用を例にして説明したが、本発明は、かかる例のみに限定されるものではなく、点群符号化装置100及び点群復号装置200の各機能を備えた点群符号化/復号システム
にも同様に適用できる。
【符号の説明】
【0169】
10…点群処理システム
100…点群符号化装置
200…点群復号装置
2010…幾何情報復号部
2020…ツリー合成部
2030…近似表面合成部
2040…幾何情報再構成部
2050…逆座標変換部
2060…属性情報復号部
2070…逆量子化部
2080…RAHT部
2090…LoD算出部
2100…逆リフティング部
2110…逆色変換部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11