Package org.opencv.cv3d

## Class Octree

- java.lang.Object
- - org.opencv.cv3d.Octree

-     public class Octree
      extends java.lang.Object

  Octree for 3D vision. In 3D vision filed, the Octree is used to process and accelerate the pointcloud data. The class Octree represents the Octree data structure. Each Octree will have a fixed depth. The depth of Octree refers to the distance from the root node to the leaf node.All OctreeNodes will not exceed this depth.Increasing the depth will increase the amount of calculation exponentially. And the small number of depth refers low resolution of Octree. Each node contains 8 children, which are used to divide the space cube into eight parts. Each octree node represents a cube. And these eight children will have a fixed order, the order is described as follows: For illustration, assume, rootNode: origin == (0, 0, 0), size == 2 Then, children[0]: origin == (0, 0, 0), size == 1 children[1]: origin == (1, 0, 0), size == 1, along X-axis next to child 0 children[2]: origin == (0, 1, 0), size == 1, along Y-axis next to child 0 children[3]: origin == (1, 1, 0), size == 1, in X-Y plane children[4]: origin == (0, 0, 1), size == 1, along Z-axis next to child 0 children[5]: origin == (1, 0, 1), size == 1, in X-Z plane children[6]: origin == (0, 1, 1), size == 1, in Y-Z plane children[7]: origin == (1, 1, 1), size == 1, furthest from child 0

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected long` | `nativeObj` |

  - ### Constructor Summary

    Constructors
    Modifier | Constructor | Description
    --- | --- | ---
    `protected` | `Octree​(long addr)` |

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `static Octree` | `__fromPtr__​(long addr)` |
    `void` | `clear()` | Reset all octree parameter.
    `static Octree` | `createWithDepth​(int maxDepth, double size)` | Creates an empty Octree with given maximum depth
    `static Octree` | `createWithDepth​(int maxDepth, double size, Point3 origin)` | Creates an empty Octree with given maximum depth
    `static Octree` | `createWithDepth​(int maxDepth, double size, Point3 origin, boolean withColors)` | Creates an empty Octree with given maximum depth
    `static Octree` | `createWithDepth​(int maxDepth, Mat pointCloud)` | Create an Octree from the PointCloud data with the specific maxDepth
    `static Octree` | `createWithDepth​(int maxDepth, Mat pointCloud, Mat colors)` | Create an Octree from the PointCloud data with the specific maxDepth
    `static Octree` | `createWithResolution​(double resolution, double size)` | Creates an empty Octree with given resolution
    `static Octree` | `createWithResolution​(double resolution, double size, Point3 origin)` | Creates an empty Octree with given resolution
    `static Octree` | `createWithResolution​(double resolution, double size, Point3 origin, boolean withColors)` | Creates an empty Octree with given resolution
    `static Octree` | `createWithResolution​(double resolution, Mat pointCloud)` | Create an Octree from the PointCloud data with the specific resolution
    `static Octree` | `createWithResolution​(double resolution, Mat pointCloud, Mat colors)` | Create an Octree from the PointCloud data with the specific resolution
    `boolean` | `deletePoint​(Point3 point)` | Delete a given point from the Octree.
    `boolean` | `empty()` |
    `protected void` | `finalize()` |
    `long` | `getNativeObjAddr()` |
    `void` | `getPointCloudByOctree​(Mat restoredPointCloud)` | restore point cloud data from Octree.
    `void` | `getPointCloudByOctree​(Mat restoredPointCloud, Mat restoredColor)` | restore point cloud data from Octree.
    `boolean` | `insertPoint​(Point3 point)` | Insert a point data with color to a OctreeNode.
    `boolean` | `insertPoint​(Point3 point, Point3 color)` | Insert a point data with color to a OctreeNode.
    `boolean` | `isPointInBound​(Point3 point)` | Determine whether the point is within the space range of the specific cube.
    `void` | `KNNSearch​(Point3 query, int K, Mat points)` | K Nearest Neighbor Search in Octree.
    `void` | `KNNSearch​(Point3 query, int K, Mat points, Mat squareDists)` | K Nearest Neighbor Search in Octree.
    `void` | `KNNSearch​(Point3 query, int K, Mat points, Mat colors, Mat squareDists)` | K Nearest Neighbor Search in Octree.
    `int` | `radiusNNSearch​(Point3 query, float radius, Mat points)` | Radius Nearest Neighbor Search in Octree.
    `int` | `radiusNNSearch​(Point3 query, float radius, Mat points, Mat squareDists)` | Radius Nearest Neighbor Search in Octree.
    `int` | `radiusNNSearch​(Point3 query, float radius, Mat points, Mat colors, Mat squareDists)` | Radius Nearest Neighbor Search in Octree.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### nativeObj

          protected final long nativeObj

  - ### Constructor Detail

    - #### Octree

          protected Octree​(long addr)

  - ### Method Detail

    - #### getNativeObjAddr

          public long getNativeObjAddr()

    - #### __fromPtr__

          public static Octree __fromPtr__​(long addr)

    - #### createWithDepth

          public static Octree createWithDepth​(int maxDepth,
                                               double size,
                                               Point3 origin,
                                               boolean withColors)

      Creates an empty Octree with given maximum depth
      Parameters:
        `maxDepth` - The max depth of the Octree
        `size` - bounding box size for the Octree
        `origin` - Initial center coordinate
        `withColors` - Whether to keep per-point colors or not
      Returns:
        resulting Octree

    - #### createWithDepth

          public static Octree createWithDepth​(int maxDepth,
                                               double size,
                                               Point3 origin)

      Creates an empty Octree with given maximum depth
      Parameters:
        `maxDepth` - The max depth of the Octree
        `size` - bounding box size for the Octree
        `origin` - Initial center coordinate
      Returns:
        resulting Octree

    - #### createWithDepth

          public static Octree createWithDepth​(int maxDepth,
                                               double size)

      Creates an empty Octree with given maximum depth
      Parameters:
        `maxDepth` - The max depth of the Octree
        `size` - bounding box size for the Octree
      Returns:
        resulting Octree

    - #### createWithDepth

          public static Octree createWithDepth​(int maxDepth,
                                               Mat pointCloud,
                                               Mat colors)

      Create an Octree from the PointCloud data with the specific maxDepth
      Parameters:
        `maxDepth` - Max depth of the octree
        `pointCloud` - point cloud data, should be 3-channel float array
        `colors` - color attribute of point cloud in the same 3-channel float format
      Returns:
        resulting Octree

    - #### createWithDepth

          public static Octree createWithDepth​(int maxDepth,
                                               Mat pointCloud)

      Create an Octree from the PointCloud data with the specific maxDepth
      Parameters:
        `maxDepth` - Max depth of the octree
        `pointCloud` - point cloud data, should be 3-channel float array
      Returns:
        resulting Octree

    - #### createWithResolution

          public static Octree createWithResolution​(double resolution,
                                                    double size,
                                                    Point3 origin,
                                                    boolean withColors)

      Creates an empty Octree with given resolution
      Parameters:
        `resolution` - The size of the octree leaf node
        `size` - bounding box size for the Octree
        `origin` - Initial center coordinate
        `withColors` - Whether to keep per-point colors or not
      Returns:
        resulting Octree

    - #### createWithResolution

          public static Octree createWithResolution​(double resolution,
                                                    double size,
                                                    Point3 origin)

      Creates an empty Octree with given resolution
      Parameters:
        `resolution` - The size of the octree leaf node
        `size` - bounding box size for the Octree
        `origin` - Initial center coordinate
      Returns:
        resulting Octree

    - #### createWithResolution

          public static Octree createWithResolution​(double resolution,
                                                    double size)

      Creates an empty Octree with given resolution
      Parameters:
        `resolution` - The size of the octree leaf node
        `size` - bounding box size for the Octree
      Returns:
        resulting Octree

    - #### createWithResolution

          public static Octree createWithResolution​(double resolution,
                                                    Mat pointCloud,
                                                    Mat colors)

      Create an Octree from the PointCloud data with the specific resolution
      Parameters:
        `resolution` - The size of the octree leaf node
        `pointCloud` - point cloud data, should be 3-channel float array
        `colors` - color attribute of point cloud in the same 3-channel float format
      Returns:
        resulting octree

    - #### createWithResolution

          public static Octree createWithResolution​(double resolution,
                                                    Mat pointCloud)

      Create an Octree from the PointCloud data with the specific resolution
      Parameters:
        `resolution` - The size of the octree leaf node
        `pointCloud` - point cloud data, should be 3-channel float array
      Returns:
        resulting octree

    - #### insertPoint

          public boolean insertPoint​(Point3 point,
                                     Point3 color)

      Insert a point data with color to a OctreeNode.
      Parameters:
        `point` - The point data in Point3f format.
        `color` - The color attribute of point in Point3f format.
      Returns:
        Returns whether the insertion is successful.

    - #### insertPoint

          public boolean insertPoint​(Point3 point)

      Insert a point data with color to a OctreeNode.
      Parameters:
        `point` - The point data in Point3f format.
      Returns:
        Returns whether the insertion is successful.

    - #### isPointInBound

          public boolean isPointInBound​(Point3 point)

      Determine whether the point is within the space range of the specific cube.
      Parameters:
        `point` - The point coordinates.
      Returns:
        If point is in bound, return ture. Otherwise, false.

    - #### empty

          public boolean empty()

    - #### clear

          public void clear()

      Reset all octree parameter. Clear all the nodes of the octree and initialize the parameters.

    - #### deletePoint

          public boolean deletePoint​(Point3 point)

      Delete a given point from the Octree. Delete the corresponding element from the pointList in the corresponding leaf node. If the leaf node does not contain other points after deletion, this node will be deleted. In the same way, its parent node may also be deleted if its last child is deleted.
      Parameters:
        `point` - The point coordinates, comparison is epsilon-based
      Returns:
        return ture if the point is deleted successfully.

    - #### getPointCloudByOctree

          public void getPointCloudByOctree​(Mat restoredPointCloud,
                                            Mat restoredColor)

      restore point cloud data from Octree. Restore the point cloud data from existing octree. The points in same leaf node will be seen as the same point. This point is the center of the leaf node. If the resolution is small, it will work as a downSampling function.
      Parameters:
        `restoredPointCloud` - The output point cloud data, can be replaced by noArray() if not needed
        `restoredColor` - The color attribute of point cloud data, can be omitted if not needed

    - #### getPointCloudByOctree

          public void getPointCloudByOctree​(Mat restoredPointCloud)

      restore point cloud data from Octree. Restore the point cloud data from existing octree. The points in same leaf node will be seen as the same point. This point is the center of the leaf node. If the resolution is small, it will work as a downSampling function.
      Parameters:
        `restoredPointCloud` - The output point cloud data, can be replaced by noArray() if not needed

    - #### radiusNNSearch

          public int radiusNNSearch​(Point3 query,
                                    float radius,
                                    Mat points,
                                    Mat squareDists)

      Radius Nearest Neighbor Search in Octree. Search all points that are less than or equal to radius. And return the number of searched points.
      Parameters:
        `query` - Query point.
        `radius` - Retrieved radius value.
        `points` - Point output. Contains searched points in 3-float format, and output vector is not in order, can be replaced by noArray() if not needed
        `squareDists` - Dist output. Contains searched squared distance in floats, and output vector is not in order, can be omitted if not needed
      Returns:
        the number of searched points.

    - #### radiusNNSearch

          public int radiusNNSearch​(Point3 query,
                                    float radius,
                                    Mat points)

      Radius Nearest Neighbor Search in Octree. Search all points that are less than or equal to radius. And return the number of searched points.
      Parameters:
        `query` - Query point.
        `radius` - Retrieved radius value.
        `points` - Point output. Contains searched points in 3-float format, and output vector is not in order, can be replaced by noArray() if not needed can be omitted if not needed
      Returns:
        the number of searched points.

    - #### radiusNNSearch

          public int radiusNNSearch​(Point3 query,
                                    float radius,
                                    Mat points,
                                    Mat colors,
                                    Mat squareDists)

      Radius Nearest Neighbor Search in Octree. Search all points that are less than or equal to radius. And return the number of searched points.
      Parameters:
        `query` - Query point.
        `radius` - Retrieved radius value.
        `points` - Point output. Contains searched points in 3-float format, and output vector is not in order, can be replaced by noArray() if not needed
        `colors` - Color output. Contains colors corresponding to points in pointSet, can be replaced by noArray() if not needed
        `squareDists` - Dist output. Contains searched squared distance in floats, and output vector is not in order, can be replaced by noArray() if not needed
      Returns:
        the number of searched points.

    - #### KNNSearch

          public void KNNSearch​(Point3 query,
                                int K,
                                Mat points,
                                Mat squareDists)

      K Nearest Neighbor Search in Octree. Find the K nearest neighbors to the query point.
      Parameters:
        `query` - Query point.
        `K` - amount of nearest neighbors to find
        `points` - Point output. Contains K points in 3-float format, arranged in order of distance from near to far, can be replaced by noArray() if not needed
        `squareDists` - Dist output. Contains K squared distance in floats, arranged in order of distance from near to far, can be omitted if not needed

    - #### KNNSearch

          public void KNNSearch​(Point3 query,
                                int K,
                                Mat points)

      K Nearest Neighbor Search in Octree. Find the K nearest neighbors to the query point.
      Parameters:
        `query` - Query point.
        `K` - amount of nearest neighbors to find
        `points` - Point output. Contains K points in 3-float format, arranged in order of distance from near to far, can be replaced by noArray() if not needed can be omitted if not needed

    - #### KNNSearch

          public void KNNSearch​(Point3 query,
                                int K,
                                Mat points,
                                Mat colors,
                                Mat squareDists)

      K Nearest Neighbor Search in Octree. Find the K nearest neighbors to the query point.
      Parameters:
        `query` - Query point.
        `K` - amount of nearest neighbors to find
        `points` - Point output. Contains K points in 3-float format, arranged in order of distance from near to far, can be replaced by noArray() if not needed
        `colors` - Color output. Contains colors corresponding to points in pointSet, can be replaced by noArray() if not needed
        `squareDists` - Dist output. Contains K squared distance in floats, arranged in order of distance from near to far, can be replaced by noArray() if not needed

    - #### finalize

          protected void finalize()
                           throws java.lang.Throwable

      Overrides:
        `finalize` in class `java.lang.Object`
      Throws:
        `java.lang.Throwable`