JP2024058011A - Point group decoding device, point group decoding method and program - Google Patents
Point group decoding device, point group decoding method and program Download PDFInfo
- Publication number
- JP2024058011A JP2024058011A JP2022165087A JP2022165087A JP2024058011A JP 2024058011 A JP2024058011 A JP 2024058011A JP 2022165087 A JP2022165087 A JP 2022165087A JP 2022165087 A JP2022165087 A JP 2022165087A JP 2024058011 A JP2024058011 A JP 2024058011A
- Authority
- JP
- Japan
- Prior art keywords
- node
- vertex
- trisoup
- synthesis unit
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims description 104
- 230000015572 biosynthetic process Effects 0.000 claims abstract description 189
- 238000003786 synthesis reaction Methods 0.000 claims abstract description 189
- 238000012545 processing Methods 0.000 claims abstract description 95
- 238000013139 quantization Methods 0.000 description 21
- 238000006243 chemical reaction Methods 0.000 description 18
- 238000004364 calculation method Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 12
- 239000013598 vector Substances 0.000 description 11
- 238000004458 analytical method Methods 0.000 description 9
- 230000009466 transformation Effects 0.000 description 9
- 238000005211 surface analysis Methods 0.000 description 6
- 238000012546 transfer Methods 0.000 description 6
- 230000003044 adaptive effect Effects 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
【課題】符号化効率を向上させること。【解決手段】本発明に係る点群復号装置200は、互いに異なるサイズを持つノード同士の境界において、ノードサイズが大きい方のノードの頂点を用いて、頂点の内挿処理を行い、内挿処理が行われた頂点が、ノードサイズが小さい方のノードの辺上に存在するとき、記内挿処理が行われた頂点をノードサイズが小さい方のノードの辺の頂点としてTrisoup処理を実行する近似表面合成部2030を備える。【選択図】図2[Problem] To improve coding efficiency. [Solution] The point cloud decoding device 200 according to the present invention includes an approximate surface synthesis unit 2030 that performs vertex interpolation processing using vertices of a node with a larger node size at the boundary between nodes with different sizes, and, when the vertex that has undergone the interpolation processing exists on an edge of a node with a smaller node size, performs Trisoup processing with the vertex that has undergone the interpolation processing as a vertex of the edge of the node with the smaller node size. [Selected Figure] Figure 2
Description
本発明は、点群復号装置、点群復号方法及びプログラムに関する。 The present invention relates to a point cloud decoding device, a point cloud decoding method, and a program.
非特許文献1では、Trisoupと呼ばれる幾何情報の符号化技術が開示されている。
Non-Patent
しかしながら、非特許文献1の方法では、スライス毎に固定のノードサイズでしかTrisoupを実行できないという問題点があった。
However, the method in Non-Patent
そこで、本発明は、上述の課題に鑑みてなされたものであり、異なるノードサイズのノードの境界において、小さなノードサイズにおける頂点を復号する代わりに、大きなノードサイズの頂点から内挿した値を用いることで、符号化効率の向上が期待できる点群復号装置、点群復号方法及びプログラムを提供することを目的とする。 The present invention has been made in consideration of the above-mentioned problems, and aims to provide a point cloud decoding device, a point cloud decoding method, and a program that are expected to improve coding efficiency by using values interpolated from vertices of larger node sizes at the boundaries between nodes of different node sizes, instead of decoding vertices of smaller node sizes.
本発明の第1の特徴は、点群復号装置であって、互いに異なるサイズを持つノード同士の境界において、ノードサイズが大きい方のノードの頂点を用いて、頂点の内挿処理を行い、前記内挿処理が行われた頂点が、ノードサイズが小さい方のノードの辺上に存在するとき、前記内挿処理が行われた頂点を前記ノードサイズが小さい方のノードの辺の頂点としてTrisoup処理を実行する近似表面合成部を備えることを要旨とする。 The first feature of the present invention is a point cloud decoding device that includes an approximate surface synthesis unit that performs vertex interpolation processing at the boundary between nodes having different sizes, using the vertices of the node with the larger node size, and when the vertex that has undergone the interpolation processing exists on an edge of the node with the smaller node size, performs a Trisoup processing with the vertex that has undergone the interpolation processing as the vertex of the edge of the node with the smaller node size.
本発明の第2の特徴は、点群復号方法であって、互いに異なるサイズを持つノード同士の境界において、ノードサイズが大きい方のノードの頂点を用いて、頂点の内挿処理を行う工程と、前記内挿処理が行われた頂点が、ノードサイズが小さい方のノードの辺上に存在するとき、前記内挿処理が行われた頂点を前記ノードサイズが小さい方のノードの辺の頂点としてTrisoup処理を実行する工程とを有することを要旨とする。 The second feature of the present invention is a point cloud decoding method that includes the steps of: performing vertex interpolation processing at the boundary between nodes having different sizes, using the vertices of the node with the larger node size; and, when the vertex on which the interpolation processing has been performed is on an edge of the node with the smaller node size, performing a Trisoup processing with the vertex on which the interpolation processing has been performed as the vertex of the edge of the node with the smaller node size.
本発明の第3の特徴は、コンピュータを、点群復号装置として機能させるプログラムであって、前記点群復号装置は、互いに異なるサイズを持つノード同士の境界において、ノードサイズが大きい方のノードの頂点を用いて、頂点の内挿処理を行い、前記内挿処理が行われた頂点が、ノードサイズが小さい方のノードの辺上に存在するとき、前記内挿処理が行われた頂点を前記ノードサイズが小さい方のノードの辺の頂点としてTrisoup処理を実行する近似表面合成部を備えることを要旨とする。 The third feature of the present invention is a program that causes a computer to function as a point cloud decoding device, and the point cloud decoding device is provided with an approximate surface synthesis unit that performs vertex interpolation processing using vertices of a node with a larger node size at the boundary between nodes with different sizes, and when the vertex that has undergone the interpolation processing is on an edge of a node with a smaller node size, performs a Trisoup processing with the vertex that has undergone the interpolation processing as a vertex of the edge of the node with the smaller node size.
本発明によれば、異なるノードサイズのノードの境界において、小さなノードサイズにおける頂点を復号する代わりに、大きなノードサイズの頂点から内挿した値を用いることで、符号化効率の向上が期待できる点群復号装置、点群復号方法及びプログラムを提供することができる。 According to the present invention, it is possible to provide a point cloud decoding device, a point cloud decoding method, and a program that can be expected to improve coding efficiency by using values interpolated from vertices of a larger node size at the boundary between nodes of different node sizes instead of decoding vertices of a smaller node size.
以下、本発明の実施の形態について、図面を参照しながら説明する。なお、以下の実施形態における構成要素は、適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組み合わせを含む様々なバリエーションが可能である。したがって、以下の実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。 The following describes embodiments of the present invention with reference to the drawings. Note that the components in the following embodiments can be replaced with existing components as appropriate, and various variations, including combinations with other existing components, are possible. Therefore, the description of the following embodiments does not limit the content of the invention described in the claims.
(第1実施形態)
以下、図1~図17を参照して、本発明の第1実施形態に係る点群処理システム10について説明する。図1は、本実施形態に係る実施形態に係る点群処理システム10を示す図である。
First Embodiment
A point
図1に示すように、点群処理システム10は、点群符号化装置100及び点群復号装置200を有する。
As shown in FIG. 1, the point
点群符号化装置100は、入力点群信号を符号化することによって符号化データ(ビットストリーム)を生成するように構成されている。点群復号装置200は、ビットストリームを復号することによって出力点群信号を生成するように構成されている。
The point
なお、入力点群信号及び出力点群信号は、点群内の各点の位置情報と属性情報とから構成される。属性情報は、例えば、各点の色情報や反射率である。 The input point cloud signal and the output point cloud signal are composed of position information and attribute information of each point in the point cloud. The attribute information is, for example, color information and reflectance of each point.
ここで、かかるビットストリームは、点群符号化装置100から点群復号装置200に対して伝送路を介して送信されてもよい。また、ビットストリームは、記憶媒体に格納された上で、点群符号化装置100から点群復号装置200に提供されてもよい。
Here, such a bit stream may be transmitted from the point
(点群復号装置200)
以下、図2を参照して、本実施形態に係る点群復号装置200について説明する。図2は、本実施形態に係る点群復号装置200の機能ブロックの一例について示す図である。
(Point Cloud Decoding Device 200)
Hereinafter, the point
図2に示すように、点群復号装置200は、幾何情報復号部2010と、ツリー合成部2020と、近似表面合成部2030と、幾何情報再構成部2040と、逆座標変換部2050と、属性情報復号部2060と、逆量子化部2070と、RAHT部2080と、LoD算出部2090と、逆リフティング部2100と、逆色変換部2110とを有する。
As shown in FIG. 2, the point
幾何情報復号部2010は、点群符号化装置100から出力されるビットストリームのうち、幾何情報に関するビットストリーム(幾何情報ビットストリーム)を入力とし、シンタックスを復号するように構成されている。
The geometric
復号処理は、例えば、コンテクスト適応二値算術復号処理である。ここで、例えば、シンタックスは、位置情報の復号処理を制御するための制御データ(フラグやパラメータ)を含む。 The decoding process is, for example, a context-adaptive binary arithmetic decoding process. Here, for example, the syntax includes control data (flags and parameters) for controlling the decoding process of the position information.
ツリー合成部2020は、幾何情報復号部2010によって復号された制御データ及び後述するツリー内のどのノードに点群が存在するかを示すoccupancy codeを入力として、復号対象空間内のどの領域に点が存在するかというツリー情報を生成するように構成されている。
The
なお、occupancy codeの復号処理をツリー合成部2020内部で行うよう構成されていてもよい。
The decoding process of the occasion code may be configured to be performed within the
本処理は、復号対象空間を直方体で区切り、occupancy codeを参照して各直方体内に点が存在するかを判断し、点が存在する直方体を複数の直方体に分割し、occupancy codeを参照するという処理を再帰的に繰り返すことで、ツリー情報を生成することができる。 This process divides the space to be decoded into rectangular parallelepipeds, refers to the occupancy code to determine whether a point exists in each rectangular parallelepiped, divides the rectangular parallelepiped in which the point exists into multiple rectangular parallelepipeds, and then refers to the occupancy code. This process is repeated recursively to generate tree information.
ここで、かかるoccupancy codeの復号に際して、後述するインター予測を用いてもよい。 Here, when decoding such an occasion code, inter prediction, which will be described later, may be used.
本実施形態では、上述の直方体を常に立方体として8分木分割を再帰的に行う「Octree」と呼ばれる手法、及び、8分木分割に加え、4分木分割及び2分木分割を行う「QtBt」と呼ばれる手法を使用することができる。QtBt」を使用するか否かは、制御データとして点群符号化装置100側から伝送される。
In this embodiment, a method called "Octree" can be used, which recursively performs octree division on the above-mentioned rectangular parallelepiped, always treating it as a cube, and a method called "QtBt" can be used, which performs quadtree division and binary tree division in addition to octree division. Whether or not to use "QtBt" is transmitted from the point
なお、本実施形態では、「Octree」によって上述の立方体が1×1×1のサイズになるまで分割を行うことで幾何情報を復号する方法を、特に「Octreeのみ」と呼ぶ。 In this embodiment, the method of decoding geometric information by dividing the above-mentioned cube using "Octree" until it becomes 1x1x1 in size is specifically referred to as "Octree only."
また、「Octree」に「QtBt」を組み合わせて使用した場合でも、上記同様に「Octree」及び「QtBt」のみで上述の直方体が1×1×1のサイズになるまで分割を行うことで幾何情報を復号する方法についても、「Octreeのみ」と呼んでもよい。 In addition, even if "Octree" is used in combination with "QtBt", the method of decrypting geometric information by dividing the above-mentioned rectangular parallelepiped until it becomes 1x1x1 size using only "Octree" and "QtBt" in the same manner as above may also be called "Octree only".
或いは、制御データによってPredictive codingを使用するように指定された場合、ツリー合成部2020は、点群符号化装置100において決定した任意のツリー構成に基づいて各点の座標を復号するように構成されている。
Alternatively, when the control data specifies that predictive coding is to be used, the
近似表面合成部2030は、ツリー合成部2020によって生成されたツリー情報を用いて近似表面情報を生成し、かかる近似表面情報に基づいて点群を復号するように構成されている。
The approximate
近似表面情報は、例えば、物体の3次元点群データを復号する際等において、点群が物体表面に密に分布しているような場合に、個々の点群を復号するのではなく、点群の存在領域を小さな平面で近似して表現したものである。 When decoding three-dimensional point cloud data of an object, for example, if the points are densely distributed on the object's surface, approximate surface information is used to represent the area in which the points exist by approximating the area using a small plane, rather than decoding each point individually.
具体的には、近似表面合成部2030は、例えば、「Trisoup」と呼ばれる手法で、近似表面情報を生成し、点群を復号することができる。「Trisoup」の具体的な処理例については後述する。また、Lidar等で取得した疎な点群を復号する場合は、本処理を省略することができる。
Specifically, the approximate
幾何情報再構成部2040は、ツリー合成部2020によって生成されたツリー情報及び近似表面合成部2030によって生成された近似表面情報を元に、復号対象の点群データの各点の幾何情報(復号処理が仮定している座標系における位置情報)を再構成するように構成されている。
The geometric
逆座標変換部2050は、幾何情報再構成部2040によって再構成された幾何情報を入力として、復号処理が仮定している座標系から、出力点群信号の座標系に変換を行い、位置情報を出力するように構成されている。
The inverse
属性情報復号部2060は、点群符号化装置100から出力されるビットストリームのうち、属性情報に関するビットストリーム(属性情報ビットストリーム)を入力とし、シンタックスを復号するように構成されている。
The attribute
復号処理は、例えば、コンテクスト適応二値算術復号処理である。ここで、例えば、シンタックスは、属性情報の復号処理を制御するための制御データ(フラグ及びパラメータ)を含む。 The decoding process is, for example, a context-adaptive binary arithmetic decoding process. Here, for example, the syntax includes control data (flags and parameters) for controlling the decoding process of the attribute information.
また、属性情報復号部2060は、復号したシンタックスから、量子化済み残差情報を復号するように構成されている。
The attribute
逆量子化部2070は、属性情報復号部2060によって復号された量子化済み残差情報と、属性情報復号部2060によって復号された制御データの一つである量子化パラメータとを元に、逆量子化処理を行い、逆量子化済み残差情報を生成するように構成されている。
The
逆量子化済み残差情報は、復号対象の点群の特徴に応じて、RAHT部2080及びLoD算出部2090のいずれかに出力される。いずれに出力されるかは、属性情報復号部2060によって復号される制御データによって指定される。
The dequantized residual information is output to either the
RAHT部2080は、逆量子化部2070によって生成された逆量子化済み残差情報及び幾何情報再構成部2040によって生成された幾何情報を入力とし、RAHT(Region Adaptive Hierarchical Transform)と呼ばれるHaar変換(復号処理においては、逆Haar変換)の一種を用いて、各点の属性情報を復号するように構成されている。RAHTの具体的な処理としては、例えば、非特許文献1に記載の方法を用いることができる。
The
LoD算出部2090は、幾何情報再構成部2040によって生成された幾何情報を入力とし、LoD(Level of Detail)を生成するように構成されている。
The
LoDは、ある点の属性情報から、他のある点の属性情報を予測し、予測残差を符号化或いは復号するといった予測符号化を実現するための参照関係(参照する点及び参照される点)を定義するための情報である。 LoD is information for defining a reference relationship (a referencing point and a referenced point) to realize predictive coding, such as predicting attribute information of a certain point from attribute information of another point and encoding or decoding the prediction residual.
言い換えると、LoDは、幾何情報に含まれる各点を複数のレベルに分類し、下位のレベルに属する点については上位のレベルに属する点の属性情報を用いて属性を符号化或いは復号するといった階層構造を定義した情報である。 In other words, LoD is information that defines a hierarchical structure in which each point contained in the geometric information is classified into multiple levels, and the attributes of points belonging to lower levels are encoded or decoded using attribute information of points belonging to higher levels.
LoDの具体的な決定方法としては、例えば、上述の非特許文献1に記載の方法を用いてもよい。
As a specific method for determining LoD, for example, the method described in the above-mentioned
逆リフティング部2100は、LoD算出部2090によって生成されたLoD及び逆量子化部2070によって生成された逆量子化済み残差情報を用いて、LoDで規定した階層構造に基づいて各点の属性情報を復号するように構成されている。逆リフティングの具体的な処理としては、例えば、上述の非特許文献1に記載の方法を用いることができる。
The
逆色変換部2110は、復号対象の属性情報が色情報であり且つ点群符号化装置100側で色変換が行われていた場合に、RAHT部2080又は逆リフティング部2100から出力される属性情報に逆色変換処理を行うように構成されている。かかる逆色変換処理の実行の有無については、属性情報復号部2060によって復号された制御データによって決定される。
The inverse
点群復号装置200は、以上の処理により、点群内の各点の属性情報を復号して出力するように構成されている。
The point
(幾何情報復号部2010)
以下、図3~図5を用いて幾何情報復号部2010で復号される制御データについて説明する。
(Geometric information decoding unit 2010)
The control data decoded by the geometric
図3は、幾何情報復号部2010で受信する符号化データ(ビットストリーム)の構成の一例である。
Figure 3 shows an example of the structure of the encoded data (bit stream) received by the geometric
第1に、ビットストリームは、GPS2011を含んでいてもよい。GPS2011は、ジオメトリパラメータセットとも呼ばれ、幾何情報の復号に関する制御データの集合である。具体例については後述する。各GPS2011は、複数のGPS2011が存在する場合に個々を識別するためのGPS id情報を少なくとも含む。 First, the bit stream may include a GPS2011. A GPS2011 is also called a geometry parameter set, and is a collection of control data related to decoding of geometric information. A specific example will be described later. Each GPS2011 includes at least GPS id information for identifying each GPS2011 when multiple GPS2011 exist.
第2に、ビットストリームは、GSH2012A/2012Bを含んでいてもよい。GSH2012A/2012Bは、ジオメトリスライスヘッダ或いはジオメトリデータユニットヘッダとも呼ばれ、後述するスライスに対応する制御データの集合である。以降では、スライスという呼称を用いて説明するが、スライスをデータユニットと読み替えることもできる。具体例については後述する。GSH2012A/2012Bは、各GSH2012A/2012Bに対応するGPS2011を指定するためのGPS id情報を少なくとも含む。 Secondly, the bit stream may include GSH2012A/2012B. GSH2012A/2012B is also called a geometry slice header or geometry data unit header, and is a collection of control data corresponding to a slice, which will be described later. In the following description, the term "slice" will be used, but slice can also be interpreted as a data unit. Specific examples will be described later. GSH2012A/2012B includes at least GPS id information for specifying the GPS2011 corresponding to each GSH2012A/2012B.
第3に、ビットストリームは、GSH2012A/2012Bの次に、スライスデータ2013A/2013Bを含んでいてもよい。スライスデータ2013A/2013Bには、幾何情報を符号化したデータが含まれている。スライスデータ2013A/2013Bの一例としては、後述するoccupancy codeが挙げられる。
Thirdly, the bit stream may include
以上のように、ビットストリームは、各スライスデータ2013A/2013Bに、1つずつGSH2012A/2012B及びGPS2011が対応する構成となる。
As described above, the bit stream is structured so that each
上述のように、GSH2012A/2012Bにて、どのGPS2011を参照するかをGPS id情報で指定するため、複数のスライスデータ2013A/2013Bに対して共通のGPS2011を用いることができる。
As described above, the GPS ID information is used to specify which
言い換えると、GPS2011は、スライスごとに必ずしも伝送する必要がない。例えば、図3のように、GSH2012B及びスライスデータ2013Bの直前では、GPS2011を符号化しないようなビットストリームの構成とすることもできる。
In other words, GPS2011 does not necessarily have to be transmitted for each slice. For example, as shown in FIG. 3, the bit stream may be configured so that GPS2011 is not encoded immediately before GSH2012B and
なお、図3の構成は、あくまで一例である。各スライスデータ2013A/2013Bに、GSH2012A/2012B及びGPS2011が対応する構成となっていれば、ビットストリームの構成要素として、上述以外の要素が追加されてもよい。
Note that the configuration in FIG. 3 is merely an example. As long as
例えば、図3に示すように、ビットストリームは、シーケンスパラメータセット(SPS)2001を含んでいてもよい。また、同様に、伝送に際して、図3と異なる構成に整形されてもよい。更に、後述する属性情報復号部2060で復号されるビットストリームと合成して単一のビットストリームとして伝送されてもよい。 For example, as shown in FIG. 3, the bitstream may include a sequence parameter set (SPS) 2001. Similarly, when transmitted, the bitstream may be shaped into a configuration different from that shown in FIG. 3. Furthermore, the bitstream may be combined with a bitstream decoded by an attribute information decoding unit 2060 (described later) and transmitted as a single bitstream.
図4は、GPS2011のシンタックス構成の一例である。 Figure 4 is an example of the syntax configuration of GPS2011.
なお、以下で説明するシンタックス名は、あくまで一例である。以下で説明したシンタックスの機能が同様であれば、シンタックス名は異なっていても差し支えない。 Note that the syntax names explained below are merely examples. If the syntax functions explained below are similar, the syntax names may be different.
GPS2011は、各GPS2011を識別するためのGPS id情報(gps_geom_parameter_set_id)を含んでもよい。 GPS2011 may include GPS ID information (gsps_geom_parameter_set_id) for identifying each GPS2011.
なお、図4のDescriptor欄は、各シンタックスが、どのように符号化されているかを意味している。ue(v)は、符号無し0次指数ゴロム符号であることを意味し、u(1)は、1ビットのフラグであることを意味する。 The Descriptor column in Figure 4 indicates how each syntax is coded. ue(v) means that it is an unsigned zeroth-order exponential Golomb code, and u(1) means that it is a 1-bit flag.
GPS2011は、近似表面合成部2030でTrisoupを使用するか否かを制御するフラグ(trisoup_enabled_flag)を含んでもよい。
GPS2011 may include a flag (trisoup_enabled_flag) that controls whether or not Trisoup is used in the approximate
例えば、trisoup_enabled_flagの値が「0」の時はTrisoupを使用しないと定義し、trisoup_enabled_flagの値が「1」の時はTrisoupを使用すると定義してもよい。 For example, it may be defined that Trisoup is not used when the value of trisoup_enabled_flag is "0", and that Trisoup is used when the value of trisoup_enabled_flag is "1".
幾何情報復号部2020は、Trisoupを使用するとき、すなわち、trisoup_enabled_flagの値が「1」の時、追加で以下のシンタックスを復号するように構成されていてもよい。
The geometric
なお、trisoup_enabled_flagは、GPS2011ではなくSPS2001に含まれていてもよい。 Note that trisoup_enabled_flag may be included in SPS2001 instead of GPS2011.
GPS2011は、複数レベルでのTrisoupを許可するか否かを制御するフラグ(trisoup_multilevel_enabled_flag、第1フラグ)を含んでもよい。 GPS2011 may include a flag (trisoup_multilevel_enabled_flag, first flag) that controls whether or not trisoup is allowed at multiple levels.
例えば、trisoup_multilevel_enabled_flagの値が「0」の時は複数レベルでのTrisoupを許可しない、すなわち、単一のレベルでのTrisoupを行うと定義し、trisoup_multilevel_enabled_flagの値が「1」の時は複数レベルでのTrisoupを許可すると定義してもよい。 For example, when the value of trisoup_multilevel_enabled_flag is "0", multi-level trisoup is not allowed, i.e., trisoup is performed at a single level, and when the value of trisoup_multilevel_enabled_flag is "1", multi-level trisoup is allowed.
なお、当該シンタックスがGPS2011に含まれない場合、当該シンタックスの値を単一のレベルでのTrisoupを行う場合の値、すなわち、「0」とみなしてよい。 If this syntax is not included in GPS2011, the value of this syntax may be considered to be the value when performing a trisoup at a single level, i.e., "0".
なお、trisoup_multilevel_enabled_flagは、GPS2011ではなくSPS2001に含まれるよう定義してもよい。この場合、SPS2001にtrisoup_multilevel_enabled_flagが含まれていない場合、当該シンタックスの値を単一のレベルでのTrisoupを行う場合の値、すなわち、「0」とみなしてよい。 Note that trisoup_multilevel_enabled_flag may be defined to be included in SPS2001 instead of GPS2011. In this case, if trisoup_multilevel_enabled_flag is not included in SPS2001, the value of the syntax may be regarded as the value for performing trisoup at a single level, i.e., "0".
図5は、GSH2012のシンタックス構成の一例である。なお、前述の通り、GSHは、GDUH(Geometry Data Unit Header)とも呼ばれる。 Figure 5 shows an example of the syntax configuration of GSH2012. As mentioned above, GSH is also called GDUH (Geometry Data Unit Header).
幾何情報復号部2020は、複数レベルでのTrisoupを許可するとき、すなわち、trisoup_multilevel_enabled_flagの値が「1」の時、追加で以下のシンタックスを復号するように構成されていてもよい。
The geometric
GSH2012は、複数レベルでのTrisoupを許可するとき、Trisoupノードサイズの最大値を規定するシンタックス(log2_trisoup_max_node_size_minus2)を含んでもよい。 GSH2012 may include syntax (log2_trisoup_max_node_size_minus2) to specify the maximum Trisoup node size when allowing multi-level Trisoup.
当該シンタックスは、実際のTrisoupノードサイズの最大値について、2を底とする対数に変換した値として表現されていてもよい。更に、当該シンタックスは、実際のTrisoupノードサイズの最大値について、2を底とする対数に変換した後に2を引いた後の値として表現されていてもよい。
The syntax may be expressed as a value obtained by converting the maximum actual Trisoup node size to a logarithm with
GSH2012は、複数レベルでのTrisoupを許可するとき、Trisoupノードサイズの最小値を規定するシンタックス(log2_trisoup_min_node_size_minus2)を含んでもよい。 GSH2012 may include syntax (log2_trisoup_min_node_size_minus2) to specify a minimum Trisoup node size when multi-level Trisoup is allowed.
当該シンタックスは、実際のTrisoupノードサイズの最小値について、2を底とする対数に変換した値として表現されていてもよい。更に、当該シンタックスは、実際のTrisoupノードサイズの最小値を4(=22)とし、2を底とする対数に変換した後に2を引いた後の値として表現されていてもよい。
This syntax may be expressed as a value obtained by converting the minimum value of the actual Trisoup node size to a logarithm with the
また、当該シンタックスの値は、必ず0以上且つlog2_trisoup_max_node_size_minus2以下となるように制約されていてもよい。 The value of this syntax may also be constrained to be greater than or equal to 0 and less than or equal to log2_trisoup_max_node_size_minus2.
また、この時、図5に示すようにtrisoup_depthをtrisoup_depth=log2_trisoup_max_node_size_minus2-log2_trisoup_min_node_size_minus2+1と定義してもよい。
In this case, trisoup_depth may be defined as trisoup_depth = log2_trisoup_max_node_size_minus2 -
また、最小Trisoupノードサイズ及び最大Trisoupノードサイズを直接復号する代わりに、後述のOctree処理における最大Trisoupノードサイズ及び最小Trisoupノードサイズに対応するDepth値を復号してもよい。 In addition, instead of directly decoding the minimum and maximum Trisoup node sizes, the Depth values corresponding to the maximum and minimum Trisoup node sizes in the Octree processing described below may be decoded.
例えば、最大Depth(全ノードが1×1×1のサイズになるDepth)が10の場合、最小Trisoupノードサイズを4(=22)、最大Trisoupノードサイズを16(=24)としたい場合は、最小Trisoupノードサイズに対応するDepth値として8、最大Trisoupノードサイズに対応するDepth値として6をそれぞれ復号してもよい。 For example, if the maximum Depth (the Depth at which all nodes are 1x1x1 in size) is 10, and you want the minimum Trisoup node size to be 4 (= 22 ) and the maximum Trisoup node size to be 16 (= 24 ), you may decode the Depth value corresponding to the minimum Trisoup node size as 8 and the Depth value corresponding to the maximum Trisoup node size as 6.
幾何情報復号部2020は、複数レベルでのTrisoupを許可しないとき、すなわち、trisoup_multilevel_enabled_flagの値が「0」の時、追加で以下のシンタックスを復号するように構成されていてもよい。
The geometric
GSH2012は、複数レベルでのTrisoupを許可しないとき、かつ、Trisoupを使用するとき、Trisoupノードサイズを規定するシンタックス(log2_trisoup_node_size_minus2)を含んでもよい。 GSH2012 may include syntax (log2_trisoup_node_size_minus2) to specify the Trisoup node size when multi-level Trisoup is not allowed and when Trisoup is used.
当該シンタックスは、実際のTrisoupノードサイズについて、2を底とする対数に変換した値として表現されていてもよい。更に、当該シンタックスは、実際のTrisoupノードサイズについて、2を底とする対数に変換した後に2を引いた後の値として表現されていてもよい。
The syntax may be expressed as a value obtained by converting the actual Trisoup node size to a logarithm with
また、この時、図5に示すようにtrisoup_depthをtrisoup_depth=1と定義してもよい。 In this case, trisoup_depth may be defined as trisoup_depth = 1, as shown in Figure 5.
GSH2012は、Trisoupを使用するとき、復号点のサンプリング間隔を制御するシンタックス(trisoup_sampling_value_minus1)を含んでもよい。当該シンタックスの具体的な定義は、例えば、上述の非特許文献1に記載の定義と同様とすることができる。
When using Trisoup, GSH2012 may include a syntax (trisoup_sampling_value_minus1) that controls the sampling interval of the decoding point. The specific definition of the syntax may be the same as that described in the above-mentioned
GSH2012は、後述するTrisoupの頂点位置の精度(bit数)を指定するシンタックス(trisoup_vertex_number_bits)を含んでもよい。例えば、当該シンタックスの値が2である場合、頂点位置は、2bitであること、すなわち、0、1、2、3の4種類の値を取り得ることを意味する。 GSH2012 may include a syntax (trisoup_vertex_number_bits) that specifies the precision (number of bits) of the vertex position of Trisoup, which will be described later. For example, if the value of this syntax is 2, this means that the vertex position is 2 bits, meaning that it can take on four values: 0, 1, 2, and 3.
ここで、trisoup_vertex_number_bitsは、上述記のように、trisoup_depthの値に関わらず常に1つの値だけを伝送してもよいし、trisoup_depthの値に応じて復号する数を変化させてもよい。 Here, as described above, trisoup_vertex_number_bits may always transmit only one value regardless of the value of trisoup_depth, or the number to be decoded may be changed depending on the value of trisoup_depth.
例えば、各trisoup_depthに対応するtrisoup_vertex_number_bitsがそれぞれ復号されてもよい。言い換えると、trisoup_depthと同じ数だけ、trisoup_vertex_number_bitsが復号されてもよい。具体的には、例えば、trisoup_depthが2の場合、trisoup_vertex_number_bitsの値が2種類伝送されてもよい。 For example, trisoup_vertex_number_bits corresponding to each trisoup_depth may be decoded. In other words, the same number of trisoup_vertex_number_bits as trisoup_depth may be decoded. Specifically, for example, when trisoup_depth is 2, two types of values of trisoup_vertex_number_bits may be transmitted.
GSH2012は、後述するTrisoupの頂点のセントロイドの残差を復号するか否かを示すフラグ(trisoup_centroid_vertex_residual_flag)を含んでもよい。例えば、当該フラグの値が1の場合は、セントロイドの残差を復号することを意味し、当該フラグの値が0の場合は、セントロイドの残差を復号しないことを意味するように定義されていてもよい。 GSH2012 may include a flag (trisoup_centroid_vertex_residual_flag) indicating whether or not to decode the centroid residuals of the vertices of Trisoup, which will be described later. For example, the flag may be defined so that a value of 1 indicates that the centroid residuals are decoded, and a value of 0 indicates that the centroid residuals are not decoded.
ここで、trisoup_centroid_vertex_residual_flagは、上述のように、trisoup_depthの値に関わらず常に1つの値だけを伝送してもよいし、trisoup_depthの値に応じて復号する数を変化させてもよい。 Here, as described above, trisoup_centroid_vertex_residual_flag may always transmit only one value regardless of the value of trisoup_depth, or the number of decoded bits may be changed depending on the value of trisoup_depth.
例えば、各trisoup_depthに対応するtrisoup_centroid_vertex_residual_flagがそれぞれ復号されてもよい。言い換えると、trisoup_depthと同じ数だけ、trisoup_centroid_vertex_residual_flagが復号されてもよい。具体的には、例えば、trisoup_depthが2の場合、trisoup_centroid_vertex_residual_flagの値が2種類伝送されてもよい。 For example, trisoup_centroid_vertex_residual_flag corresponding to each trisoup_depth may be decoded. In other words, the same number of trisoup_centroid_vertex_residual_flag as trisoup_depth may be decoded. Specifically, for example, when trisoup_depth is 2, two types of values of trisoup_centroid_vertex_residual_flag may be transmitted.
GSH2012は、Trisoupを使用するとき、かつ、複数レベルでのTrisoupを許可するとき、階層i(i=0,...,trisoup_depth-1)ごとにユニークセグメントが対象階層に存在するか否かを示すフラグ(unique_segments_exist_flag[i])を含んでもよい。 When GSH2012 uses Trisoup and allows Trisoup at multiple levels, it may include a flag (unique_segments_exist_flag[i]) for each hierarchical level i (i=0,..., trisoup_depth-1) indicating whether a unique segment exists in the target hierarchical level.
例えば、unique_segments_exist_flag[i]の値が「1」の場合は、階層iに少なくとも1つ以上のユニークセグメントが存在することを意味する。また、unique_segments_exist_flag[i]の値が「0」の場合は、階層iにユニークセグメントが1つも存在しないことを意味する。 For example, if the value of unique_segments_exist_flag[i] is "1", it means that at least one unique segment exists in hierarchical layer i. Also, if the value of unique_segments_exist_flag[i] is "0", it means that no unique segments exist in hierarchical layer i.
GSH2012は、階層i(i=0,...,trisoup_depth-1)ごとにユニークセグメントが対象階層に存在する場合、すなわち、unique_segments_exist_flag[i]の値が「1」の場合、追加で対象階層のユニークセグメント数を示すシンタックスのビット数を示すシンタックス(num_unique_segments_bits_minus1[i])及び対象階層のユニークセグメント数を示すシンタックス(num_unique_segments_minus1[i])を含んでもよい。 For each hierarchical layer i (i = 0, ..., trisoup_depth-1), if a unique segment exists in the target hierarchical layer, i.e., if the value of unique_segments_exist_flag[i] is "1", GSH2012 may additionally include syntax (num_unique_segments_bits_minus1[i]) indicating the number of bits of the syntax indicating the number of unique segments in the target hierarchical layer and syntax (num_unique_segments_minus1[i]) indicating the number of unique segments in the target hierarchical layer.
ここで、num_unique_segments_bits_minus1[i]及びnum_unique_segments_minus1[i]の両方について、それぞれ本来の値から「1」を引いた値をシンタックスの値として符号化してもよい。 Here, for both num_unique_segments_bits_minus1[i] and num_unique_segments_minus1[i], the original value minus "1" may be encoded as the syntax value.
(ツリー合成部2020)
以下、図6を用いてツリー合成部2020の処理について説明する。図6は、ツリー合成部2020における処理の一例を示すフローチャートである。なお、以下では「Octree」を使用してツリーを合成する場合の例について説明する。
(Tree synthesis unit 2020)
The processing of the
ステップS601において、ツリー合成部2020は、全てのDepthの処理が完了したかどうかを確認する。なお、Depth数は、点群符号化装置100から点群復号装置200に伝送するビットストリーム内に制御データとして含まれていてもよい。
In step S601, the
ツリー合成部2020は、対象Depthのノードサイズを算出する。「Octree」の場合、最初のDepthのノードサイズは、「2のDepth数乗」と定義されてもよい。すなわち、Depth数をNとする場合、最初のDepthのノードサイズは、2のN乗と定義されてもよい。
The
また、2番目以降のDepthでのノードサイズは、Nの数を1つずつ減じていくことで定義されてもよい。すなわち、2番目のDepthのノードサイズは、「2の(N-1)乗」として定義され、3番目のDepthのノードサイズは、「2の(N-2)乗」として定義され、・・・と定義されてもよい。 In addition, the node size at the second and subsequent depths may be defined by decrementing the number N by one. That is, the node size at the second depth may be defined as "2 to the power of (N-1)", the node size at the third depth may be defined as "2 to the power of (N-2)", and so on.
或いは、ノードサイズは、常に2のべき乗で定義されるため、単純に指数部分(N、N-1、N-2、等)の値をノードサイズと考えてもよい。以降の説明では、ノードサイズとは、ノードの1辺の長さの指数部分の値を指すこととする。 Alternatively, because node sizes are always defined as powers of 2, you can simply think of the exponent part (N, N-1, N-2, etc.) as the node size. In the following explanation, node size refers to the exponent part of the length of one side of the node.
なお、以降では簡単のため、ノード形状が立方体の場合、すなわち、ノードの全ての辺の長さが等しい場合を例に説明する。 For simplicity's sake, we'll use the example below where the node shape is a cube, i.e. where all edges of the node are the same length.
QtBtを用いる場合、すなわち、ノード形状が直方体になり、ノードの各辺の長さが軸方向(x、y、z)毎に異なる場合、3方向のうち最も短い辺の長さをノードサイズと考えてもよい。同様に、3方向のうち最も長い辺の長さをノードサイズと考えてもよい。 When using QtBt, that is, when the node shape is a rectangular prism and the length of each side of the node varies in each axial direction (x, y, z), the length of the shortest side of the three directions may be considered to be the node size. Similarly, the length of the longest side of the three directions may be considered to be the node size.
ここで、Trisoupを使用するか否かを制御するフラグ(trisoup_enabled_flag)がTrisoupを使用することを示している場合、すなわち、trisoup_enabled_flagの値が「1」の時は、ツリー合成部2020は、処理するDepth数を、Trisoupノードサイズの最小値を規定するシンタックス(log2_trisoup_min_node_size_minus2)又はTrisoupノードサイズを規定するシンタックス(log2_trisoup_node_size_minus2)の値に基づいて変化させてもよい。かかる場合、例えば、以下のように定義してもよい。
Here, when the flag (trisoup_enabled_flag) that controls whether or not to use Trisoup indicates that Trisoup is to be used, that is, when the value of trisoup_enabled_flag is "1", the
処理Depth数=全Depth数-(最小の)Trisoupノードサイズ
ここで、最小のTrisoupノードサイズについては、例えば、(log2_trisoup_min_node_size_minus2+2)で定義できる。同様に、Trisoupノードサイズについては、(log2_trisoup_node_size_minus2+2)で定義できる。
Processing Depth Number=Total Depth Number−(Minimum) Trisoup Node Size Here, the minimum Trisoup node size can be defined as, for example, (log2_trisoup_min_node_size_minus2+2). Similarly, the Trisoup node size can be defined as (log2_trisoup_node_size_minus2+2).
この場合、全ての処理Depth数の処理が完了した場合は、ツリー合成部2020は、ステップS609へ進み、そうでない場合は、ツリー合成部2020は、ステップS602へ進む。
In this case, if processing for all processing depth numbers is completed, the
言い換えると、(処理Depth数-n)=0の場合は、ツリー合成部2020は、ステップS609へ進み、(処理Depth数-n)>0の場合は、ツリー合成部2020は、ステップS602へ進む。
In other words, if (processing depth number - n) = 0, the
また、ツリー合成部2020は、ステップS609へ進む際のノードサイズ(N-処理Depth数)を持つ全てのノードには、Trisoupが適用されると判定してもよい。
The
ステップS602において、ツリー合成部2020は、対象Depthにて後述するTrisoup_applied_flagを復号する必要があるか否かを判定する。
In step S602, the
例えば、「複数レベルでのTrisoupが許可(trisoup_multilevel_enabled_flagの値が「1」)」で、且つ、「対象Depthのノードサイズ(N-n)が最大のTrisoupノードサイズ以下」の場合に、ツリー合成部2020は、「Trisoup_applied_flagの復号が必要である」と判定してもよい。
For example, if "Trisoups at multiple levels are permitted (the value of trisoup_multilevel_enabled_flag is "1")" and "the node size (N-n) of the target depth is equal to or smaller than the maximum trisoup node size," the
例えば、「複数レベルでのTrisoupが許可(trisoup_multilevel_enabled_flagの値が「1」)」で、且つ、「対象Depthのノードサイズ(N-n)が最大のTrisoupノードサイズ以下」で、且つ、「対象Depthのノードサイズ(N-n)が最小のTrisoupノードサイズ以上」の場合に、ツリー合成部2020は、「Trisoup_applied_flagの復号が必要である」と判定してもよい。
For example, if "multiple levels of Trisoup are allowed (the value of trisoup_multilevel_enabled_flag is "1")," and "the node size (N-n) of the target depth is equal to or smaller than the maximum Trisoup node size," and "the node size (N-n) of the target depth is equal to or larger than the minimum Trisoup node size," the
また、ツリー合成部2020は、上述の条件が満たされない場合、「Trisoup_applied_flagの復号が必要ない」と判定してもよい。
In addition, if the above conditions are not met, the
ここで、最大のTrisoupノードサイズについては、例えば、(log2_trisoup_max_node_size_minus2+2)で定義できる。同様に、最小のTrisoupノードサイズについては、例えば、(log2_trisoup_min_node_size_minus2+2)で定義できる。 Here, the maximum Trisoup node size can be defined, for example, as (log2_trisoup_max_node_size_minus2 + 2). Similarly, the minimum Trisoup node size can be defined, for example, as (log2_trisoup_min_node_size_minus2 + 2).
上述の判定が完了したら、ツリー合成部2020は、ステップS603へ移る。
Once the above-mentioned determination is completed, the
ステップS803において、ツリー合成部2020は、対象Depthに含まれる全てのノードの処理が完了したかどうかを判定する。
In step S803, the
対象Depthの全てのノードの処理が完了したと判定した場合、ツリー合成部2020は、ステップS601へ移り、次のDepthの処理を行う。
If it is determined that processing of all nodes at the target Depth has been completed, the
一方、対象Depthの全てのノードの処理が完了していない場合、ツリー合成部2020は、ステップS604へ移る。
On the other hand, if processing of all nodes at the target depth has not been completed, the
ステップS604において、ツリー合成部2020は、ステップS602で判定したTrisoup_applied_flagの復号の要否について確認する。
In step S604, the
Trisoup_applied_flagの復号が必要であると判定されている場合は、ツリー合成部2020は、ステップS605へ進み、Trisoup_applied_flagの復号が必要でないと判定されている場合は、ツリー合成部2020は、ステップS608へ移る。
If it is determined that decoding of Trisoup_applied_flag is necessary, the
ステップS605において、ツリー合成部2020は、Trisoup_applied_flagを復号する。
In step S605, the
Trisoup_applied_flagは、対象ノードにTrisoupを適用するか否かを示す1ビットのフラグ(第2フラグ)である。例えば、かかるフラグの値が「1」の時に対象ノードにTrisoupを適用すると定義し、かかるフラグの値が「0」の時に対象ノードにTrisoupを適用しないと定義してもよい。 Trisoup_applied_flag is a 1-bit flag (second flag) that indicates whether Trisoup is applied to the target node. For example, it may be defined that Trisoup is applied to the target node when the value of this flag is "1", and that Trisoup is not applied to the target node when the value of this flag is "0".
ツリー合成部2020は、Trisoup_applied_flagを復号した後、ステップS606へ移る。
After the
ステップS606において、ツリー合成部2020は、ステップS605で復号したTrisoup_applied_flagの値を確認する。
In step S606, the
対象ノードにTrisoupを適用する場合、すなわち、Trisoup_applied_flagの値が「1」の場合は、ツリー合成部2020は、ステップS607へ移る。
If Trisoup is to be applied to the target node, i.e., if the value of Trisoup_applied_flag is "1", the
対象ノードにTrisoupを適用しない場合、すなわち、Trisoup_applied_flagの値が「0」の場合は、ツリー合成部2020は、ステップS608へ移る。
If Trisoup is not applied to the target node, i.e., if the value of Trisoup_applied_flag is "0", the
ステップS607において、ツリー合成部2020は、対象ノードを、Trisoupを適用するノード、すなわち、Trisoupノードとして記憶する。かかる対象ノードに対しては、これ以上、「Octree」によるノードの分割を適用しないこととする。その後、ツリー合成部2020は、ステップS603に進み、次のノードの処理へ移る。
In step S607, the
ステップS608において、ツリー合成部2020は、occpancy codeと呼ばれる情報を復号する。
In step S608, the
occpancy codeは、「Octree」の場合は、対象ノードをx、y、z軸方向にそれぞれ半分に分割して、8つのノード(子ノードと呼ぶ)に分割した際に、それぞれの子ノード内に復号対象の点が含まれているか否かを示す情報である。 In the case of "Octree", the occupancy code is information that indicates whether the point to be decoded is contained in each of the child nodes when the target node is divided in half in each of the x, y, and z axis directions and divided into eight nodes (called child nodes).
例えば、occpancy codeは、各子ノードに対して1ビットの情報を割り当て、かかる1ビットの情報が「1」の場合は、かかる子ノード内に復号対象の点が含まれると定義され、かかる1ビットの情報が「0」の場合は、かかる子ノード内に復号対象の点が含まれないと定義されてもよい。 For example, the occupancy code may assign one bit of information to each child node, and if the one bit of information is "1", it may be defined that the point to be decoded is included in the child node, and if the one bit of information is "0", it may be defined that the point to be decoded is not included in the child node.
ツリー合成部2020は、かかるoccpancy codeを復号する際に、各子ノードに復号対象の点が存在する確率を予め推定し、その確率に基づいて各子ノードに対応するビットをエントロピー復号してもよい。
When decoding such an occurrence code, the
また、ステップS608では、ツリー合成部2020は、後述するS901で使用するために、Trisoupを適用しなかったノードの位置情報をDepthごとに一次元配列等に保存するようにしてもよい。
In addition, in step S608, the
具体的には、ツリー合成部2020は、ステップS608における対象ノード(分割する前のノード)の位置情報を保存するようにしてもよい。例えば、ツリー合成部2020は、対象ノード(直方体)の頂点のうち、一番原点に近い点の座標値をDepthごとに一次元配列に保存し、この情報が、後述する近似表面合成部2030で使用されてもよい。
Specifically, the
直方体のサイズ(x軸、y軸、z軸方向の辺の長さ)がDepthごとに決定している場合、上記のようにノード内の一番原点に近い点の座標値とDepthが特定できれば、当該ノードの位置情報を復元することができる。 If the size of the rectangular parallelepiped (the lengths of the sides in the x-, y-, and z-directions) is determined for each Depth, then if the coordinates and Depth of the point closest to the origin within the node can be identified as described above, the position information of the node can be restored.
同様に、点群符号化装置100においては、エントロピー符号化してもよい。
Similarly, entropy coding may be performed in the point
(近似表面合成部2030)
近似表面合成部2030は、図10及び図14で説明するように、ツリー合成部2020にて、Trisoupノードと判定された各ノードについて、復号処理を行うように構成されている。
(Approximate Surface Synthesis Unit 2030)
The approximate
以下、図7~図16を用いて近似表面合成部2030の処理の例について説明する。
Below, an example of the processing performed by the approximate
図7は、近似表面合成部2030の処理の一例を示すフローチャートである。
Figure 7 is a flowchart showing an example of processing by the approximate
図7に示すように、ステップS701において、近似表面合成部2030は、全てのtrisoup_depthでの処理が完了したかどうかを判定する。
As shown in FIG. 7, in step S701, the approximate
全てのtrisoup_depthについて処理が完了した場合、ステップS709へ進み、処理を終了する。全てのtrisoup_depthの処理が完了していない場合、ステップS702へ進む。 If processing has been completed for all trisoup_depths, proceed to step S709 and end processing. If processing has not been completed for all trisoup_depths, proceed to step S702.
ステップS702において、近似表面合成部2030は、当該trisoup_depthに対応するTrisoupノードサイズが、最大Trisoupノードサイズと等しいかどうかを判定する。
In step S702, the approximate
両者が等しい場合は、本動作は、ステップS704へ進み、両者が等しくない場合、すなわち、当該trisoup_depthに対応するTrisoupノードサイズが、最大Trisoupノードサイズより小さい場合、本動作は、ステップS703へ進む。 If the two are equal, the operation proceeds to step S704; if the two are not equal, i.e., if the Trisoup node size corresponding to the trisoup_depth is smaller than the maximum Trisoup node size, the operation proceeds to step S703.
ステップS702において、近似表面合成部2030は、ノード毎の頂点位置の取得及び統合を行う。
In step S702, the approximate
ステップS703において、近似表面合成部2030は、後述するステップS708によって生成される「内挿された頂点(内挿処理が行われた頂点)」に対応するセグメントを生成する。図8は、ステップS703の処理の一例を示すフローチャートである。
In step S703, the approximate
以下、図8を用いて、ステップS703の処理の一例について説明する。 An example of the processing in step S703 is described below with reference to FIG.
図8に示すように、ステップS801において、近似表面合成部2030は、後述するステップS708で生成した全ての「内挿された頂点」について処理が完了したか否かを判定する。
As shown in FIG. 8, in step S801, the approximate
完了した場合、本動作は、ステップS805へ進み、処理を終了する。完了していない場合、本動作は、次の「内挿された頂点」について処理するため、ステップS802へ進む。 If completed, the operation proceeds to step S805 and ends processing. If not completed, the operation proceeds to step S802 to process the next "interpolated vertex."
ステップS802において、近似表面合成部2030は、「内挿された頂点」がどの方向(x、y、z方向のいずれか)のセグメント上に存在する点なのかを判定する。
In step S802, the approximate
例えば、後述するようにセグメント及びTrisoupの頂点が、整数座標位置から0.5ずれた位置に存在する場合、x方向のセグメントでは、「内挿された頂点」のx座標のみが、整数値(x.0)になり、y座標及びz座標は、小数値(x.5)となる。 For example, as described below, if the vertices of a segment and Trisoup are located at a position that is 0.5 offset from the integer coordinate position, then in the x-direction segment, only the x-coordinate of the "interpolated vertex" will be an integer value (x.0), and the y-coordinate and z-coordinate will be decimal values (x.5).
同様に、y方向のセグメントでは、y座標のみが整数値となり、z方向のセグメントでは、z座標のみが整数値となるため、近似表面合成部2030は、いずれの軸方向の座標が整数であるについて確認することで、当該「内挿された頂点」が存在すべきセグメントの方向を判定することができる。
Similarly, in a segment in the y direction, only the y coordinate is an integer value, and in a segment in the z direction, only the z coordinate is an integer value, so the approximate
なお、座標値を整数形式で保存している場合、例えば、0.5を表現するために、真の座標値を2倍した上で整数値として保持している場合は、近似表面合成部2030は、各軸方向の座標値の最下位ビットが1であるかどうかで、整数か小数(x.5)かを判定することができる。
When coordinate values are stored in integer format, for example when the true coordinate values are doubled and stored as integer values to represent 0.5, the approximate
近似表面合成部2030は、このように判定した結果を保存し、次のステップS803へ進む。
The approximate
ステップS803において、近似表面合成部2030は、当該「内挿された頂点」が、現在のTrisoupノードサイズにおける辺上に存在するか否かを判定する。例えば、近似表面合成部2030は、以下の方法で、かかる判定を行うことができる。
(1)第1に、近似表面合成部2030は、「内挿された頂点」のx、y、z軸のそれぞれの座標値を整数に量子化する。
In step S803, the approximate
(1) First, the approximate
具体的には、近似表面合成部2030は、各座標値に0.5を足した後に小数点以下を切り捨てする。
Specifically, the approximate
ここで、近似表面合成部2030は、座標値が真の値の2倍の整数値で保存されている場合、1を加えた後に2で除算し小数点以下を切り捨てする。
Here, if the coordinate values are stored as integer values that are twice the true value, the approximate
或いは、近似表面合成部2030は、座標値が真の値の2倍の整数値で保存されている場合、1を加えた後に右に1ビットシフトする。
Alternatively, if the coordinate values are stored as integer values that are twice the true values, the approximate
なお、ここでは、x、y、z軸の全ての軸方向について整数化する場合を説明したが、近似表面合成部2030は、ステップS802で判定した「方向」以外の軸のみを整数化するようにしてもよい。
Note that, although the case where all of the x, y, and z axial directions are converted to integers has been described here, the approximate
例えば、近似表面合成部2030は、上述の「方向」がx軸の場合、y座標及びz座標のみ整数化すればよい。
(2)第2に、近似表面合成部2030は、ステップS802で判定した「方向」以外の軸の整数化後の座標値が、当該Trisoupノードサイズの倍数になっているか否かを確認する。
For example, when the above-mentioned "direction" is the x-axis, the approximate
(2) Secondly, the approximate
例えば、近似表面合成部2030は、上述の「方向」がx軸方向で、当該Trisoupノードサイズの値が8(=23)の場合、当該整数化されたy座標及びz座標が、それぞれ8の倍数になっているかどうかを確認する。
For example, when the above-mentioned "direction" is the x-axis direction and the value of the Trisoup node size is 8 (=2 3 ), the approximate
上述の(2)の処理において、「方向」以外の軸の整数化後の座標値が、いずれも当該Trisoupノードサイズの倍数になっている場合、近似表面合成部2030は、当該「内挿された頂点」が現在のTrisoupノードサイズにおける辺上に存在すると判定し、ステップS804へ進む。
In the above process (2), if the coordinate values after integer conversion of the axes other than the "direction" are all multiples of the Trisoup node size, the approximate
そうでない場合、すなわち、少なくとも1つの軸方向の座標値が当該Trisoupノードサイズの倍数になっていない場合、近似表面合成部2030は、当該「内挿された頂点」が現在のTrisoupノードサイズにおける辺上に存在しないと判定し、ステップS801へ進み、次の「内挿された頂点」の処理に移る。
If this is not the case, that is, if the coordinate value in at least one axis direction is not a multiple of the Trisoup node size, the approximate
ステップS804において、近似表面合成部2030は、ステップS803で整数化した「内挿された頂点」の座標を用いて、「内挿された頂点」に対応するセグメントを生成する。
In step S804, the approximate
ここで、セグメントは、始点の座標(x、y、z)、終点の座標(x、y、z)、及びセグメント上における頂点位置(0~Trisoupノードサイズー1)の3つの要素から構成されていてもよい。 Here, a segment may consist of three elements: the coordinates of the start point (x, y, z), the coordinates of the end point (x, y, z), and the vertex position on the segment (0 to Trisoup node size - 1).
上述の始点は、例えば、前記の整数化した「内挿された頂点」の座標値を、Trisoupノードサイズで量子化することにより得られる。 The above-mentioned starting point is obtained, for example, by quantizing the coordinate value of the "interpolated vertex" converted to an integer by the Trisoup node size.
具体的には、例えば、Trisoupノードサイズの2を底とする対数をとった値をTrisoupNodeSizeLog2とすると、「内挿された頂点」の座標値にそれぞれ下記の演算を行うことで導出できる。
Specifically, for example, if the logarithm of the
量子化後の座標値 = (座標値>>TrisoupNodeSizeLog2)<<TrisoupNodeSizeLog2
ここで、>>は、右ビットシフト、<<は、左ビットシフトをそれぞれ意味している。
Quantized coordinate value = (coordinate value >> TrisoupNodeSizeLog2) << TrisoupNodeSizeLog2
Here, >> means a right bit shift, and << means a left bit shift.
なお、ステップS804の処理に進む場合、ステップS802で判定した「方向」以外の軸の座標値は、既にTrisoupノードサイズの倍数であることが明らかであるので、ステップS804では、近似表面合成部2030は、ステップS802で判定した「方向」に対応する軸の座標値のみ上記の量子化処理を行うこととしてもよい。
When proceeding to the processing of step S804, it is clear that the coordinate values of the axes other than the "direction" determined in step S802 are already multiples of the Trisoup node size, so in step S804, the approximate
次に、終点の座標は、始点の座標に対して、ステップS802で判定した「方向」に対応する軸の座標値に、当該Trisoupノードサイズの値を加算することで算出できる。 Next, the coordinates of the end point can be calculated by adding the value of the Trisoup node size to the coordinate value of the axis corresponding to the "direction" determined in step S802 for the coordinates of the start point.
最後に、セグメント上における頂点位置は、ステップS802で判定した「方向」に対応する軸における整数化された「内挿された頂点」の座標値から、上述の「方向」に対応する軸における始点の座標値を減ずることで導出できる。 Finally, the vertex position on the segment can be derived by subtracting the coordinate value of the starting point on the axis corresponding to the above-mentioned "direction" from the coordinate value of the "interpolated vertex" that has been converted to an integer on the axis corresponding to the "direction" determined in step S802.
以上の処理を行った後に、本動作は、ステップS801へ進み、次の「内挿された頂点」の処理に進む。 After performing the above processing, the operation proceeds to step S801 and proceeds to processing the next "interpolated vertex."
以上のように、近似表面合成部2030は、図7のステップS703において「内挿された頂点」からセグメントを生成した後、ステップS704へ進む。
As described above, the approximate
ステップS704において、近似表面合成部2030は、次のステップS705における頂点の復号に用いるための隣接情報を収集する。
In step S704, the approximate
図9は、ステップS704の処理の一例を示すフローチャートである。以下、図9を用いて、ステップS704の処理の一例について説明する。 Figure 9 is a flowchart showing an example of the processing of step S704. Below, an example of the processing of step S704 is described using Figure 9.
図9に示すように、ステップS901において、近似表面合成部2030は、マスク情報を生成する。図10に、マスク情報の生成方法の具体例を示す。
As shown in FIG. 9, in step S901, the approximate
マスク情報を生成する場合、図10に示すように、近似表面合成部2030は、ステップS1001において、当該Trisoupノードサイズにおける全Trisoupノードについて処理が完了したか否かを判定する。
When generating mask information, as shown in FIG. 10, in step S1001, the approximate
完了した場合は、本動作は、ステップS1003へ進み、完了していない場合は、本動作は、ステップS1002へ進む。 If completed, the operation proceeds to step S1003; if not completed, the operation proceeds to step S1002.
ステップS1002において、近似表面合成部2030は、当該Trisoupノードについて、36本のセグメント及び各セグメントに対応するマスク値を生成する。
In step S1002, the approximate
図11に、セグメント及びマスク値の生成例を示す。図11の網掛け部分が、当該Trisoupノードの例を示し、各線分が、セグメントの例を示し、セグメント上に記載されている数字が、マスク値の例を示している。 Figure 11 shows an example of segment and mask value generation. The shaded areas in Figure 11 show examples of the Trisoup node, each line segment shows an example of a segment, and the numbers written on the segments show examples of mask values.
なお、全てのセグメントについてマスク値の例を記載するのが困難であるため、マスク値の例は、一部のセグメントにのみ記載しているが、実際は、全てのセグメントについて、以下の通り、マスク値を設定する。 Note that because it is difficult to provide examples of mask values for all segments, examples of mask values are provided only for some segments, but in reality, mask values are set for all segments as follows.
まず、近似表面合成部2030は、セグメントについては、当該Trisoupノードの12本の辺、x方向、y方向、z方向のそれぞれについて当該ノードより座標値の大きな隣接位置、及び、座標値の小さな隣接位置にそれぞれ4本ずつのセグメントを生成し、図11に示すように、計36本のセグメントを生成する。
First, the approximate
ここで、各セグメントは、始点及び終点の情報を持ち、頂点は存在しないため、頂点位置の情報は保持しない。 Here, each segment has information about its start and end points, but since there are no vertices, no information about the vertex positions is stored.
次に、各セグメントのマスク値の設定例について説明する。 Next, we will explain examples of setting mask values for each segment.
近似表面合成部2030は、当該Trisoupノードの12本の辺に対応するセグメントに対して、それぞれマスク値の下位4ビットのいずれかのビットのみが1で、それ以外が0のマスク値を設定する。
The approximate
例えば、図11に示すように、近似表面合成部2030は、x軸方向のセグメントには、1、2、4、8のマスク値を設定してもよい。
For example, as shown in FIG. 11, the approximate
同様に、近似表面合成部2030は、y軸方向のセグメントには、1+(1<<13)、2+(1<<13)、4+(1<<13)、8+(1<<13)のマスク値を設定してもよい。
Similarly, the approximate
同様に、近似表面合成部2030は、z軸方向のセグメントには、1+(1<<14)、2+(1<<14)、4+(1<<14)、8+(1<<14)のマスク値を設定してもよい。
Similarly, the approximate
このように設定した場合、マスク値の1ビット目~4ビット目のいずれかのビットが1の場合、当該セグメントに対応するノードがTrisoupノードであることが判別できる。 When set in this way, if any of the first through fourth bits of the mask value is 1, it can be determined that the node corresponding to the segment is a Trisoup node.
次に、近似表面合成部2030は、当該Trisoupノードよりx方向、y方向、z方向にそれぞれ座標値が大きくなる方向の隣接ノードに対応するセグメント(x、y、z方向のそれぞれで4本ずつ計12本)には、図11に示すように、それぞれ16、32、64、128のマスク値を設定してもよい。
Next, the approximate
このように設定した場合、マスク値の5ビット目~8ビット目のいずれかのビットが1の場合、当該セグメントに対して座標値が小さくなる方の隣接ノードが、Trisoupノードであることが判別できる。 When set in this way, if any of the 5th to 8th bits of the mask value is 1, it can be determined that the adjacent node with the smaller coordinate value for the segment is a Trisoup node.
次に、近似表面合成部2030は、当該Trisoupノードよりx方向、y方向、z方向にそれぞれ座標値が小さくなる方向の隣接ノードに対応するセグメント(x、y、z方向のそれぞれで4本ずつ計12本)には、図11に示すように、それぞれ256、512、1024、2048のマスク値を設定してもよい。
Next, the approximate
このように設定した場合、マスク値の9ビット目~12ビット目のいずれかのビットが1の場合、当該セグメントに対して座標値が大きくなる方の隣接ノードが、Trisoupノードであることが判別できる。 When set in this way, if any of the 9th to 12th bits of the mask value is 1, it can be determined that the adjacent node with the larger coordinate value for the segment is a Trisoup node.
上述のように、近似表面合成部2030は、セグメント及びそれに対応するマスク値を生成した後、ステップS1001へ進み、次のTrisoupノードの処理に移る。
As described above, after generating the segments and their corresponding mask values, the approximate
ここで、ステップS1001での処理対象のノードに、上述のステップS608で保存した、当該DepthにおいてTrisoupを適用しなかったノードを、本ステップの処理対象として加えてもよい。 Here, the nodes to be processed in step S1001 that were saved in step S608 above and to which Trisoup was not applied at that Depth may be added as the nodes to be processed in this step.
「当該DepthにおいてTrisoupを適用しなかったノード」には、当該Depthにおいては、Trisoupが適用されないため、当該ノード自体にTrisoupの頂点等は生成されないが、当該Depthより大きなDepthにおいてTrisoupが適用されるはずの領域である。よって、ステップS1002で「当該DepthにおいてTrisoupを適用しなかったノード」のマスクを生成する際は、上述の「マスク値の1ビット目~4ビット目のいずれかのビットが1」になるマスクは設定せず、「マスク値の5ビット目~8ビット目のいずれかのビットが1」になるマスクと、「マスク値の9ビット目~12ビット目のいずれかのビットが1」になるマスクのみを設定する。 For "nodes to which Trisoup has not been applied at the relevant depth", Trisoup is not applied at the relevant depth, so no Trisoup vertices are generated for the node itself, but it is an area where Trisoup should be applied at a depth greater than the relevant depth. Therefore, when generating a mask for "nodes to which Trisoup has not been applied at the relevant depth" in step S1002, a mask in which "any bit in the 1st to 4th bits of the mask value is 1" as described above is not set, and only a mask in which "any bit in the 5th to 8th bits of the mask value is 1" and a mask in which "any bit in the 9th to 12th bits of the mask value is 1" are set.
ステップS1003において、近似表面合成部2030は、ステップS703で生成した「内挿された頂点」に対応するセグメントについて、全てのセグメントの処理を完了したかどうかを判定する。
In step S1003, the approximate
完了した場合は、本動作は、ステップS1005へ進み、ステップS901のマスク生成処理を終了する。完了していない場合、本動作は、ステップS1004へ進む。 If completed, the operation proceeds to step S1005, and the mask generation process of step S901 ends. If not completed, the operation proceeds to step S1004.
ステップS1004において、近似表面合成部2030は、当該「内挿された頂点」に対応するセグメントについて、当該セグメントに「内挿された頂点」が存在することを意味するマスク値を生成する。
In step S1004, the approximate
近似表面合成部2030は、このマスク値について、例えば、1<<15の値を設定しても良い。このような値を設定した場合、マスク値の16ビット目が1の場合、当該セグメントには「内挿された頂点」が存在すると判定することができる。
The approximate
近似表面合成部2030は、マスク値を生成した後、ステップS1003へ進み、次のセグメントの処理に進む。
After generating the mask value, the approximate
なお、ステップS1002及びステップS1004で生成したマスク値のそれぞれは、いずれも2のべき乗の値である。このようにすることで、後述するステップS905において、同一位置に存在するセグメントのマスク値を合成する際に、ビット演算(論理和)をとることで容易にマスク値を合成できる。 Note that the mask values generated in steps S1002 and S1004 are both powers of 2. This makes it easy to combine mask values by performing a bit operation (logical sum) when combining mask values of segments that exist in the same position in step S905, which will be described later.
また、このように合成したマスク値の各ビットが1か0かで、上述したように、当該セグメントの情報(Trisoupノードか否か、隣接にTrisoupノードが存在するか、当該セグメントに「内挿された頂点」が存在するか等)を得ることができる。 In addition, depending on whether each bit of the mask value synthesized in this way is 1 or 0, as described above, information about the segment (whether it is a Trisoup node, whether there is an adjacent Trisoup node, whether there is an "interpolated vertex" in the segment, etc.) can be obtained.
近似表面合成部2030は、以上のようにマスク情報を生成した後、ステップS902へ進む。
After generating the mask information as described above, the approximate
ステップS902において、近似表面合成部2030は、ステップS901で生成したセグメント、及び、「内挿された頂点」に対応するセグメントを全てまとめた上で、ソートする。
In step S902, the approximate
近似表面合成部2030は、例えば、各セグメントの始点座標及び終点座標に基づいてソートする。かかる処理を行うことで、同一の始点と終点を持つセグメントが連続するように並べ替えることができる。
The approximate
近似表面合成部2030は、かかるソートが完了した後に、ステップS903へ進む。
After completing this sorting, the approximate
ステップS903において、近似表面合成部2030は、ステップS902でソートした後のセグメントについて、全てのセグメントの処理が完了したか否かを判定する。
In step S903, the approximate
完了した場合は、本動作は、ステップS909へ進み、ステップS704の隣接情報の収集処理を終了する。完了していない場合は、本動作は、ステップS904へ進む。 If completed, the operation proceeds to step S909, and the neighbor information collection process of step S704 ends. If not completed, the operation proceeds to step S904.
ステップS904において、近似表面合成部2030は、当該セグメントが、直前に処理したセグメントと同一位置であるかどうかを判定する。
In step S904, the approximate
具体的には、近似表面合成部2030は、例えば、セグメントの始点の座標及び終点の座標の両方が、直前に処理したセグメントと同一か否かを判定する。
Specifically, the approximate
直前に処理したセグメントと同一位置である場合は、本動作は、ステップS905へ進む。直前に処理したセグメントと同一位置ではない場合は、本動作は、ステップS906へ進む。 If the position is the same as the previously processed segment, the operation proceeds to step S905. If the position is not the same as the previously processed segment, the operation proceeds to step S906.
ステップS905において、近似表面合成部2030は、ステップS901で生成した当該セグメントに対応するマスク値と、直前までに処理した同一位置の各セグメントのマスク値とを統合する。
In step S905, the approximate
例えば、近似表面合成部2030は、ステップS901で説明したように各セグメントに対応するマスク値が2のべき乗で構成される場合、それぞれのセグメントのマスク値の論理和をとることでマスクを統合することができる。
For example, when the mask values corresponding to each segment are composed of powers of 2 as described in step S901, the approximate
近似表面合成部2030は、マスクを統合した後、ステップS907へ進む。
After integrating the masks, the approximate
ステップS906において、近似表面合成部2030は、当該セグメントの直前に処理したセグメントを、所定条件Aを満たす場合、ユニークセグメントとして保存する。
In step S906, the approximate
例えば、所定条件Aは、直前に処理したセグメントがTrisoupノードに対応するセグメントである場合、としてもよい。 For example, the specified condition A may be when the previously processed segment is a segment corresponding to a Trisoup node.
例えば、ステップS905で統合したマスク値の下位4ビットの少なくともいずれか1ビットが1である場合、直前に処理したセグメントはTrisoupノードに対応するセグメントであることが分かる。 For example, if at least one of the lowest four bits of the mask value integrated in step S905 is 1, it can be determined that the previously processed segment is a segment corresponding to the Trisoup node.
近似表面合成部2030は、ユニークセグメントに関する情報として、例えば、当該ユニークセグメントに関する、始点の座標、終点の座標、後述するステップS907で説明する内挿点の情報、後述するステップS908で説明する隣接セグメントの情報、及び、ステップS905で統合したマスク値を、それぞれ保存することとしてもよい。これらの情報は、ステップS705の頂点の復号処理において使用される。
The approximate
近似表面合成部2030は、ユニークセグメントに関する情報を保存した後、各種情報(内挿点の情報、隣接セグメントの情報、統合したマスク値等)を初期化する。
After saving information about the unique segments, the approximate
また、近似表面合成部2030は、所定条件を満たさなかった場合、初期化のみを実施する。以上の処理が完了後、本動作は、ステップS907へ進む。
If the predetermined conditions are not met, the approximate
ステップS907において、近似表面合成部2030は、所定条件Bを満たす場合、内挿点に関する情報を保存する。
In step S907, if the predetermined condition B is satisfied, the approximate
例えば、所定条件Bは、当該セグメントのマスク値が、当該セグメントに「内挿された頂点」が存在することを示している場合としてもよい。具体的には、例えば、所定条件Bは、マスク値の16ビット目が1であること、としてもよい。 For example, the predetermined condition B may be that the mask value of the segment indicates that an "interpolated vertex" exists in the segment. Specifically, the predetermined condition B may be that the 16th bit of the mask value is 1.
近似表面合成部2030は、所定条件Bを満たす場合、「内挿された頂点」の座標を保存する。具体的には、近似表面合成部2030は、ステップS804で生成した「セグメント上における頂点位置」の値を保存する。ここで保存された値は、ステップS906においてユニークセグメントに関する情報として保存される。
If the predetermined condition B is satisfied, the approximate
当該セグメントが、ステップS906においてユニークセグメントであると判定されなかった場合(ステップS906の所定条件Aが満たされなかった場合)は、ステップS907で保存された当該セグメントの内挿点に関する情報は、破棄される。 If the segment is not determined to be a unique segment in step S906 (if the specified condition A in step S906 is not satisfied), the information about the interpolation points of the segment stored in step S907 is discarded.
なお、近似表面合成部2030は、「セグメント上における頂点位置」の値を保存する配列を別途準備しておき、当該ステップではその配列における当該セグメントに対応する値を特定するためのindex値を、座標値そのものの代わりに保存するようにしてもよい。
The approximate
以上の処理が完了した後、本動作は、ステップS908へ進む。 After the above processing is completed, the operation proceeds to step S908.
ステップS908において、近似表面合成部2030は、隣接セグメントの情報を保存する。
In step S908, the approximate
具体的には、例えば、近似表面合成部2030は、当該セグメントの始点座標、及び、始点座標或いは終点座標が同一のセグメントを特定するための情報(例えば、セグメントのインデックス等)を保存する。
Specifically, for example, the approximate
例えば、当該セグメントの始点座標、及び、始点座標或いは終点座標が同一のセグメントは、具体的には、当該セグメントと同一の軸方向で、終点座標が当該セグメントの始点座標と同一になるセグメントが1つと、当該セグメントと直交する軸方向のセグメントが4つ存在する。ここで保存された情報は、ステップS906においてユニークセグメントに関する情報として保存される。 For example, there are segments with the same start coordinates as the segment, and start coordinates or end coordinates, specifically, one segment in the same axial direction as the segment, whose end coordinates are the same as the start coordinates of the segment, and four segments in the axial direction perpendicular to the segment. The information saved here is saved as information about unique segments in step S906.
当該セグメントが、ステップS906においてユニークセグメントであると判定されなかった場合(ステップS906の所定条件Aが満たされなかった場合)は、ステップS908で生成された当該セグメントの隣接セグメントの情報は、破棄される。 If the segment is not determined to be a unique segment in step S906 (if the specified condition A in step S906 is not satisfied), the information on the adjacent segments of the segment generated in step S908 is discarded.
上述の処理が完了後、本動作は、ステップS903へ進み、次のセグメントの処理へ進む。 After the above processing is completed, the operation proceeds to step S903 and proceeds to processing the next segment.
以上のように、近似表面合成部2030は、ステップS704における隣接情報の収集を行った後、ステップS705へ進む。
As described above, after collecting adjacent information in step S704, the approximate
ステップS705において、近似表面合成部2030は、当該trisoup_depthにおけるTrisoupの頂点を復号する。
In step S705, the approximate
図12は、ステップS705における頂点の復号方法の一例を示すフローチャートである。以下、図12を用いて、ステップS705の処理の一例を説明する。 Figure 12 is a flowchart showing an example of a method for decoding vertices in step S705. Below, an example of the processing in step S705 is described using Figure 12.
図12に示すように、ステップS1201において、近似表面合成部2030は、ステップS703で生成した全てのユニークセグメントについて処理が終了したか否かを判定する。
As shown in FIG. 12, in step S1201, the approximate
全てのユニークセグメントについて処理が完了した場合、本動作は、ステップS1207へ進み、ステップS703の処理を終了する。全てのユニークセグメントについて処理が完了していない場合、本動作は、ステップS1202へ進む。 If processing has been completed for all unique segments, the operation proceeds to step S1207, and processing of step S703 ends. If processing has not been completed for all unique segments, the operation proceeds to step S1202.
ステップS1202において、近似表面合成部2030は、当該ユニークセグメントに「内挿された頂点」が存在するか否かを判定する。
In step S1202, the approximate
「内挿された頂点」が存在するか否かは、ステップS906で保存された統合されたマスク値に基づいて判定できる。「内挿された頂点」が存在する場合、本動作は、ステップS1203へ進む。「内挿された頂点」が存在しない場合、本動作は、ステップS1204へ進む。 Whether or not an "interpolated vertex" exists can be determined based on the integrated mask value saved in step S906. If an "interpolated vertex" exists, the operation proceeds to step S1203. If an "interpolated vertex" does not exist, the operation proceeds to step S1204.
ステップS1203において、近似表面合成部2030は、ステップS906で保存した「セグメント上における頂点位置」を、当該ユニークセグメントにおける頂点位置として保存する。
In step S1203, the approximate
言い換えると、近似表面合成部2030は、ステップS906で保存した「セグメント上における頂点位置」を、当該ユニークセグメントにおける頂点位置の復号値とする。
In other words, the approximate
更に、近似表面合成部2030は、当該ユニークセグメントにおける「頂点有無」の復号値を、「頂点あり」とする。
Furthermore, the approximate
すなわち、ステップS1203は、ビットストリームから頂点位置及び頂点の有無を示す情報を復号する代わりに、内挿された値を用いて頂点位置及び頂点有無を示す情報を暗黙的に決定する処理である。 In other words, step S1203 is a process in which, instead of decoding information indicating the vertex positions and the presence or absence of vertices from the bitstream, the vertex positions and the information indicating the presence or absence of vertices are implicitly determined using the interpolated values.
上述の処理が完了した後、本動作は、ステップS1201へ進み、次のユニークセグメントの処理へ進む。 After the above processing is completed, the operation proceeds to step S1201 and proceeds to process the next unique segment.
ステップS1204において、近似表面合成部2030は、ビットストリームから当該ユニークセグメントに頂点が存在するか否かを示す、頂点の有無を示す情報を復号する。
In step S1204, the approximate
頂点の有無を示す情報は、1ビットのフラグであり、点群符号化装置100においてエントロピー符号化されていてもよい。近似表面合成部2030は、エントロピー符号化(符号化装置)/復号(復号装置)に際して、複数の確率モデルを用意しておき、コンテクストに応じて選択してもよい。コンテクストは、例えば、ステップS906で保存されて統合されたマスク値に基づいて設定されてもよい。
The information indicating the presence or absence of a vertex is a one-bit flag, and may be entropy coded in the point
近似表面合成部2030は、頂点の有無を示す情報を復号した後、ステップS1205へ進む。
After the approximate
ステップS1205において、近似表面合成部2030は、当該ユニークセグメントに頂点が存在するか否かを判定する。
In step S1205, the approximate
近似表面合成部2030は、ステップS1204で復号した頂点の有無を示す情報に基づき、頂点が存在する場合、ステップS1206へ進む。かかる頂点が存在しない場合は、近似表面合成部2030は、ステップS1201へ進み、次のユニークセグメントの処理へ進む。
If a vertex is present based on the information indicating the presence or absence of a vertex decoded in step S1204, the approximate
ステップS1206において、近似表面合成部2030は、頂点が存在すると判定されたユニークセグメントにおいて、「セグメント上における頂点位置」を復号する。ここで、頂点位置は、エントロピー符号化されていてもよい。エントロピー符号化(符号化装置)/復号(復号装置)に際して、近似表面合成部2030は、複数の確率モデルを用意しておき、コンテクストに応じて選択してもよい。コンテクストは、例えば、ステップS906で保存された隣接セグメントの情報に基づいて設定されてもよい。
In step S1206, the approximate
ここで、頂点位置は、上述のTrisoupの頂点位置の精度(bit数)を指定するシンタックス(trisoup_vertex_number_bits)で指定されたビット精度で復号されてもよい。 Here, the vertex positions may be decoded with the bit precision specified by the syntax (trisoup_vertex_number_bits) that specifies the precision (number of bits) of the vertex positions of the above-mentioned Trisoup.
例えば、trisoup_vertex_number_bitsが2の場合、0、1、2、3の4種類の値をとるように復号されてもよい。更に、trisoup_vertex_number_bitsがDepth毎に復号されている場合、当該Depthに対応するビット精度で復号されてもよい。 For example, if trisoup_vertex_number_bits is 2, it may be decoded to take four values: 0, 1, 2, and 3. Furthermore, if trisoup_vertex_number_bits is decoded for each depth, it may be decoded with the bit precision corresponding to that depth.
また、trisoup_vertex_number_bitsで指定するビット精度は最小Trisoupノードサイズに対応するDepth(一番大きなDepth)でのみ使用し、以降、ノードサイズが1大きくなる(Depthが1小さくなる)に従って、ビット精度を1ずつ増やしてもよい。 In addition, the bit precision specified by trisoup_vertex_number_bits may be used only at the Depth corresponding to the minimum Trisoup node size (the largest Depth), and thereafter the bit precision may be increased by 1 for each node size that increases by 1 (Depth that decreases by 1).
例えば、ノードサイズが2種類(最小と最大の2段階)の場合、最小Trisoupノードサイズに対応するDepthでは、trisoup_vertex_number_bitsの値、最大Trisoupノードサイズに対応するDepthでは、trisoup_vertex_number_bitsに1を加えた値を、それぞれ当該Depthのビット精度として、頂点位置を復号してもよい。 For example, if there are two types of node sizes (two levels: minimum and maximum), the vertex position may be decoded using the value of trisoup_vertex_number_bits for the Depth corresponding to the minimum Trisoup node size, and the value of trisoup_vertex_number_bits plus 1 for the Depth corresponding to the maximum Trisoup node size, as the bit precision of the Depth.
近似表面合成部2030は、頂点位置を復号した後、ステップS1201へ進み、次のユニークセグメントの処理へ進む。
After decoding the vertex positions, the approximate
以上のように、近似表面合成部2030は、ステップS705において頂点を復号した後、ステップS706へ進む。
As described above, after the approximate
ステップS706において、近似表面合成部2030は、ステップS705で復号した頂点に基づいて、復号点群(再構成点群)を生成する。図13は、復号点群の生成方法の一例を示すフローチャートである。以下、図13を用いて、ステップS706の処理の一例について説明する。
In step S706, the approximate
図13に示すように、ステップS1301において、近似表面合成部2030は、当該trisoup_depthにおける全てのTrisoupノードについて処理が完了したか否かを判定する。
As shown in FIG. 13, in step S1301, the approximate
全てのTrisoupノードについて処理が完了した場合、本動作は、ステップS1306へ進み、処理を終了する。全てのTrisoupノードについて処理が完了していない場合、本動作は、ステップS1302へ進む。 If processing has been completed for all Trisoup nodes, the operation proceeds to step S1306 and ends. If processing has not been completed for all Trisoup nodes, the operation proceeds to step S1302.
ステップS1302において、第1に、近似表面合成部2030は、当該Trisoupノードの各辺(セグメント)に対応するユニークセグメントを特定する。例えば、近似表面合成部2030は、ステップS705で処理した各ユニークセグメントの中から、当該Trisoupノードの各辺(セグメント)の始点座標と終点座標とが同一ユニークセグメントを探すことで、特定することができる。
In step S1302, first, the approximate
第2に、近似表面合成部2030は、特定したユニークセグメントに頂点が存在する場合、以下の手順で、頂点を再構成点群に追加する。
(1)近似表面合成部2030は、セグメントの位置を、-0.5だけずらす。具体的には、近似表面合成部2030は、セグメントの始点座標及び終点座標のそれぞれについて、セグメントの方向に沿った軸以外の座標値から0.5を減ずる。
Second, if a vertex exists in the identified unique segment, the approximate
(1) The approximate
例えば、セグメントの始点座標が(x、y、z)=(12、100、32)で、ノードサイズが4で、且つ、当該セグメントの方向がx軸であった場合、終点座標は、始点のx座標にノードサイズを加えて(16、100、32)となる。 For example, if the start coordinates of a segment are (x, y, z) = (12, 100, 32), the node size is 4, and the direction of the segment is the x-axis, the end coordinates will be (16, 100, 32), calculated by adding the node size to the x-coordinate of the start point.
これに対して、x軸以外、すなわち、かかる例では、y座標及びz座標を、それぞれ0.5だけ減ずる。よって、始点座標及び終点座標は、それぞれ(12、99.5、31.5)及び(16、99.5、31.5)となる。
(2)近似表面合成部2030は、上述の始点座標に、当該セグメントの「セグメント上における頂点位置」を加算する。例えば、上述の例において、「セグメント上における頂点位置」が2である場合、(14、99.5、31.5)となる。
(3)近似表面合成部2030は、上述の(2)で求めた座標に対して、セグメントの方向に沿った軸以外の座標値に0.5を加える。例えば、上述の例においては、(14、100、32)となる。この値は、上述の(1)の手順を実行する前の当該ユニークセグメントの始点座標(12、100、32)に、当該ユニークセグメント上の頂点位置2を加算することでも同一の結果を得ることができるので、近似表面合成部2030は、そのように計算してもよい。
(4)上述の(3)で算出した座標が、当該Trisoupノードの内部に存在する場合、近似表面合成部2030は、上述の(3)で算出した座標に点を生成し、再構成点群に追加する。
On the other hand, the coordinates other than the x-axis, that is, in this example, the y-coordinate and the z-coordinate are each decreased by 0.5, so that the start point coordinates and the end point coordinates become (12, 99.5, 31.5) and (16, 99.5, 31.5), respectively.
(2) The approximate
(3) The approximate
(4) If the coordinates calculated in (3) above exist inside the Trisoup node, the approximate
ここで、当該Trisoupノードの内部とは、x、y、z座標の値が、それぞれ当該Trisoupノードの始点(x座標、y座標、z座標のそれぞれが一番小さい点)+Trisoupノードサイズ-1の範囲に存在する点である。 Here, inside the Trisoup node is a point whose x, y, and z coordinate values are in the range of the start point of the Trisoup node (the point with the smallest x, y, and z coordinates) + Trisoup node size - 1.
例えば、当該Trisoupノードの始点座標が(x、y、z)=(12、100、32)で、Trisoupノードサイズが4の場合、(12~15、100~103、32~35)の範囲に存在する点は、当該Trisoupノードの内部とみなす。 For example, if the start coordinates of the Trisoup node are (x, y, z) = (12, 100, 32) and the Trisoup node size is 4, points that are in the ranges (12 to 15, 100 to 103, 32 to 35) are considered to be inside the Trisoup node.
この場合、上述の(3)で算出した座標が(14、100、32)とすると、この座標は、当該Trisoupノードの内部であると判定され、近似表面合成部2030は、この座標の点を再構成点群に追加する。図15(a)に、かかる結果を、x-y平面に投影したケースについて示す。
In this case, if the coordinates calculated in (3) above are (14, 100, 32), these coordinates are determined to be inside the Trisoup node, and the approximate
一方、例えば、当該Trisoupノードの始点座標が(x、y、z)=(12、96、32)の場合、(12~15、96~99、32~35)の範囲にある点が、Trisoupノードの内部となるため、この場合は、(14、100、32)は、Trisoupノードの内部には存在しないと判定され、上述の(3)で算出された座標は、再構成点群に追加させずに、本動作は、処理を終了する。図15(b)に、かかるケースの例について示す。 On the other hand, for example, if the start coordinates of the Trisoup node are (x, y, z) = (12, 96, 32), points in the ranges (12 to 15, 96 to 99, 32 to 35) are inside the Trisoup node, so in this case, it is determined that (14, 100, 32) does not exist inside the Trisoup node, and the coordinates calculated in (3) above are not added to the reconstructed point group, and this operation ends the process. Figure 15(b) shows an example of such a case.
上記の処理を終了した後、本動作は、ステップS1303へ進む。 After completing the above process, the operation proceeds to step S1303.
ステップS1303において、近似表面合成部2030は、当該Trisoupノードに対応する頂点から、セントロイドの初期座標を算出する。
In step S1303, the approximate
例えば、セントロイドの初期座標は、当該Trisoupノードの全ての頂点位置のx、y、z成分をそれぞれ平均することで算出され得る。なお、当該Trisoupノードの頂点が3点以下の場合、セントロイド処理の算出を省略してもよい。 For example, the initial coordinates of the centroid can be calculated by averaging the x, y, and z components of all vertex positions of the Trisoup node. Note that if the Trisoup node has three or fewer vertices, the calculation of the centroid process may be omitted.
かかる処理が完了した後、本動作は、ステップS1304へ進む。 After this process is completed, the operation proceeds to step S1304.
ステップS1304において、近似表面合成部2030は、頂点のソート及び投影面の決定処理を行う。具体的には、例えば、近似表面合成部2030は、以下の手順で、頂点のソート及び投影面を決定できる。
(1)近似表面合成部2030は、頂点をx-y平面に投影する。かかる処理は、各頂点座標からx座標、y座標の値を抽出することと等価である。
In step S1304, the approximate
(1) The approximate
頂点は、もともとノードの辺上に存在するため、投影した平面状では、各頂点は、ノードを平面に投影した正方形或いは長方形の辺上に存在することになる。正方形も、長方形の一種であるため、以降の説明では、投影後のノードの形状を長方形として説明する。
(2)近似表面合成部2030は、ノードを投影した長方形の辺上にある点を、時計回り或いは反時計回りの順になるようにソートする。
Since the vertices are originally on the sides of the nodes, in the projected plane, each vertex will be on the side of a square or rectangle that the nodes are projected onto the plane. Since a square is also a type of rectangle, the following explanation will be given assuming that the shape of the nodes after projection is a rectangle.
(2) The approximate
また、近似表面合成部2030は、ソートした順に、各頂点に仮のIndex値(0、1、2、・・・)を与える。
(3)近似表面合成部2030は、ソート順で隣接する2つの頂点及びセントロイドの3点で定義される三角形を定義し、この三角形の面積を算出する。三角形の面積は、例えば、セントロイドを始点としてそれぞれ2つの頂点座標に向かうベクトルを生成し、それらの外積を用いることで算出できる。
Furthermore, the approximate
(3) The approximate
近似表面合成部2030は、このように、三角形の面積をソート順で隣接する2つの頂点の全ての組み合わせ(0、1)、(1、2)、・・・(N、0)について算出し、合算する。
In this way, the approximate
なお、近似表面合成部2030は、頂点が3点しかない場合、セントロイドを用いず、3つの頂点で構成される三角形の面積を算出する。また、この面積は、投影した平面状での面積である。
(4)近似表面合成部2030は、上述の(1)~(3)の手順を、x-z平面及びy-z平面についても同様に行い、上述の(3)で算出した面積が最大になる平面を投影面とし、その際に、上述の(2)でソートした順及び付与した仮のIndexを、最終的なソート順及びIndexとして採用する。
When there are only three vertices, the approximate
(4) The approximate
以上のように、近似表面合成部2030は、頂点のソート及び投影面を決定した後に、ステップS1305に進む。
After sorting the vertices and determining the projection surface as described above, the approximate
ステップS1305において、近似表面合成部2030は、ステップS1304で生成した三角形及びレイトレーシングによって再構成点群を生成する。
In step S1305, the approximate
具体的には、近似表面合成部2030は、以下の手順で、再構成点群を生成する。
(1)第1に、近似表面合成部2030は、ステップS1304で決定したIndexとセントロイドとに基づいて、ステップS1304と同様に、三角形を生成する。但し、近似表面合成部2030は、ステップS1304では、2次元平面上で三角形を生成したが、ステップS1305では、各頂点のx、y、z座標の全てを使用して、3次元空間上で三角形を生成する。
(2)第2に、近似表面合成部2030は、投影面の法線ベクトル(投影面がx-y平面であれば、z方向のベクトル)を定義し、投影面上に配置する。
Specifically, the approximate
(1) First, the approximate
(2) Secondly, the approximate
例えば、近似表面合成部2030は、初期位置を、投影面上での当該ノード形状(すなわち、長方形)の最も原点に近い点とする。
(3)第3に、近似表面合成部2030は、法線ベクトルのノルムを大きくしていった際に、上述の(1)で生成した三角形と交差するか否か、交差する場合は、その座標を算出する。
For example, the approximate
(3) Thirdly, the approximate
例えば、近似表面合成部2030は、一般的なレイトレーシングの手法等を用いることで、かかる処理を実現できる。図16Aに、三角形の構成の一例をについて示す。
(4)第4に、近似表面合成部2030は、上述の(3)で算出した法線ベクトルと三角形とが交差する座標が、当該Trisoupノードの内部に存在する場合、かかる座標位置に点を生成し、再構成点群に加える。
(5)第5に、近似表面合成部2030は、投影面上の当該ノード(長方形)内の各整数座標位置にそれぞれ配置した場合について、上述の(3)及び(4)の手順を繰り返す。
For example, the approximate
(4) Fourth, if the coordinates where the normal vector calculated in (3) above intersects with the triangle exist inside the Trisoup node, the approximate
(5) Fifth, the approximate
この時、法線ベクトルを配置する間隔は、1(すなわち、全ての整数座標位置)でなくてもよい。例えば、近似表面合成部2030は、幾何情報復号部2010で復号されたtrisoup_sampling_value_minus1の値に1を加えた数を配置する間隔としてもよい。
In this case, the interval at which the normal vectors are placed does not have to be 1 (i.e., all integer coordinate positions). For example, the approximate
例えば、かかる間隔が2であり且つx-y平面が投影面である場合、近似表面合成部2030は、x座標及びy座標の両方が2の倍数になる整数位置のみに法線ベクトルを配置するようにしてもよい。図16Aの三角形から生成した再構成点群の例について、図16Bに示す。
For example, if the interval is 2 and the x-y plane is the projection surface, the approximate
近似表面合成部2030は、以上のようにして、当該Trisoupノードに対する再構成点を生成した後、ステップS1301へ進み、次のTrisoupノードの処理に進む。
After generating the reconstruction points for the Trisoup node in the above manner, the approximate
以上のように、ステップS706において、近似表面合成部2030は、復号点群(再構成点群)を生成した後、ステップS707へ進む。
As described above, in step S706, the approximate
ステップS707において、近似表面合成部2030は、当該trisoup_depthにおけるTrisoupノードサイズが、最小Trisoupノードサイズであるか否かを判定する。
In step S707, the approximate
最小Trisoupノードサイズである場合は、本動作は、ステップS701へ進む。そうでない場合、すなわち、当該trisoup_depthにおけるTrisoupノードサイズが、最小Trisoupノードサイズより大きい場合、本動作は、ステップS708へ進む。 If it is the minimum Trisoup node size, the operation proceeds to step S701. If not, that is, if the Trisoup node size at the trisoup_depth is greater than the minimum Trisoup node size, the operation proceeds to step S708.
ステップS708において、近似表面合成部2030は、ステップS705で復号したtrisoup_depthにおけるTrisoupノードサイズに対応する頂点に基づいて、最小Trisoupノードサイズにおけるノードのセグメント上に頂点を内挿する。
In step S708, the approximate
図14は、ステップS708の処理の一例を示すフローチャートである。以下、図14を用いて、ステップS708の処理例を説明する。なお、図14の処理は、図13の処理とほとんど共通しており、同一の処理には、同一の符号を付している。以下、図13との差異のみを説明する。 Figure 14 is a flow chart showing an example of the processing of step S708. Below, an example of the processing of step S708 will be described using Figure 14. Note that the processing of Figure 14 is almost the same as the processing of Figure 13, and the same processing is denoted by the same reference numerals. Below, only the differences with Figure 13 will be described.
図14に示すように、ステップS1402において、近似表面合成部2030は、当該Trisoupノードの頂点を、「内挿された頂点」として保存する。
As shown in FIG. 14, in step S1402, the approximate
具体的には、近似表面合成部2030は、ステップS1302で説明した手順(1)及び(2)まで実施した後の座標値をそのまま「内挿された頂点」として保存する。
Specifically, the approximate
例えば、ステップS1302の例では、近似表面合成部2030は、(14、99.5、31.5)という座標値を「内挿された頂点」として保存する。これは、セグメントの位置が整数座標位置から0.5ずれた位置にあるように定義しているためである。
For example, in the example of step S1302, the approximate
また、この値を整数として保持するために、近似表面合成部2030は、真の座標値を2倍にした値として保持してもよい。上述の例では、近似表面合成部2030は、(28、199、63)という値を「内挿された頂点」として保存してもよい。
Also, to store this value as an integer, the approximate
ステップS1405において、近似表面合成部2030は、ステップS1305の手順(2)において、法線ベクトルを配置する位置を、当該Trisoupノードを最小Trisoupノードサイズで分割した時のセグメントが存在する位置に配置するように変更する。
In step S1405, the approximate
ステップS1305の手順(3)と同様にして算出した交差する座標が、当該Trisoupノードを最小Trisoupノードサイズで分割した時のセグメント上にある場合、近似表面合成部2030は、かかる座標値を「内挿された頂点」として保存する。
If the intersecting coordinates calculated in the same manner as in step (3) of step S1305 are on a segment obtained by dividing the Trisoup node by the minimum Trisoup node size, the approximate
ステップS1402で座標値を2倍することで整数化した値を保存した場合は、近似表面合成部2030は、ステップS1405においても、上述の座標値を2倍した値を保存する。
If the coordinate values are doubled to convert them into integers and stored in step S1402, the approximate
近似表面合成部2030は、以上の処理で生成した「内挿された頂点」を保存し、次のtrisoup_depthにおけるステップS703で使用する。
The approximate
また、当該trisoup_depthが0より大きい場合、すなわち、当該trisoup_depthにおけるTrisoupノードサイズが最大Trisoupノードサイズではない場合、より大きなノードサイズに生成した「内挿された頂点」が存在するが、近似表面合成部2030は、これらの「内挿された頂点」の集合については削除せず、ステップS1402で新たに生成した「内挿された頂点」を、上述の集合に追加していく形で保存する。
In addition, if the trisoup_depth is greater than 0, i.e., if the trisoup node size at the trisoup_depth is not the maximum trisoup node size, there are "interpolated vertices" generated at a larger node size, but the approximate
なお、図16Cに示すように、近似表面合成部2030は、「内挿された頂点」については、当該Trisoupノードの表面に存在するもののみを保存するようにしてもよい。
As shown in FIG. 16C, the approximate
なお、ここでは、便宜上、ステップS706及びステップS708について別々の処理として説明したが、両者は、共通部分が多いため、同時に実施されてもよい。 Note that, for convenience, steps S706 and S708 have been described here as separate processes, but since the two have much in common, they may be performed simultaneously.
例えば、近似表面合成部2030は、ステップS1302において、ステップS707の条件が満たされる場合は、ステップS1402も実施し、同様に、ステップS1305において、ステップS707の条件が満たされる場合は、ステップS1405も実施するようにしてもよい。
For example, if the condition of step S707 is satisfied in step S1302, the approximate
(点群符号化装置100)
以下、図17を参照して、本実施形態に係る点群符号化装置100について説明する。図17は、本実施形態に係る点群符号化装置100の機能ブロックの一例について示す図である。
(Point group encoding device 100)
Hereinafter, the point
図17に示すように、点群符号化装置100は、座標変換部1010と、幾何情報量子化部1020と、ツリー解析部1030と、近似表面解析部1040と、幾何情報符号化部1050と、幾何情報再構成部1060と、色変換部1070と、属性転移部1080と、RAHT部1090と、LoD算出部1100と、リフティング部1110と、属性情報量子化部1120と、属性情報符号化部1130とを有する。
As shown in FIG. 17, the point
座標変換部1010は、入力点群の3次元座標系から、任意の異なる座標系への変換処理を行うよう構成されている。座標変換は、例えば、入力点群を回転することにより、入力点群のx、y、z座標を任意のs、t、u座標に変換してもよい。また、変換のバリエーションの1つとして、入力点群の座標系をそのまま使用してもよい。 The coordinate conversion unit 1010 is configured to perform a conversion process from the three-dimensional coordinate system of the input point cloud to any different coordinate system. The coordinate conversion may, for example, convert the x, y, and z coordinates of the input point cloud into any s, t, and u coordinates by rotating the input point cloud. In addition, as one variation of the conversion, the coordinate system of the input point cloud may be used as is.
幾何情報量子化部1020は、座標変換後の入力点群の位置情報の量子化及び座標が重複する点の除去を行うように構成されている。なお、量子化ステップサイズが1の場合は、入力点群の位置情報と量子化後の位置情報とが一致する。すなわち、量子化ステップサイズが1の場合は、量子化を行わない場合と等価になる。 The geometric information quantization unit 1020 is configured to quantize the position information of the input point group after coordinate transformation and remove points with overlapping coordinates. Note that when the quantization step size is 1, the position information of the input point group and the position information after quantization match. In other words, when the quantization step size is 1, it is equivalent to not performing quantization.
ツリー解析部1030は、量子化後の点群の位置情報を入力として、後述のツリー構造に基づいて、符号化対象空間のどのノードに点が存在するかについて示すoccupancy codeを生成するように構成されている。 The tree analysis unit 1030 is configured to receive position information of the quantized point group as input, and generate an occurrence code that indicates at which node in the encoding target space the point exists, based on the tree structure described below.
ツリー解析部1030は、本処理において、符号化対象空間を再帰的に直方体で区切ることにより、ツリー構造を生成するように構成されている。 In this process, the tree analysis unit 1030 is configured to generate a tree structure by recursively dividing the encoding target space into rectangular parallelepipeds.
ここで、ある直方体内に点が存在する場合、かかる直方体を複数の直方体に分割する処理を、直方体が所定のサイズになるまで再帰的に実行することでツリー構造を生成することができる。なお、かかる各直方体をノードと呼ぶ。また、ノードを分割して生成される各直方体を子ノードと呼び、子ノード内に点が含まれるか否かについて0又は1で表現したものがoccupancy codeである。 If a point exists within a certain rectangular parallelepiped, a tree structure can be generated by recursively dividing the rectangular parallelepiped into multiple rectangular parallelepipeds until the rectangular parallelepiped reaches a specified size. Each such rectangular parallelepiped is called a node. Each rectangular parallelepiped generated by dividing a node is called a child node, and the occurrence code is expressed as 0 or 1 to indicate whether or not a point is included in the child node.
以上のように、ツリー解析部1030は、所定のサイズになるまでノードを再帰的に分割しながら、occupancy codeを生成するように構成されている。 As described above, the tree analysis unit 1030 is configured to generate an occupancy code while recursively splitting the node until it reaches a predetermined size.
本実施形態では、上述の直方体を常に立方体として8分木分割を再帰的に行う「Octree」と呼ばれる手法、及び、8分木分割に加え、4分木分割及び2分木分割を行う「QtBt」と呼ばれる手法を使用することができる。 In this embodiment, a method called "Octree" can be used that recursively performs octree division on the above-mentioned rectangular parallelepiped, always treating it as a cube, and a method called "QtBt" can be used that performs quadtree division and binary tree division in addition to octree division.
ここで、「QtBt」を使用するか否かについては、制御データとして点群復号装置200に伝送される。
Here, whether or not to use "QtBt" is transmitted to the point
或いは、任意のツリー構成を用いるPredicitive codingを使用するように指定されてもよい。かかる場合、ツリー解析部1030が、ツリー構造を決定し、決定されたツリー構造は、制御データとして点群復号装置200へ伝送される。
Alternatively, predictive coding using an arbitrary tree structure may be specified. In such a case, the tree analysis unit 1030 determines the tree structure, and the determined tree structure is transmitted to the point
例えば、ツリー構造の制御データは、図6で説明した手順で復号できるよう構成されていてもよい。 For example, the tree-structured control data may be configured so that it can be decoded using the procedure described in FIG. 6.
近似表面解析部1040は、ツリー解析部1030によって生成されたツリー情報を用いて、近似表面情報を生成するように構成されている。 The approximate surface analysis unit 1040 is configured to generate approximate surface information using the tree information generated by the tree analysis unit 1030.
近似表面情報は、例えば、物体の3次元点群データを復号する際等において、点群が物体表面に密に分布しているような場合に、個々の点群を復号するのではなく、点群の存在領域を小さな平面で近似して表現したものである。 When decoding three-dimensional point cloud data of an object, for example, if the points are densely distributed on the object's surface, approximate surface information is used to represent the area in which the points exist by approximating the area using a small plane, rather than decoding each point individually.
具体的には、近似表面解析部1040は、例えば、「Trisoup」と呼ばれる手法で、近似表面情報を生成するように構成されていてもよい。また、Lidar等で取得した疎な点群を復号する場合は、本処理を省略することができる。 Specifically, the approximate surface analysis unit 1040 may be configured to generate approximate surface information using, for example, a method called "Trisoup." In addition, when decoding a sparse point cloud acquired by Lidar or the like, this process can be omitted.
幾何情報符号化部1050は、ツリー解析部1030によって生成されたoccupancy code及び近似表面解析部1040によって生成された近似表面情報等のシンタックスを符号化してビットストリーム(幾何情報ビットストリーム)を生成するように構成されている。ここで、ビットストリームには、例えば、図4及び図5で説明したシンタックスを含まれていてもよい。 The geometric information encoding unit 1050 is configured to generate a bit stream (geometric information bit stream) by encoding syntax such as the occupancy code generated by the tree analysis unit 1030 and the approximate surface information generated by the approximate surface analysis unit 1040. Here, the bit stream may include, for example, the syntax described in Figures 4 and 5.
符号化処理は、例えば、コンテクスト適応二値算術符号化処理である。ここで、例えば、シンタックスは、位置情報の復号処理を制御するための制御データ(フラグやパラメータ)を含む。 The encoding process is, for example, a context-adaptive binary arithmetic encoding process. Here, for example, the syntax includes control data (flags and parameters) for controlling the decoding process of the position information.
幾何情報再構成部1060は、ツリー解析部1030によって生成されたツリー情報及び近似表面解析部1040によって生成された近似表面情報に基づいて、符号化対象の点群データの各点の幾何情報(符号化処理が仮定している座標系、すなわち、座標変換部1010における座標変換後の位置情報)を再構成するように構成されている。 The geometric information reconstruction unit 1060 is configured to reconstruct the geometric information of each point of the point cloud data to be encoded (the coordinate system assumed by the encoding process, i.e., the position information after the coordinate transformation in the coordinate transformation unit 1010) based on the tree information generated by the tree analysis unit 1030 and the approximate surface information generated by the approximate surface analysis unit 1040.
色変換部1070は、入力の属性情報が色情報であった場合に、色変換を行うように構成されている。色変換は、必ずしも実行する必要は無く、色変換処理の実行の有無については、制御データの一部として符号化され、点群復号装置200へ伝送される。
The color conversion unit 1070 is configured to perform color conversion when the input attribute information is color information. Color conversion does not necessarily have to be performed, and whether or not the color conversion process is performed is coded as part of the control data and transmitted to the point
属性転移部1080は、入力点群の位置情報、幾何情報再構成部1060における再構成後の点群の位置情報及び色変換部1070での色変化後の属性情報に基づいて、属性情報の歪みが最小となるように属性値を補正するように構成されている。 The attribute transfer unit 1080 is configured to correct the attribute values based on the position information of the input point cloud, the position information of the point cloud after reconstruction in the geometric information reconstruction unit 1060, and the attribute information after color change in the color conversion unit 1070, so as to minimize distortion of the attribute information.
RAHT部1090は、属性転移部1080による転移後の属性情報及び幾何情報再構成部1060によって生成された幾何情報を入力とし、RAHT(Region Adaptive Hierarchical Transform)と呼ばれるHaar変換の一種を用いて、各点の残差情報を生成するように構成されている。RAHTの具体的な処理としては、例えば、上述の文献2に記載の方法を用いることができる。
The RAHT unit 1090 is configured to receive the attribute information transferred by the attribute transfer unit 1080 and the geometric information generated by the geometric information reconstruction unit 1060 as input, and to generate residual information for each point using a type of Haar transform called RAHT (Region Adaptive Hierarchical Transform). As a specific example of the RAHT process, the method described in the above-mentioned
LoD算出部1100は、幾何情報再構成部1060によって生成された幾何情報を入力とし、LoD(Level of Detail)を生成するように構成されている。 The LoD calculation unit 1100 is configured to receive the geometric information generated by the geometric information reconstruction unit 1060 as input and generate the LoD (Level of Detail).
LoDは、ある点の属性情報から、他のある点の属性情報を予測し、予測残差を符号化或いは復号するといった予測符号化を実現するための参照関係(参照する点及び参照される点)を定義するための情報である。 LoD is information for defining a reference relationship (a referencing point and a referenced point) to realize predictive coding, such as predicting attribute information of a certain point from attribute information of another point and encoding or decoding the prediction residual.
言い換えると、LoDは、幾何情報に含まれる各点を複数のレベルに分類し、下位のレベルに属する点については上位のレベルに属する点の属性情報を用いて属性を符号化或いは復号するといった階層構造を定義した情報である。 In other words, LoD is information that defines a hierarchical structure in which each point contained in the geometric information is classified into multiple levels, and the attributes of points belonging to lower levels are encoded or decoded using attribute information of points belonging to higher levels.
LoDの具体的な決定方法としては、例えば、上述の文献2に記載の方法を用いてもよい。
As a specific method for determining LoD, for example, the method described in the above-mentioned
リフティング部1110は、LoD算出部1100によって生成されたLoD及び属性転移部1080での属性転移後の属性情報を用いて、リフティング処理により残差情報を生成するように構成されている。 The lifting unit 1110 is configured to generate residual information by a lifting process using the LoD generated by the LoD calculation unit 1100 and the attribute information after attribute transfer in the attribute transfer unit 1080.
リフティングの具体的な処理としては、例えば、文献(Text of ISO/IEC 23090-9 DIS Geometry-based PCC、ISO/IEC JTC1/SC29/WG11 N19088)に記載の方法を用いてもよい。 Specific lifting processing may be, for example, the method described in the literature (Text of ISO/IEC 23090-9 DIS Geometry-based PCC, ISO/IEC JTC1/SC29/WG11 N19088).
属性情報量子化部1120は、RAHT部1090又はリフティング部1110から出力される残差情報を量子化するように構成されている。ここで、量子化ステップサイズが1の場合は、量子化を行わない場合と等価である。 The attribute information quantization unit 1120 is configured to quantize the residual information output from the RAHT unit 1090 or the lifting unit 1110. Here, a quantization step size of 1 is equivalent to no quantization being performed.
属性情報符号化部1130は、属性情報量子化部1120から出力される量子化後の残差情報等をシンタックスとして符号化処理を行い、属性情報に関するビットストリーム(属性情報ビットストリーム)を生成するように構成されている。 The attribute information encoding unit 1130 is configured to perform encoding processing using the quantized residual information, etc. output from the attribute information quantization unit 1120 as syntax, and generate a bit stream related to the attribute information (attribute information bit stream).
符号化処理は、例えば、コンテクスト適応二値算術符号化処理である。ここで、例えば、シンタックスは、属性情報の復号処理を制御するための制御データ(フラグ及びパラメータ)を含む。 The encoding process is, for example, a context-adaptive binary arithmetic encoding process. Here, for example, the syntax includes control data (flags and parameters) for controlling the decoding process of the attribute information.
点群符号化装置100は、以上の処理により、点群内の各点の位置情報及び属性情報を入力として符号化処理を行い、幾何情報ビットストリーム及び属性情報ビットストリームを出力するように構成されている。
The point
また、上述の点群符号化装置100及び点群復号装置200は、コンピュータに各機能(各工程)を実行させるプログラムであって実現されていてもよい。
Furthermore, the above-mentioned point
なお、上記の各実施形態では、本発明を点群符号化装置100及び点群復号装置200への適用を例にして説明したが、本発明は、かかる例のみに限定されるものではなく、点群符号化装置100及び点群復号装置200の各機能を備えた点群符号化/復号システムにも同様に適用できる。
In each of the above embodiments, the present invention has been described using the point
なお、本実施形態によれば、例えば、動画像通信において総合的なサービス品質の向上を実現できることから、国連が主導する持続可能な開発目標(SDGs)の目標9「レジリエントなインフラを整備し、持続可能な産業化を推進するとともに、イノベーションの拡大を図る」に貢献することが可能となる。 In addition, according to this embodiment, for example, it is possible to improve the overall service quality in video communication, which makes it possible to contribute to Goal 9 of the Sustainable Development Goals (SDGs) led by the United Nations, which is to "build resilient infrastructure, promote sustainable industrialization and foster innovation."
10…点群処理システム
100…点群符号化装置
1010…座標変換部
1020…幾何情報量子化部
1030…ツリー解析部
1040…近似表面解析部
1050…幾何情報符号化部
1060…幾何情報再構成部
1070…色変換部
1080…属性転移部
1090…RAHT部
1100…LoD算出部
1110…リフティング部
1120…属性情報量子化部
1130…属性情報符号化部
200…点群復号装置
2010…幾何情報復号部
2020…ツリー合成部
2030…近似表面合成部
2040…幾何情報再構成部
2050…逆座標変換部
2060…属性情報復号部
2070…逆量子化部
2080…RAHT部
2090…LoD算出部
2100…逆リフティング部
2110…逆色変換部
10...Point
Claims (7)
互いに異なるサイズを持つノード同士の境界において、ノードサイズが大きい方のノードの頂点を用いて、頂点の内挿処理を行い、前記内挿処理が行われた頂点が、ノードサイズが小さい方のノードの辺上に存在するとき、前記内挿処理が行われた頂点を前記ノードサイズが小さい方のノードの辺の頂点としてTrisoup処理を実行する近似表面合成部を備えることを特徴とする点群復号装置。 A point cloud decoding device, comprising:
A point cloud decoding device characterized by comprising an approximate surface synthesis unit that performs vertex interpolation processing using the vertices of the node with the larger node size at the boundary between nodes having different sizes, and when the vertex that has been subjected to the interpolation processing exists on an edge of the node with the smaller node size, performs Trisoup processing with the vertex that has been subjected to the interpolation processing as the vertex of the edge of the node with the smaller node size.
ノードの各辺について前記内挿処理が行われた頂点が、前記ノードの辺上にない場合は、頂点情報を復号し、
ノードの各辺について前記内挿処理が行われた頂点が、前記ノードの辺上にある場合は、前記内挿処理が行われた頂点に基づいて、頂点情報を設定することを特徴とする請求項1に記載の点群復号装置。 The approximate surface synthesis unit includes:
If the vertex for which the interpolation process has been performed for each edge of the node is not on the edge of the node, decode the vertex information;
The point cloud decoding device according to claim 1, characterized in that, when the vertex on which the interpolation process is performed for each side of a node is on an edge of the node, vertex information is set based on the vertex on which the interpolation process is performed.
前記頂点情報の復号処理に先立って、前記ノードの各辺のマスク情報を生成し、
前記マスク情報に基づいて、前記ノードの辺上に前記内挿処理が行われた頂点があるか否かを判定することを特徴とする請求項2に記載の点群復号装置。 The approximate surface synthesis unit includes:
generating mask information for each edge of the node prior to decoding the vertex information;
The point cloud decoding device according to claim 2 , wherein it is determined whether or not the vertex on which the interpolation process is performed is present on the edge of the node based on the mask information.
互いに異なるサイズを持つノード同士の境界において、ノードサイズが大きい方のノードの頂点を用いて、頂点の内挿処理を行う工程と、
前記内挿処理が行われた頂点が、ノードサイズが小さい方のノードの辺上に存在するとき、前記内挿処理が行われた頂点を前記ノードサイズが小さい方のノードの辺の頂点としてTrisoup処理を実行する工程とを有することを特徴とする点群復号方法。 A point cloud decoding method, comprising:
performing vertex interpolation processing at the boundary between nodes having different sizes using the vertices of the node having a larger node size;
and when the vertex on which the interpolation process has been performed is on an edge of a node having a smaller node size, performing a Trisoup process with the vertex on which the interpolation process has been performed as a vertex of the edge of the node having a smaller node size.
前記点群復号装置は、
互いに異なるサイズを持つノード同士の境界において、ノードサイズが大きい方のノードの頂点を用いて、頂点の内挿処理を行い、前記内挿処理が行われた頂点が、ノードサイズが小さい方のノードの辺上に存在するとき、前記内挿処理が行われた頂点を前記ノードサイズが小さい方のノードの辺の頂点としてTrisoup処理を実行する近似表面合成部を備えることを特徴とするプログラム。
A program for causing a computer to function as a point group decoding device,
The point group decoding device comprises:
A program comprising an approximate surface synthesis unit that performs vertex interpolation processing using a vertex of a node having a larger node size at a boundary between nodes having different sizes, and when the vertex that has been subjected to the interpolation processing is on an edge of a node having a smaller node size, performs a Trisoup processing with the vertex that has been subjected to the interpolation processing as a vertex of the edge of the node having the smaller node size.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022165087A JP2024058011A (en) | 2022-10-13 | 2022-10-13 | Point group decoding device, point group decoding method and program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022165087A JP2024058011A (en) | 2022-10-13 | 2022-10-13 | Point group decoding device, point group decoding method and program |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2024058011A true JP2024058011A (en) | 2024-04-25 |
Family
ID=90789931
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022165087A Pending JP2024058011A (en) | 2022-10-13 | 2022-10-13 | Point group decoding device, point group decoding method and program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2024058011A (en) |
-
2022
- 2022-10-13 JP JP2022165087A patent/JP2024058011A/en active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113615181B (en) | Method and device for point cloud encoding and decoding | |
JP7495185B2 (en) | Point group decoding device, point group decoding method and program | |
CN113632142A (en) | Method and device for point cloud compression | |
WO2021199781A1 (en) | Point group decoding device, point group decoding method, and program | |
WO2022070469A1 (en) | Point group decoding device, point group decoding method, and program | |
US20230117998A1 (en) | Point-cloud decoding device, point-cloud decoding method, and program | |
CN113179411A (en) | Point cloud attribute coding and decoding method and device, computer equipment and storage medium | |
WO2022071284A1 (en) | Point group decoding device, point group decoding method, and program | |
JP7505954B2 (en) | Point group decoding device, point group decoding method and program | |
JP2024058011A (en) | Point group decoding device, point group decoding method and program | |
JP2024058012A (en) | Point group decoding device, point group decoding method and program | |
JP2024093896A (en) | Point group decoding device, point group decoding method and program | |
JP2024093897A (en) | Point group decoding device, point group decoding method and program | |
WO2023132331A1 (en) | Point cloud decoding device, point cloud decoding method, and program | |
WO2023132329A1 (en) | Point cloud decoding device, point cloud decoding method, and program | |
WO2023132330A1 (en) | Point cloud decoding device, point cloud decoding method, and program | |
WO2024009561A1 (en) | Point cloud decoding device, point cloud decoding method, and program | |
WO2024009675A1 (en) | Point cloud decoding device, point cloud decoding method, and program | |
WO2024009676A1 (en) | Point cloud decoding device, point cloud decoding method, and program | |
WO2024009562A1 (en) | Point cloud decoding device, point cloud decoding method, and program | |
WO2023277128A1 (en) | Point cloud decoding device, point cloud decoding method, and program | |
RU2778864C1 (en) | Implicit geometric division based on a quad-tree or binary tree for encoding a point cloud | |
JP2023053827A (en) | Point group decoding device, point group decoding method and program | |
WO2024044082A2 (en) | Decoding method, encoding method, decoder and endoder | |
WO2024123568A1 (en) | Geometry point cloud coding method, encoder and decoder |