Foundation (CVMetric.dll) 14.0
2) AQS12 Segmentation and Point Extraction

Functions to segment the faces of the AQS12 and to extract intersection points. More...

Functions

cvbres_t CVMAQS12CreateFaceSegmentationImageFromDensePointCloud (CVCOMPOSITE DenseCloud, CVMAQS12SEGMENTOR3D Segmentor, IMG &LabelImage)
 Segments the given dense point cloud DenseCloud into the different faces of the AQS12 calibration piece. More...
 
cvbres_t CVMAQS12CreateFaceSegmentationImageFromDensePointCloudRect (CVCOMPOSITE DenseCloud, cvbdim_t Left, cvbdim_t Top, cvbdim_t Right, cvbdim_t Bottom, CVMAQS12SEGMENTOR3D Segmentor, IMG &LabelImage)
 Segments the given dense point cloud DenseCloud into the different faces of the AQS12 calibration piece. More...
 
cvbres_t CVMAQS12CreateFaceSegmentationImageFromRangeMap (IMG RangeMapImage, cvbdim_t PlaneIndex, CVMAQS12SEGMENTOR2D Segmentor, IMG &LabelImage)
 Segments the given RangeMapImage into the different faces of the AQS12 calibration piece. More...
 
cvbres_t CVMAQS12CreateFaceSegmentationImageFromRangeMapRect (IMG RangeMapImage, cvbdim_t PlaneIndex, cvbdim_t Left, cvbdim_t Top, cvbdim_t Right, cvbdim_t Bottom, CVMAQS12SEGMENTOR2D Segmentor, IMG &LabelImage)
 Segments the given RangeMapImage into the different faces of the AQS12 calibration piece. More...
 
cvbres_t CVMAQS12ExtractProjectedPointsFromDensePointCloud (CVCOMPOSITE DenseCloud, CVMAQS12SEGMENTOR3D Segmentor, CVC3DPointD ExtractedPoints[12])
 Extracts intersection points of faces of AQS12 calibration piece from a dense point cloud. Note, that the intersection points between faces and the base plane are computed. That means, that the lower roof points of AQS12 are projected to the base plane. More...
 
cvbres_t CVMAQS12ExtractProjectedPointsFromDensePointCloudRect (CVCOMPOSITE DenseCloud, cvbdim_t Left, cvbdim_t Top, cvbdim_t Right, cvbdim_t Bottom, CVMAQS12SEGMENTOR3D Segmentor, CVC3DPointD ExtractedPoints[12])
 Extracts intersection points of faces of AQS12 calibration piece from a dense point cloud. Note, that the intersection points between faces and the base plane are computed. That means, that the lower roof points of AQS12 are projected to the base plane. More...
 
cvbres_t CVMAQS12ExtractProjectedPointsFromRangeMap (IMG RangeMapImage, cvbdim_t PlaneIndex, CVMAQS12SEGMENTOR2D Segmentor, CVC3DPointD ExtractedPoints[12])
 Extracts intersection points of faces of AQS12 calibration piece from a range map. Note, that the intersection points between faces and the base plane are computed. That means, that the lower roof points of AQS12 are projected to the base plane. More...
 
cvbres_t CVMAQS12ExtractProjectedPointsFromRangeMapRect (IMG RangeMapImage, cvbdim_t PlaneIndex, cvbdim_t Left, cvbdim_t Top, cvbdim_t Right, cvbdim_t Bottom, CVMAQS12SEGMENTOR2D Segmentor, CVC3DPointD ExtractedPoints[12])
 Extracts intersection points of faces of AQS12 calibration piece from a range map. Note, that the intersection points between faces and the base plane are computed. That means, that the lower roof points of AQS12 are projected to the base plane. More...
 
cvbres_t CVMAQS12ProjectBottomRoofPointsToBasePlane (const CVC3DPointD Points[12], double &TopBasePlaneDistance, CVC3DPointD PointsProjected[12])
 Projects points on bottom side of the roof of the AQS12 calibration piece onto the base plane. More...
 

Detailed Description

Functions to segment the faces of the AQS12 and to extract intersection points.

Function Documentation

◆ CVMAQS12CreateFaceSegmentationImageFromDensePointCloud()

cvbres_t CVMAQS12CreateFaceSegmentationImageFromDensePointCloud ( CVCOMPOSITE  DenseCloud,
CVMAQS12SEGMENTOR3D  Segmentor,
IMG &  LabelImage 
)

