Back to Aurora Vision Studio website

You are here: Start » Filter Reference » Point3DGrid » Point3DGrid Basics » CreatePoint3DGridFromImage

CreatePoint3DGridFromImage


Module: Vision3DStandard

Creates a Point3DGrid structure from coordinates encoded in pixels of image.

Applications

Creating a Point3DGrid structure out of an image obtained from a 3D camera or other external sources that encodes point cloud XYZ coordinates as pixel components of 2D image.
Name Type Description
Input value inImage Image Source image with per pixel encoded XYZ coordinates
Input value inRoi Region* Region determining valid points in resulting point grid
Input value inXCoordinateTransform PointCloudCoordinateTransform Description of the creation of the X coordinate
Input value inYCoordinateTransform PointCloudCoordinateTransform Description of the creation of the Y coordinate
Input value inZCoordinateTransform PointCloudCoordinateTransform Description of the creation of the Z coordinate
Output value outPoint3DGrid Point3DGrid

Description

The operation creates a point cloud object based on the input point image. Coordinates of points included in the cloud are created based on inXCoordinateTransform, inYCoordinateTransform and inYCoordinateTransform. The listed structures describe the transformation of pixel values and their indexes to a given coordinate. At least one of the transforms based on pixel location or value must be present in PointCloudCoordinateTransform.

Example for the coordination of x. We assume that inXCoordinateTransform.locationCoordinateTransform and inXCoordinateTransform.valueCoordinateTransform are not empty. Empty transformation will be skipped.

New value of pixel is given by:

\[ P_{x} = scale_{value} * value_{channel} + scale_{row} * i + scale_{column} * j + offset \]

where

  • \(scale_{value}\) is inXCoordinateTransform.valueCoordinateTransform.scale
  • \(value_{channel}\) is image pixel channel value, when channel is inXCoordinateTransform.valueCoordinateTransform.channelIndex
  • \(scale_{row}\) is inXCoordinateTransform.locationCoordinateTransform.rowScale
  • \(scale_{column}\) is inXCoordinateTransform.locationCoordinateTransform.columnScale
  • \(i\) is pixel row index
  • \(j\) is pixel column index
  • \(offset\) is inXCoordinateTransform.offset

InvalidValues are checked based on direct pixel value.

Limits are applied to the final, transformed 3D point.

Errors

This filter can throw an exception to report error. Read how to deal with errors in Error Handling.

List of possible exceptions:

Error type Description
DomainError Channel index from inXCoordinateTransform is bigger than image channel count in CreatePoint3DGridFromImage.
DomainError Channel index from inYCoordinateTransform is bigger than image channel count in CreatePoint3DGridFromImage.
DomainError Channel index from inZCoordinateTransform is bigger than image channel count in CreatePoint3DGridFromImage.
DomainError PointCloudCoordinateTransform requires at least one non-empty X coordinate transform in CreatePoint3DGridFromImage.
DomainError PointCloudCoordinateTransform requires at least one non-empty Y coordinate transform in CreatePoint3DGridFromImage.
DomainError PointCloudCoordinateTransform requires at least one non-empty Z coordinate transform in CreatePoint3DGridFromImage.

Complexity Level

This filter is available on Basic Complexity Level.

See Also

  • ArrangePoint3DArray – Creates a surface structure from Point3D array taking into account X and Y coordinates.