1. 05 Jun, 2018 16 commits
  2. 23 May, 2018 5 commits
  3. 17 May, 2018 1 commit
  4. 16 May, 2018 4 commits
  5. 11 May, 2018 2 commits
    • Ohji Nakagami's avatar
      m42538/recolour: implement recolouring method of m42141 option 2 · 2c6f23ec
      Ohji Nakagami authored and David Flynn's avatar David Flynn committed
      This commit eliminates the blending of point attribute values during
      the attribute transfer process used in geometry quantisation by forcing
      the blending weight to be 0|1 (m42141).
      
      m42538 also recommends to disable the bounded search of the closest
      attribute from the contributing set by setting searchRange=0.  This is
      reflected by a change to the software defaults and configuration.
      2c6f23ec
    • Ohji Nakagami's avatar
      m42538/recolour: extend reflectance clipping to 16-bit range · b328078c
      Ohji Nakagami authored and David Flynn's avatar David Flynn committed
      This commit fixes an issue with source sequences that contain 16-bit
      reflectance data, which may be clipped to 8-bit ranges during attribute
      transfer (recolouring) following geometry quantisation.
      b328078c
  6. 10 May, 2018 12 commits
    • David Flynn's avatar
      release: update version to 2.0-rc1 · c79fe4b7
      David Flynn authored
      c79fe4b7
    • David Flynn's avatar
      m42239/geometry: inferred direct position coding mode · 76d35c23
      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
      76d35c23
    • David Flynn's avatar
      m42238/geometry: neighbour contextualised coding of occupancy · ca4ac3f9
      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
      ca4ac3f9
    • David Flynn's avatar
    • David Flynn's avatar
    • Toshiyasu Sugio's avatar
      m42690/geometry: omit leaf node point count when mergeDuplicatePoints = 1 · d0e7584e
      Toshiyasu Sugio authored and David Flynn's avatar David Flynn committed
      In cases where all point positions are unique (either due to input or
      due to mergeDuplicatePoints = 1), there is no need to signal the number
      of points in each leaf node (since it is always 1).
      
      This commit adds a header flag to indicate this case, and modifies the
      encoder and decoder to omit the point count signalling when
      mergeDuplicatePoints = 1.
      d0e7584e
    • David Flynn's avatar
      m42611/geometry: immediately (de)code points upon encountering a leaf · 96a95006
      David Flynn authored
      This change avoids enqueueing an additional node for every point in the
      input for the sole purpose of encoding the position count in a
      subsequent iteration.
      
      At the penultimate level of the geometry octree, a node's children
      (which cannot be further split) are immediately encoded or decoded.
      96a95006
    • David Flynn's avatar
      geometry/encoder: use counting sort to reduce overhead · acbf4c62
      David Flynn authored
      This commit eliminates the temporary fifo used in partitioning each node
      into child nodes.  Rather than using independent sorting passes to apply
      a binary partition to each of the x, y, and z axis, a counting sort
      permits all eight output positions to be calculated with a single pass,
      and a further pass to reorder the elements.
      acbf4c62
    • David Flynn's avatar
      geometry: replace dynamic std::deque with fixed-size ring buffer · b1f907de
      David Flynn authored
      Use of an std::deque can involve a large number of malloc operations
      as the internal sections of the queue are repeatedly allocated and
      released during the geometry coding loop.
      
      This commit provides a ring buffer implementation that uses the
      worst-case octree node count (ie, ~number of input points) as
      a fixed-size buffer.
      b1f907de
    • David Flynn's avatar
      geometry: reduce size of node by 8 bytes (size_t -> uint32_t) · 53d86425
      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.
      53d86425
    • David Flynn's avatar
      geometry: replace bounding box with position and current tree depth · c60edc6e
      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.
      c60edc6e
    • David Flynn's avatar
      m42690/geometry: avoid aliasing when max bounding box is power of two · 8f125922
      David Flynn authored
      This commit fixes a bug where coding certain point clouds may
      result in points being moved at the edge of the bounding box.
      One such manifestation is the appearance of duplicate points in
      a point cloud originally with unique point positions.
      
      The maximum should be calculated as the lowest power of two minus
      one that contains the bounding box.
      8f125922