View Source Evision.KinFu.KinFu (Evision v0.2.9)

Summary

Types

t()

Type that represents an KinFu.KinFu struct.

Functions

Gets points and normals of current 3d mesh

Gets points and normals of current 3d mesh

Calculates normals for given points

Calculates normals for given points

Gets points of current 3d mesh

Gets points of current 3d mesh

Renders a volume into an image

Variant 1:

Renders a volume into an image

Renders a volume into an image

Resets the algorithm

Process next depth frame

Types

@type t() :: %Evision.KinFu.KinFu{ref: reference()}

Type that represents an KinFu.KinFu struct.

  • ref. reference()

    The underlying erlang resource variable.

Functions

@spec create(Keyword.t()) :: any() | {:error, String.t()}
@spec create(Evision.KinFu.Params.t()) :: t() | {:error, String.t()}

create

Positional Arguments
  • params: Params
Return
  • retval: KinFu

Python prototype (for reference only):

create(_params) -> retval
@spec getCloud(Keyword.t()) :: any() | {:error, String.t()}
@spec getCloud(Evision.KinFu.t()) ::
  {Evision.Mat.t(), Evision.Mat.t()} | {:error, String.t()}

Gets points and normals of current 3d mesh

Positional Arguments
  • self: Evision.KinFu.KinFu.t()
Return
  • points: Evision.Mat.t().

    vector of points which are 4-float vectors

  • normals: Evision.Mat.t().

    vector of normals which are 4-float vectors

The order of normals corresponds to order of points. The order of points is undefined.

Python prototype (for reference only):

getCloud([, points[, normals]]) -> points, normals
@spec getCloud(Evision.KinFu.t(), [{atom(), term()}, ...] | nil) ::
  {Evision.Mat.t(), Evision.Mat.t()} | {:error, String.t()}

Gets points and normals of current 3d mesh

Positional Arguments
  • self: Evision.KinFu.KinFu.t()
Return
  • points: Evision.Mat.t().

    vector of points which are 4-float vectors

  • normals: Evision.Mat.t().

    vector of normals which are 4-float vectors

The order of normals corresponds to order of points. The order of points is undefined.

Python prototype (for reference only):

getCloud([, points[, normals]]) -> points, normals
@spec getNormals(Keyword.t()) :: any() | {:error, String.t()}
Link to this function

getNormals(self, points)

View Source
@spec getNormals(Evision.KinFu.t(), Evision.Mat.maybe_mat_in()) ::
  Evision.Mat.t() | {:error, String.t()}

Calculates normals for given points

Positional Arguments
  • self: Evision.KinFu.KinFu.t()

  • points: Evision.Mat.

    input vector of points which are 4-float vectors

Return
  • normals: Evision.Mat.t().

    output vector of corresponding normals which are 4-float vectors

Python prototype (for reference only):

getNormals(points[, normals]) -> normals
Link to this function

getNormals(self, points, opts)

View Source
@spec getNormals(
  Evision.KinFu.t(),
  Evision.Mat.maybe_mat_in(),
  [{atom(), term()}, ...] | nil
) ::
  Evision.Mat.t() | {:error, String.t()}

Calculates normals for given points

Positional Arguments
  • self: Evision.KinFu.KinFu.t()

  • points: Evision.Mat.

    input vector of points which are 4-float vectors

Return
  • normals: Evision.Mat.t().

    output vector of corresponding normals which are 4-float vectors

Python prototype (for reference only):

getNormals(points[, normals]) -> normals
@spec getPoints(Keyword.t()) :: any() | {:error, String.t()}
@spec getPoints(Evision.KinFu.t()) :: Evision.Mat.t() | {:error, String.t()}

Gets points of current 3d mesh

Positional Arguments
  • self: Evision.KinFu.KinFu.t()
Return
  • points: Evision.Mat.t().

    vector of points which are 4-float vectors

The order of points is undefined.