Segments the given dense point cloud DenseCloud into the different faces of the AQS12 calibration piece.

Since
Common Vision Blox 13.4

This is the full image variant of CVMAQS12CreateFaceSegmentationImageFromDensePointCloudRect. Detailed information can be found there.

Note
If this function returns successfully you need to release the returned LabelImage via ReleaseObject if not needed anymore.
Parameters
[in]DenseCloudHandle of dense point cloud.
[in]SegmentorSegmentor created by the function CVMAQS12CreateSegmentorForDensePointCloud.
[out]LabelImageVariable to receive the result image handle.
Returns
  • CVC_ERROR(CVC_E_OK) on success
  • CVC_ERROR(CVC_E_WRONGOBJECT) if DenseCloud is a nullptr or not dense or if Segmentor is invalid.
  • CVC_ERROR(CVC_E_NOTENOUGHDATA) if calibration piece could not be located properly.
  • CVC_ERROR(CVC_E_MEMORY) if not enough memory was available to create the label image.
See also
CVMAQS12CreateSegmentorForDensePointCloud, CVMAQS12CreateFaceSegmentationImageFromRangeMap

◆ CVMAQS12CreateFaceSegmentationImageFromDensePointCloudRect()

cvbres_t CVMAQS12CreateFaceSegmentationImageFromDensePointCloudRect ( CVCOMPOSITE  DenseCloud,
cvbdim_t  Left,
cvbdim_t  Top,
cvbdim_t  Right,
cvbdim_t  Bottom,
CVMAQS12SEGMENTOR3D  Segmentor,
IMG &  LabelImage 
)

Segments the given dense point cloud DenseCloud into the different faces of the AQS12 calibration piece.

Since
Common Vision Blox 13.4

This function expects a point cloud showing the AQS12 calibration piece in the following orientation:

Attention
The base plane of the point cloud has to be parallel to the xy plane.

The LabelImage will have the same dimension as RangeMapImage and a cvbdatatype_t of 8 (Mono 8bpp).

Label Value Comment
Ignore 0 not part of calibration piece
Base 1 part of the base plane.
Top face 2 part of the top face.
Face 0° 3 part of 0° face (right)
Face 40° 4 part of 40° face (right/down)
Face 140° 5 part of 140° face (left/down)
Face 180° 6 part of 180° face (left)
Face 220° 7 part of 220° face (left/top)
Face 320° 8 part of 320° face (right/top)
Note
If this function returns successfully you need to release the returned LabelImage via ReleaseObject if not needed anymore.
The region of interest must be selected on the grid of the dense point cloud. Left, top, right and bottom are indices for row and column.
Parameters
[in]DenseCloudHandle of dense point cloud.
[in]LeftFirst column for region of interest in dense cloud.
[in]TopFirst row for region of interest in dense cloud.
[in]RightLast column for region of interest in dense cloud (inclusive).
[in]BottomLast row for region of interest in dense cloud (inclusive).
[in]SegmentorSegmentor created by the function CVMAQS12CreateSegmentorForDensePointCloud.
[out]LabelImageVariable to receive the result image handle.
Returns
  • CVC_ERROR(CVC_E_OK) on success
  • CVC_ERROR(CVC_E_WRONGOBJECT) if DenseCloud is a nullptr or not dense or if Segmentor is invalid.
  • CVC_ERROR(CVC_E_PARAMETER) if aoi is invalid.
  • CVC_ERROR(CVC_E_NOTENOUGHDATA) if calibration piece could not be located properly.
  • CVC_ERROR(CVC_E_MEMORY) if not enough memory was available to create the label image.
See also
CVMAQS12CreateSegmentorForDensePointCloud, CVMAQS12CreateFaceSegmentationImageFromRangeMap

◆ CVMAQS12CreateFaceSegmentationImageFromRangeMap()

cvbres_t CVMAQS12CreateFaceSegmentationImageFromRangeMap ( IMG  RangeMapImage,
cvbdim_t  PlaneIndex,
CVMAQS12SEGMENTOR2D  Segmentor,
IMG &  LabelImage 
)

Segments the given RangeMapImage into the different faces of the AQS12 calibration piece.

Since
Common Vision Blox 13.4

