- 16 Apr, 2019 7 commits
-
-
This LoD generation (subsampling) method uses the Morton-based ordering of points that is used to determine prediction neighbours. Each LoD level comprises 3/4 of the points of the previous.
-
This commit introduces zero run length coding for attribute residual value along with an eq1 flag which indicates if residual value is equal to 1 based on the current residual coding specification. In zero run length coding, the number of zeros prior to each residual value is counted as zerorun, and then zerorun is encoded instead of encoding sequence of 0s
-
This commit introduces control of the quantisation step size using the familiar HEVC | AVC quantisation parameter.
-
-
David Flynn authored
This function has never been used.
-
David Flynn authored
This is part of a series attempting to remove unhelpful typedefs. The old typedefs (PCCBox3D) is retained for compatibility, but marked as deprecated.
-
David Flynn authored
This is part of a series attempting to remove unhelpful typedefs. The old typedefs (PCCVector3D, PCCPoint3D, PCCColor3B) are retained for compatibility, but marked as deprecated.
-
- 06 Feb, 2019 1 commit
-
-
This uses a binary-tree to generate the levels-of-details for the lifting/predicting transforms as an alternative to Euclidean distance thresholding methods.
-
- 05 Feb, 2019 1 commit
-
-
This simplified attribute prediction scheme avoids computing the LoD structure in order to reduce the computational complexity of both the encoder and the decoder. It is activated by setting levelOfDetailCount=0. NB: this is only configured for lossless/near-lossless predictive attribute coding of cat3 sequences.
-
- 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 3 commits
-
-
David Flynn authored
This commit removes unnecessary include directives.
-
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
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.
-
- 29 Aug, 2018 6 commits
-
-
This functionality is unnecessary given a uniform quant_step size.
-
This commit removes PCCBuildLevelOfDetail2()
-
This commit updates the hard coded limit and default values, and updates the master configuration template.
-
This commit fixes an error in the hls: dist2 is capable of being a 64-bit value and must not be signalled as 32-bit.
-
This commit modifies PCCBuildLevelOfDetail to use the direct dist2 value, rather than attempting to derive dist2. This unifies the behaviour of the two PCCBuildLevelOfDetail*() implementations.
-
David Flynn authored
-
- 20 Aug, 2018 7 commits
-
-
David Flynn authored
This commit rewrites the codec high-level syntax: - the bitstream is divided into "bricks" (akin to an AVC/HEVC slice/tile). - sequence, geometry and attribute parameter sets describe the coding parameters in use generally and for a specific brick. - marshalling the bitstream payloads to a file format is achieved using a type-length-value encoding scheme. Additionally, the triSoup bitstream scale and translation values have been unified with (replaced by) the octree counterparts. For compatibility, existing command line parameters continue to function as before. NB: this commit does not incorporate flexibility in the decoding order. The decoder requires the bitstream to be presented in a fixed order.
-
This commit implements a lifting scheme optimized for lossy attribute compression, consisting of predict/update operators, and an adaptive quantization strategy.
-
Adaptively pick the number of neighbours considered during the prediction based on analysis of the reconstructed attribute values of the neighbours. From m42642, this is performed by computing the maximum difference between any two reconstructed attribute values of a points neighbours. If the variability is higher than a threshold, then apply a rate-distortion optimization procedure to choose between using either a single neighbour or all neighbours. The index of the best prediction strategy is arithmetically encoded. This commit: - implements the m42642 method - moves buildPredictors into transform-specific attribute encoding/decoding - adds quantizationStepsChroma - renames quantizationSteps -> quantizationStepsLuma df: fixed incorrect application of quantizationStepsLuma|Chroma df: updated cat3 cfg to specify quantizationStepsChroma df: fixed header encoding if quantizationStepsChroma missing
-
-
David Flynn authored
-
David Flynn authored
In the contextualisation of occupancy coding using neighbour patterns, this commit replaces the case when neighbour contextualisation is disabled with a constraint that restricts neighbour contextualisation only examine the direct siblings of a node. The restriction ensures that at most three neighbours may be present for a node. The configuration option "neighbourContextualisation=1" is replaced with "neighbourContextRestriction=0".
-
David Flynn authored
This commit provides an implementation of m42522 to code occupancy using a binary context model rather than a 255-ary model. A total of 581 binary contexts are used compared to the previous 10 255-ary contexts.
-
- 23 Jul, 2018 1 commit
-
-
David Flynn authored
-
- 29 Jun, 2018 1 commit
-
-
David Flynn authored
The original integration of IDCM implemented only the parent based eligibility check of m42239 and erroneously omitted the six-neighbour check. This commit adds the six-neighbour check, making use of the neighbour calculation from m42239 neighbour contextualised coding of occupancy.
-
- 05 Jun, 2018 3 commits
-
-
David Flynn authored
This commit aims to reduce the overload on the --mode option and to restore it to the previous encode/decode functionality. To this end, a new option (--geometryCodec=...) is added that selects the geometry codec. Version v1.0 use of --mode=... is supported.
-
This commit ports the Region Adaptive Hierarchical Transform for attribute coding with colour and reflectance variants.
-
David Flynn authored
In order to support multiple different attribute compression schemes, this commit moves the existing attribute compression code into a self-contained class.
-
- 17 May, 2018 1 commit
-
-
When coding attribute prediction deltas, this commit implements a scheme to code the first and subsequent attribute components using each: - one 65-ary contexts to code a delta prefix - one binary context to code remainder values This replaces the previous scheme using: - one n-ary (max 2048) context to code a delta prefix (first comp.) - one binary context to code remainder values (first comp.) - 512 n-ary (max 2048) contexts to code a delta prefix (subsequent comp.) - 512 binary contexts to code remainder values (subsequent comp.) Extracted-from: http://wg11.sc29.org/svn/repos/MPEG-I/Part5-PointCloudCompression/CE/CE0/CE0.1/trunk@1357 Reintegrated-by:
<dflynn@blackberry.com>
-
- 16 May, 2018 3 commits
-
-
This commit uses a constant (per attribute) number of neighbours in point attribute prediction, replacing a method where the encoder searches for an optimal number and signals this on a per point basis. Extracted-from: http://wg11.sc29.org/svn/repos/MPEG-I/Part5-PointCloudCompression/CE/CE0/CE0.1/trunk@1357 Reintegrated-by:
<dflynn@blackberry.com>
-
This commit reduces the number of nearest neighbours used in attribute prediction to 4 from 8 in order to reduce memory usage. Extracted-from: http://wg11.sc29.org/svn/repos/MPEG-I/Part5-PointCloudCompression/CE/CE0/CE0.1/trunk@1357 Reintegrated-by:
<dflynn@blackberry.com>
-
This commit removes the ability to control the quantization dead-zone parameters since they have always been identical to the step size. Rather than hard-coding the dead-zone size parameter to be the same as the step size, this commit: - Sets the dead-zone to be ±(2 * stepsize / 3) rather than ±stepsize - Does not narrow the interval following the dead-zone. Extracted-from: http://wg11.sc29.org/svn/repos/MPEG-I/Part5-PointCloudCompression/CE/CE0/CE0.1/trunk@1357 Reintegrated-by:
<dflynn@blackberry.com>
-
- 10 May, 2018 4 commits
-
-
David Flynn authored
This commit provides an implementation of m42239, permitting early coding termination of sub-trees that contain few points: - the so-called IDCM feature uses an eligibility criteria prior to permitting an encoder mode decision. - the feature may be controlled via the command line / config file using the --inferredDirectCodingMode=1|0 option
-
David Flynn authored
This commit provides an implementation of m42238 to code occupancy: - a node's child occupancy is contextualised based on the adjacent neighbours of the parent node. - when an isolated node is occupied by only a single child, the sub-node address [0,7] is directly coded instead of the 8-bit occupancy word. - collection of neighbour occupancy is performed using a scatter/ gather operation upon the insertion of each child node into the fifo queue. - the feature may be controlled via the command line / config file using the --neighbourContextualisation=1|0 option
-
David Flynn authored
This commit replaces the use of size_t (the index type of the input point list) with an explicit uint32_t type on the basis that it is not currently feasible to consider a point cloud with more than 2**32 points. uint32_t is used to follow the STL convention of a vector's size_type being unsigned.
-
David Flynn authored
This optimisation reduces the size of the PCCOctree3Node structure by replacing the per-node bounding box with the node's position (which is the same as the bounding box minimums). The contribution of the bounding box maximums can be deduced from the initial bounding box and the current tree depth. Counters are used to track the transition from one depth to the next during breadth-first traversal.
-