# Link to this section Summary

## Types

Type that represents an KinFu.KinFu struct.

## Functions

create

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

# Link to this section Types

Link to this type

# t()

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

Type that represents an KinFu.KinFu struct.

• ref. reference()

The underlying erlang resource variable.

# Link to this section Functions

Link to this function

# create(params)

View Source
@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
Link to this function

# getCloud(self)

View Source
@spec getCloud(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
Link to this function

# getCloud(self, opts)

View Source
@spec getCloud(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
Link to this function

# getNormals(self, points)

View Source
@spec getNormals(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.t().

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(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.t().

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

# getPoints(self)

View Source
@spec getPoints(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
Link to this function

# getPoints(self, opts)

View Source
@spec getPoints(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
Link to this function

# render(self)

View Source
@spec render(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
Link to this function

# render(self, opts)

View Source
@spec render(t(), [{atom(), term()}, ...] | nil) ::
Evision.Mat.t() | {:error, String.t()}
@spec render(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.t().

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(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.t().

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
Link to this function

# reset(self)

View Source
@spec reset(t()) :: 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
Link to this function

# update(self, depth)

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

Process next depth frame

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

• depth: Evision.Mat.t().

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