- 01 Nov, 2018 2 commits
-
-
Replace the k-d tree based nearest neighbour search with an approximate search based upon the points in Morton order.
-
This commit provides an ability to vary the number of direct neighbours used in the predicting transform. Mode 0 corresponds to the existing averaging, and mode n selects the n-th nearest neighbour for direct prediction. The provided code has been reworked to: - rewrite unary coding to be a little more obvious - tidy the mode decision path - add configuration for max_num_direct_predictors (renamed from MaxNumPredCand) - now counts the number of single predictors, rather than prediction modes.
-
- 31 Oct, 2018 38 commits
-
-
David Flynn authored
This commit provides an implementation of the entropy coding interface using the dirac (schroedinger) arithmetic codec. In order to handle any remaining m-ary symbols, a naïve unary binarisation is employed.
-
David Flynn authored
-
David Flynn authored
-
David Flynn authored
-
David Flynn authored
-
David Flynn authored
-
David Flynn authored
-
David Flynn authored
This includes the removal of dirac specific context chains used in exp-golomb prefix coding.
-
David Flynn authored
This commit imports an implementation of the dirac arithmetic codec from the third party schroedinger-1.0.11 library.
-
David Flynn authored
This commit adds an arithmetic codec interface class that allows a compile time choice of arithmetic codec implementation. Context types are renamed to support compile time selection, and existing support functions that were added to the third-party arithmetic codec are moved to the wrapper.
-
David Flynn authored
This commit provides a method to predict the child occupancy bits of a node based on the node's 26 neighbours. The prediction is used to contextualise coding of each occupancy bit. This tool requires the use of the occupancyAtlas for neighbour lookup. NB: a restriction in the current implementation requires that the atlas size is at most 8³. intra_pred_max_node_size_log2: 6
-
David Flynn authored
This commit provides the ability to contextualise occupancy bits using a prediction. Three context sets cover the not predicted, predicted unoccupied and predicted occupied cases.
-
When restricted neighbour contextualisation is used, this modification introduces an alternative neighbour reduction table. NB: the integrated table has been updated to remove the need to add additional remapping tables. This is a non-normative change.
-
David Flynn authored
Bitwise geometry occupancy coding uses a mapping table to select entropy contexts. This commit employs a dynamic mapping which is updated after each coding operation, replacing the previous static mapping tables. NB: the proposed version used a context with a halving period (max_count) of 64 symbols. However, this conflicts with another adoption (512 symbols), and a wholesale replacement of the arithmetic codec and context model. To resolve the conflict, the existing halving period (128) is used.
-
This commit replaces the m-ary coding of transform coefficient values with a binary coding using the dual-lut coder. Reworked to include a bug fix where the maximum attribute symbol value used by the dual lut coder is 64 rather than 255
-
This commit allows bytewise encoding of occupancy symbols using the dual-lut coder.
-
This commit provides an m-ary entropy coder based on a fixed-size dictionary with periodic updates, a cache of recently used symbols (updated using an LRU eviction policy), and a fallback direct binary coding of any unhandled symbols. NB: the proposed version used a context with a halving period (max_count) of 64 symbols. However, this conflicts with another adoption (512 symbols), and a wholesale replacement of the arithmetic codec and context model. To resolve the conflict, the existing halving period (128) is used.
-
David Flynn authored
This commit provides an encapsulated interface to the fast update option of the o3dgc context models with a statistic halving period of 128 symbols (max_count).
-
David Flynn authored
This commit prepares for the introduction of selectable bitwise and bytewise occupancy coding methods.
-
This commit uses a direct intersection check between the trisoup triangles and point cloud unit vectors. This avoids the need to upsample the triangles with dense sampling and then performing voxelisation.
-
This commit integrates a c++ trisoup codec, replacing the previous matlab implementation. The provided code has been reworked to avoid duplicating code, dead code, and operate with the current HLS.
-
When trisoup was completely independent, trisoup handled lossless geometry coding by using a leaf size of 1 and no triangles. This commit replaces that mode with the better performing octree geometry coder.
-
David Flynn authored
-
David Flynn authored
-
David Flynn authored
-
David Flynn authored
This commit splits the handling of the geometry brick header and octree geometry coding. The encoder/decoder classes now take care of coding the header, while the geometry coder handles the geometry coding itself.
-
David Flynn authored
This commit prepares for the possibility that geometry coding itself is lossy. Instead of performing recolouring just after input quantisation, it is deferred until after geometry processing. The recolouring functions are updated to handle differences in pointcloud scales rather than requiring the target pointcloud to be scaled identically to the source.
-
David Flynn authored
This commit replaces some repetitive code with a loop.
-
David Flynn authored
This commit removes unnecessary include directives.
-
David Flynn authored
This commit moves method definitions out of a header file into a separate compilation unit.
-
David Flynn authored
This commit moves various constants from PCCTMC3Common.h to a new constants.h. Hard coded values of constants have been replaced with their symbolic name.
-
David Flynn authored
This commit moves method definitions out of a header file into a separate compilation unit.
-
David Flynn authored
This commit refactors the storage and passing of entropy contexts in the geometry octree coder. An encapsulating class with all entropy coding methods is used to store the context state.
-
David Flynn authored
The geometry coder is quite large, especially with trisoup and has no benefit to being a header only implementation. This commit moves the geometry octree coder out of the header files and into geometry_octree_{en,de}coder.cpp.
-
David Flynn authored
This reduces confusion when adding a unique_ptr to the node structure.
-
David Flynn authored
Sometimes it is useful to encode geometry without attributes. However, the common test condition configurations all enable attribute coding. In order to avoid rewriting the configuration files, the "disableAttributeCoding" option configures the encoder as if no attributes are specified.
-
David Flynn authored
This commit adds configuration data for new cat1 and cat3 sequences: cat1, voxelised frames: boxer_viewdep_vox12 longdress_viewdep_vox12 loot_viewdep_vox12 redandblack_viewdep_vox12 soldier_viewdep_vox12 thaidancer_viewdep_vox12 cat3, LiDaR sqeuences: qnxadas-junction-approach: 74 frames qnxadas-junction-exit: 74 frames qnxadas-motorway-join: 500 frames qnxadas-navigating-bends: 300 frames
-
David Flynn authored
This commit fixes: - incorrect parsing of uint8 as uint16 - incorrect address-of calculation when parsing uint16
-