Python prototype (for reference only):

getPoints([, points]) -> points
@spec getPoints(Evision.KinFu.t(), [{atom(), term()}, ...] | nil) ::
  Evision.Mat.t() | {:error, String.t()}

Gets points of current 3d mesh

Positional Arguments
  • self: Evision.KinFu.KinFu.t()
Return
  • points: Evision.Mat.t().

    vector of points which are 4-float vectors

The order of points is undefined.

Python prototype (for reference only):

getPoints([, points]) -> points
@spec render(Keyword.t()) :: any() | {:error, String.t()}
@spec render(Evision.KinFu.t()) :: Evision.Mat.t() | {:error, String.t()}

Renders a volume into an image

Positional Arguments
  • self: Evision.KinFu.KinFu.t()
Return
  • image: Evision.Mat.t().

    resulting image

Renders a 0-surface of TSDF using Phong shading into a CV_8UC4 Mat. Light pose is fixed in KinFu params.

Python prototype (for reference only):

render([, image]) -> image
@spec render(Evision.KinFu.t(), [{atom(), term()}, ...] | nil) ::
  Evision.Mat.t() | {:error, String.t()}
@spec render(Evision.KinFu.t(), Evision.Mat.t()) ::
  Evision.Mat.t() | {:error, String.t()}

Variant 1:

Renders a volume into an image

Positional Arguments
  • self: Evision.KinFu.KinFu.t()

  • cameraPose: Evision.Mat.

    pose of camera to render from. If empty then render from current pose which is a last frame camera pose.

Return
  • image: Evision.Mat.t().

    resulting image

Renders a 0-surface of TSDF using Phong shading into a CV_8UC4 Mat. Light pose is fixed in KinFu params.

Python prototype (for reference only):

render(cameraPose[, image]) -> image

Variant 2:

Renders a volume into an image

Positional Arguments
  • self: Evision.KinFu.KinFu.t()
Return
  • image: Evision.Mat.t().

    resulting image

Renders a 0-surface of TSDF using Phong shading into a CV_8UC4 Mat. Light pose is fixed in KinFu params.

Python prototype (for reference only):

render([, image]) -> image
Link to this function

render(self, cameraPose, opts)

View Source
@spec render(Evision.KinFu.t(), Evision.Mat.t(), [{atom(), term()}, ...] | nil) ::
  Evision.Mat.t() | {:error, String.t()}

Renders a volume into an image

Positional Arguments
  • self: Evision.KinFu.KinFu.t()

  • cameraPose: Evision.Mat.

    pose of camera to render from. If empty then render from current pose which is a last frame camera pose.

Return
  • image: Evision.Mat.t().

    resulting image

Renders a 0-surface of TSDF using Phong shading into a CV_8UC4 Mat. Light pose is fixed in KinFu params.

Python prototype (for reference only):

render(cameraPose[, image]) -> image
@spec reset(Keyword.t()) :: any() | {:error, String.t()}
@spec reset(Evision.KinFu.t()) :: Evision.KinFu.t() | {:error, String.t()}

Resets the algorithm

Positional Arguments
  • self: Evision.KinFu.KinFu.t()

Clears current model and resets a pose.

Python prototype (for reference only):

reset() -> None
@spec update(Keyword.t()) :: any() | {:error, String.t()}
@spec update(Evision.KinFu.t(), Evision.Mat.maybe_mat_in()) ::
  boolean() | {:error, String.t()}

Process next depth frame

Positional Arguments
  • self: Evision.KinFu.KinFu.t()

  • depth: Evision.Mat.

    one-channel image which size and depth scale is described in algorithm's parameters

Return
  • retval: bool

Integrates depth into voxel space with respect to its ICP-calculated pose. Input image is converted to CV_32F internally if has another type. @return true if succeeded to align new frame with current scene, false if opposite

Python prototype (for reference only):

update(depth) -> retval