WO2021106089A1 - 復号方法、符号化方法、復号装置、及びプログラム - Google Patents

復号方法、符号化方法、復号装置、及びプログラム Download PDF

Info

Publication number
WO2021106089A1
WO2021106089A1 PCT/JP2019/046240 JP2019046240W WO2021106089A1 WO 2021106089 A1 WO2021106089 A1 WO 2021106089A1 JP 2019046240 W JP2019046240 W JP 2019046240W WO 2021106089 A1 WO2021106089 A1 WO 2021106089A1
Authority
WO
WIPO (PCT)
Prior art keywords
block
divided
decoding
point cloud
cloud data
Prior art date
Application number
PCT/JP2019/046240
Other languages
English (en)
French (fr)
Inventor
真由子 渡邊
隆一 谷田
木全 英明
Original Assignee
日本電信電話株式会社
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 日本電信電話株式会社 filed Critical 日本電信電話株式会社
Priority to JP2021560813A priority Critical patent/JP7322970B2/ja
Priority to US17/779,533 priority patent/US20220405981A1/en
Priority to PCT/JP2019/046240 priority patent/WO2021106089A1/ja
Publication of WO2021106089A1 publication Critical patent/WO2021106089A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/40Tree coding, e.g. quadtree, octree
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/001Model-based coding, e.g. wire frame
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/005Statistical coding, e.g. Huffman, run length coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/597Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Definitions

  • the present invention relates to coding and decoding of point cloud data.
  • PCC Point Cloud Compression
  • the point cloud data is encoded using an Octree (octree) structure.
  • a cube B (bounding box) including all the point cloud data to be encoded is defined, and this cube B is divided into eight blocks.
  • the block is often formed so as to include the boundary between the region where the object exists and the region where the object does not exist. Therefore, there are many cases where the occupied state of the block including the region where the object does not exist is expressed by an 8-bit code, and there is a problem that useless codes increase.
  • the present invention has been made in view of the above points, and an object of the present invention is to provide a technique capable of reducing the amount of code in coding or decoding of point cloud data using an octree structure. To do.
  • it is a decoding method executed by a decoding device that decodes point cloud data from encoded data.
  • a conversion step that repeats the process until the block reaches a predetermined size
  • the acquisition step is provided with an acquisition step of acquiring the coordinates of the block of the predetermined size in which the bit of the occupancy code corresponding to the block of the predetermined size is 1, as the coordinates of the points in the point cloud data.
  • the decoding device determines the value of N of the N-branch structure with respect to the block to be divided based on the inclusion relationship between the block to be divided and the unoccupied area defined in advance. The method is provided.
  • a technology that makes it possible to reduce the amount of coding in coding or decoding of point cloud data using an octree structure is provided.
  • a cube B (bounding box) including all point cloud data to be encoded is defined.
  • the cubic body B is defined by the origin (0, 0, 0) of the coordinates and the point (2 n , 2 n , 2 n ) farthest from the origin (0, 0, 0). be able to.
  • the coordinate transformation of translation is performed on the point cloud data so that the minimum values of each of x, y, and z of the point cloud data become 0 so as to enter the cube B.
  • the cube B is divided into eight cubes so that each side of the cube B is halved.
  • the divided cube may be called a sub-cube, a block, or the like.
  • block is mainly used.
  • N-branch structure A structure formed by dividing a cube (or block) into N (1 ⁇ N ⁇ 8) pieces is called an N-branch structure.
  • the "N-branch structure” may be a block structure formed by dividing a cube (or a block) into N pieces, or a plurality of branches extend from a node as shown in FIG. 2 described later. , It may be a bit string formed by assigning bits to the node at the end of each branch.
  • an occupancy code (occupancy code, called an occupancy code).
  • a block with a predetermined size including dots may be called a voxel.
  • one point is included in the block having a predetermined size, but a plurality of points may be included in the block having a predetermined size.
  • the information on the number of points is encoded.
  • the number of points in the block can be obtained by decoding the encoded information.
  • FIG. 2 shows an example of an Octree structure in a state of being divided into eight parts twice.
  • each point (cube, block) in the Octree structure is called a node.
  • the numbers 1 to 7 shown in "A" of FIG. 2 indicate the bit positions in the 8 bits corresponding to the 8 blocks obtained by dividing a certain block into eight, and the correspondence between the blocks and the positions.
  • the leftmost "0" of the 8-bit indicated by "A" indicates the block closest to the origin in the example of the block shown in FIG.
  • the upper left block on the front side of the figure is 1, the block below it is 0, the block on the upper right of the front surface of the figure is 5, and the block below it is 4.
  • the upper left block on the rear side is 3, the block below it is 2, the block on the upper right on the rear side is 7, and the block below it is 6.
  • the bit of the block containing the point is 1, and the bit of the block not including the point is 0.
  • 8 bits having 0/1 are represented by a numerical value from 0 to 255.
  • the 8 bits of (1,1,0,0,0,0,0) are represented by 3, and the 8 bits of (1,1,1,1,1,1,1) are 255. It is expressed by.
  • variable-length coded ⁇ x k 2 k
  • arithmetic coding is used as an example of variable length coding. That is, in the present embodiment, variable length coding other than arithmetic coding may be used.
  • the block may be located at the boundary between the area where the object exists and the area where the object does not exist.
  • the occupied state of the block including the region where the object does not exist is often expressed by an 8-bit code, so that there is a problem that useless codes increase.
  • FIG. 4 shows an example of the overall configuration of the system according to the embodiment of the present invention. As shown in FIG. 4, this system has a coding device 100 and a decoding device 200, and has a configuration in which the coding device 100 and the decoding device 200 are connected by a network 300.
  • Point cloud data (coordinates of each point) to be coded is input to the coding device 100.
  • the coding device 100 encodes the point cloud data and transmits the coded data to the decoding device 200 via the network 300.
  • the decoding device 200 receives the coded data from the coding device 100, decodes the coded data, obtains the original point cloud data, and outputs the coded data.
  • the coded data encoded by the coding device 100 is recorded on a recording medium, the recording medium is taken offline to the decoding device 200, and the decoding device 200 reads the coded data from the recording medium.
  • Decoding may be performed to obtain point group data.
  • FIG. 5 shows an example of the functional configuration of the coding device 100.
  • the coding device 100 includes an input unit 110, a coordinate conversion unit 120, an Octree conversion unit 130, an arithmetic coding unit 140, and an output unit 150.
  • FIG. 6 shows an example of the functional configuration of the decoding device 200.
  • the decoding device 200 includes an input unit 210, an arithmetic decoding unit 220, an Octree conversion unit 230, a point cloud data acquisition unit 240, a coordinate inverse conversion unit 250, and an output unit 260.
  • the arithmetic decoding unit 220, the Octree conversion unit 230, and the point cloud data acquisition unit 240 may be referred to as a decoding unit, a conversion unit, and an acquisition unit, respectively.
  • the encoding device 100 may further include the function of the decoding device 200. Further, the decoding device 200 may further include the function of the coding device 100. The operation of each part in the coding device 100 and the decoding device 200 will be described in detail in the operation description described later.
  • Both the coding device 100 and the decoding device 200 can be realized by, for example, causing a computer to execute a program describing the processing contents described in the present embodiment.
  • the "computer” may be a virtual machine on the cloud.
  • the "hardware” described here is virtual hardware.
  • the above program can be recorded on a computer-readable recording medium (portable memory, etc.), saved, and distributed. It is also possible to provide the above program through a network such as the Internet or e-mail.
  • FIG. 7 is a diagram showing a hardware configuration example of the above computer.
  • the computer of FIG. 7 has a drive device 1000, an auxiliary storage device 1002, a memory device 1003, a CPU 1004, an interface device 1005, a display device 1006, an input device 1007, and the like, which are connected to each other by a bus BS.
  • the program that realizes the processing on the computer is provided by, for example, a recording medium 1001 such as a CD-ROM or a memory card.
  • a recording medium 1001 such as a CD-ROM or a memory card.
  • the program is installed in the auxiliary storage device 1002 from the recording medium 1001 via the drive device 1000.
  • the program does not necessarily have to be installed from the recording medium 1001, and may be downloaded from another computer via the network.
  • the auxiliary storage device 1002 stores the installed program and also stores necessary files, data, and the like.
  • the memory device 1003 reads and stores the program from the auxiliary storage device 1002 when the program is instructed to start.
  • the CPU 1004 realizes the function related to the device according to the program stored in the memory device 1003.
  • the interface device 1005 is used as an interface for connecting to a network.
  • the display device 1006 displays a programmatic GUI (Graphical User Interface) or the like.
  • the input device 1007 is composed of a keyboard, a mouse, buttons, a touch panel, and the like, and is used for inputting various operation instructions.
  • the coding of the point cloud data includes coding related to the position of the point and coding related to attributes such as the color of the point, but in the present embodiment, the coding related to the position of the point is focused on.
  • the coding device 100 basically encodes the occupied state using the Octree structure described above, but in order to solve the above-mentioned problem, a region (non-occupied region) where no point (object) exists from the cube B. By omitting the coding of the occupied state of points in the excluded region, it is possible to express the occupied state with a number of branches smaller than 8.
  • the non-occupied area may include a boundary between an area where no point exists and an area where a point exists.
  • the information indicating the unoccupied area to be excluded increases as an overhead, but in addition to the fact that it is only necessary to encode the code in which no point exists in the unoccupied area, it is not necessary to represent the unoccupied area with an octree. Since the occupied state, which is all represented by an ocree, can be partially represented by a smaller number of ocree, the amount of code can be reduced.
  • an area to be excluded as an unoccupied area is determined from the space in which the three-dimensional shape represented by the point cloud data to be encoded exists.
  • an example in which only one unoccupied area is removed will be shown, but a plurality of unoccupied areas may be determined and excluded.
  • FIG. 11 is a diagram showing an example of an unoccupied area. Note that FIG. 11 shows the coordinates after the coordinate conversion described later is performed for convenience.
  • an empty area above the road between the walls on both sides is defined as an unoccupied area.
  • the shape of the non-occupied region is a rectangular parallelepiped having a plane parallel to the plane of the cubic body B, but this is an example, and the shape and orientation of the non-occupied region may be any shape and orientation. There may be.
  • the non-occupied area has a shape that can be expressed by a code amount (the above-mentioned overhead) smaller than the code amount of the occupied code that can be omitted by excluding the unoccupied area.
  • the coordinates of the point closest to the origin of the unoccupied area in FIG. 11 are (a 0 , b 0 , c 0 ), and the coordinates of the point farthest from the origin are (a 1 , b 1 , c 1 ). Therefore, a 0 ⁇ x ⁇ a 1 ⁇ b 0 ⁇ y ⁇ b 1 satisfy ⁇ c 0 ⁇ z ⁇ c 1 ( x, y, z) does not exist points on.
  • the point group data to be encoded (a set of three-dimensional coordinates of points) and the information of the unoccupied area (for example, the coordinates of the point closest to the origin and the coordinates of the point farthest from the origin). Is input from the input unit 110.
  • the coordinate conversion unit 120 generates a cube B (bouncing box) and performs coordinate conversion of the input point cloud data in the same manner as in the case of using the existing Octree structure described above. Further, the coordinate conversion unit 120 also performs the same coordinate conversion as the coordinate conversion of the point cloud data for the coordinates of the unoccupied area.
  • the Octree conversion unit 130 converts the cube B including the point cloud data into an Octree structure, thereby generating an occupancy code in order from the upper node.
  • the Octree conversion unit 130 first divides the legislative body B into eight to generate eight blocks, assigns 1 to the block if there is a point in the divided block, and assigns 1 to the block if there is no point. By assigning 0, an 8-bit exclusive code is generated.
  • the Octree conversion unit 130 further divides the block to which 1 is assigned and allocates 0/1 by repeating the process until the block reaches a predetermined size, thereby occupying the code of each node from the highest node to the lowest node. To generate.
  • the Octree conversion unit 130 refers to each block according to the positional relationship between the block and the unoccupied area.
  • the occupied state is represented by an N-branch structure (1 ⁇ N ⁇ 8).
  • N is 8, it is the same as the expression in the existing ocree tree structure. Details of S103 will be described later.
  • the arithmetic coding unit 140 arithmetically calculates a numerical value indicating an occupancy code represented by the N-branch structure generated in S103 (eg, in the case of an ocree, any numerical value from 0 to 255). Encode.
  • the numerical value indicating the occupancy code may also be referred to as the occupancy code.
  • the output unit 150 transmits the coded data obtained by arithmetic coding to the decoding device 200.
  • S104 may be performed every time the occupancy code represented by the N-branch structure is generated in S103, or is performed every time a plurality of occupancy codes represented by the N-branch structure are generated. May be.
  • the information transmitted from the coding device 100 to the decoding device 200 includes information representing an unoccupied area in addition to the information normally transmitted in point cloud coding.
  • the Octree conversion unit 130 sets the occupied state of each block to N according to the positional relationship between the block and the unoccupied area. It is expressed by a branch structure (1 ⁇ N ⁇ 8). The details of the processing of S103 for a certain block will be described with reference to the flowchart of FIG.
  • the process proceeds to S202, and the Octree conversion unit 130 expresses the occupied state of the block in an octree structure.
  • the Octree conversion unit 130 checks the number k (1 ⁇ k ⁇ 8) of the divided areas included in the non-occupied area, and determines the occupied state of the target block (8-). k) Expressed as a branch structure.
  • the Octree conversion unit 130 has (x 0 , y 0 , z 0 ) ((min x, mini, min z) (the vertex closest to the origin) and (the vertex closest to the origin) with respect to the point (x, y, z) in the block.
  • the Octree conversion unit 130 satisfies x 0 , y 0 , z 0 , x 1 , y 1 that satisfies "a 0 ⁇ x ⁇ a 1 ⁇ b 0 ⁇ y ⁇ b 1 ⁇ c 0 ⁇ z ⁇ c 1".
  • I find the combination of z 1.
  • the number of combinations is the number of vertices contained in the unoccupied area of the block.
  • Figure 15 is an example of the "a 0 ⁇ x 1 ⁇ a 1 ⁇ b 0 ⁇ y 1 ⁇ b 1 ⁇ c 0 ⁇ z 1 ⁇ c 1 ", only one vertex A of the block is the non-occupied region included.
  • this block is divided into eight, if the divided regions are numbered as shown in FIG. 3, in the example of FIG. 15, the region 7 including the apex A is a candidate region to be excluded.
  • the Octree conversion unit 130 determines whether or not the length of each side in the unoccupied area is 1 ⁇ 2 or more of the side of the block. In the example of FIG. 15, the Octree conversion unit 130 determines whether or not each of the side AE, the side AC, and the side AB is included in the non-occupied area by 1/2 or more. This is equivalent to determining whether or not the region 7 is completely included in the unoccupied region. When the region 7 is completely included in the non-occupied region, the Octree conversion unit 130 removes the region 7 from the block and expresses the occupied state with a quadrant tree structure (that is, a 7-bit code). When the area 7 is not completely included in the non-occupied area, the Octree conversion unit 130 expresses the occupied state in an octadi tree structure (that is, an 8-bit code) without removing the area 7 from the block.
  • a quadrant tree structure that is, a 7-bit code
  • the candidate area to be excluded is completely included in the unoccupied area, excluding that area is only an example.
  • a part of the candidate area to be excluded for example, K% of the area (for example, K is 90) or more
  • the area may be excluded.
  • the Octree conversion unit 130 determines whether or not the length of each side in the unoccupied area is 1 ⁇ 2 or more of the side of the block. In the example of FIG. 16, the Octree conversion unit 130 determines whether or not each of the side AE, the side AC, the side BF, and the side BD is included in the non-occupied area by 1/2 or more. This is equivalent to determining whether or not the area 7 and the area 6 are completely included in the unoccupied area. When the area 7 and the area 6 are completely included in the non-occupied area, the Octree conversion unit 130 removes the area 7 and the area 6 from the block and expresses the occupied state in a 6-segment tree structure (that is, a 6-bit code). When the area 7 and the area 6 are not completely included in the non-occupied area, the Octree conversion unit 130 does not remove the area 7 and the area 6 from the block and occupies the ocree tree structure (that is, an 8-bit code). To express.
  • the candidate areas to be excluded are completely included in the unoccupied area, excluding that area is only an example.
  • a part of the candidate area to be excluded for example, K% of the area (for example, K is 90) or more
  • the area may be excluded.
  • this block is divided into eight, if the divided areas are numbered as shown in FIG. 3, in the example of FIG. 17, the area 7 including the apex A, the area 6 including the apex B, and the area 5 including the apex C are assigned.
  • the region 4 including the vertex D is a candidate region to be excluded.
  • the Octree conversion unit 130 determines whether or not the length of each side in the unoccupied area is 1 ⁇ 2 or more of the side of the block. In the example of FIG. 17, the Octree conversion unit 130 determines whether or not each of the side AE, the side BF, the side CG, and the side DH is included in the non-occupied area by 1/2 or more. This is equivalent to determining whether or not the region 7, the region 6, the region 5 and the region 4 are completely included in the unoccupied region. When the region 7, the region 6, the region 5, and the region 4 are completely included in the unoccupied region, the Octree conversion unit 130 removes the region 7, the region 6, the region 5, and the region 4 from the block, and has a quadtree structure (a quadtree structure ().
  • the occupied state is expressed by a 4-bit code.
  • the Octree conversion unit 130 excludes “region 7 and region 6 and region 5 and region 4" from the block. Instead, the occupied state is expressed by an ocree tree structure (that is, an 8-bit code).
  • the candidate areas to be excluded are completely included in the unoccupied area, excluding that area is only an example.
  • a part of the candidate area to be excluded for example, K% of the area (for example, K is 90) or more
  • the area may be excluded.
  • the above example is an example. Any number of regions from 1 to 7 may be excluded. That is, assuming that the number of divided areas included in the non-occupied area in the block is k (1 ⁇ k ⁇ 8), the occupied state of the block is expressed by the (8-k) branch tree structure.
  • the arithmetic coding unit 140 is a numerical value indicating the occupied state represented by the N-branch structure generated in S103 (example: in the case of an octa-tree, any numerical value from 0 to 255). ) Arithmetically. The details of S104 will be described below.
  • the arithmetic coding unit 140 determines how many minutes the occupancy code of the arithmetic coding target is represented by the tree structure, and if it is an ocree, proceeds to S302, and 0 to 255 similar to the conventional one. Arithmetic coding for numbers.
  • the process proceeds to S303, and the arithmetic coding unit 140 is an unoccupied portion from the probability table used for arithmetic coding of the occupied code in the 8-branch structure.
  • the arithmetic coding unit 140 is an unoccupied portion from the probability table used for arithmetic coding of the occupied code in the 8-branch structure.
  • FIG. 18 is a diagram showing a specific example of the processing of S303.
  • FIG. 18A shows the probability of occurrence of each numerical value in the 8-bit code (numerical value of 0 to 255). This corresponds to a probability table of 8-bit codes (numerical values from 0 to 255).
  • the arithmetic coding unit 140 updates this probability table every time an 8-bit code is generated.
  • Arithmetic coding for example, when the arithmetic coding unit 140 arithmetically encodes a 7-bit code ( ⁇ ⁇ ) excluding the bit corresponding to the 8th block among the 8 bits. As shown in FIG. 18B, the coding unit 140 uses the occurrence probability of the numerical value corresponding to the 7-bit code in the 8-bit code probability table. However, the magnitude of the probabilities is adjusted so that the sum of the probabilities from 0 to 127 becomes 1. The arithmetic coding unit 140 generates a coding table for arithmetic coding of a 7-bit code from the probability table shown in FIG. 18B, and performs arithmetic coding using the coding table.
  • the arithmetic coding unit 140 arithmetically encodes the numerical value of the 6-bit code ( ⁇ ⁇ ) excluding the bits corresponding to the 8th and 7th blocks among the 8 bits, for example.
  • the arithmetic coding unit 140 diverts the occurrence probability of the numerical value corresponding to the 6-bit code in the 8-bit code probability table.
  • the sum of the probabilities from 0 to 63 is adjusted to be 1.
  • the arithmetic coding unit 140 generates a coding table for arithmetic coding of a 6-bit code from the probability table shown in FIG. 18C, and performs arithmetic coding using the coding table.
  • the arithmetic decoding unit 220 arithmetically decodes the coded data of the arithmetically coded occupancy code to acquire the occupancy code represented by the N-branch structure (1 ⁇ N ⁇ 8).
  • the Octree conversion unit 230 generates a cube B having the same size as that at the time of coding, and performs the same coordinate conversion as at the time of coding for the unoccupied area obtained from the information received from the coding device 100.
  • the Octree conversion unit 230 converts the cube B including the unoccupied region into an Octree structure as in the case of coding. Among them, if the bit of the occupancy code corresponding to the divided block is 1, the process of further dividing the block is repeated until the block has a predetermined size (for example, 1).
  • the point cloud data acquisition unit 240 is formed into a block having a predetermined size.
  • the coordinates of the block of the predetermined size in which the bit of the corresponding occupancy code is 1 are acquired as the coordinates of the points in the point cloud data.
  • the coordinate inverse conversion unit 250 performs the coordinate conversion opposite to the coordinate conversion of the point cloud data at the time of coding on the point cloud data obtained in S405, thereby performing the original point cloud data (original coordinates). (A set of) is obtained. After that, the output unit 260 displays, for example, the obtained point cloud data as an image.
  • the block to be divided is divided into N branches according to the positional relationship between the block and the unoccupied area.
  • the structure (1 ⁇ N ⁇ 8) is determined.
  • the Octree conversion unit 230 determines the inclusion relationship between the block to be divided (the block whose corresponding occupied code is 1) and the non-occupied area.
  • the process proceeds to S202, and the Octree conversion unit 230 divides the block into eight to generate an octa-tree structure.
  • the process proceeds to S203.
  • the Octree conversion unit 230 examines the number k (k ⁇ 8) of the divided areas included in the non-occupied area, and k from the eight divided target blocks. By removing the split area, a (8-k) ocree tree structure is generated.
  • the Octree conversion unit 230 determines the value of N of the N-branch structure for the block to be divided based on the inclusion relationship between the block to be divided and the unoccupied area.
  • the process of determining the inclusion relationship between the block and the unoccupied area at the time of decoding and the process of excluding the divided area are the same as these processes at the time of coding, and specific examples will be described with reference to FIGS. 12 to 17. As you did.
  • (Section 1) A decoding method executed by a decoding device that decodes point cloud data from encoded data.
  • a conversion step that repeats the process until the block reaches a predetermined size
  • the acquisition step is provided with an acquisition step of acquiring the coordinates of the block of the predetermined size in which the bit of the occupancy code corresponding to the block of the predetermined size is 1, as the coordinates of the points in the point cloud data.
  • the decoding device determines the value of N of the N-branched tree structure with respect to the block to be divided based on the inclusion relationship between the block to be divided and the unoccupied area defined in advance. Method. (Section 2) In the conversion step, the decoding device subtracts from 8 the number of divided regions in which the unoccupied region includes all or a part of the eight divided regions obtained when the block to be divided is divided into eight.
  • the non-occupied area is a region determined as a region in which an object does not exist in a space including a shape represented by the point cloud data, and the unoccupied region includes a region in which an object does not exist and a region in which an object exists.
  • the decoding method according to the first or second paragraph which includes the boundary of the above.
  • (Section 4) A coding method performed by a coding device that encodes point cloud data. After dividing the cube containing all of the point cloud data into 8 blocks, 1 is assigned to the block if the divided blocks contain points, and 0 is assigned to the block if the points are not included.
  • the occupancy code expressed by the N (1 ⁇ N ⁇ 8) ocree structure is generated, and the block to which 1 is assigned is further divided to generate the occupancy code.
  • Conversion steps that are repeated until It includes a step of encoding the exclusive code generated by the conversion step and outputting the coded data.
  • the coding apparatus determines the value of N of the N-branched tree structure with respect to the block to be divided based on the inclusion relationship between the block to be divided and the unoccupied area defined in advance. Coding method. (Section 5) A decoding device that decodes point cloud data from coded data.
  • a decoding unit that acquires an exclusive code represented by an N (1 ⁇ N ⁇ 8) ocree structure by decoding the coded data, and a decoding unit. After dividing a cube that can contain all of the point cloud data into eight blocks, if the bit of the occupancy code corresponding to the divided blocks is 1, the blocks are further divided to generate an N-branched tree structure.
  • a conversion unit that repeats the process until the block reaches a predetermined size, It is provided with an acquisition unit that acquires the coordinates of the block of the predetermined size in which the bit of the occupancy code corresponding to the block of the predetermined size is 1, as the coordinates of the points in the point cloud data.
  • the conversion unit is a decoding device that determines the value of N of the N-branch structure with respect to the block to be divided based on the inclusion relationship between the block to be divided and the unoccupied area defined in advance.
  • (Section 6) A program for making a computer function as each part of the decoding device according to the fifth item.
  • Coding device 110 Input unit 120 Coordinate conversion unit 130 Octree conversion unit 140 Arithmetic coding unit 150 Output unit 200 Decoding device 210 Input unit 220 Arithmetic decoding unit 230 Octree conversion unit 240 Point group data acquisition unit 250 Coordinate inverse conversion unit 260 output Part 300 Network 1000 Drive device 1001 Recording medium 1002 Auxiliary storage device 1003 Memory device 1004 CPU 1005 Interface device 1006 Display device 1007 Input device

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Signal Processing (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

符号化データから点群データを復号する復号装置が実行する復号方法において、前記符号化データを復号することによりN(1≦N≦8)分木構造で表現された占有符号を取得する復号ステップと、前記点群データの全てを含むことができる立方体を8ブロックに分割した後、分割したブロックに対応する占有符号のビットが1であれば、そのブロックを更に分割してN分木構造を生成する処理を、ブロックが所定のサイズになるまで繰り返す変換ステップと、前記所定のサイズのブロックに対応する占有符号のビットが1である当該所定のサイズのブロックの座標を、前記点群データにおける点の座標として取得する取得ステップと、を備え、前記変換ステップにおいて、前記復号装置は、分割対象のブロックと、予め定めた非占有領域との間の包含関係に基づいて、前記分割対象のブロックに対するN分木構造のNの値を決定する。

Description

復号方法、符号化方法、復号装置、及びプログラム
 本発明は、点群データの符号化及び復号に関連するものである。
 現在、点群データの圧縮(PCC:Point Cloud Compression)に関する標準化の検討が進められている。PCCに関して、Videoベース(V-PCC)とGeometryベース(G-PCC)の両方向からの標準化が進められている。
 非特許文献1に開示されている検討中のG-PCCでは、点群データをOctree(8分木)構造を用いて符号化する。
 より詳細には、まず、符号化対象の点群データを全て含む立方体B(バウンディングボックス)を定義し、この立方体Bを8つのブロックに分割する。
 分割されたブロックの中に点があればそのブロックに1を割り当て、点がなければそのブロックに0を割り当てることで8ビット符号(occupancy code、占有符号)が生成される。1が割り当てられたブロックを更に8分割して0/1を割り当てる処理を、ブロックが所定サイズになるまで繰り返すことで、全ての点群データに対する占有符号が得られる。
Information technology - MPEG-I (Coded Representation of Immersive Media) - Part 9: Geometry-based Point Cloud Compression, ISO/IEC 23090-9:2019(E), ISO/IEC JTC 1/SC 29/WG 11
 しかしながら、現実空間において取得された点群データにおける点の存在について検討すると、壁と道路に囲まれた空間や、一般的なオフィス内の地面からの高さが所定以上の空間等、物体が存在しない領域が多く存在する。
 そのため、上記のような既存のOctree構造を用いた符号化においては、物体が存在する領域と、物体が存在しない領域との境界を含むようブロックが形成される場合も多くなる。従って、物体が存在しない領域を含むブロックの占有状態を8ビット符号で表現する場合も多くなり、無駄な符号が増加するという課題がある。
 本発明は上記の点に鑑みてなされたものであり、8分木構造を用いた点群データの符号化あるいは復号において、符号量を削減することを可能とする技術を提供することを目的とする。
 開示の技術によれば、符号化データから点群データを復号する復号装置が実行する復号方法であって、
 前記符号化データを復号することによりN(1≦N≦8)分木構造で表現された占有符号を取得する復号ステップと、
 前記点群データの全てを含むことができる立方体を8ブロックに分割した後、分割したブロックに対応する占有符号のビットが1であれば、そのブロックを更に分割してN分木構造を生成する処理を、ブロックが所定のサイズになるまで繰り返す変換ステップと、
 前記所定のサイズのブロックに対応する占有符号のビットが1である当該所定のサイズのブロックの座標を、前記点群データにおける点の座標として取得する取得ステップと、を備え、
 前記変換ステップにおいて、前記復号装置は、分割対象のブロックと、予め定めた非占有領域との間の包含関係に基づいて、前記分割対象のブロックに対するN分木構造のNの値を決定する復号方法が提供される。
 開示の技術によれば、8分木構造を用いた点群データの符号化あるいは復号において、符号量を削減することを可能とする技術が提供される。
点群データを全て含むブロックの例を示す図である。 ブロックを再帰的に8分割するイメージを示す図である。 分割されたブロックの位置の例を示す図である。 本発明の実施の形態におけるシステムの構成例を示す図である。 符号化装置の構成図である。 復号装置の構成図である。 装置のハードウェア構成の例を示す図である。 符号化装置の動作を説明するためのフローチャートである。 符号化装置の動作を説明するためのフローチャートである。 符号化装置の動作を説明するためのフローチャートである。 非占有領域の例を示す図である。 非占有領域とブロックの位置関係の例1を示す図である。 非占有領域とブロックの位置関係の例2を示す図である。 非占有領域とブロックの位置関係の例3を示す図である。 1つの頂点Aを含む領域が除かれる場合の例を示す図である。 2つの頂点A、Bを含む領域が除かれる場合の例を示す図である。 4つの頂点A、B、C,Dを含む領域が除かれる場合の例を示す図である。 各ビット数における発生確率を説明するための図である。 復号装置の動作を説明するためのフローチャートである。
 以下、図面を参照して本発明の実施の形態を説明する。以下で説明する実施の形態は一例に過ぎず、本発明が適用される実施の形態は、以下の実施の形態に限られるわけではない。
 (Octree構造について)
 本発明に係る技術を理解し易くするために、まず、本発明に係る技術を用いない場合におけるOctree構造を用いた点群データの占有状態の表現方法について説明する。
 まず、符号化対象の点群データを全て含む立方体B(バウンディングボックス)を定義する。図1に示すように、立法体Bは、座標の原点(0,0,0)と、原点(0,0,0)から最も離れた点(2,2,2)により定義することができる。また、点群データに対して、立方体Bに入るように、点群データのx、y、zそれぞれの最小値が0になるように平行移動の座標変換を行う。
 次に、立法体Bの各辺を1/2にするように立方体Bを8つの立法体の分割する。分割された立方体をサブ立法体(サブキューブ)、ブロック等と呼んでもよい。以下、主に「ブロック」を使用する。
 立方体(あるいはブロック)をN(1≦N≦8)個に分割してできた構造をN分木構造と呼ぶ。「N分木構造」は、立方体(あるいはブロック)をN個に分割してできたブロックの構造のことであってもよいし、後述する図2に示すような、ノードから複数の枝がのび、各枝の先のノードにビットが割り当てられてできたビット列のことであってもよい。
 分割されたブロックの中に点があればそのブロックに1を割り当て、点がなければそのブロックに0を割り当てることで8ビット符号(occupancy code、占有符号と呼ぶ)が生成される。1が割り当てられたブロックを更に8分割して0/1を割り当てる処理を、ブロックが所定サイズ(例えば1)になるまで繰り返すことで、全ての点群データに対するOctree構造で表現した占有符号が得られる。
 点を含む所定サイズになったブロックをボクセルと呼んでもよい。なお、本実施の形態では所定サイズになったブロックの中に1つの点を含むこととしているが、所定サイズになったブロックの中に複数の点を含んでもよい。その場合、例えば、点の個数の情報を符号化する。復号時には、符号化した情報を復号することで、ブロックの中の点の個数を得ることができる。
 図2は、2回の8分割をした状態におけるOctree構造の例を示す。図2に示すように、Octree構造において各点(立方体、ブロック)はノードと呼ばれる。図2の「A」に示す1~7の番号は、あるブロックを8分割して得られた8つのブロックに対応する8ビットにおけるビットの位置とブロックと位置との対応関係を示している。例えば、「A」に示す8ビットの最も左側の「0」は、図3に示すブロックの例において、最も原点に近いブロックを示している。なお、図3では、図の手前側の左上のブロックが1であり、その下が0であり、図の手前の面の右上のブロックが5であり、その下が4である。後側の左上のブロックが3であり、その下が2であり、後側の右上のブロックが7であり、その下が6である。
 上記のように、ある立法体(ブロック)から分割された8つのブロックを示す8ビットのうち、点を含むブロックのビットは1であり、点を含まないブロックのビットは0である。Octree構造による占有状態の表現(これを符号化と呼んでもよい)では、0/1を有する8ビットを0~255の数値で表現する。
 例えば、(1,1,0,0,0,0,0,0)の8ビットは3で表現され、(1,1,1,1,1,1,1,1)の8ビットは255で表現される。8ビットを0~255の数値で表現することを関数fとすると、下記の式で表すことができる。なお、下記の式のΣはk=0~7の和を示す。
 f(x,x,x,x,x,x,x,x)=Σx
 上記の0~255への数値の変換の後、上位のノードから順に当該数値を可変長符号化する。なお、後述する実施の形態では、可変長符号化の一例として算術符号化を用いている。すなわち、本実施の形態において、算術符号化以外の可変長符号化を用いることとしてもよい。
 前述したように、現実空間において取得された点群データの性質から、既存のOctree構造を用いた占有状態の表現においては、物体が存在する領域と存在しない領域の境界にブロックが位置する場合が多くなり、物体が存在しない領域を含むブロックの占有状態を8ビット符号で表現する場合も多くなるので、無駄な符号が増加するという課題がある。以下、この課題を解決する本発明の実施の形態に係る技術を詳細に説明する。
 (システム構成)
 図4に、本発明の実施の形態におけるシステムの全体の構成例を示す。図4に示すように、本システムは符号化装置100と復号装置200とを有し、符号化装置100と復号装置200とがネットワーク300で接続された構成を備える。
 符号化装置100には符号化対象の点群データ(各点の座標)が入力される。符号化装置100は点群データを符号化し、符号化データをネットワーク300を介して復号装置200に送信する。
 復号装置200は、符号化装置100から符号化データを受信し、符号化データを復号して元の点群データを得て、出力する。
 なお、上記のようにネットワーク300を介した通信を行うことは一例である。例えば、符号化装置100で符号化された符号化データを記録媒体に記録し、当該記録媒体をオフラインで復号装置200のところまでもって行き、復号装置200が当該記録媒体から符号化データを読み込んで、復号し、点群データを得ることとしてもよい。
 (装置構成)
 図5に、符号化装置100の機能構成例を示す。図5に示すように、符号化装置100は、入力部110、座標変換部120、Octree変換部130、算術符号化部140、及び出力部150を有する。
 図6に、復号装置200の機能構成例を示す。図6に示すように、復号装置200は、入力部210、算術復号部220、Octree変換部230、点群データ取得部240、座標逆変換部250、及び出力部260を有する。なお、算術復号部220、Octree変換部230、点群データ取得部240をそれぞれ、復号部、変換部、取得部と呼んでもよい。
 なお、符号化装置100の中に、復号装置200の機能が更に備えられていてもよい。また、復号装置200の中に、符号化装置100の機能が更に備えられていてもよい。符号化装置100と復号装置200における各部の動作は後述する動作説明のところで詳細に説明する。
 <ハードウェア構成例>
 符号化装置100と復号装置200はいずれも、例えば、コンピュータに、本実施の形態で説明する処理内容を記述したプログラムを実行させることにより実現可能である。なお、この「コンピュータ」は、クラウド上の仮想マシンであってもよい。仮想マシンを使用する場合、ここで説明する「ハードウェア」は仮想的なハードウェアである。
 上記プログラムは、コンピュータが読み取り可能な記録媒体(可搬メモリ等)に記録して、保存したり、配布したりすることが可能である。また、上記プログラムをインターネットや電子メール等、ネットワークを通して提供することも可能である。
 図7は、上記コンピュータのハードウェア構成例を示す図である。図7のコンピュータは、それぞれバスBSで相互に接続されているドライブ装置1000、補助記憶装置1002、メモリ装置1003、CPU1004、インタフェース装置1005、表示装置1006、及び入力装置1007等を有する。
 当該コンピュータでの処理を実現するプログラムは、例えば、CD-ROM又はメモリカード等の記録媒体1001によって提供される。プログラムを記憶した記録媒体1001がドライブ装置1000にセットされると、プログラムが記録媒体1001からドライブ装置1000を介して補助記憶装置1002にインストールされる。但し、プログラムのインストールは必ずしも記録媒体1001より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置1002は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
 メモリ装置1003は、プログラムの起動指示があった場合に、補助記憶装置1002からプログラムを読み出して格納する。CPU1004は、メモリ装置1003に格納されたプログラムに従って、当該装置に係る機能を実現する。インタフェース装置1005は、ネットワークに接続するためのインタフェースとして用いられる。表示装置1006はプログラムによるGUI(Graphical User Interface)等を表示する。入力装置1007はキーボード及びマウス、ボタン、又はタッチパネル等で構成され、様々な操作指示を入力させるために用いられる。
 (符号化装置100の動作例)
 次に、符号化装置100の動作例を説明する。なお、点群データの符号化は、点の位置に関する符号化と、点の色等の属性に関する符号化があるが、本実施の形態では点の位置に関する符号化に着目している。
 符号化装置100は、基本的には前述したOctree構造を用いた占有状態の符号化を行うが、前述した課題を解決するために、立方体Bから点(物体)が存在しない領域(非占有領域と呼ぶ)を先に除き、除かれた領域において点の占有状態の符号化を省略することで、8より小さい数の分木で占有状態を表現することを可能としている。なお、非占有領域は、点が存在しない領域と点が存在する領域との境界を含む場合もある。
 除かれる非占有領域を示す情報はオーバーヘッドとして増えるが、当該非占有領域には点が存在しない符号のみを符号化すればよく、非占有領域を8分木で表現する必要がなくなる事に加え、全て8分木で表現されていた占有状態が、一部はより小さな分木数で表現できるため、符号量を削減可能である。
 以下、符号化装置100の動作例を図8~図10のフローチャートに基づいて詳細に説明する。
 (符号化装置100の全体動作)
 図8のフローチャートを参照して符号化装置100の全体の動作を説明する。
 まず、事前準備として、符号化対象の点群データにて表わされる3次元形状が存在する空間の中から、非占有領域として除くべき領域を決定する。以下、非占有領域を1つだけ除く例を示すが、複数の非占有領域を決定して、除くこととしてもよい。
 図11は、非占有領域の例を示す図である。なお、図11では、便宜上、後述する座標変換を行った後の座標を示している。図11に示す例では、両側の壁の間で道路よりも上にある何もない領域を非占有領域としている。本実施の形態では、非占有領域の形状を、立法体Bの面と平行な面を有する直方体としているが、これは一例であり、非占有領域の形状や向きはどのような形状や向きであってもよい。ただし、非占有領域は、非占有領域を除くことにより省略できる占有符号の符号量よりも少ない符号量(前述のオーバーヘッド)で表現できる形状であることが望ましい。
 図11における非占有領域の原点に最も近い点の座標は(a,b,c)であり、原点から最も離れた点の座標は(a,b,c)である。従って、a≦x≦a∧b≦y≦b∧c≦z≦cを満たす(x,y,z)上には点は存在しない。
 <S101>
 図8のS101において、符号化対象である点群データ(点の3次元座標の集合)と、非占有領域の情報(例えば、原点に最も近い点の座標と原点から最も離れた点の座標)を入力部110から入力する。
 <S102>
 S102において、座標変換部120は、立方体B(バウンティングボックス)を生成して、前述した既存のOctree構造を用いる場合と同じように、入力された点群データの座標変換を行う。また、座標変換部120は、非占有領域の座標についても点群データの座標変換と同じ座標変換を行う。
 <S103>
 S103において、Octree変換部130は、点群データを含む立方体Bに対して、Octree構造への変換を行うことで、上位ノードから順に占有符号を生成する。
 すなわち、Octree変換部130は、まず、立法体Bを8分割して8つのブロックを生成し、分割されたブロックの中に点があればそのブロックに1を割り当て、点がなければそのブロックに0を割り当てることで8ビットの占有符号を生成する。Octree変換部130は、1が割り当てられたブロックを更に分割して0/1を割り当てる処理を、ブロックが所定サイズになるまで繰り返すことで、最上位ノードから最下位ノードまでの各ノードの占有符号を生成する。
 本実施の形態では、上記のように再帰的に進行するブロック分割処理の中で、Octree変換部130は、各ブロックについて、当該ブロックと非占有領域との位置関係に応じて、当該ブロックについての占有状態をN分木構造(1≦N≦8)で表現する。なお、Nが8の場合は、既存の8分木構造での表現と同じである。S103の詳細は後述する。
 <S104>
 S104において、算術符号化部140は、S103で生成されたN分木構造で表現された占有符号を示す数値(例:8分木であれば0~255の中のいずれかの数値)を算術符号化する。なお、占有符号を示す数値についても、占有符号と呼んでもよい。出力部150は、算術符号化してできた符号化データを復号装置200に送信する。
 S104は、S103において、N分木構造で表現された占有符号が生成される度に行われることとしてもよいし、N分木構造で表現された占有符号が複数生成される度に行われることとしてもよい。
 なお、符号化装置100から復号装置200に送信される情報には、点群符号化において通常送られる情報に加えて、非占有領域を表す情報が含まれる。
 (S103の詳細)
 S103で説明したとおり、再帰的に進行するブロック分割処理の中で、Octree変換部130は、各ブロックについて、当該ブロックと非占有領域との位置関係に応じて、当該ブロックについての占有状態をN分木構造(1≦N≦8)で表現する。あるブロックに対するS103の処理の詳細を図9のフローチャートを参照して説明する。
 S201において、ブロック内に非占有領域が存在しないと判定された場合、S202に進み、Octree変換部130は、当該ブロックの占有状態を8分木構造で表現する。
 S201において、ブロック内に非占有領域が存在すると判定された場合、S203に進む。なお、ブロック全体が非占有領域になる場合はS203に進まない。8分木の上の階層で0になり、そもそも符号化対象にはならないからである。
 S203において、Octree変換部130は、対象のブロックを8分割した場合に、非占有領域に含まれる分割領域の個数k(1<k<8)を調べ、対象のブロックの占有状態を(8-k)分木構造で表現する。
 以下、ブロックと非占有領域との間の位置関係の判定方法の例を説明する。Octree変換部130は、ブロック内の点(x,y,z)に対して、(x,y,z)((min x,min y,min z)(最も原点に近い頂点)及び(x,y,z)((max x,max y,max z))(最も原点から遠い頂点)と(a,a,b,b,c,c)を比較し、非占有領域(直方体)とブロックとの位置関係を判定する。
 比較の結果、「(x<a∨x>a)∨(y<b∨y>b)∨(z<c∨z>c)」が成立する場合、ブロック内に非占有領域が全く存在しないと判定される。この場合の例を図12に示す。
 「(x≦a∧x≧a)∧(y≦b∧y≧b)∧(z≦c∧z≧c)」が成立する場合、ブロックは完全に非占有領域に含まれると判定される。この場合の例を図13に示す。
 上記の何れでもない場合、ブロックの一部が非占有領域に含まれると判定される。この場合、Octree変換部130は、「a≦x≦a∧b≦y≦b∧c≦z≦c」を満たすx,y,z,x,y,zの組み合わせを見つける。組み合わせの数が、ブロックにおける非占有領域に含まれる頂点の数である。
 図15は、「a≦x≦a∧b≦y≦b∧c≦z≦c」となる例であり、ブロックの1つの頂点Aのみが非占有領域に含まれる。このブロックを8分割した場合に、各分割領域に図3に示した番号を付けるとすると、図15の例では頂点Aを含む領域7が除かれる候補となる領域である。
 Octree変換部130は、非占有領域の中にある各辺の長さがブロックの辺の1/2以上か否かを判定する。図15の例では、Octree変換部130は、辺AE、辺AC、辺ABのそれぞれが1/2以上、非占有領域に含まれるか否かを判定する。これは、領域7が完全に非占有領域に含まれるか否かを判定していることと同等である。領域7が完全に非占有領域に含まれる場合に、Octree変換部130は、ブロックから領域7を除き、7分木構造(つまり7ビット符号)で占有状態を表現する。領域7が完全には非占有領域に含まれていない場合、Octree変換部130は、ブロックから領域7を除くことなく、8分木構造(つまり8ビット符号)で占有状態を表現する。
 だだし、除かれる候補の領域が完全に非占有領域に含まれる場合にその領域を除くことは一例に過ぎない。例えば、除かれる候補の領域の一部(例えば、領域のK%(例えばKは90)以上)が非占有領域に含まれていればその領域を除くこととしてもよい。
 図16は、「a≦x≦a∧b≦y≦b∧c≦z≦c」、「a≦x≦a∧b≦y≦b∧c≦z≦c」となる例であり、ブロックの2つの頂点である頂点A、頂点Bが非占有領域に含まれる。このブロックを8分割した場合に、各分割領域に図3に示した番号を付けるとすると、図16の例では頂点Aを含む領域7と頂点Bを含む領域6が除かれる候補となる領域である。
 Octree変換部130は、非占有領域の中にある各辺の長さがブロックの辺の1/2以上か否かを判定する。図16の例では、Octree変換部130は、辺AE、辺AC、辺BF、辺BDのそれぞれが1/2以上、非占有領域に含まれるか否かを判定する。これは、領域7と領域6が完全に非占有領域に含まれるか否かを判定していることと同等である。領域7と領域6が完全に非占有領域に含まれる場合に、Octree変換部130は、ブロックから領域7と領域6を除き、6分木構造(つまり6ビット符号)で占有状態を表現する。領域7と領域6が完全には非占有領域に含まれていない場合、Octree変換部130は、ブロックから領域7と領域6を除くことなく、8分木構造(つまり8ビット符号)で占有状態を表現する。
 だだし、除かれる候補の領域(ここでは「領域7と領域6」)が完全に非占有領域に含まれる場合にその領域を除くことは一例に過ぎない。例えば、除かれる候補の領域の一部(例えば、領域のK%(例えばKは90)以上)が非占有領域に含まれていればその領域を除くこととしてもよい。
 図17は、「a≦x≦a∧b≦y≦b∧c≦z≦c」、「a≦x≦a∧b≦y≦b∧c≦z≦c」、「a≦x≦a∧b≦y≦b∧c≦z≦c」、「a≦x≦a∧b≦y≦b∧c≦z≦c」となる例であり、ブロックの4つの頂点である頂点A、頂点B、頂点C、頂点Dが非占有領域に含まれる。このブロックを8分割した場合に、各分割領域に図3に示した番号を付けるとすると、図17の例では頂点Aを含む領域7と頂点Bを含む領域6と頂点Cを含む領域5と頂点Dを含む領域4が除かれる候補となる領域である。
 Octree変換部130は、非占有領域の中にある各辺の長さがブロックの辺の1/2以上か否かを判定する。図17の例では、Octree変換部130は、辺AE、辺BF、辺CG、辺DHのそれぞれが1/2以上、非占有領域に含まれるか否かを判定する。これは、領域7と領域6と領域5と領域4が完全に非占有領域に含まれるか否かを判定していることと同等である。領域7と領域6と領域5と領域4が完全に非占有領域に含まれる場合に、Octree変換部130は、ブロックから領域7と領域6と領域5と領域4を除き、4分木構造(つまり4ビット符号)で占有状態を表現する。「領域7と領域6と領域5と領域4」が完全には非占有領域に含まれていない場合、Octree変換部130は、ブロックから「領域7と領域6と領域5と領域4」を除くことなく、8分木構造(つまり8ビット符号)で占有状態を表現する。
 だだし、除かれる候補の領域(ここでは「領域7と領域6と領域5と領域4」)が完全に非占有領域に含まれる場合にその領域を除くことは一例に過ぎない。例えば、除かれる候補の領域の一部(例えば、領域のK%(例えばKは90)以上)が非占有領域に含まれていればその領域を除くこととしてもよい。
 なお、上記の例は、一例である。1~7のいずれの個数の領域も除かれる可能性がある。つまり、ブロックにおける非占有領域に含まれる分割領域の個数をk(1<k<8)とすると、当該ブロックについては(8-k)分木構造でその占有状態が表現される。
 (S104の詳細)
 S104で説明したとおり、算術符号化部140は、S103で生成されたN分木構造で表現された占有状態を示す数値(例:8分木であれば0~255の中のいずれかの数値)を算術符号化する。以下、S104の詳細を説明する。
 算術符号化部140は、符号化処理を行う中で、占有状態を示す各占有符号(=各数値)の発生確率を計算し、数値と発生確率を対応付けた確率テーブルを順次更新し、それに伴い、数値と符号語の対応テーブルである符号化テーブルも更新する。算術符号化部140は、最新の符号化テーブルを使用して符号化を行う。
 S104の詳細を図10を参照して説明する。S301において、算術符号化部140は、算術符号化対象の占有符号が何分木構造で表現されたものかを判断し、8分木であればS302に進み、従来と同様の0~255の数値に対する算術符号化を行う。
 S301での判定がN分木(N<8)であれば、S303に進み、算術符号化部140は、8分木構造での占有符号の算術符号化に使用する確率テーブルから、非占有部分のビットを0とする場合の確率テーブルを生成することで、N分木用の符号化テーブルを作成し、当該符号化テーブルを用いて算術符号化を行う。
 図18は、S303の処理の具体例を示す図である。図18の(a)は、8ビット符号(0~255の数値)における各数値の発生確率を示す。これは、8ビット符号(0~255の数値)の確率テーブルに相当する。算術符号化部140は、8ビット符号が発生する度にこの確率テーブルを更新する。
 算術符号化部140が、例えば、8ビットのうち、8番目のブロックに対応するビットを除いた7ビットの符号(●○○○○○○○)の数値を算術符号化する場合において、算術符号化部140は、図18(b)に示すように、8ビット符号の確率テーブルにおける7ビット符号に対応する数値の発生確率を流用する。ただし、0~127の確率の和が1になるように確率の大きさを調整する。算術符号化部140は、図18(b)に示す確率テーブルから7ビット符号の算術符号化用の符号化テーブルを生成し、それを用いて算術符号化を行う。
 また、算術符号化部140が、例えば、8ビットのうち、8番目と7番目のブロックに対応するビットを除いた6ビットの符号(●●○○○○○○)の数値を算術符号化する場合において、算術符号化部140は、図18(c)に示すように、8ビット符号の確率テーブルにおける6ビット符号に対応する数値の発生確率を流用する。ただし、0~63の確率の和が1になるように調整する。算術符号化部140は、図18(c)に示す確率テーブルから6ビット符号の算術符号化用の符号化テーブルを生成し、それを用いて算術符号化を行う。
 (復号装置200の動作例)
 次に、図19のフローチャートに基づいて、図6の構成を備える復号装置200の動作例を説明する。符号化装置100から復号装置200に対し、算術符号化された占有符号の符号化データ、非占有領域を表す情報等がビットストリームとして送信されており、復号装置200の入力部210は、当該ビットストリームを受信し、入力する(S401)。
 S402において、算術復号部220は、算術符号化された占有符号の符号化データを算術復号して、N分木構造(1≦N≦8)で表現された占有符号を取得する。
 S403において、Octree変換部230は、符号化時と同じサイズの立方体Bを生成するとともに、符号化装置100から受信した情報から得られる非占有領域に対し、符号化時と同じ座標変換を行う。
 S404において、Octree変換部230は、符号化時と同様に、非占有領域を含む立方体Bに対して、Octree構造への変換を行う。その中で、分割したブロックに対応する占有符号のビットが1であれば、そのブロックを更に分割する処理を、ブロックが所定のサイズ(例えば1)になるまで繰り返す。
 S405において、S404で得られたOctree構造(立方体Bから、N分割(N≦8)が再帰的に繰り返されて得られた構造)において、点群データ取得部240は、所定のサイズのブロックに対応する占有符号のビットが1である当該所定のサイズのブロックの座標を、点群データにおける点の座標として取得する。
 S406において、座標逆変換部250は、S405で得られた点群データに対し、符号化時の点群データに対する座標変換と逆の座標変換を行うことで、元の点群データ(元の座標の集合)を得る。その後、出力部260は、例えば、得られた点群データを画像として表示する。
 上記のS404におけるOctree構造への変換においては、符号化のS103で説明した処理と同じく、分割対象のブロックについて、当該ブロックと非占有領域との位置関係に応じて、当該ブロックについてのN分木構造(1≦N≦8)を決定する。
 より具体的な処理は図9で説明した処理と同様であるので、図9を参照して説明する。
 図9のS201において、Octree変換部230は、分割対象となるブロック(対応する占有符号が1であるブロック)と非占有領域との包含関係を判定する。
 S201において、ブロック内に非占有領域が存在しないと判定された場合、S202に進み、Octree変換部230は、当該ブロックを8分割し、8分木構造を生成する。
 S201において、ブロック内に非占有領域が存在すると判定された場合、S203に進む。S203において、Octree変換部230は、対象のブロックを8分割した場合に、非占有領域に含まれる分割領域の個数k(k<8)を調べ、対象のブロックを8分割したものからk個の分割領域を除くことで、(8-k)分木構造を生成する。言い換えると、Octree変換部230は、分割対象のブロックと、非占有領域との間の包含関係に基づいて、当該分割対象のブロックに対するN分木構造のNの値を決定する。復号時におけるブロックと非占有領域との包含関係の判定処理、及び分割領域を除く処理は、符号化時でのこれらの処理と同一であり、具体例は図12~図17を参照して説明したとおりである。
 (実施の形態の効果、まとめ)
 以上、説明したように、本実施の形態によれば、8分木構造を用いた点群データの符号化あるいは復号において、符号量を削減することを可能とする技術が提供される。
 本明細書には、少なくとも下記の各項に記載した復号方法、符号化方法、復号装置、及びプログラムが記載されている。
(第1項)
 符号化データから点群データを復号する復号装置が実行する復号方法であって、
 前記符号化データを復号することによりN(1≦N≦8)分木構造で表現された占有符号を取得する復号ステップと、
 前記点群データの全てを含むことができる立方体を8ブロックに分割した後、分割したブロックに対応する占有符号のビットが1であれば、そのブロックを更に分割してN分木構造を生成する処理を、ブロックが所定のサイズになるまで繰り返す変換ステップと、
 前記所定のサイズのブロックに対応する占有符号のビットが1である当該所定のサイズのブロックの座標を、前記点群データにおける点の座標として取得する取得ステップと、を備え、
 前記変換ステップにおいて、前記復号装置は、分割対象のブロックと、予め定めた非占有領域との間の包含関係に基づいて、前記分割対象のブロックに対するN分木構造のNの値を決定する
 復号方法。
(第2項)
 前記変換ステップにおいて、前記復号装置は、前記分割対象のブロックを8分割したときに得られる8分割領域のうち、前記非占有領域に全部又は一部が含まれる分割領域の個数を8から引いた数を前記Nとして決定する
 第1項に記載の復号方法。
(第3項)
 前記非占有領域は、前記点群データにより表わされる形状を含む空間において、物体が存在しない領域として決定された領域であり、前記非占有領域は、物体が存在しない領域と物体が存在する領域との境界を含む
 第1項又は第2項に記載の復号方法。
(第4項)
 点群データを符号化する符号化装置が実行する符号化方法であって、
 前記点群データの全てを含む立方体を8ブロックに分割した後、分割されたブロックの中に点が含まれていれば当該ブロックに1を割り当て、点が含まれていなければ当該ブロックに0を割り当てることにより、N(1≦N≦8)分木構造で表現した占有符号を生成し、1が割り当てられたブロックを更に分割して占有符号を生成する処理を、ブロックのサイズが所定サイズになるまで繰り返し実行する変換ステップと、
 前記変換ステップにより生成された占有符号を符号化し、符号化データを出力するステップとを備え、
 前記変換ステップにおいて、前記符号化装置は、分割対象のブロックと、予め定めた非占有領域との間の包含関係に基づいて、前記分割対象のブロックに対するN分木構造のNの値を決定する
 符号化方法。
(第5項)
 符号化データから点群データを復号する復号装置であって、
 前記符号化データを復号することによりN(1≦N≦8)分木構造で表現された占有符号を取得する復号部と、
 前記点群データの全てを含むことができる立方体を8ブロックに分割した後、分割したブロックに対応する占有符号のビットが1であれば、そのブロックを更に分割してN分木構造を生成する処理を、ブロックが所定のサイズになるまで繰り返す変換部と、
 前記所定のサイズのブロックに対応する占有符号のビットが1である当該所定のサイズのブロックの座標を、前記点群データにおける点の座標として取得する取得部と、を備え、
 前記変換部は、分割対象のブロックと、予め定めた非占有領域との間の包含関係に基づいて、前記分割対象のブロックに対するN分木構造のNの値を決定する
 復号装置。
(第6項)
 コンピュータを、第5項に記載の復号装置の各部として機能させるためのプログラム。
 以上、本実施の形態について説明したが、本発明はかかる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
100 符号化装置
110 入力部
120 座標変換部
130 Octree変換部
140 算術符号化部
150 出力部
200 復号装置
210 入力部
220 算術復号部
230 Octree変換部
240 点群データ取得部
250 座標逆変換部
260 出力部
300 ネットワーク
1000 ドライブ装置
1001 記録媒体
1002 補助記憶装置
1003 メモリ装置
1004 CPU
1005 インターフェース装置
1006 表示装置
1007 入力装置

Claims (6)

  1.  符号化データから点群データを復号する復号装置が実行する復号方法であって、
     前記符号化データを復号することによりN(1≦N≦8)分木構造で表現された占有符号を取得する復号ステップと、
     前記点群データの全てを含むことができる立方体を8ブロックに分割した後、分割したブロックに対応する占有符号のビットが1であれば、そのブロックを更に分割してN分木構造を生成する処理を、ブロックが所定のサイズになるまで繰り返す変換ステップと、
     前記所定のサイズのブロックに対応する占有符号のビットが1である当該所定のサイズのブロックの座標を、前記点群データにおける点の座標として取得する取得ステップと、を備え、
     前記変換ステップにおいて、前記復号装置は、分割対象のブロックと、予め定めた非占有領域との間の包含関係に基づいて、前記分割対象のブロックに対するN分木構造のNの値を決定する
     復号方法。
  2.  前記変換ステップにおいて、前記復号装置は、前記分割対象のブロックを8分割したときに得られる8分割領域のうち、前記非占有領域に全部又は一部が含まれる分割領域の個数を8から引いた数を前記Nとして決定する
     請求項1に記載の復号方法。
  3.  前記非占有領域は、前記点群データにより表わされる形状を含む空間において、物体が存在しない領域として決定された領域であり、前記非占有領域は、物体が存在しない領域と物体が存在する領域との境界を含む
     請求項1又は2に記載の復号方法。
  4.  点群データを符号化する符号化装置が実行する符号化方法であって、
     前記点群データの全てを含む立方体を8ブロックに分割した後、分割されたブロックの中に点が含まれていれば当該ブロックに1を割り当て、点が含まれていなければ当該ブロックに0を割り当てることにより、N(1≦N≦8)分木構造で表現した占有符号を生成し、1が割り当てられたブロックを更に分割して占有符号を生成する処理を、ブロックのサイズが所定サイズになるまで繰り返し実行する変換ステップと、
     前記変換ステップにより生成された占有符号を符号化し、符号化データを出力するステップとを備え、
     前記変換ステップにおいて、前記符号化装置は、分割対象のブロックと、予め定めた非占有領域との間の包含関係に基づいて、前記分割対象のブロックに対するN分木構造のNの値を決定する
     符号化方法。
  5.  符号化データから点群データを復号する復号装置であって、
     前記符号化データを復号することによりN(1≦N≦8)分木構造で表現された占有符号を取得する復号部と、
     前記点群データの全てを含むことができる立方体を8ブロックに分割した後、分割したブロックに対応する占有符号のビットが1であれば、そのブロックを更に分割してN分木構造を生成する処理を、ブロックが所定のサイズになるまで繰り返す変換部と、
     前記所定のサイズのブロックに対応する占有符号のビットが1である当該所定のサイズのブロックの座標を、前記点群データにおける点の座標として取得する取得部と、を備え、
     前記変換部は、分割対象のブロックと、予め定めた非占有領域との間の包含関係に基づいて、前記分割対象のブロックに対するN分木構造のNの値を決定する
     復号装置。
  6.  コンピュータを、請求項5に記載の復号装置の各部として機能させるためのプログラム。
PCT/JP2019/046240 2019-11-26 2019-11-26 復号方法、符号化方法、復号装置、及びプログラム WO2021106089A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2021560813A JP7322970B2 (ja) 2019-11-26 2019-11-26 復号方法、符号化方法、復号装置、及びプログラム
US17/779,533 US20220405981A1 (en) 2019-11-26 2019-11-26 Decoding method, encoding method, decoding apparatus and program
PCT/JP2019/046240 WO2021106089A1 (ja) 2019-11-26 2019-11-26 復号方法、符号化方法、復号装置、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2019/046240 WO2021106089A1 (ja) 2019-11-26 2019-11-26 復号方法、符号化方法、復号装置、及びプログラム

Publications (1)

Publication Number Publication Date
WO2021106089A1 true WO2021106089A1 (ja) 2021-06-03

Family

ID=76129232

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2019/046240 WO2021106089A1 (ja) 2019-11-26 2019-11-26 復号方法、符号化方法、復号装置、及びプログラム

Country Status (3)

Country Link
US (1) US20220405981A1 (ja)
JP (1) JP7322970B2 (ja)
WO (1) WO2021106089A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113518226A (zh) * 2021-06-29 2021-10-19 福州大学 一种基于地面分割的g-pcc点云编码改进方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004220312A (ja) * 2003-01-15 2004-08-05 Japan Science & Technology Agency 多視点カメラシステム
JP2005259139A (ja) * 2004-03-08 2005-09-22 Samsung Electronics Co Ltd 適応的2n進ツリーの生成方法、ならびにそれを利用して3次元体積データを符号化/復号化する方法および装置
JP2008309533A (ja) * 2007-06-13 2008-12-25 Ihi Corp 車両形状計測方法と装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004220312A (ja) * 2003-01-15 2004-08-05 Japan Science & Technology Agency 多視点カメラシステム
JP2005259139A (ja) * 2004-03-08 2005-09-22 Samsung Electronics Co Ltd 適応的2n進ツリーの生成方法、ならびにそれを利用して3次元体積データを符号化/復号化する方法および装置
JP2008309533A (ja) * 2007-06-13 2008-12-25 Ihi Corp 車両形状計測方法と装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113518226A (zh) * 2021-06-29 2021-10-19 福州大学 一种基于地面分割的g-pcc点云编码改进方法

Also Published As

Publication number Publication date
JPWO2021106089A1 (ja) 2021-06-03
US20220405981A1 (en) 2022-12-22
JP7322970B2 (ja) 2023-08-08

Similar Documents

Publication Publication Date Title
CN113615181B (zh) 用于点云编解码的方法、装置
JP6826368B2 (ja) 符号化装置及びその制御方法
JP7384159B2 (ja) 画像処理装置および方法
KR100969764B1 (ko) 메쉬 모델로 구현된 3차원 데이터의 부호화 및 복호화 방법
CN111937402A (zh) 图像处理装置和方法
CN112771583A (zh) 视频编码的方法和装置
WO2021065536A1 (ja) 情報処理装置および方法
KR101844297B1 (ko) 3차원 메쉬 부호화 방법 및 장치
CN113632142A (zh) 点云压缩的方法和装置
CN113179411A (zh) 点云属性编解码方法、装置、计算机设备及存储介质
CN112188197A (zh) 通道间点云属性解码方法、装置以及可读存储介质
WO2021106089A1 (ja) 復号方法、符号化方法、復号装置、及びプログラム
CN113544747A (zh) 用于点云编解码的几何合并模式的方法和装置
KR20220113783A (ko) 포인트 클라우드 코딩을 위한 방법 및 장치
CN113315977A (zh) 点云信息解码的方法和装置
CN115486079A (zh) 用于构建三维几何的方法和装置
WO2021002214A1 (ja) 情報処理装置および方法
Samus et al. 3D image mesh entropy coding
JP6893854B2 (ja) 図形圧縮符号化方法
KR101211436B1 (ko) 3차원 컨텐츠 데이터를 인코딩 및 디코딩하기 위한 방법
WO2023085076A1 (ja) 情報処理装置および方法
WO2023281929A1 (ja) 情報処理装置および方法
WO2023277128A1 (ja) 点群復号装置、点群復号方法及びプログラム
WO2023127052A1 (ja) 復号装置、符号化装置、復号プログラム、符号化プログラム、復号方法および符号化方法
JP2024058011A (ja) 点群復号装置、点群復号方法及びプログラム

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 19954188

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2021560813

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 19954188

Country of ref document: EP

Kind code of ref document: A1