This is the full image variant of CVMAQS12CreateFaceSegmentationImageFromRangeMapRect. Detailed information can be found there.

Note
If this function returns successfully you need to release the returned LabelImage via ReleaseObject if not needed anymore.
Parameters
[in]RangeMapImageHandle of 2½D image.
[in]PlaneIndexPlane of RangeMapImage to use in the range of [0 .. ImageDimension[.
[in]SegmentorSegmentor created by the function CVMAQS12CreateSegmentorForRangeMap.
[out]LabelImageVariable to receive the result image handle.
Returns
  • CVC_ERROR(CVC_E_OK) on success
  • CVC_ERROR(CVC_E_INVALIDDIMENSION) if PlaneIndex is out of range.
  • CVC_ERROR(CVC_E_WRONGOBJECT) if RangeMapImage is neither a IImageVPA nor IPlaneEnum object or if Segmentor is invalid.
  • CVC_ERROR(CVC_E_NOTENOUGHDATA) if calibration piece could not be located properly.
  • CVC_ERROR(CVC_E_MEMORY) if not enough memory was available to create the label image.
See also
CVMAQS12CreateSegmentorForRangeMap CVMAQS12CreateFaceSegmentationImageFromRangeMapRect

◆ CVMAQS12CreateFaceSegmentationImageFromRangeMapRect()

cvbres_t CVMAQS12CreateFaceSegmentationImageFromRangeMapRect ( IMG  RangeMapImage,
cvbdim_t  PlaneIndex,
cvbdim_t  Left,
cvbdim_t  Top,
cvbdim_t  Right,
cvbdim_t  Bottom,
CVMAQS12SEGMENTOR2D  Segmentor,
IMG &  LabelImage 
)

Segments the given RangeMapImage into the different faces of the AQS12 calibration piece.

Since
Common Vision Blox 13.4

This function expects a range map showing the AQS12 calibration piece in the following orientation:

The LabelImage will have the same dimension as RangeMapImage and a cvbdatatype_t of 8 (Mono 8bpp). Everything outside of the ROI will be set to Ignore.

Label Value Comment
Ignore 0 not part of calibration piece
Base 1 part of the base plane.
Top face 2 part of the top face.
Face 0° 3 part of 0° face (right)
Face 40° 4 part of 40° face (right/down)
Face 140° 5 part of 140° face (left/down)
Face 180° 6 part of 180° face (left)
Face 220° 7 part of 220° face (left/top)
Face 320° 8 part of 320° face (right/top)
Note
If this function returns successfully you need to release the returned LabelImage via ReleaseObject if not needed anymore.
Parameters
[in]RangeMapImageHandle of 2½D image.
[in]PlaneIndexPlane of RangeMapImage to use in the range of [0 .. ImageDimension[.
[in]LeftLeft border of region of interest in pixels.
[in]TopTop border of region of interest in pixels.
[in]RightRight border of region of interest in pixels (inclusive).
[in]BottomBottom border of region of interest in pixels (inclusive).
[in]SegmentorSegmentor created by the function CVMAQS12CreateSegmentorForRangeMap.
[out]LabelImageVariable to receive the result image handle.
Returns
  • CVC_ERROR(CVC_E_OK) on success
  • CVC_ERROR(CVC_E_INVALIDDIMENSION) if PlaneIndex is out of range.
  • CVC_ERROR(CVC_E_PARAMETER) if aoi is invalid.
  • CVC_ERROR(CVC_E_WRONGOBJECT) if RangeMapImage is neither a IImageVPA nor IPlaneEnum object or if Segmentor is invalid.
  • CVC_ERROR(CVC_E_NOTENOUGHDATA) if calibration piece could not be located properly.
  • CVC_ERROR(CVC_E_MEMORY) if not enough memory was available to create the label image.
See also
CVMAQS12CreateSegmentorForRangeMap CVMAQS12CreateFaceSegmentationImageFromRangeMap

◆ CVMAQS12ExtractProjectedPointsFromDensePointCloud()

cvbres_t CVMAQS12ExtractProjectedPointsFromDensePointCloud ( CVCOMPOSITE  DenseCloud,
CVMAQS12SEGMENTOR3D  Segmentor,
CVC3DPointD  ExtractedPoints[12] 
)

Extracts intersection points of faces of AQS12 calibration piece from a dense point cloud. Note, that the intersection points between faces and the base plane are computed. That means, that the lower roof points of AQS12 are projected to the base plane.

Since
Common Vision Blox 13.4
Attention
The base plane of the point cloud has to be parallel to the xy plane.
Parameters
[in]DenseCloudHandle of dense point cloud.
[in]SegmentorSegmentor created by the function CVMAQS12CreateSegmentorForDensePointCloud.
[out]ExtractedPointsExtracted points.
Returns
  • CVC_ERROR(CVC_E_OK) on success
  • CVC_ERROR(CVC_E_INVALIDDIMENSION) if PlaneIndex is out of range.
  • CVC_ERROR(CVC_E_WRONGOBJECT) if DenseCloud is a nullptr or not dense or if Segmentor is invalid.
  • CVC_ERROR(CVC_E_NOTENOUGHDATA) if calibration piece could not be located properly.
  • CVC_ERROR(CVC_E_MEMORY) if not enough memory was available
See also
CVMAQS12CreateFaceSegmentationImageFromRangeMapRect, CVMAQS12ExtractProjectedPointsFromRangeMap, CVMAQS12ExtractProjectedPointsFromDensePointCloudRect, CVMAQS12CreateSegmentorForDensePointCloud

◆ CVMAQS12ExtractProjectedPointsFromDensePointCloudRect()

cvbres_t CVMAQS12ExtractProjectedPointsFromDensePointCloudRect ( CVCOMPOSITE  DenseCloud,
cvbdim_t  Left,
cvbdim_t  Top,
cvbdim_t  Right,
cvbdim_t  Bottom,
CVMAQS12SEGMENTOR3D  Segmentor,
CVC3DPointD  ExtractedPoints[12] 
)

Extracts intersection points of faces of AQS12 calibration piece from a dense point cloud. Note, that the intersection points between faces and the base plane are computed. That means, that the lower roof points of AQS12 are projected to the base plane.

Since
Common Vision Blox 13.4
Attention
The base plane of the point cloud has to be parallel to the xy plane.
Note
The region of interest must be selected on the grid of the dense point cloud. Left, top, right and bottom are indices for row and column.
Parameters
[in]DenseCloudHandle of dense point cloud.
[in]LeftFirst column for region of interest in dense cloud.
[in]TopFirst row for region of interest in dense cloud.
[in]RightLast column for region of interest in dense cloud (inclusive).
[in]BottomLast row for region of interest in dense cloud (inclusive).
[in]SegmentorSegmentor created by the function CVMAQS12CreateSegmentorForDensePointCloud.
[out]ExtractedPointsExtracted points.
Returns
  • CVC_ERROR(CVC_E_OK) on success
  • CVC_ERROR(CVC_E_INVALIDDIMENSION) if PlaneIndex is out of range.
  • CVC_ERROR(CVC_E_PARAMETER) if aoi is invalid.
  • CVC_ERROR(CVC_E_WRONGOBJECT) if DenseCloud is a nullptr or not dense or if Segmentor is invalid.
  • CVC_ERROR(CVC_E_NOTENOUGHDATA) if calibration piece could not be located properly.
  • CVC_ERROR(CVC_E_MEMORY) if not enough memory was available
See also
CVMAQS12CreateFaceSegmentationImageFromRangeMapRect, CVMAQS12ExtractProjectedPointsFromRangeMap, CVMAQS12ExtractProjectedPointsFromDensePointCloud, CVMAQS12CreateSegmentorForDensePointCloud

◆ CVMAQS12ExtractProjectedPointsFromRangeMap()

cvbres_t CVMAQS12ExtractProjectedPointsFromRangeMap ( IMG  RangeMapImage,
cvbdim_t  PlaneIndex,
CVMAQS12SEGMENTOR2D  Segmentor,
CVC3DPointD  ExtractedPoints[12] 
)

Extracts intersection points of faces of AQS12 calibration piece from a range map. Note, that the intersection points between faces and the base plane are computed. That means, that the lower roof points of AQS12 are projected to the base plane.

Note
The point extraction on range maps is considerably slower than on point clouds (with CVMAQS12ExtractProjectedPointsFromDensePointCloud).
Since
Common Vision Blox 13.4
Parameters
[in]RangeMapImageHandle of 2½D image.
[in]PlaneIndexPlane of RangeMapImage to use in the range of [0 .. ImageDimension[.
[in]SegmentorSegmentor created by the function CVMAQS12CreateSegmentorForRangeMap.
[out]ExtractedPointsExtracted points.
Returns
  • CVC_ERROR(CVC_E_OK) on success
  • CVC_ERROR(CVC_E_INVALIDDIMENSION) if PlaneIndex is out of range.
  • CVC_ERROR(CVC_E_WRONGOBJECT) if RangeMapImage is neither a IImageVPA nor IPlaneEnum object or if Segmentor is invalid.
  • CVC_ERROR(CVC_E_NOTENOUGHDATA) if calibration piece could not be located properly.
  • CVC_ERROR(CVC_E_MEMORY) if not enough memory was available
See also
CVMAQS12CreateFaceSegmentationImageFromRangeMapRect, CVMAQS12ExtractProjectedPointsFromRangeMapRect, CVMAQS12ExtractProjectedPointsFromDensePointCloud, CVMAQS12CreateSegmentorForRangeMap

◆ CVMAQS12ExtractProjectedPointsFromRangeMapRect()

cvbres_t CVMAQS12ExtractProjectedPointsFromRangeMapRect ( IMG  RangeMapImage,
cvbdim_t  PlaneIndex,
cvbdim_t  Left,
cvbdim_t  Top,
cvbdim_t  Right,
cvbdim_t  Bottom,
CVMAQS12SEGMENTOR2D  Segmentor,
CVC3DPointD  ExtractedPoints[12] 
)

Extracts intersection points of faces of AQS12 calibration piece from a range map. Note, that the intersection points between faces and the base plane are computed. That means, that the lower roof points of AQS12 are projected to the base plane.

Note
The point extraction on range maps is considerably slower than on point clouds (with CVMAQS12ExtractProjectedPointsFromDensePointCloudRect).
The region of interest must be selected on the grid of the dense point cloud. Left, top, right and bottom are indices for row and column.
Since
Common Vision Blox 13.4
Parameters
[in]RangeMapImageHandle of 2½D image.
[in]PlaneIndexPlane of RangeMapImage to use in the range of [0 .. ImageDimension[.
[in]LeftLeft border of region of interest in pixels.
[in]TopTop border of region of interest in pixels.
[in]RightRight border of region of interest in pixels (inclusive).
[in]BottomBottom border of region of interest in pixels (inclusive).
[in]SegmentorSegmentor created by the function CVMAQS12CreateSegmentorForRangeMap.
[out]ExtractedPointsExtracted points.
Returns
  • CVC_ERROR(CVC_E_OK) on success
  • CVC_ERROR(CVC_E_INVALIDDIMENSION) if PlaneIndex is out of range.
  • CVC_ERROR(CVC_E_PARAMETER) if aoi is invalid.
  • CVC_ERROR(CVC_E_WRONGOBJECT) if RangeMapImage is neither a IImageVPA nor IPlaneEnum object or if Segmentor is invalid.
  • CVC_ERROR(CVC_E_NOTENOUGHDATA) if calibration piece could not be located properly.
  • CVC_ERROR(CVC_E_MEMORY) if not enough memory was available
See also
CVMAQS12CreateFaceSegmentationImageFromRangeMapRect, CVMAQS12ExtractProjectedPointsFromRangeMap, CVMAQS12ExtractProjectedPointsFromDensePointCloud, CVMAQS12CreateSegmentorForRangeMap

◆ CVMAQS12ProjectBottomRoofPointsToBasePlane()

cvbres_t CVMAQS12ProjectBottomRoofPointsToBasePlane ( const CVC3DPointD  Points[12],
double &  TopBasePlaneDistance,
CVC3DPointD  PointsProjected[12] 
)

Projects points on bottom side of the roof of the AQS12 calibration piece onto the base plane.

Roof points:
1
/ \
6 2
| |
| |
5 3
\ /
4
Bottom side of roof (points to be projected on base plane):
7
/ \
/ \
12 8
| |
| |
| |
| |
11 9
\ /
\ /
10
Parameters
[in]PointsThe 12 points of the AQS12 target.
[in]TopBasePlaneDistanceDistance between the top plane and the base plane (same units as Points). If it is zero, the TopBasePlaneDistance is computed. Attention, this only works, if the base plane lies on z=0.
[out]PointsProjectedPoints, where points 7-12 are projected on base plane.
Returns
  • CVC_ERROR(CVC_E_OK) on success