"Cognex.VisionPro3D"
This method clears any previously cached SetupImage.
Use the current InputVisionData to produce a maximally sized range
image. This is done using most of the current RunParams settings,
while ignoring the OutputImageXYMode, OutputImageZMode, and
OutputEnable settings. This range image is available via the read-only
SetupImage property. This range image will be used by
CreateCurrentRecord if available and requested.
The input vision data argument is null.
The supplied input vision data does not contain
the specified output space source.
The input range and grey images do not match in size.
The input CogVisionDataContainer is not either all range
images or all range / grey image pairs.
The input range images do not all contain the specified
shared space.
The input range image identified as the output space
source does not contain the specified output space.
Runs this Cog3DVisionDataStitchTool using the current
parameter settings.
Fires before the tool runs.
Fires when the tool runs. If the run was successful, results are
generated; if the run was not successful, no results are generated
and the previous results are cleared.
Fires after the tool runs.
Enable creation of records by bitwise ORing the appropriate
.
Fires when the value of this property changes.
Enable creation of records by bitwise ORing the appropriate
.
Fires when the value of this property changes.
Enable creation of records by bitwise ORing the appropriate
.
Fires when the value of this property changes.
The SetupImage from the most recent call to ComputeSetupImage.
This property may be null.
The result of the most recent run of this tool.
The operator that performs the actual stitching.
Fires when the value of this property changes.
The input vision data (either range images or range image / grey
image pairs) to be processed by the contained operator.
Fires when the value of this property changes.
Perform post deserialization setup. This method
may safely be called more than once.
Destruct this Cog3DVisionDataStitchTool.
Constructs a new instance of this class as a copy
of the given instance.
Construct a new instance of this class.
Create a clone, or copy, of this Cog3DVisionDataStitchTool.
Serializer for Cog3DVisionDataStitchTool object.
The standard SerializationInfo argument.
The standard StreamingContext argument.
Serialization constructor for a Cog3DVisionDataStitchTool object.
The standard SerializationInfo argument.
The standard StreamingContext argument.
This bit will be set in the EventArgs of a Changed event
every time the value returned by SetupImage
may have changed.
This bit will be set in the EventArgs of a Changed event
every time the value returned by Result
may have changed.
This bit will be set in the EventArgs of a Changed event
every time the value returned by InputVisionData
may have changed.
This bit will be set in the EventArgs of a Changed event
every time the value returned by RunParams
may have changed.
This bit will be set in the EventArgs of a Changed event
every time the value returned by CurrentRecordEnable
may have changed.
This bit will be set in the EventArgs of a Changed event
every time the value returned by LastRunRecordDiagEnable
may have changed.
This bit will be set in the EventArgs of a Changed event
every time the value returned by LastRunRecordEnable
may have changed.
The Cog3DVisionDataStitchTool class facilitates the use of a
Cog3DVisionDataStitch operator.
Enumeration of the diagnostic data that can be provided
in the tool's LasRunRecord.
Use these constants with
to specify the diagnostic
tool records
that the Cog3DVisionDataStitchTool generates when you call
.
Include all of the diagnostic data in the LastRunRecord.
Draw the (non-interactive) destination rectangle on any displayed
input range image.
Create a subrecord for each of the input grey images. Images are
by reference.
Create a subrecord for each of the input range images. Images are
by reference.
Do not include any of the diagnostic data in the
LastRunRecord.
Enumeration of the non-diagnostic data that can be provided
in the tool's LasRunRecord.
Use these constants with
to specify the
tool records
that the Cog3DVisionDataStitchTool generates when you call
.
Include all of the non-diagnostic data in the
LastRunRecord.
Create a subrecord that references the output grey image.
Create a subrecord that references the output range image.
Do not include any of the non-diagnostic data in the
LastRunRecord.
Enumeration of the data that can be provided in the tool's CurrentRecord.
Use these constants with
to specify the
tool records
that the Cog3DVisionDataStitchTool generates when you call
.
Include all possible records in the CurrentRecord.
Add an interactive CogRectangle as a subrecord of the SetupImage
subrecord. This rectangle is coupled to the RunParam's OutputImageXMin,
OutputImageXMax, OutputImageYMin, and OutputImageYMax parameters.
Create a subrecord for the cached, maximally sized setup image.
Create a subrecord for each of the input grey images. Images are
by reference.
Create a subrecord for each of the input range images. Images are
by reference.
Do not include any records in the CurrentRecord.
Perform stitching on the supplied vision data.
The CogVisionDataContainer containing the range images
(and optionally grey images) to be stitched.
A
containing the results of the stitching operation.
The input vision data argument is null.
No output is enabled.
Grey output is requested but there is no grey input.
The supplied input vision data does not contain
the specified output space source.
The input range and grey images do not match in size.
The input CogVisionDataContainer is not either all range
images or all range / grey image pairs.
The input range images do not all contain the specified
shared space.
The input range image identified as the output space
source does not contain the specified output space.
When
is
Priority,
this is how we select an output pixel value from more than one
overlapping input pixel. In such a case, the overlapping input
image with the numerically lowest priority value is chosen.
The structure of this CogDictionary is as follows. There should be
one key/value entry for each input image. The key should be the
same string as that used to idenitify an input image in the
that is supplied to the
method. The value should be a positive integer indicating
priority for that image: zero is the highest priority,
then one, then two, and so on.
How input pixels that overlap in X and Y will be processed to produce
an output pixel value.
The default is
MaxZ.
Fires when the value of this property changes.
The supplied value is not a member of
The maximum Z difference in client space over which overlapping pixel
values will be averaged. If
is
MaxZ, then overlapping pixels whose height is within this distance
of the maximum height at that location will be averaged. And if
is
MinZ, then overlapping pixels whose height is within this distance of
the minimum height at that location will be averaged. Overlapping pixel
height values that are outside the specified range will be ignored.
Finally, if
is any other value, this parameter is ignored.
The default is 0.0.
The maximum allowable Z difference in client space
()
between adjacent source data positions, between which range image voxels
will be interpolated. Adjacencies whose Z difference exceeds this value
will be disconnected. If
is false then this property is ignored and processing is
performed as if this value were set to
).
The default is 10.0.
Fires when the value of this property changes.
The supplied value must be greater than or equal to zero.
Controls whether
is used during processing. If false, processing is performed
as if the threshold were set to
).
The default is false.
Client space
()
minimum Z. If
is
UseZMin, then this parameter will be the output space Z that
corresponds to a minimum output pixel value. This parameter is ignored if
is not
UseZMin.
The default is -100.0.
Fires when the value of this property changes.
How to handle the Z values of the output range image. There are two
defined modes:
UseZMin and
Auto.
The default is
Auto.
Fires when the value of this property changes.
The supplied value is not a member of
Client space
()
maximum Y bounds for the output range image. Ignored if
is not
Limit.
Note that setting this value to less than the current
will cause OutputImageYMin to be set to the new value as well.
The default is 100.0.
Fires when the value of this property changes.
Client space
()
minimum Y bounds for the output range image. Ignored if
is not
Limit.
Note that setting this value to greater than the current
will cause OutputImageYMax to be set to the new value as well.
The default is -100.0.
Fires when the value of this property changes.
Client space
()
maximum X bounds for the output range image. Ignored if
is not
Limit.
Note that setting this value to less than the current
will cause OutputImageXMin to be set to the new value as well.
The default is 100.0.
Fires when the value of this property changes.
Client space
()
minimum X bounds for the output range image. Ignored if
is not
Limit.
Note that setting this value to greater than the current
will cause OutputImageXMax to be set to the new value as well.
The default is -100.0.
Fires when the value of this property changes.
How to define the X, Y bounds of the output image. There are two
defined modes:
Limit and
Auto.
The default is
Auto.
Fires when the value of this property changes.
The supplied value is not a member of
The Z scale factor to use when generating the output range image.
Ignored when
is
UseInputImageScales.
The default is 1.0.
Fires when the value of this property changes.
The supplied value must be greater than zero.
The Y scale factor to use when generating the output range image.
Ignored when
is
UseInputImageScales.
The default is 1.0.
Fires when the value of this property changes.
The supplied value must be greater than zero.
The X scale factor to use when generating the output range image.
Ignored when
is
UseInputImageScales.
The default is 1.0.
Fires when the value of this property changes.
The supplied value must be greater than zero.
How to scale the output range image. This controls the resolution
of the output range image. There are two defined modes:
UseXYZScales and
UseInputImageScales.
The default is
UseInputImageSclaes
Fires when the value of this property changes.
The supplied value is not a member of
Specify the desired ouputput by bitwise ORing the appropriate
.
Fires when the value of this property changes.
The default is
Range
The name of the 3D space in which the output range image will be
rendered. The
method will throw an ArgumentException if this space name does not
exist within the 3D coordinate space tree of the specified
range image.
Fires when the value of this property changes.
The supplied value is null.
The dictionary key of the input range image whose 3D coordinate
space tree holds the desired output space. In the case of input
range / greyscale image pairs, this is the key of the nested
container that in turn holds the range image whose 3D coordinate
space tree holds the desired output space. The
method will throw an ArgumentException if this dictionary key
does not exist within the input
.
When set to an empty string, this parameter is treated specially.
An empty string is interpreted to mean that we will use
an arbitrarily chosen input range image as the source of the
output space. This may be usefull when the output space is defined
in all input images.
Fires when the value of this property changes.
The supplied value is null.
The name of the 3D space shared by all input range images. The
method will throw an ArgumentException if this space name
does not exist in the 3D coordinate space tree of every input
range image.
Fires when the value of this property changes.
The supplied value is null.
Constructs a new instance of this class as a deep copy of
the given instance.
The Cog3DVisionDataStitch object to be copied. May not be null.
If the input argument is null.
Constructs a new instance of this class.
Serialization constructor for Cog3DVisionDataStitch object.
The standard SerializationInfo argument.
The standard StreamingContext argument.
This bit will be set in the EventArgs of a Changed event
every time the value returned by OutputImageOverlapPriorities
may have changed.
This bit will be set in the EventArgs of a Changed event
every time the value returned by OutputImageOverlapMode
may have changed.
This bit will be set in the EventArgs of a Changed event
every time the value returned by OutputImageZConsistencyDistance
may have changed.
This bit will be set in the EventArgs of a Changed event
every time the value returned by OutputImageZContinuityThreshold
may have changed.
This bit will be set in the EventArgs of a Changed event
every time the value returned by
OutputImageZContinuityThresholdEnabled may have
changed.
This bit will be set in the EventArgs of a Changed event
every time the value returned by OutputImageZMin
may have changed.
This bit will be set in the EventArgs of a Changed event
every time the value returned by OutputImageZMode
may have changed.
This bit will be set in the EventArgs of a Changed event
every time the value returned by OutputImageYMax
may have changed.
This bit will be set in the EventArgs of a Changed event
every time the value returned by OutputImageYMin
may have changed.
This bit will be set in the EventArgs of a Changed event
every time the value returned by OutputImageXMax
may have changed.
This bit will be set in the EventArgs of a Changed event
every time the value returned by OutputImageXMin
may have changed.
This bit will be set in the EventArgs of a Changed event
every time the value returned by OutputImageXYMode
may have changed.
This bit will be set in the EventArgs of a Changed event
every time the value returned by OutputImageZScale
may have changed.
This bit will be set in the EventArgs of a Changed event
every time the value returned by OutputImageYScale
may have changed.
This bit will be set in the EventArgs of a Changed event
every time the value returned by OutputImageXScale
may have changed.
This bit will be set in the EventArgs of a Changed event
every time the value returned by OutputImageScaleMode
may have changed.
This bit will be set in the EventArgs of a Changed event
every time the value returned by OutputEnable
may have changed.
This bit will be set in the EventArgs of a Changed event
every time the value returned by OutputSpaceName3D
may have changed.
This bit will be set in the EventArgs of a Changed event
every time the value returned by OutputSpaceSource
may have changed.
This bit will be set in the EventArgs of a Changed event
every time the value returned by SharedSpaceName3D
may have changed.
An operator for stitching together three dimensional vision data into
a single result in a user-specified space.
How input pixels that overlap in X and Y will be processed to
produce an output pixel value.
Select the overlapping visible range image value from the
image with the numerically lowest priority value,
as specified in the OutputImageOverlapPriorities parameter.
Use the overlapping visible range image value from the
image with the closest center.
Use the minimum of the input values.
Use the maximum of the input values.
How to handle the Z values of the output range image.
A ZMin value will be automatically computed from the input images by
mapping image Z = 0 corner points into output space and taking the
miniumum mapped Z value.
The
parameter will be the output space Z that corresponds to a minimum
output voxel value. Any output voxel at or below the voxel pierced
by the specified output space Z value will be set to this value.
How to define the XY bounds of
's
output image.
Automatically size the output range image in X and Y to contain the
bounding corners (at image Z = 0 and at image Z = 64K) of the input
images.
Clip the output in X and Y according to
,
.
,
and
.
How the will
scale the result.
If all input range images have identical X scale values, and they
all have identical Y scale values, and they all have identical
Z scale values, then use those same scale values in the output
range image. Otherwise throw an ArgumentException.
Always use the specified X, Y, and Z scale values to generate
the output.
What outputs will be generated by a call to
.
Produce a
as part of the output. This will require that the input
include appropriate greyscale images.
Produce a
as part of the output.
Serialization construct a Cog3DVisionDataStitchResult object.
The standard SerializationInfo argument.
The standard StreamingContext argument.
This will always point to all of the rendered data. So if you
requested just Range output, this will point to the RangeImage
property. If you request just Grey output, this will point to
the GreyImage property. And if you requested both Range and
Grey output, this will point to a CogVisionDataContainer
object holding both the range and the grey output.
The stitched grey image. This will be null if Grey
output was not requested.
The stitched range image. This will be null if Range
output was not requested.
Copy construct a Cog3DVisionDataStitchResult object. This
is a shallow copy.
The Cog3DVisionDataStitchResult object to be copied.
If Other is null.
This is the result produced by a call to the
Execute method of the Cog3DVisionDataStitch class.
Serialization constructor for Cog3DRangeImageCrossSectionPointCircle
object.
The standard SerializationInfo argument.
The standard StreamingContext argument.
Returns the point of the circle
The point is computed in the profile selected space name.
If licensing for this class cannot be confirmed.
If the operator is not in a collection.
Fires when this method is called.
The following state flag may be affected:
- SfStatus
- SfPoint
- SfPointInImage
- SfPointInImage3D
The status returned can be one of the following:
- The point was computed successfully and passed any enabled tolerance checking.
Passed
- The point was computed successfully but failed tolerance checking.
FailedTolerance
- The operator failed.
FailedToCompute
- The line segment was not found in the collection at run time.
InputFeatureMissing
Clear the results' properties of this class.
Fires when this method is called.
The following state flag may be affected:
SfStatus
SfPoint
SfPointInImage
SfPointInImage3D
Create the graphics and add them to the graphicCollection provided.
A constructed CogGraphicCollection.
If lastRun is true, do not include the input graphics.
The input graphics are the regions of extracted line segment.
The output graphic is the point graphic.
Sets the name of the operator producing Circle.
The Cog3DRangeImageCrossSectionOperatorsParams collection that holds the
line segment operator.
The operator object producing Circle.
Fires when this method is called.
The following state flag may be affected:
- SfCircle
This is a convenience setter for programmatic users to specify
the line segment using the operator's object.
The operator is not held internally, it is used to extract
the internal unique id of the operator. The id is used
by this operator at run time.
The method can be called before the operator is
added to the collection.
If operator is not found
in the parentCollection provided.
If the parentCollection in null.
Gets the point computed by the execute method.
Always check the status of the operator to be either Passed or FailedTolerance before calling the getter.
The point is in the SelectedSpaceName3D of the range image
stored in the profile.
If the point was not computed.
The Cog3DVect3 is a ValueType and cannot return a null.
Gets the point computed by the execute method.
The point is in the SelectedSpaceName of the range image
stored in the profile.
Returns null if the point was not computed.
Gets the point computed by the execute method.
The point is in the ProfileSelectedSpaceName.
Returns null if the point was not computed.
Gets or sets the name of the operator producing Circle.
Fires when this property changes.
The following state flag may be affected:
- SfCircle
The property is a link between the operator producing the line segment and this operator, and
therefore requires that all operators are added to the collection before it can be called.
The name of the operator is not held internally. It is used to extract
the internal unique id of the operator within the collection.
If the operator is not in a collection.
If the name of the operator producing Circle is not found
in the collection.
Gets the Cog3DRangeImageCrossSectionTolerance object to
tolerance the Y position.
The and
values are specified in profile selected space name.
If the property is set to true, the tolerance
check will be performed at run time.
Gets the Cog3DRangeImageCrossSectionTolerance object to
tolerance the X position.
The and
values are specified in profile selected space name.
If the property is set to true, the tolerance
check will be performed at run time.
Finalize this Cog3DRangeImageCrossSectionPointCircle.
Destruct this Cog3DRangeImageCrossSectionPointCircle.
Construct a deep copy of the supplied
Cog3DRangeImageCrossSectionPointCircle object.
The Cog3DRangeImageCrossSectionPointCircle object to be copied.
If the supplied argument is null.
The copy constructor is meant to be used with the collection
copy constructor.
The property
refer to
internal id within the operators collection and
its value is meaningless outside a collection.
Construct a default Cog3DRangeImageCrossSectionPointCircle object.
NextSf state flag.
This bit will be set in the EventArgs of a Changed event every time
the value returned by PointInImage3D may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by PointInImage may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by Point may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by Circle may have changed.
The class to return a point of a circle
This operator must be added to the operators collection before it
is configured. The
property hold the internal id of the operator producing the circle,
and the operator must also be in the operators collection.
Serialization constructor for Cog3DRangeImageCrossSectionExtractCircleFit
object.
The standard SerializationInfo argument.
The standard StreamingContext argument.
Extracts a circle.
The circle is extracted and reported in the profile selected space name.
If licensing for this class cannot be confirmed.
If the regions selected space name was not found in the profile space tree.
Fires when this method is called.
The following state flag may be affected:
- SfStatus
- SfCircle
- SfCircleInImage
- SfCircleInImage3D
The status returned can be one of the following:
- The circle was extracted successfully and passed any enabled tolerance checking.
Passed
- The circle was extracted successfully but failed tolerance checking
FailedTolerance
- The circle was not extracted because because not enough points were found to extract the line.
FeatureNoExtracted
Clear the results' properties of this class.
Fires when this method is called.
The following state flag may be affected:
SfRMSError
SfCircle
SfCircleInImage
SfCircleInImage3D
Create the graphics and add them to the graphicCollection provided.
A constructed CogGraphicCollection.
If lastRun is true, do not include the input graphics.
The input graphics are the regions.
The output graphic is the circle graphic.
Gets the Cog3DRangeImageCrossSectionTolerance object to
tolerance the Radius.
The and
values are specified in profile selected space name.
If the property is set to true, the tolerance
check will be performed at run time.
Gets the Cog3DRangeImageCrossSectionTolerance object to
tolerance the CenterY position.
The and
values are specified in profile selected space name.
If the property is set to true, the tolerance
check will be performed at run time.
Gets the Cog3DRangeImageCrossSectionTolerance object to
tolerance the CenterX position.
The and
values are specified in profile selected space name.
If the property is set to true, the tolerance
check will be performed at run time.
Gets the Cog3DRangeImageCrossSectionTolerance object for
the RMS error.
If the property is set to true, the tolerance
check will be performed at run time.
Gets the RMS error of the circle.
RMS is the root mean squared perpendicular error between
the line and all of the points in the user specified region
Gets the circle extracted by the execute method. Note that the circle is seen as a LineSegment in the image.
The circle is in the SelectedSpaceName3D of the range image
stored in the profile.
Return null is the circle was not computed.
Gets the circle extracted by the execute method. Note that the circle is seen as a LineSegment in the image.
The circle is in the SelectedSpaceName of the range image
stored in the profile.
Return null is the circle was not computed.
Gets the circle extracted by the execute method.
Always check the status of the operator to be either Passed or FailedTolerance before calling the getter.
The circle is in the ProfileSelectedSpaceName.
Return null is the circle was not computed.
Finalize this Cog3DRangeImageCrossSectionExtractCircleFit.
Destruct this Cog3DRangeImageCrossSectionExtractCircleFit.
Construct a deep copy of the supplied
Cog3DRangeImageCrossSectionExtractCircleFit object.
The Cog3DRangeImageCrossSectionExtractCircleFit object to be copied.
If the supplied argument is null.
Construct a default Cog3DRangeImageCrossSectionExtractCircleFit object.
NextSf state flag.
This bit will be set in the EventArgs of a Changed event every time
the value returned by CircleInImage3D may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by CircleInImage may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by Circle may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by RMSError may have changed.
The class to fit a circle on a profile points that are within the regions.
This operator holds a collection of regions. There must be always one region in the
collection. The user may add and delete any region as long as the count does not dip below 1.
NOTE: this is a circle fitter not a circle finder operator. It will fit a circle using the given point
and not try to find a circle on the given points
Serialization constructor for Cog3DRangeImageCrossSectionPointAreaResult
object.
The standard SerializationInfo argument.
The standard StreamingContext argument.
Extracts a point.
The point is extracted and reported in the profile selected space name.
If licensing for this class cannot be confirmed.
If the regions selected space name was not found in the profile space tree.
Fires when this method is called.
The following state flag may be affected:
- SfStatus
- SfPoint
- SfPointInImage
- SfPointInImage3D
The status returned can be one of the following:
- The point was computed successfully and passed any enabled tolerance checking.
Passed
- The point was computed successfully but failed tolerance checking.
FailedTolerance
- The point was not computed (missing from the input AreaResult).
FeatureNotComputed
- The input AreaResult is not available.
InputFeatureMissing
Clear the results' properties of this class.
Fires when this method is called.
The following state flag may be affected:
SfPoint
SfPointInImage
SfPointInImage3D
Create the graphics and add them to the graphicCollection provided.
A constructed CogGraphicCollection.
If lastRun is true, do not include the input graphics.
The input graphics are the regions.
The output graphic is the point graphic.
Gets the Cog3DRangeImageCrossSectionTolerance object to
tolerance the Y position.
The and
values are specified in profile selected space name.
If the property is set to true, the tolerance
check will be performed at run time.
Gets the Cog3DRangeImageCrossSectionTolerance object to
tolerance the X position.
The and
values are specified in profile selected space name.
If the property is set to true, the tolerance
check will be performed at run time.
Gets the point extracted by the execute method.
Always check the status of the operator to be either Passed or FailedTolerance before calling the getter.
The point is in the SelectedSpaceName3D of the range image
stored in the profile.
If the corner was not computed.
The Cog3DVect3 is a ValueType and cannot return a null.
Gets the point extracted by the execute method.
The point is in the SelectedSpaceName of the range image
stored in the profile.
Returns null if the point was not computed.
Gets the point extracted by the execute method.
The point is in the ProfileSelectedSpaceName.
Returns null if the point was not computed.
Gets or sets the point type. Specifies the point to extract.
Fires when this property changes.
The following state flag may be affected:
- SfPointType
If the value is invalid.
Sets the operator producing AreaResult.
The Cog3DRangeImageCrossSectionOperatorsParams collection that holds the
line segment operator.
The operator object producing AreaResult.
Fires when this method is called.
The following state flag may be affected:
- SfArea
This is a convenience setter for programmatic users to specify
the AreaResult using the operator's object.
The operator is not held internally, it is used to extract
the internal unique id of the operator. The id is used
by this operator at run time.
The method can be called before the operator is
added to the collection.
If operator is not found
in the parentCollection provided.
If the parentCollection in null.
Gets or sets the name of the operator producing the AreaResult.
Fires when this property changes.
The following state flag may be affected:
- SfArea
The property is a link between the operator producing the line segment and this operator, and
therefore requires that all operators are added to the collection before it can be called.
The name of the operator is not held internally. It is used to extract
the internal unique id of the operator within the collection.
If the operator is not in a collection.
If the name of the operator producing AreaResult is not found
in the collection.
Finalize this Cog3DRangeImageCrossSectionPointAreaResult.
Destruct this Cog3DRangeImageCrossSectionPointAreaResult.
Construct a deep copy of the supplied
Cog3DRangeImageCrossSectionPointAreaResult object.
The Cog3DRangeImageCrossSectionPointAreaResult object to be copied.
If the supplied argument is null.
Construct a default Cog3DRangeImageCrossSectionPointAreaResult object.
NextSf state flag.
This bit will be set in the EventArgs of a Changed event every time
the value returned by Area may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by PointInImage3D may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by PointInImage may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by Point may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by PointType may have changed.
The class To get a point from the AreaResult object.
Serialization constructor for Cog3DRangeImageCrossSectionAreaLineSegments
object.
The standard SerializationInfo argument.
The standard StreamingContext argument.
Create the input graphics and add them to the graphicCollection provided..
A constructed CogGraphicCollection.
The default space name of the profile
The selected space name of the profile
The 2D linear transform that maps from the profile's selected space to the profile's default space
Returns whether all the line segments that are specified as inputs are available or not
Removed a line segment from the inputs by its operator
The operator instance that produces the line segment
Removes the line segment from the inputs by index
The index of the line segment to be removed
Removes the line segment from the inputs by its name
The name of the operator that produces the line segment
Adds a line segment as an input by its operator
The operator instance that produces the line segment
Adds a line segment as an input by its name
The name of the operator that produces the line segment
Gets the name of the input line segments
Gets os sets how to create the reference profile from the line segments. Either use the highest or the lowest linesegment.
Finalize this Cog3DRangeImageCrossSectionAreaLineSegments.
Destruct this Cog3DRangeImageCrossSectionAreaLineSegments.
Construct a deep copy of the supplied
Cog3DRangeImageCrossSectionAreaLineSegments object.
The Cog3DRangeImageCrossSectionAreaLineSegments object to be copied.
If the supplied argument is null.
Construct a default Cog3DRangeImageCrossSectionAreaLineSegments object.
NextSf state flag.
This bit will be set in the EventArgs of a Changed event every time
the value returned by LineSegmentNames may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by ReferenceProfile may have changed.
The class to do difference measurements between a CrossSection and line segments.
Serialization constructor for Cog3DRangeImageCrossSectionOperatorMultipleInputs
object.
The standard SerializationInfo argument.
The standard StreamingContext argument.
Finalize this Cog3DRangeImageCrossSectionOperatorMultipleInputs.
Destruct this Cog3DRangeImageCrossSectionOperatorMultipleInputs.
Construct a deep copy of the supplied
Cog3DRangeImageCrossSectionOperatorMultipleInputs object.
The Cog3DRangeImageCrossSectionOperatorMultipleInputs object to be copied.
If the supplied argument is null.
Construct a default Cog3DRangeImageCrossSectionOperatorMultipleInputs object.
NextSf state flag.
This bit will be set in the EventArgs of a Changed event every time
the value returned by InputShapes may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by InputOperatorNames may have changed.
The class is a helper class for every operator that has multiple inputs
It provides the necessary function to Add / Remove / List the input operators of this operator
INTERNAL USE ONLY!
Called at the beginning of the Execute method to check if the result of the input operator is available or not
If not it does not even try to execute the operator and returns with InputFeatureMissing
Gets the weight threshold. Always returns 0.
In VisionPro if a profile data has a weight higher than 0 it counts
Returns the type of the input operator of this operator
Serialization constructor for Cog3DRangeImageCrossSectionAreaOperatorBase
object.
The standard SerializationInfo argument.
The standard StreamingContext argument.
Compute the area between the input profile and the reference profile.
The area and the points of interest and reported in the profile selected space name.
If licensing for this class cannot be confirmed.
If the regions selected space name was not found in the profile space tree.
Fires when this method is called.
The following state flag may be affected:
- SfStatus
SfMeasurementResult
The status returned can be one of the following:
- The measurement was successful and passed any enabled tolerance checking.
Passed
- The measurement was successful but failed tolerance checking
FailedTolerance
- The measurement was not successful for any reason.
FailedToMeasure
This method needs to be overridden in the inherited class to perform the
conrecte operator specific area measurement
The CrossSection to perform the area measurement on
The set of user defined regions
The pointer to result structure holding the results of the area measurement
Clear the results' properties of this class.
Fires when this method is called.
The following state flag may be affected:
SfAreaResult
Create the graphics and add them to the graphicCollection provided.
A constructed CogGraphicCollection.
If lastRun is true, do not include the input graphics.
The input graphics are the regions and input graphics of the specific area measurement operator
The output graphic is the difference cross section.
The base classes method draws everything except the concrete operator specific input graphics
Create the input graphics and add them to the provided graphicCollection
A constructed CogGraphicCollection to add the graphics to.
The profile's default sapcen name
The profile's selected space name
The 2D transformation to map shapes from the profile's SelectedSpaceName to the profile's DefaultSpaceName
Gets or sets whether the threshold graphics will be drawn or not
Fires when this property changes.
The following state flag may be affected:
- SfDrawThresholdGraphics
Gets or sets whether the Farthest point below the reference profile will be drawn or not
Fires when this property changes.
The following state flag may be affected:
- SfDrawFarthestPointBelowReferenceProfileGraphics
Gets or sets whether the closest point below the reference profile will be drawn or not
Fires when this property changes.
The following state flag may be affected:
- SfDrawClosestPointBelowReferenceProfileGraphics
Gets or sets whether the Farthest point Above the reference profile will be drawn or not
Fires when this property changes.
The following state flag may be affected:
- SfDrawFarthestPointAboveReferenceProfileGraphics
Gets or sets whether the closest point above the reference profile will be drawn or not
Fires when this property changes.
The following state flag may be affected:
- SfDrawClosestPointAboveReferenceProfileGraphics
Gets or sets whether the rightmost point of the computed area will be drawn or not
Fires when this property changes.
The following state flag may be affected:
- SfDrawRightPointGraphics
Gets or sets whether the leftmost point of the computed area will be drawn or not
Fires when this property changes.
The following state flag may be affected:
- SfDrawLeftPointGraphics
Gets or sets whether the computed area's background will be painted or not
Fires when this property changes.
The following state flag may be affected:
- SfDrawAreaBackgroundGraphics
Gets the Cog3DRangeImageCrossSectionTolerance object to tolerance
the point's Y coordinate that is below the reference profile and closest to it.
The and
values are specified in profile selected space name.
If the property is set to true, the tolerance
check will be performed at run time.
Gets the Cog3DRangeImageCrossSectionTolerance object to tolerance
the point's X coordinate that is below the reference profile and closest to it.
The and
values are specified in profile selected space name.
If the property is set to true, the tolerance
check will be performed at run time.
Gets the Cog3DRangeImageCrossSectionTolerance object to tolerance
the point's Y coordinate that is below the reference profile and farthest from it.
The and
values are specified in profile selected space name.
If the property is set to true, the tolerance
check will be performed at run time.
Gets the Cog3DRangeImageCrossSectionTolerance object to tolerance
the point's X coordinate that is below the reference profile and farthest from it.
The and
values are specified in profile selected space name.
If the property is set to true, the tolerance
check will be performed at run time.
Gets the Cog3DRangeImageCrossSectionTolerance object to tolerance
the point's Y coordinate that is above the reference profile and closes to it.
The and
values are specified in profile selected space name.
If the property is set to true, the tolerance
check will be performed at run time.
Gets the Cog3DRangeImageCrossSectionTolerance object to tolerance
the point's X coordinate that is above the reference profile and closest to it.
The and
values are specified in profile selected space name.
If the property is set to true, the tolerance
check will be performed at run time.
Gets the Cog3DRangeImageCrossSectionTolerance object to tolerance
the point's Y coordinate that is above the reference profile and farthest from it.
The and
values are specified in profile selected space name.
If the property is set to true, the tolerance
check will be performed at run time.
Gets the Cog3DRangeImageCrossSectionTolerance object to tolerance
the point's X coordinate that is above the reference profile and farthest from it.
The and
values are specified in profile selected space name.
If the property is set to true, the tolerance
check will be performed at run time.
Gets the Cog3DRangeImageCrossSectionTolerance object to tolerance
the right point's Y coordinate.
The and
values are specified in profile selected space name.
If the property is set to true, the tolerance
check will be performed at run time.
Gets the Cog3DRangeImageCrossSectionTolerance object to tolerance
the right point's X coordinate.
The and
values are specified in profile selected space name.
If the property is set to true, the tolerance
check will be performed at run time.
Gets the Cog3DRangeImageCrossSectionTolerance object to tolerance
the the left point's Y coordinate.
The and
values are specified in profile selected space name.
If the property is set to true, the tolerance
check will be performed at run time.
Gets the Cog3DRangeImageCrossSectionTolerance object to tolerance
the left point's X coordinate.
The and
values are specified in profile selected space name.
If the property is set to true, the tolerance
check will be performed at run time.
Gets the Cog3DRangeImageCrossSectionTolerance object to tolerance
the area.
The and
values are specified in profile selected space name.
If the property is set to true, the tolerance
check will be performed at run time.
Gets the result computed by the execute method.
Always check the status of the operator to be either Passed or FailedTolerance before calling the getter.
The result is in the ProfileSelectedSpaceName.
Returns null if the result was not computed.
Gets or sets what area is being measured: abover or below the reference profile or both of those
and if both, how they are combined
Fires when this property changes.
The following state flag may be affected:
- SfArea
If the value is not
Gets or sets max length of a missing stretch to fill along x-axis in ProfileSelectedSpaceName.
Fires when this property changes.
The following state flag may be affected:
- SfMaxFillLength
If the value is less than 0.
Gets or sets the height threshold.
Points with heights below this threshold are treated as noise
and are thus excluded from the computations. Note that 'height'
in this context means the difference in height between the cross
section and the lines. The heights are measured in
ProfileSelectedSpaceName units along the Image Y axis.
Please note that because of the nature of the surfaces in the real world
and the accuracy of the sensor setting a height threshold to 0.0 will not
benefit the calculation at all. We stringly recommend to set it to a value
higher than 0.0.
Fires when this property changes.
The following state flag may be affected:
- SfHeightThreshold
If the value is less than 0.
Finalize this Cog3DRangeImageCrossSectionAreaOperatorBase.
Destruct this Cog3DRangeImageCrossSectionAreaOperatorBase.
Construct a deep copy of the supplied
Cog3DRangeImageCrossSectionAreaOperatorBase object.
The Cog3DRangeImageCrossSectionAreaOperatorBase object to be copied.
If the supplied argument is null.
Construct a default Cog3DRangeImageCrossSectionAreaOperatorBase object.
NextSf state flag.
This bit will be set in the EventArgs of a Changed event every time
the value returned by DrawThresholdGraphics may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by DrawFarthestPointBelowReferenceProfileGraphics may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by DrawClosestPointBelowReferenceProfileGraphics may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by DrawFarthestPointAboveReferenceProfileGraphics may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by DrawClosestPointAboveReferenceProfileGraphics may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by DrawRightPointGraphics may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by DrawLeftPointGraphics may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by DrawAreaBackgroundGraphics may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by InputOperator may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by Area may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by MeasurementPosition may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by MaxFillLength may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by HeightThreshold may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by AreaResult may have changed.
The class is the base class for every CrossSectionTool operator that performs area measurement
Serialization constructor for Cog3DRangeImageCrossSectionTool object.
The standard SerializationInfo argument.
The standard StreamingContext argument.
Gets or sets the RunParams.
A default constructed
Cog3DRangeImageCrossSectionRunParams.
Fires when this property changes.
The following state flag may be affected:
- SfRunParams
If the supplied argument is null.
Gets or sets the input range image for use in the Cross Section.
The default is null.
If the supplied input image is not CogImage16Range.
Fires when this property changes.
The following state flag may be affected:
- SfInputImage
Enable creation of records by bitwise ORing the appropriate
Cog3DRangeImageCrossSectionLastRunRecordDiagConstants.
The default is (int)Cog3DRangeImageCrossSectionLastRunRecordDiagConstants::InputImageByReference | (int)Cog3DRangeImageCrossSectionLastRunRecordDiagConstants::Region
Fires when this property changes.
The following state flag may be affected:
- SfLastRunRecordDiagEnable
Enable creation of records by bitwise ORing the appropriate
Cog3DRangeImageCrossSectionLastRunRecordConstants.
The default is Cog3DRangeImageCrossSectionLastRunRecordConstants::All
Fires when this property changes.
The following state flag may be affected:
- SfLastRunRecordEnable
- SfCreateLastRunRecord
Enable creation of records by bitwise ORing the appropriate
Cog3DRangeImageCrossSectionCurrentRecordConstants.
The default is (int)Cog3DRangeImageCrossSectionCurrentRecordConstants::InputImage | (int)Cog3DRangeImageCrossSectionCurrentRecordConstants::Region
Fires when this property changes.
The following state flag may be affected:
- SfCurrentRecordEnable
- SfCreateCurrentRecord
Finalize this Cog3DRangeImageCrossSectionTool object.
Destruct this Cog3DRangeImageCrossSectionTool object.
Construct a deep copy of the supplied Cog3DRangeImageCrossSectionTool object.
The Cog3DRangeImageCrossSectionTool object to be copied. May not be null.
If the input argument is null.
Construct a default Cog3DRangeImageCrossSectionTool object.
NextSf state flag.
This bit will be set in the EventArgs of a Changed event every time
the value returned by RunParams may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by InputImage may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by CurrentRecordEnable may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by LastRunRecordDiagEnable may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by LastRunRecordEnable may have changed.
The Cross Section tool allows you to take a thin slice of the part in the range image,
look at it from the side, make measurements and apply tolerances.
The highlights of the Cross Section tool:
-
The tool allows a user to specify a region in the X-Y plane of the range image to create the vertical profile.
The vertical profile lies parallel to the z-axis of the range image.
-
To make measurements within the profile, we establish a family of coordinate spaces that lie within the cutting plane.
The profile coordinate spaces are 2D x-y coordinate spaces, glued to the profile,
typically expressed in physical units (e.g. millimeters).
-
The tool provides a user with a set of operators to
extract features from the profile such as corners or line segments,
compute features using other features such as midpoints or line intersections and
perform measurements on the features. For example, you can measure the angle
between 2 line segments or the distance between 2 points.
Optionally perform tolerance checking on all geometry data.
Serialization constructor for Cog3DRangeImageCrossSectionRunParams
object.
The standard SerializationInfo argument.
The standard StreamingContext argument.
Execute the ProfileParams.Execute() and OperatorsParams.Execute().
The outputs of the execute are:
- the OutputProfile
- The OperatorsParams.Status, the overall status of executing all the operators
- The operators' results
If the image is null
If the image is not a CogImage16Range
If the ProfileParams is null
If the OperatorsParams is null
If the InputProfile is null and UseInputProfile is set to true.
If the OutputProfile produced by the ProfileParams is null.
If licensing for this class cannot be confirmed.
Gets or sets the OperatorsParams.
Fires when the value of this property changes.
- SfOperatorsParams
If the value is null.
Gets or sets the ProfileParams.
Fires when the value of this property changes.
- SfProfileParams
If the value is null.
Gets or sets the InputProfile.
The InputProfile will not be used by the tool
unless the UseInputProfile is set to true.
Fires when the value of this property changes.
- SfInputProfile
Gets the OutputProfile produced by the execute method.
The OutputProfile cannot be set by the user.
Fires when the value of this property changes.
- SfOutputProfile
Gets or sets the UseInputProfile. If True, use the InputProfile
attached to the RunParams.
Default value is false.
Fires when the value of this property changes.
- SfUseInputProfile
Finalize this Cog3DRangeImageCrossSectionRunParams.
Destruct this Cog3DRangeImageCrossSectionRunParams.
Construct a deep copy of the supplied
Cog3DRangeImageCrossSectionRunParams object.
The Cog3DRangeImageCrossSectionRunParams object to be copied.
May not be null.
If the supplied argument is null.
Construct a default Cog3DRangeImageCrossSectionRunParams object.
NextSf state flag.
This bit will be set in the EventArgs of a Changed event
every time the value returned by OutputProfile may have changed.
This bit will be set in the EventArgs of a Changed event
every time the value returned by UseInputProfile may have changed.
This bit will be set in the EventArgs of a Changed event
every time the value returned by InputProfile may have changed.
This bit will be set in the EventArgs of a Changed event
every time the value returned by OperatorsParams may have changed.
This bit will be set in the EventArgs of a Changed event
every time the value returned by ProfileParams may have changed.
This class is the RunParams class of the cross section tool.
The Cross Section tool has 2 parts: one to create the profile and the other
to run the operators. This class provides a central location for executing
both parts. The first part can be skipped if the user passes in the profile.
Serialization constructor for Cog3DRangeImageCrossSectionDistancePointLine
object.
The standard SerializationInfo argument.
The standard StreamingContext argument.
Computes the distance between the point and the line segment.
The distance is computed in the profile selected space name.
If licensing for this class cannot be confirmed.
If the operator is not in a collection.
Fires when this method is called.
The following state flag may be affected:
- SfStatus
- SfDistance
The status returned can be one of the following:
- The distance was computed successfully and passed any enabled tolerance checking.
Passed
- The distance was computed successfully but failed tolerance checking
FailedTolerance
- The point and/or the line segment were/was not found at run time
InputFeatureMissing
Clear the results' properties of this class.
Fires when this method is called.
The following state flag may be affected:
SfDistance
Create the graphics and add them to the graphicCollection provided.
A constructed CogGraphicCollection.
If lastRun is true, do not include the input graphics.
The input graphics are the regions of input features.
The output graphic is a line segment representing the distance.
Sets the name of the operators producing LineSegment and Point.
The Cog3DRangeImageCrossSectionOperatorsParams collection that holds the
operators.
The operator object producing LineSegment.
The operator object producing pointOp.
Fires when this method is called.
The following state flag may be affected:
- SfLineSegment
- SfPoint
This is a convenience setter for programmatic users to specify
the line segment and the point using the operators' objects.
The operators are not held internally, they are used to extract
the internal unique ids of the operators. The ids are used
by this operator at run time.
The method can be called before the operator is
added to the collection.
If lineSegOp and/or pointOp were not found
in the parentCollection provided.
If the parentCollection in null.
Gets the distance computed by the execute method.
Always check the status of the operator to be either Passed or FailedTolerance before calling the getter.
The measured distance is in the profile selected space name.
If the distance was not computed.
Gets or sets NearestType.
Fires when this property changes.
The following state flag may be affected:
- SfNearestType
Specifies whether or not to treat a line
segment as an infinite line when determining the point "on" the
segment that is nearest to a given point.
The value is invalid.
Gets or sets the name of the operator producing LineSegment.
Fires when this property changes.
The following state flag may be affected:
- SfLineSegment
The property is a link between the operator producing the line segment and this operator, and
therefore requires that all operators are added to the collection before it can be called.
The name of the operator is not held internally. It is used to extract
the internal unique id of the operator within the collection.
If the operator is not in a collection.
If the name of the operator producing LineSegment is not found
in the collection.
Gets or sets the name of the operator producing Point.
Fires when this property changes.
The following state flag may be affected:
- SfPoint
The property is a link between the operator producing the point and this operator, and
therefore requires that all operators are added to the collection before it can be called.
The name of the operator is not held internally. It is used to extract
the internal unique id of the operator within the collection.
If the operator is not in a collection.
If the name of the operator producing Point is not found
in the collection.
Gets the tolerance object for
the distance.
The and
values are specified in profile selected space name.
If the property is set to true, the tolerance
check will be performed at run time.
Finalize this Cog3DRangeImageCrossSectionDistancePointLine.
Destruct this Cog3DRangeImageCrossSectionDistancePointLine.
Construct a deep copy of the supplied
Cog3DRangeImageCrossSectionDistancePointLine object.
The Cog3DRangeImageCrossSectionDistancePointLine object to be copied.
If the supplied argument is null.
The copy constructor is meant to be used with the collection
copy constructor.
The and
properties
refer to
internal ids within the operators
collection and
their values are meaningless outside a collection.
Construct a default Cog3DRangeImageCrossSectionDistancePointLine object.
NextSf state flag.
This bit will be set in the EventArgs of a Changed event every time
the value returned by Distance may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by NearestType may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by LineSegment may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by Point may have changed.
The class to compute the shortest distance between a point and a line that extends from the line segment or
the shortest distance between a point and the line segment.
This operator must be added to the operators collection before it
is configured. The and
properties hold the internal ids
of the operators producing the features, and these operators must also be in the operators collection.
Serialization constructor for Cog3DRangeImageCrossSectionNearestPoint
object.
The standard SerializationInfo argument.
The standard StreamingContext argument.
Computes the nearest point.
The nearest point is computed in the profile selected space name.
If licensing for this class cannot be confirmed.
If the operator is not in a collection. The parent is null.
Fires when this method is called.
The following state flag may be affected:
- SfStatus
- SfNearestPoint
- SfNearestPointInImage
- SfNearestPointInImage3D
The status returned can be one of the following:
- The nearest point was computed successfully and passed any enabled tolerance checking.
Passed
- The nearest point was computed successfully but failed tolerance checking
FailedTolerance
- The point and/or the line was/were not found at run time
InputFeatureMissing
Clear the results' properties of this class.
Fires when this method is called.
The following state flag may be affected:
SfStatus
SfNearestPoint
SfNearestPointInImage
SfNearestPointInImage3D
Create the graphics and add them to the graphicCollection provided.
A constructed CogGraphicCollection.
If lastRun is true, do not include the input graphics.
The input graphics are the regions of input features.
The output graphic is a point.
Sets the name of the operators producing LineSegment and Point.
The Cog3DRangeImageCrossSectionOperatorsParams collection that holds the
operators.
The operator object producing LineSegment.
The operator object producing pointOp.
Fires when this method is called.
The following state flag may be affected:
- SfLineSegment
- SfPoint
This is a convenience setter for programmatic users to specify
the line segment and the point using the operators' objects.
The operators are not held internally, they are used to extract
the internal unique ids of the operators. The ids are used
by this operator at run time.
The method can be called before the operator is
added to the collection.
If lineSegOp and/or pointOp were not found
in the parentCollection provided.
If the parentCollection in null.
Gets the nearest point found by the execute method.
Always check the status of the operator to be either Passed or FailedTolerance before calling the getter.
The point is in the SelectedSpaceName3D of the range image
stored in the profile.
If the nearest point was not computed.
The Cog3DVect3 is a ValueType and cannot return a null.
Gets the nearest point found by the execute method.
The point is in the SelectedSpaceName of the range image
stored in the profile.
Returns null if the point was not computed.
Gets the nearest point found by the execute method.
The point is in the ProfileSelectedSpaceName.
Returns null if the point was not computed.
Gets or sets NearestType.
Fires when this property changes.
The following state flag may be affected:
- SfNearestType
Specifies whether or not to treat a line
segment as an infinite line when determining the point "on" the
segment that is nearest to a given point.
The value is invalid.
Gets or sets the name of the operator producing Point.
Fires when this property changes.
The following state flag may be affected:
- SfPoint
The property is a link between the operator producing the point and this operator, and
therefore requires that all operators are added to the collection before it can be called.
The name of the operator is not held internally. It is used to extract
the internal unique id of the operator within the collection.
If the operator is not in a collection.
If the name of the operator producing Point is not found
in the collection.
Gets or sets the name of the operator producing LineSegment.
Fires when this property changes.
The following state flag may be affected:
- SfLineSegment
The property is a link between the operator producing the line segment and this operator, and
therefore requires that all operators are added to the collection before it can be called.
The name of the operator is not held internally. It is used to extract
the internal unique id of the operator within the collection.
If the operator is not in a collection.
If the name of the operator producing LineSegment is not found
in the collection.
Gets the Cog3DRangeImageCrossSectionTolerance object to
tolerance the Y position.
The and
values are specified in profile selected space name.
If the property is set to true, the tolerance
check will be performed at run time.
Gets the Cog3DRangeImageCrossSectionTolerance object to
tolerance the X position.
The and
values are specified in profile selected space name.
If the property is set to true, the tolerance
check will be performed at run time.
Finalize this Cog3DRangeImageCrossSectionNearestPoint.
Destruct this Cog3DRangeImageCrossSectionNearestPoint.
Construct a deep copy of the supplied
Cog3DRangeImageCrossSectionNearestPoint object.
The Cog3DRangeImageCrossSectionNearestPoint object to be copied.
If the supplied argument is null.
The copy constructor is meant to be used with the collection
copy constructor.
The and
properties
refer to
internal ids within the operators
collection and
their values are meaningless outside a collection.
Construct a default Cog3DRangeImageCrossSectionNearestPoint object.
NextSf state flag.
This bit will be set in the EventArgs of a Changed event every time
the value returned by NearestPointInImage3D may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by NearestPointInImage may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by NearestPoint may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by NearestType may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by LineSegment may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by Point may have changed.
The class to compute the nearest point on a line segment or the nearest point on a line that extends from the line segment.
This operator must be added to the operators collection before it
is configured. The and
properties hold the internal ids
of the operators producing the features, and these operators must also be in the operators collection.
Serialization constructor for Cog3DRangeImageCrossSectionDistancePointPoint
object.
The standard SerializationInfo argument.
The standard StreamingContext argument.
Computes the distance between tow points.
The distance is computed in the profile selected space name.
If licensing for this class cannot be confirmed.
If the operator is not in a collection.
Fires when this method is called.
The following state flag may be affected:
- SfStatus
- SfDistance
The status returned can be one of the following:
- The distance was computed successfully and passed any enabled tolerance checking.
Passed
- The distance was computed successfully but failed tolerance checking
FailedTolerance
- The point and/or the line segment were/was not found at run time
InputFeatureMissing
Clear the results' properties of this class.
Fires when this method is called.
The following state flag may be affected:
SfDistance
Create the graphics and add them to the graphicCollection provided.
A constructed CogGraphicCollection.
If lastRun is true, do not include the input graphics.
The input graphics are the regions of input features.
The output graphic is a line segment representing the distance.
Sets the name of the operators producing Point1 and Point2.
The Cog3DRangeImageCrossSectionOperatorsParams object that holds the
operators.
The operator object producing Point1.
The operator object producing Point2.
Fires when this method is called.
The following state flag may be affected:
- SfPoint1
- SfPoint2
This is a convenience setter for programmatic users to set
the points using the operators' objects.
The operators are not held internally, they are used to extract
the internal unique index of the operators. The indices are used
by this operator at run time.
The method can be called before the operator is
added to the collection.
If operator1 and/or operator2 were not found
in the parentCollection provided.
If the operator is not in the parentCollection.
Gets the distance computed by the execute method.
Always check the status of the operator to be either Passed or FailedTolerance before calling the getter.
The measured distance is in the profile selected space name.
If the distance was not computed.
Gets or sets DistanceType.
Fires when this property changes.
The following state flag may be affected:
- SfDistanceType
To compute the distance between 2 points, the user can select
the euclidean distance, the distance in X or the distance in Y.
All of the measurements are in profile selected space name.
The distance in X is the width between the 2 points.
The distance in Y is the height between the 2 points.
The value is invalid.
Gets or sets the name of the operator producing Point2.
Fires when this property changes.
The following state flag may be affected:
- SfPoint2
The property is a link between the operator producing the point and this operator, and
therefore requires that all operators are added to the collection before it can be called.
The name of the operator is not held internally. It is used to extract
the internal unique id of the operator within the collection.
If the operator is not in a collection.
If the name of the operator producing Poin2t is not found
in the collection.
Gets or sets the name of the operator producing Point1.
Fires when this property changes.
The following state flag may be affected:
- SfPoint1
The property is a link between the operator producing the point and this operator, and
therefore requires that all operators are added to the collection before it can be called.
The name of the operator is not held internally. It is used to extract
the internal unique id of the operator within the collection.
If the operator is not in a collection.
If the name of the operator producing Point1 is not found
in the collection.
Gets the tolerance object for
the distance.
The and
values are specified in profile selected space name.
If the property is set to true, the tolerance
check will be performed at run time.
Finalize this Cog3DRangeImageCrossSectionDistancePointLine.
Destruct this Cog3DRangeImageCrossSectionDistancePointPoint.
Construct a deep copy of the supplied
Cog3DRangeImageCrossSectionDistancePointPoint object.
The Cog3DRangeImageCrossSectionDistancePointPoint object to be copied.
If the supplied argument is null.
The copy constructor is meant to be used with the collection
copy constructor.
The and
properties
refer to
internal ids within the operators
collection and
their values are meaningless outside a collection.
Construct a default Cog3DRangeImageCrossSectionDistancePointPoint object.
NextSf state flag.
This bit will be set in the EventArgs of a Changed event every time
the value returned by Distance may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by DistanceType may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by Point2 may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by Point1 may have changed.
The operator class to compute the distance between 2 points.
This operator must be added to the operators collection before it
is configured. The and
properties hold the internal ids
of the operators producing the features, and these operators must also be in the operators collection.
Serialization constructor for Cog3DRangeImageCrossSectionLineSegmentPointPoint
object.
The standard SerializationInfo argument.
The standard StreamingContext argument.
Computes the line segment using 2 points.
The line segment is computed in the profile selected space name.
If licensing for this class cannot be confirmed.
If the operator is not in a collection.
Fires when this method is called.
The following state flag may be affected:
- SfStatus
- SfLineSegment
- SfLineSegmentInImage
- SfLineSegmentInImage3D
The status returned can be one of the following:
- The line segment was computed successfully and passed any enabled tolerance checking.
Passed
- The line segment was computed successfully but failed tolerance checking
FailedTolerance
- The point(s) was/were not found at run time
InputFeatureMissing
Clear the results' properties of this class.
Fires when this method is called.
The following state flag may be affected:
SfStatus
SfLineSegment
SfLineSegmentInImage
SfLineSegmentInImage3D
Create the graphics and add them to the graphicCollection provided.
The constructed CogGraphicCollection.
If lastRun is true, do not include the input graphics.
The input graphics are the regions of input features.
The output graphic is the line segment.
Sets the name of the operators producing Point1 and Point2.
The Cog3DRangeImageCrossSectionOperatorsParams object that holds the
operators.
The operator object producing Point1.
The operator object producing Point2.
Fires when this method is called.
The following state flag may be affected:
- SfPoint1
- SfPoint2
This is a convenience setter for programmatic users to set
the points using the operators' objects.
The operators are not held internally, they are used to extract
the internal unique index of the operators. The indices are used
by this operator at run time.
The method can be called before the operator is
added to the collection.
If operator1 and/or operator2 were not found
in the parentCollection provided.
If the operator is not in the parentCollection.
Gets the line segment computed by the execute method.
The line segment is in the SelectedSpaceName3D of the range image
stored in the profile.
Returns null if the line segment was not computed.
Gets the line segment computed by the execute method.
The line segment is in the SelectedSpaceName of the range image
stored in the profile.
Returns null if the line segment was not computed.
Gets the line segment computed by the execute method.
Always check the status of the operator to be either Passed or FailedTolerance before calling the getter.
The line segment is in the ProfileSelectedSpaceName.
Returns null if the line segment was not computed.
If the line segment was not computed.
Gets or sets the name of the operator producing Point2.
Fires when this property changes.
The following state flag may be affected:
- SfPoint2
The property is a link between the operator producing the point and this operator, and
therefore requires that all operators are added to the collection before it can be called.
The name of the operator is not held internally. It is used to extract
the internal unique id of the operator within the collection.
If the operator is not in a collection.
If the name of the operator producing Poin2t is not found
in the collection.
Gets or sets the name of the operator producing Point1.
Fires when this property changes.
The following state flag may be affected:
- SfPoint1
The property is a link between the operator producing the point and this operator, and
therefore requires that all operators are added to the collection before it can be called.
The name of the operator is not held internally. It is used to extract
the internal unique id of the operator within the collection.
If the operator is not in a collection.
If the name of the operator producing Point1 is not found
in the collection.
Gets the tolerance object for
the angle.
The and
values are specified in radians.
If the property is set to true, the tolerance
check will be performed at run time.
Finalize this Cog3DRangeImageCrossSectionLineSegmentPointPoint.
Destruct this Cog3DRangeImageCrossSectionLineSegmentPointPoint.
Construct a deep copy of the supplied
Cog3DRangeImageCrossSectionLineSegmentPointPoint object.
The Cog3DRangeImageCrossSectionLineSegmentPointPoint object to be copied.
If the supplied argument is null.
The copy constructor is meant to be used with the collection
copy constructor.
The and
properties
refer to
internal ids within the operators collection and
their values are meaningless outside a collection.
Construct a default Cog3DRangeImageCrossSectionLineSegmentPointPoint object.
NextSf state flag.
This bit will be set in the EventArgs of a Changed event every time
the value returned by LineSegmentInImage3D may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by LineSegmentInImage may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by LineSegment may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by Point2 may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by Point1 may have changed.
The class computes a line segment using 2 points.
This operator must be added to the operators collection before it
is configured. The and
properties hold the internal ids of the operators producing the points,
and these operators must also be in the operators collection.
Serialization constructor for Cog3DRangeImageCrossSectionMidpointPointPoint
object.
The standard SerializationInfo argument.
The standard StreamingContext argument.
Computes the midpoint between 2 points.
The midpoint is computed in the profile selected space name.
If licensing for this class cannot be confirmed.
If the operator is not in a collection. The parent is null.
Fires when this property changes.
The following state flag may be affected:
- SfStatus
- SfMidpoint
- SfMidpointInImage
- SfMidpointInImage3D
The status returned can be one of the following:
The midpoint was computed successfully and passed any enabled tolerance checking.
Passed The midpoint was computed successfully but failed tolerance checking
FailedTolerance The point(s) was/were not found in the collection at run time.
InputFeatureMissing
Clear the results' properties of this class.
Fires when this property changes.
The following state flag may be affected:
Status
Midpoint
MidpointInImage
MidpointInImage3D
Create the graphics and add them to the graphicCollection provided.
A constructed CogGraphicCollection.
If lastRun is true, do not include the input graphics.
The input graphics are the regions of the input points.
The output graphic is the point graphic.
Sets the name of the operators producing Point1 and Point2.
The Cog3DRangeImageCrossSectionOperatorsParams object that holds the
operators.
The operator object producing Point1.
The operator object producing Point2.
Fires when this property changes.
The following state flag may be affected:
- SfPoint1
- SfPoint2
This is a convenience setter for programmatic users to set
the points using the operators' object.
The operators are not held internally, they are used to extract
the internal unique index of the operators. The indices are used
by this operator at run time.
The method can be called before the operator is
added to the collection.
If operator1 and/or operator2 were not found
in the parentCollection provided.
If the operator is not in the parentCollection.
Gets the midpoint found by the execute method.
Always check the status of the operator to be either Passed or FailedTolerance before calling the getter.
The point is in the SelectedSpaceName3D of the range image
stored in the profile.
If the midpoint was not computed.
The Cog3DVect3 is a ValueType and cannot return a null.
Gets the midpoint found by the execute method.
The point is in the SelectedSpaceName of the range image
stored in the profile.
Returns null if the point was not computed.
Gets the point computed by the execute method.
The point is in the ProfileSelectedSpaceName.
Returns null if the point was not computed.
Gets or sets the name of the operator producing Point2.
Fires when this property changes.
The following state flag may be affected:
- SfPoint2
The property is a link between the operator producing the point and this operator, and
therefore requires that all operators are added to the collection before it can be called.
The name of the operator is not held internally. It is used to extract
the internal unique id of the operator within the collection.
If the operator is not in a collection.
If the name of the operator producing Poin2 is not found
in the collection.
Gets or sets the name of the operator producing Point1.
Fires when this property changes.
The following state flag may be affected:
- SfPoint1
The property is a link between the operator producing the point and this operator, and
therefore requires that all operators are added to the collection before it can be called.
The name of the operator is not held internally. It is used to extract
the internal unique id of the operator within the collection.
If the operator is not in a collection.
If the name of the operator producing Point1 is not found
in the collection.
Gets the Cog3DRangeImageCrossSectionTolerance object to
tolerance the Y position.
The and
values are specified in profile selected space name.
If the property is set to true, the tolerance
check will be performed at run time.
Gets the Cog3DRangeImageCrossSectionTolerance object to
tolerance the X position.
The and
values are specified in profile selected space name.
If the property is set to true, the tolerance
check will be performed at run time.
Finalize this Cog3DRangeImageCrossSectionMidpointPointPoint.
Destruct this Cog3DRangeImageCrossSectionMidpointPointPoint.
Construct a deep copy of the supplied
Cog3DRangeImageCrossSectionMidpointPointPoint object.
The Cog3DRangeImageCrossSectionMidpointPointPoint object to be copied.
If the supplied argument is null.
The copy constructor is meant to be used with the collection
copy constructor.
The and
properties
refer to
internal ids within the operators
collection and
their values are meaningless outside a collection.
Construct a default Cog3DRangeImageCrossSectionMidpointPointPoint object.
NextSf state flag.
This bit will be set in the EventArgs of a Changed event every time
the value returned by MidpointInRangeImage3D may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by MidpointInRangeImage may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by Midpoint may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by Point2 may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by Point1 may have changed.
The class to compute the midpoint between two points.
This operator must be added to the operators collection before it
is configured. The and
properties hold the internal ids
of the operators producing the features, and these operators must also be in the operators collection.
Serialization constructor for Cog3DRangeImageCrossSectionPointLineSegment
object.
The standard SerializationInfo argument.
The standard StreamingContext argument.
Returns the point on the line segment.
The point is computed in the profile selected space name.
If licensing for this class cannot be confirmed.
If the operator is not in a collection.
Fires when this method is called.
The following state flag may be affected:
- SfStatus
- SfPoint
- SfPointInImage
- SfPointInImage3D
The status returned can be one of the following:
- The point was computed successfully and passed any enabled tolerance checking.
Passed
- The point was computed successfully but failed tolerance checking.
FailedTolerance
- The operator failed.
FailedToCompute
- The line segment was not found in the collection at run time.
InputFeatureMissing
Clear the results' properties of this class.
Fires when this method is called.
The following state flag may be affected:
SfStatus
SfPoint
SfPointInImage
SfPointInImage3D
Create the graphics and add them to the graphicCollection provided.
A constructed CogGraphicCollection.
If lastRun is true, do not include the input graphics.
The input graphics are the regions of extracted line segment.
The output graphic is the point graphic.
Sets the name of the operator producing LineSegment.
The Cog3DRangeImageCrossSectionOperatorsParams collection that holds the
line segment operator.
The operator object producing LineSegment.
Fires when this method is called.
The following state flag may be affected:
- SfLineSegment
This is a convenience setter for programmatic users to specify
the line segment using the operator's object.
The operator is not held internally, it is used to extract
the internal unique id of the operator. The id is used
by this operator at run time.
The method can be called before the operator is
added to the collection.
If operator is not found
in the parentCollection provided.
If the parentCollection in null.
Gets the point computed by the execute method.
Always check the status of the operator to be either Passed or FailedTolerance before calling the getter.
The point is in the SelectedSpaceName3D of the range image
stored in the profile.
If the point was not computed.
The Cog3DVect3 is a ValueType and cannot return a null.
Gets the point computed by the execute method.
The point is in the SelectedSpaceName of the range image
stored in the profile.
Returns null if the point was not computed.
Gets the point computed by the execute method.
The point is in the ProfileSelectedSpaceName.
Returns null if the point was not computed.
Gets or sets the LineSegmentPoint.
Fires when this property changes.
The following state flag may be affected:
- SfLineSegmentPoint
If the value is invalid.
Specifies which point on the line segment to return.
Gets or sets the name of the operator producing LineSegment.
Fires when this property changes.
The following state flag may be affected:
- SfLineSegment
The property is a link between the operator producing the line segment and this operator, and
therefore requires that all operators are added to the collection before it can be called.
The name of the operator is not held internally. It is used to extract
the internal unique id of the operator within the collection.
If the operator is not in a collection.
If the name of the operator producing LineSegment is not found
in the collection.
Gets the Cog3DRangeImageCrossSectionTolerance object to
tolerance the Y position.
The and
values are specified in profile selected space name.
If the property is set to true, the tolerance
check will be performed at run time.
Gets the Cog3DRangeImageCrossSectionTolerance object to
tolerance the X position.
The and
values are specified in profile selected space name.
If the property is set to true, the tolerance
check will be performed at run time.
Finalize this Cog3DRangeImageCrossSectionPointLineSegment.
Destruct this Cog3DRangeImageCrossSectionPointLineSegment.
Construct a deep copy of the supplied
Cog3DRangeImageCrossSectionPointLineSegment object.
The Cog3DRangeImageCrossSectionPointLineSegment object to be copied.
If the supplied argument is null.
The copy constructor is meant to be used with the collection
copy constructor.
The property
refer to
internal id within the operators collection and
its value is meaningless outside a collection.
Construct a default Cog3DRangeImageCrossSectionPointLineSegment object.
NextSf state flag.
This bit will be set in the EventArgs of a Changed event every time
the value returned by PointInImage3D may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by PointInImage may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by Point may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by LineSegmentPoint may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by LineSegment may have changed.
The class to return a point on a line segment.
This operator must be added to the operators collection before it
is configured. The
property hold the internal id of the operator producing the line segment,
and the operator must also be in the operators collection.
Serialization constructor for Cog3DRangeImageCrossSectionAngleLineLine
object.
The standard SerializationInfo argument.
The standard StreamingContext argument.
Computes the angle between the lines that extend from the two line segments.
The angle is computed in the profile selected space name.
If licensing for this class cannot be confirmed.
If the operator is not in a collection.
Fires when this method is called.
The following state flag may be affected:
- SfStatus
- SfAngle
The status returned can be one of the following:
- The angle was computed successfully and passed any enabled tolerance checking.
Passed
- The angle was computed successfully but failed tolerance checking.
FailedTolerance
- The operator failed.
FailedToMeasure
- The line segment(s) was/were not found in the collection at run time.
InputFeatureMissing
Create the graphics and add them to the graphicCollection provided..
A constructed CogGraphicCollection.
If lastRun is true, do not include the input graphics.
The input graphics are the regions of extracted line segments.
The output graphics are the angle graphics.
Clear the results' properties of this class.
Fires when this method is called.
The following state flag may be affected:
- SfAngle
Sets the name of the operators producing LineSegment1 and LineSegment2.
The Cog3DRangeImageCrossSectionOperatorsParams collection that holds the
line segments' operators.
The operator object producing LineSegment1.
The operator object producing LineSegment2.
Fires when this method is called.
The following state flag may be affected:
- SfLineSegment1
- SfLineSegment2
This is a convenience setter for programmatic users to specify
the line segments using the operators' objects.
The operators are not held internally, they are used to extract
the internal unique ids of the operators. The ids are used
by this operator at run time.
The method can be called before the operator is
added to the collection.
If operator1 and/or operator2 were/was not found
in the parentCollection provided.
If the parentCollection in null.
Gets the angle computed by the execute method.
Always check the status of the operator to be either Passed or FailedTolerance before calling the getter.
The angle is measured from LineSegment1 to LineSegment2.
If SupplementaryAngle is true, the angle is measured from -LineSegment2 to
LineSegment1.
The measured angle is in the profile selected space name and
it is reported in radians.
If the angle was not computed.
Gets or sets the name of the operator producing LineSegment2.
Fires when this property changes.
The following state flag may be affected:
- SfLineSegment2
The property is a link between the operator producing the line segment and this operator, and
therefore requires that all operators are added to the collection before it can be called.
The name of the operator is not held internally. It is used to extract
the internal unique id of the operator within the collection.
If the operator is not in a collection.
If the name of the operator producing LineSegment2 is not found
in the collection.
Gets or sets the name of the operator producing LineSegment1.
Fires when this property changes.
The following state flag may be affected:
- SfLineSegment1
The property is a link between the operator producing the line segment and this operator, and
therefore requires that all operators are added to the collection before it can be called.
The name of the operator is not held internally. It is used to extract
the internal unique id of the operator within the collection.
If the operator is not in a collection.
If the name of the operator producing LineSegment1 is not found
in the collection.
Gets or sets the SupplementaryAngle.
Fires when this property changes.
The following state flag may be affected:
- SfSupplementaryAngle
If true, the angle returned is the supplementary angle.
The SupplementaryAngle is measured from -LineSegment2 to LineSegment1.
Gets the tolerance object for
the angle.
The and
values are specified in radians.
If the property is set to true, the tolerance
check will be performed at run time.
Finalize this Cog3DRangeImageCrossSectionAngleLineLine.
Destruct this Cog3DRangeImageCrossSectionAngleLineLine.
Construct a deep copy of the supplied
Cog3DRangeImageCrossSectionAngleLineLine object.
The Cog3DRangeImageCrossSectionAngleLineLine object to be copied.
If the supplied argument is null.
The copy constructor is meant to be used with the collection
copy constructor.
The and
properties
refer to
internal ids within the operators collection and
their values are meaningless outside a collection.
Construct a default Cog3DRangeImageCrossSectionAngleLineLine object.
NextSf state flag.
This bit will be set in the EventArgs of a Changed event every time
the value returned by Angle may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by SupplementaryAngle may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by LineSegment2 may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by LineSegment1 may have changed.
The class to compute the angle between the lines that extend from the two line segments.
This operator must be added to the operators collection before it
is configured. The and
properties hold the internal ids of the operators producing the line segments, and these operators must also be in the operators collection.
The angle is measured from to
.
Serialization constructor for Cog3DRangeImageCrossSectionIntersectLineLine
object.
The standard SerializationInfo argument.
The standard StreamingContext argument.
Computes the intersect point.
The intersect point is computed in the profile selected space name.
If licensing for this class cannot be confirmed.
If the operator is not in a collection.
Fires when this method is called.
The following state flag may be affected:
- SfStatus
- SfIntersectPoint
- SfIntersectPointInImage
- SfIntersectPointInImage3D
The status returned can be one of the following:
- The intersect point was computed successfully and passed any enabled tolerance checking.
Passed
- The intersect point was computed successfully but failed tolerance checking
FailedTolerance
- The line segment(s) was/were not found in the collection at run time.
InputFeatureMissing
Clear the results' properties of this class.
Fires when this method is called.
The following state flag may be affected:
SfStatus
SfIntersectPoint
SfIntersectPointInImage
SfIntersectPointInImage3D
Create the graphics and add them to the graphicCollection provided.
A constructed CogGraphicCollection.
If lastRun is true, do not include the input graphics.
The input graphics are the regions of extracted line segment.
The output graphic is the point graphic.
Sets the name of the operator producing LineSegment1 and LineSegment2.
The Cog3DRangeImageCrossSectionOperatorsParams collection that holds the
line segment operator.
The operator object producing LineSegment.
The operator object producing LineSegment.
Fires when this method is called.
The following state flag may be affected:
- SfLineSegment
This is a convenience setter for programmatic users to specify
the line segments using the operators' objects.
The operators are not held internally, they are used to extract
the internal unique ids of the operators. The ids are used
by this operator at run time.
The method can be called before the operator is
added to the collection.
If operator is not found
in the parentCollection provided.
If the parentCollection in null.
Gets the point computed by the execute method.
Always check the status of the operator to be either Passed or FailedTolerance before calling the getter.
The point is in the SelectedSpaceName3D of the range image
stored in the profile.
If the point was not computed.
The Cog3DVect3 is a ValueType and cannot return a null.
Gets the point computed by the execute method.
The point is in the SelectedSpaceName of the range image
stored in the profile.
Returns null if the point was not computed.
Gets the point computed by the execute method.
Always check the status of the operator to be either Passed or FailedTolerance before calling the getter.
The point is in the ProfileSelectedSpaceName.
Returns null if the point was not computed.
Gets or sets the name of the operator producing LineSegment2.
Fires when this property changes.
The following state flag may be affected:
- SfLineSegment2
The property is a link between the operator producing the line segment and this operator, and
therefore requires that all operators are added to the collection before it can be called.
The name of the operator is not held internally. It is used to extract
the internal unique id of the operator within the collection.
If the operator is not in a collection.
If the name of the operator producing LineSegment2 is not found
in the collection.
Gets or sets the name of the operator producing LineSegment1.
Fires when this property changes.
The following state flag may be affected:
- SfLineSegment1
The property is a link between the operator producing the line segment and this operator, and
therefore requires that all operators are added to the collection before it can be called.
The name of the operator is not held internally. It is used to extract
the internal unique id of the operator within the collection.
If the operator is not in a collection.
If the name of the operator producing LineSegment1 is not found
in the collection.
Gets the Cog3DRangeImageCrossSectionTolerance object to
tolerance the Y position.
The and
values are specified in profile selected space name.
If the property is set to true, the tolerance
check will be performed at run time.
Gets the Cog3DRangeImageCrossSectionTolerance object to
tolerance the X position.
The and
values are specified in profile selected space name.
If the property is set to true, the tolerance
check will be performed at run time.
Finalize this Cog3DRangeImageCrossSectionIntersectLineLine.
Destruct this Cog3DRangeImageCrossSectionIntersectLineLine.
Construct a deep copy of the supplied
Cog3DRangeImageCrossSectionIntersectLineLine object.
The Cog3DRangeImageCrossSectionIntersectLineLine object to be copied.
If the supplied argument is null.
The copy constructor is meant to be used with the collection
copy constructor.
The and
properties
refer to
internal ids within the operators collection and
their values are meaningless outside a collection.
Construct a default Cog3DRangeImageCrossSectionIntersectLineLine object.
NextSf state flag.
This bit will be set in the EventArgs of a Changed event every time
the value returned by IntersectPointInImage3D may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by IntersectPointInImage may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by IntersectPoint may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by LineSegment2 may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by LineSegment1 may have changed.
The class to compute the intersect point between the lines that extend from the two line segments.
This operator must be added to the operators collection before it
is configured. The and
properties hold the internal ids of the operators producing the line segments, and these operators must also be in the operators collection.
Serialization constructor for Cog3DRangeImageCrossSectionExtractCorner
object.
The standard SerializationInfo argument.
The standard StreamingContext argument.
Returns the number of corners found within the regions.
Fires when this property changes.
The following state flag may be affected:
- SfNumCorners
Extracts a corner.
The corner is extracted and reported in the profile selected space name.
If licensing for this class cannot be confirmed.
If the regions selected space name was not found in the profile space tree.
Fires when this property changes.
The following state flag may be affected:
- SfStatus
- SfCorner
- SfCornerInImage
- SfCornerInImage3D
The status returned can be one of the following:
- The corner was extracted successfully and passed any enabled tolerance checking.
Passed
- The corner was extracted successfully but failed tolerance checking
FailedTolerance
- The corner was not extracted because not enough points were found to extract the corner,
the corner was below the sharpness threshold or the corner index is outside the range.
FeatureNoExtracted
Clear the results' properties of this class.
Fires when this property changes.
The following state flag may be affected:
SfCorner
SfCornerInImage
SfCornerInImage3D
Create the graphics and add them to the graphicCollection provided.
A constructed CogGraphicCollection.
If lastRun is true, do not include the input graphics.
The input graphics are the regions of extracted line segment.
The output graphic is the point graphic.
Gets the Cog3DRangeImageCrossSectionTolerance object to
tolerance the Y position.
The and
values are specified in profile selected space name.
If the property is set to true, the tolerance
check will be performed at run time.
Gets the Cog3DRangeImageCrossSectionTolerance object to
tolerance the X position.
The and
values are specified in profile selected space name.
If the property is set to true, the tolerance
check will be performed at run time.
Gets the corner extracted by the execute method.
Always check the status of the operator to be either Passed or FailedTolerance before calling the getter.
The corner position is in the SelectedSpaceName3D of the range image
stored in the profile.
If the corner was not computed.
The Cog3DVect3 is a ValueType and cannot return a null.
Gets the corner extracted by the execute method.
The corner position is in the SelectedSpaceName of the range image
stored in the profile.
Returns null if the corner was not extracted.
Gets the corner extracted by the execute method.
Always check the status of the operator to be either Passed or FailedTolerance before calling the getter.
The corner position is in the ProfileSelectedSpaceName.
The corner returned is the corner specified by the cornerIndex property.
Returns null if the corner was not extracted.
Gets or sets the CornerIndex.
Fires when this property changes.
The following state flag may be affected:
- SfCornerIndex
The corner with the specified index to be returned as the found corner.
If more than one corner are found, the corners are sorted first and then
the corner with the index specified is returned.
If the value is less than 0;
Gets or sets the FilterHalfSizeInPixels.
Fires when this property changes.
The following state flag may be affected:
- SfFilterHalfSizeInPixels
This field holds the half-length of the filter. The actual
filter length is 1+2*(FilterHalfSizeInPixels).
If the value is less than 1;
Gets or sets the SortDirectionAngle. The default is 0.
Fires when this property changes.
The following state flag may be affected:
- SfSortDirectionAngle
The field specifies the direction along which the SortType is applied to.
Gets or sets the SharpnessThreshold.
Fires when this property changes.
The following state flag may be affected:
- SfSharpnessThreshold
If the value is less than 0 or greater than 65535
The sharpness threshold is the minimum value of the sharpness needed for the profile point to be treated
as corner.
Gets or sets the SortType. Specifies how to sort the corners before finding
the one specified by the order number.
Fires when this property changes.
The following state flag may be affected:
- SfSortType
If the value is invalid.
Gets or sets the corner polarity. Specifies the sign of the sharpness of the corner in the profile.
Fires when this property changes.
The following state flag may be affected:
- SfPolarity
If the value is invalid.
Finalize this Cog3DRangeImageCrossSectionExtractCorner.
Destruct this Cog3DRangeImageCrossSectionExtractCorner.
Construct a deep copy of the supplied
Cog3DRangeImageCrossSectionExtractCorner object.
The Cog3DRangeImageCrossSectionExtractCorner object to be copied.
If the supplied argument is null.
Construct a default Cog3DRangeImageCrossSectionExtractCorner object.
NextSf state flag.
This bit will be set in the EventArgs of a Changed event every time
the value returned by NumCorners may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by CornerInImage3D may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by CornerInImage may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by Corner may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by SharpnessThershold may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by FilterHalfSizeInPixels may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by CornerIndex may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by SortDirectionAngle may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by SortType may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by Polarity may have changed.
The class to extract a corner from profile points that are within the regions.
This operator holds a collection of regions. There must be always one region in the
collection. The user may add and delete any region as long as the count does not dip below 1.
Serialization constructor for Cog3DRangeImageCrossSectionExtractPoint
object.
The standard SerializationInfo argument.
The standard StreamingContext argument.
Extracts a point.
The point is extracted and reported in the profile selected space name.
If licensing for this class cannot be confirmed.
If the regions selected space name was not found in the profile space tree.
Fires when this method is called.
The following state flag may be affected:
- SfStatus
- SfPoint
- SfPointInImage
- SfPointInImage3D
The status returned can be one of the following:
- The point was extracted successfully and passed any enabled tolerance checking.
Passed
- The point was extracted successfully but failed tolerance checking
FailedTolerance
- The point was not extracted.
FeatureNoExtracted
Clear the results' properties of this class.
Fires when this method is called.
The following state flag may be affected:
SfPoint
SfPointInImage
SfPointInImage3D
Create the graphics and add them to the graphicCollection provided.
A constructed CogGraphicCollection.
If lastRun is true, do not include the input graphics.
The input graphics are the regions.
The output graphic is the point graphic.
Gets the Cog3DRangeImageCrossSectionTolerance object to
tolerance the Y position.
The and
values are specified in profile selected space name.
If the property is set to true, the tolerance
check will be performed at run time.
Gets the Cog3DRangeImageCrossSectionTolerance object to
tolerance the X position.
The and
values are specified in profile selected space name.
If the property is set to true, the tolerance
check will be performed at run time.
Gets the point extracted by the execute method.
Always check the status of the operator to be either Passed or FailedTolerance before calling the getter.
The point is in the SelectedSpaceName3D of the range image
stored in the profile.
If the corner was not computed.
The Cog3DVect3 is a ValueType and cannot return a null.
Gets the point extracted by the execute method.
The point is in the SelectedSpaceName of the range image
stored in the profile.
Returns null if the point was not computed.
Gets the point extracted by the execute method.
The point is in the ProfileSelectedSpaceName.
Returns null if the point was not computed.
Sets the name of the operator producing LineSegment.
The Cog3DRangeImageCrossSectionOperatorsParams collection that holds the
line segment operator.
The operator object producing LineSegment.
Fires when this method is called.
The following state flag may be affected:
- SfLineSegment
This is a convenience setter for programmatic users to specify
the line segment using the operator's object.
The operator is not held internally, it is used to extract
the internal unique id of the operator. The id is used
by this operator at run time.
The method can be called before the operator is
added to the collection.
If operator is not found
in the parentCollection provided.
If the parentCollection in null.
Gets or sets the direction of the point extraction relative to the line segment.
The value of this property will be used only if
is set to
Fires when this property changes.
The following state flag may be affected:
- SfDirectionRelativeToLineSegment
If the value is invalid.
Gets or sets the name of the operator producing LineSegment.
The value of this property will be used only if
is set to
Fires when this property changes.
The following state flag may be affected:
- SfLineSegment
The property is a link between the operator producing the line segment and this operator, and
therefore requires that all operators are added to the collection before it can be called.
The name of the operator is not held internally. It is used to extract
the internal unique id of the operator within the collection.
If the operator is not in a collection.
If the name of the operator producing LineSegment is not found
in the collection.
Gets or sets the selected space of the .
The value of this property will be used only if
is set to
Fires when this property changes.
The following state flag may be affected:
- SfAngleSelectedSpace
If the value is invalid.
Gets or sets the Angle in radians from the X-axis.
The X-axis is either in profile default space or profile selected space based on the value of
The value of this property will be used only if
is set to
Fires when this property changes.
The following state flag may be affected:
- SfAngle
Gets or sets the how the direction of the point extraction will be specified.
Fires when this property changes.
The following state flag may be affected:
- SfDirectionSelectionMode
If the value is invalid.
Gets or sets the point type. Specifies the point to extract.
The value of this property will be used only if
is set to
Fires when this property changes.
The following state flag may be affected:
- SfPointType
If the value is invalid.
Finalize this Cog3DRangeImageCrossSectionExtractPoint.
Destruct this Cog3DRangeImageCrossSectionExtractPoint.
Construct a deep copy of the supplied
Cog3DRangeImageCrossSectionExtractPoint object.
The Cog3DRangeImageCrossSectionExtractPoint object to be copied.
If the supplied argument is null.
Construct a default Cog3DRangeImageCrossSectionExtractPoint object.
NextSf state flag.
This bit will be set in the EventArgs of a Changed event every time
the value returned by LineSegment may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by DirectionRelativeToLineSegment may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by Angle may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by AngleSelectedSpace may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by DirectionSelectionMode may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by PointInImage3D may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by PointInImage may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by Point may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by PointType may have changed.
The class To extract a point.
This operator holds a collection of regions. There must be always one region in the
collection. The user may add and delete any region as long as the count does not dip below 1.
Serialization constructor for Cog3DRangeImageCrossSectionExtractLineSegment
object.
The standard SerializationInfo argument.
The standard StreamingContext argument.
Extracts a line segment.
The line segment is extracted and reported in the profile selected space name.
If licensing for this class cannot be confirmed.
If the regions selected space name was not found in the profile space tree.
Fires when this method is called.
The following state flag may be affected:
- SfStatus
- SfLineSegment
- SfLineSegmentInImage
- SfLineSegmentInImage3D
The status returned can be one of the following:
- The line segment was extracted successfully and passed any enabled tolerance checking.
Passed
- The line segment was extracted successfully but failed tolerance checking
FailedTolerance
- The line segment was not extracted because because not enough points were found to extract the line.
FeatureNoExtracted
Clear the results' properties of this class.
Fires when this method is called.
The following state flag may be affected:
SfRMSError
SfLineSegment
SfLineSegmentInImage
SfLineSegmentInImage3D
Create the graphics and add them to the graphicCollection provided.
A constructed CogGraphicCollection.
If lastRun is true, do not include the input graphics.
The input graphics are the regions.
The output graphic is the line segment graphic.
Gets the Cog3DRangeImageCrossSectionTolerance object to
tolerance the EndY position.
The and
values are specified in profile selected space name.
If the property is set to true, the tolerance
check will be performed at run time.
Gets the Cog3DRangeImageCrossSectionTolerance object to
tolerance the EndX position.
The and
values are specified in profile selected space name.
If the property is set to true, the tolerance
check will be performed at run time.
Gets the Cog3DRangeImageCrossSectionTolerance object to
tolerance the StartY position.
The and
values are specified in profile selected space name.
If the property is set to true, the tolerance
check will be performed at run time.
Gets the Cog3DRangeImageCrossSectionTolerance object to
tolerance the StartX position.
The and
values are specified in profile selected space name.
If the property is set to true, the tolerance
check will be performed at run time.
Gets the tolerance object for
the RMS error.
If the property is set to true, the tolerance
check will be performed at run time.
Gets the tolerance object for
the angle.
The and
values are specified in radians.
If the property is set to true, the tolerance
check will be performed at run time.
Gets the RMS error of the line segment.
RMS is the root mean squared perpendicular error between
the line and all of the points in the user specified region
Gets the line segment extracted by the execute method.
The line segment is in the SelectedSpaceName3D of the range image
stored in the profile.
Return null is the line segment was not computed.
Gets the line segment extracted by the execute method.
The line segment is in the SelectedSpaceName of the range image
stored in the profile.
Return null is the line segment was not computed.
Gets the line segment extracted by the execute method.
Always check the status of the operator to be either Passed or FailedTolerance before calling the getter.
The line segment is in the ProfileSelectedSpaceName.
Return null is the line segment was not computed.
Finalize this Cog3DRangeImageCrossSectionExtractLineSegment.
Destruct this Cog3DRangeImageCrossSectionExtractLineSegment.
Construct a deep copy of the supplied
Cog3DRangeImageCrossSectionExtractLineSegment object.
The Cog3DRangeImageCrossSectionExtractLineSegment object to be copied.
If the supplied argument is null.
Construct a default Cog3DRangeImageCrossSectionExtractLineSegment object.
NextSf state flag.
This bit will be set in the EventArgs of a Changed event every time
the value returned by LineSegmentInImage3D may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by LineSegmentInImage may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by LineSegment may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by RMSError may have changed.
The class to extract a line segment from a profile points that are within the regions.
This operator holds a collection of regions. There must be always one region in the
collection. The user may add and delete any region as long as the count does not dip below 1.
Cognex Internal Use Only.
returns the parent of the operator which is a pointer to OperatorsParams.
Cognex Internal Use Only.
returns the internal unique ID of the operator
Serialization constructor for Cog3DRangeImageCrossSectionOperatorBase
object.
The standard SerializationInfo argument.
The standard StreamingContext argument.
Gets the default location for a new region
The default location is a 10x10mm rectangle in the center of the profile
Sets the region with the given index to the default region location
Cognex Internal Use Only.
The index of the region to be set to the default location.
Adds a new region to the operator with a default location
Cognex Internal Use Only.
Create the graphics and add them to the graphicCollection provided..
A constructed CogGraphicCollection.
If lastRun is true, do not include the input graphics.
Clear the results' properties.
Fires when this method is called.
The following state flag may be affected:
- SfStatus
- SfResultObject
- SfFeatureInImage
- SfFeatureInImage3D
If the operator produces a feature, the feature is returned
in the range image SelectedSpaceName3D stored in the profile.
The FeatureInImage3D is available after the operator was run.
The FeatureInImage3D is set to null at the beginning of the tool run.
Fires when this property changes.
The following state flag may be affected:
- SfFeatureInImage3D
If the operator produces a feature, the feature is returned
in the range image SelectedSpaceName stored in the profile.
The FeatureInImage is available after the operator was run.
The FeatureInImage is set to null at the beginning of the tool run.
Fires when this property changes.
The following state flag may be affected:
- SfFeatureInImage
Gets the ResultObject of the operator.
The ResultObject is available after the operator was run.
The ResultObject is set to null at the beginning of the tool run.
Fires when this property changes.
The following state flag may be affected:
- SfResultObject
Gets the names of the operators by output type from the OperatorsParams
collection.
It returns only the operators that are listed prior to this operator
in the OperatorsParams collection.
Returns null if no operator was found.
Runs the operator.
The profile.
Gets the OutputType of the operator.
Gets or sets the name of the operator.
When the operator is within a collection, the name is checked for uniqueness.
Fires when this property changes.
The following state flag may be affected:
- SfName
If the supplied argument is null or contains white spaces.
If the supplied argument is not unique.
Gets the status.
Fires when this property changes.
The following state flag may be affected:
- SfStatus
Gets or sets the CombineGraphicsEnabled.
When true, the combined graphics will be displayed in the last run record.
Combined graphics usually are the features or measurements produced by an
operator.
Fires when this property changes.
The following state flag may be affected:
- SfCombineGraphicsEnabled
Gets or sets the OutputGraphicsEnabled.
When true, the output graphics will be displayed in the current record.
Output graphics usually are the features or measurements produced by an
operator.
Fires when this property changes.
The following state flag may be affected:
- SfOutputGraphicsEnabled
Gets or sets the InputGraphicsEnabled.
When true, the input graphics will be displayed in the current record.
Input graphics usually are the regions.
Fires when this property changes.
The following state flag may be affected:
- SfInputGraphicsEnabled
Cognex Internal Use Only.
Gets the Regions. The regions property is a collection of ICogRegion.
Fires when this property changes.
The following state flag may be affected:
- SfRegions
Extract operator creates one region during construction.
The last region cannot be deleted.
Gets the Tolerance object of an item specified by name.
if name is not found, the return is null.
The name of the tolerance object requested.
Gets the ToleranceCollection. The ToleranceCollection is initialiazed by the operator and the user
will not be able to delete or add to it. Each operator adds a pre-defined set based on the operator
result object. By default, all tolerances are disabled.
Finalize this Cog3DRangeImageCrossSectionOperatorBase.
Destruct this Cog3DRangeImageCrossSectionOperatorBase.
Construct a deep copy of the supplied
Cog3DRangeImageCrossSectionOperatorBase object.
The Cog3DRangeImageCrossSectionOperatorBase object to be copied.
May not be null.
If the supplied argument is null.
Construct a default Cog3DRangeImageCrossSectionOperatorBase object.
NextSf state flag.
This bit will be set in the EventArgs of a Changed event every time
the value returned by FeatureInImage3D may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by FeatureInImage may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by ToleranceCollection may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by SelectedRegionIndex may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by Regions may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by CombinedGraphicsEnabled may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by OutputGraphicsEnabled may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by InputGraphicsEnabled may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by ResultObject may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by Status may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by Name may have changed.
The Cross Section operator base class.
The class holds common properties across operators.
Serialization constructor for Cog3DRangeImageCrossSectionProfileParams
object.
The standard SerializationInfo argument.
The standard StreamingContext argument.
The execute method in this class is responsible for:
- Fixturing the profile: adding a user defined space
to the profile space tree in the output profile (optional)
- Running the operators. The operators are run in the resulting
profile space. The operators interpret their regions in that space
and produce results in that space.
The profile.
If the supplied profile is null.
If the ProfileNewSpaceName is null and ProfileSpaceSelection
is set to New.
If the ProfileExistingSpaceName is null and ProfileSpaceSelection
is set to Existing.
If the supplied profile is invalid.
If licensing bit for this class cannot be confirmed.
Fires when execute is called.
The following state flag may be affected:
- SfStatus
Checks if the name is unique within the collection.
Return true if unique, false otherwise.
Gets or sets the ProfileExistingSpaceName.
The default is null.
If the supplied argument is null or an empty string.
The name of the OutputProfile.ProfileSelectedSpaceName
when the is
Existing.
Gets or sets the ProfileNewSpaceName.
The default is null.
If the supplied argument is null or an empty string.
if the value is not a valid syntax.
This is the space name of the DefaultFromNewTransform.
The name of the OutputProfile.ProfileSelectedSpaceName
when the is
New.
Gets or sets the DefaultFromNewTransform.
The default is an identity transform.
If the supplied argument is null.
Defines the transform that will be added to the ProfileSpaceTree at runtime
when the is
New.
Gets or sets the SelectedOperatorIndex.
The default is 0.
If the supplied value is out of range.
The Cross Section tool CreateCurrentRecord() method will create
the graphics only for the selected operator.
This property is used by the control, it is attached to the selected opertor
in the grid.
Internal Cognex use only.
Gets or sets the ProfileSpaceSelection.
The default is Default.
Fires when this property changes.
The following state flag may be affected:
- SfProfileSpaceSelection
If the supplied value is out of range.
Gets or sets the PinRegions.
The default is false.
The PinRegions allows the user to pin the profile regions specified in the operators
to their current location while the user is changing the profile space selection or
the new space transform. The profile regions with the default selected space name
equal to “.” will be updated.
The profile regions with any other selected space name will not be pinned, updated or modified.
The PinRegions applies only during setup of the Cross Section tool, it is ignored at runtime.
This property is only used by the control; the programmatic interface ignores this property.
Gets the status.
The default is true.
The status is set at runtime.
The overall status of executing all the operators.
True indicates that all the operators passed. False indicates at least one operator failed.
Internal Cognex use only.
Finalize this Cog3DRangeImageCrossSectionOperatorsParams.
Destruct this Cog3DRangeImageCrossSectionOperatorsParams.
Construct a deep copy of the supplied
Cog3DRangeImageCrossSectionOperatorsParams object.
The Cog3DRangeImageCrossSectionOperatorsParams object to be copied.
May not be null.
If the supplied argument is null.
Construct a default Cog3DRangeImageCrossSectionOperatorsParams object.
NextSf state flag.
This bit will be set in the EventArgs of a Changed event every time
the value returned by InternalProfile may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by SelectedOperatorIndex may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by ProfileExistingSpaceName may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by ProfileSpaceSelection may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by ProfileNewSpaceName may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by DefaultFromNewTransform may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by PinRegions may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by Status may have changed.
the Cross Section operators collection class.
The operators collection is responsible for optionally fixturing the profile and managing
all the operators.
The operators are the methods for extracting features from the profile, computing features
based on other features, and making measurements. Each operator will produce either a single feature
(like a point, or a line segment) or a single measurement (like a distance, or an angle).
Operators that extract a feature from the profile data typically require the user to provide
one or more regions (in the selected profile space). These regions identify the subset of the
profile data that should be used during feature extraction. The extracted feature can then be
used by other operators for additional computation or measurement.
Operators that make computations or measurements using extracted features never take the
features themselves as inputs. Instead, these operators accept a reference to the operator
that produces the feature. The concept of referencing operators is similar to linking a property
from one tool to the next. This concept fits nicely here because we execute the operators
in sequence and each operator produce a single object so there is no ambiguity.
The operators are not meant to be used standalone.
It is recommended that the operator is added to the collection and then configured.
This sequence is very important for the operators that reference other operators.
The paradigm of the operators is closely aligned with a tool group, for example
you cannot link the properties of a tool to other tools without adding the tool
first to the tool group. The operators that reference other operators are linking the operators together.
The overall status of executing all the operators is set in the status property. The status type is Boolean.
True indicates that all the operators passed. False indicates at least one operator failed.
The operator can be added only to one collection. The operator internal unique id within a collection is set
at the time the operator is added. Once the id is set, adding the operator to another collection will not be
allowed.
Returns true when values of the FarthestPointBelowReferenceProfile and
ClosestPointBelowReferenceProfile have been successfully computed.
Otherwise returns false.
When computing these points only those points of the profile are considered valid
that are in region and the difference at those points between the profile
and the input shapes is outside the height threshold
Returns true when values of the FarthestPointAboveReferenceProfile and
ClosestPointAboveReferenceProfile have been successfully computed.
Otherwise returns false.
When computing these points only those points of the profile are considered valid
that are in region and the difference at those points between the profile
and the input shapes is outside the height threshold
Returns true when values of the LeftPoint and RightPoint have been successfully computed.
Otherwise returns false.
When computing these points only those points of the profile are considered valid
that are in region and the difference at those points between the profile
and the input shapes is outside the height threshold
Gets the calculated rightmost point on the input profile.
The point has to be in range, the difference cannot be 0
and it has to be outside the height threshold.
when PointsAreValid is False.
Gets the calculated leftmost point on the input profile.
The point has to be in range, the difference cannot be 0
and it has to be outside the height threshold.
when PointsAreValid is False.
Gets the calculated point (if exists) of the input profile
that is below the reference profile and
where the difference is the minimum between the input profile and
the reference profile
The difference is measured in the profile image’s Y direction.
The point has to be in range, the difference cannot be 0 and it has to be
outside the height threshold.
when PointsBelowReferenceProfileAreValid is False.
Gets the calculated point (if exists) of the input profile
that is below the reference profile and
where the difference is the maximum between the input profile and
the reference profile
The difference is measured in the profile image’s Y direction.
The point has to be in range, the difference cannot be 0 and it has to be
outside the height threshold.
when PointsBelowReferenceProfileAreValid is False.
Gets the calculated point (if exists) of the input profile
that is above the reference profile and
where the difference is the minimum between the input profile and
the reference profile
The difference is measured in the profile image’s Y direction.
The point has to be in range, the difference cannot be 0 and it has to be
outside the height threshold.
when PointsAboveReferenceProfileAreValid is False.
Gets the calculated point (if exists) of the input profile
that is above the reference profile and
where the difference is the maximum between the input profile and
the reference profile
The difference is measured in the profile image’s Y direction.
The point has to be in range, the difference cannot be 0 and it has to be
outside the height threshold.
when PointsAboveReferenceProfileAreValid is False.
Gets the calculated area value. The value of the area depends
on the measurement position of Positive / Negative / Both
Finalize this Cog3DRangeImageCrossSectionAreaResult.
Destruct this Cog3DRangeImageCrossSectionAreaResult.
Copy constructs a Cog3DRangeImageCrossSectionAreaResult object. This is a
deep copy.
The result object to be copied. May not be null.
If the input argument is null.
Constructs a Cog3DRangeImageCrossSectionAreaResult object.
The are value.
If the input argument is null.
Serialization construct a Cog3DRangeImageCrossSectionAreaResult object.
The standard SerializationInfo argument.
The standard StreamingContext argument.
Serialization constructor for Cog3DRangeImageCrossSectionProfileParams
object.
The standard SerializationInfo argument.
The standard StreamingContext argument.
Creates the profile.
The Cog3DRangeImageCrossSectionProfile.
The range image.
If the supplied input image argument is not a CogImage16Range.
If the supplied input image argument is null.
If licensing for this class cannot be confirmed.
If the region is less than 2 pixels in width or less than 1 pixel in height.
Gets or sets the ProfileDefaultSpaceName.
The default is "Profile2D"
Fires when this property changes.
The following state flag may be affected:
- SfProfileDefaultSpaceName
If the supplied argument is null or an empty string.
if the value is not a valid syntax.
Gets or sets the 2D region in the range image.
The default is a default constructed region.
Fires when this property changes.
The following state flag may be affected:
- SfRegion
The region is an affine rectangle that lies in the image X-Y plane of
the range image. It is specified in any space within the 2D
coordinate space tree of the range image.
The region must be at least 2 pixel in width and 1 pixel in height.
A run time error is returned if the region does not meet the requrements.
Finalize this Cog3DRangeImageCrossSectionProfileParams.
Destruct this Cog3DRangeImageCrossSectionProfileParams.
Construct a deep copy of the supplied
Cog3DRangeImageCrossSectionProfileParams object.
The Cog3DRangeImageCrossSectionProfileParams object to be copied.
May not be null.
If the supplied argument is null.
Construct a default Cog3DRangeImageCrossSectionProfileParams object.
NextSf state flag.
This bit will be set in the EventArgs of a Changed event every time
the value returned by ProfileDefaultSpaceName may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by Region may have changed.
The Cross Section profile params class.
It is a lightweight class with two properties: a region specified in the range image 2D selected space name and
the ProfileDefaultSpaceName.
The execute method creates the profile.
The region specifies how the slice is aligned with the part in the range image.
The region in this tool is very similar to the region used in the caliper tool.
The region is limited to an affine rectangle like the region in the caliper tool.
The origin of the default profile space is defined by the rectangle that specifies the cutting plane:
The profile default space x-axis begins at the start point of the cutting plane rectangle (start of the region).
The end point of the cutting plane rectangle identifies the positive direction of the x-axis (end of the region).
The start point of the profile is always associated with midpoint of the region affine rectangle between CornerOrigin and CornerY.
The profile default space y-axis begins where image z is equal to 0 in the range image.
The default y axis is directed out of the range image, straight toward the viewer, through the “start” point.
Serialization constructor for Cog3DRangeImageCrossSectionProfile object.
The standard SerializationInfo argument.
The standard StreamingContext argument.
Gets the bounding rectangle of the profile in ProfileDefaultSpace
Returns null if the ProfileRoot is null.
Cognex Internal use only.
Creates the profile graphics for the current and the last run records.
When true (in case of CombinedGraphics record), the coordinate x-axis is drawn closer to the profile data.
Creates the profile sharpness graphics used as a visual aid
with the extract corner operator.
The constructed graphic collection returned from BuildProfileGraphics().
The filter half size used to apply to the profile data and generate the sharpness data.
The sharpness threshold to draw the cutoff lines.
Returns a unique space name within the ProfileSpaceTree.
The name will have Fixture as a base and the next available
index such as Fixture1 or Fixture2.
Returns the parent space name of the ProfileSelectedSpaceName.
Returns null if the ProfileSpaceTree is null.
Returns the first space in the ProfileSpaceTree.
The value is the ProfileDefaultSpaceName specified by
the tool that creates the profile.
If the ProfileSpaceTree has no spaces in it.
Returns the cutting plane.
The cutting plane lies parallel to the image z-axis of the range image
at the centerline of the region.
Maps a profile circle to a circle in the range image SelectedSpaceName3D.
The circle in the profile.
The 3D space name from the CoordinateSpaceTree3D.
A Cog3DCircle in the spaceName specified.
If the spaceName is null.
If the ProfileSpaceTree is null.
If the CoordinateSpaceTree is null.
If the ProfileSelectedSpaceName is null.
If the spaceName is not found in the CoordinateSpaceTree3D.
Maps a profile circle to a line segment in the range image SelectedSpaceName.
The circle in the profile.
The 2D space name from the CoordinateSpaceTree.
A CogLineSegment in the spaceName specified.
If the spaceName is null.
If the ProfileSpaceTree is null.
If the CoordinateSpaceTree is null.
If the ProfileSelectedSpaceName is null.
If the spaceName is not found in the CoordinateSpaceTree.
Maps a profile line segment to a line segment in the range image SelectedSpaceName3D.
The line segment in the profile.
The 3D space name from the CoordinateSpaceTree3D.
A Cog3DLineSeg in the spaceName specified.
If the spaceName is null.
If the ProfileSpaceTree is null.
If the CoordinateSpaceTree is null.
If the ProfileSelectedSpaceName is null.
If the spaceName is not found in the CoordinateSpaceTree3D.
Maps a profile line segment to a line segment in the range image SelectedSpaceName.
The line segment in the profile.
The 2D space name from the CoordinateSpaceTree.
A CogLineSegment in the spaceName specified.
If the spaceName is null.
If the ProfileSpaceTree is null.
If the CoordinateSpaceTree is null.
If the ProfileSelectedSpaceName is null.
If the spaceName is not found in the CoordinateSpaceTree.
Maps a profile point to a point in the range image SelectedSpaceName3D.
The x-coordinate of the profile point.
The y-coordinate of the profile point.
The 3D space name within the CoordinateSpaceTree3D.
A point in the spaceName specified as a Cog3DVect3 object.
If the spaceName is null.
If the ProfileSpaceTree is null.
If the CoordinateSpaceTree is null.
If the ProfileSelectedSpaceName is null.
If the spaceName is not found in the CoordinateSpaceTree3D.
Maps a profile point to a point in the range image SelectedSpaceName.
The x-coordinate of the profile point.
The y-coordinate of the profile point.
The 2D space name within the CoordinateSpaceTree.
The resulting mapped x-coordinate in the spaceName specified.
The resulting mapped Y-coordinate in the spaceName specified.
If the spaceName is null.
If the ProfileSpaceTree is null.
If the CoordinateSpaceTree is null.
If the ProfileSelectedSpaceName is null.
If the spaceName is not found in the CoordinateSpaceTree.
Shallow copy of the profile.
Gets the PixelFromRootTransform. The transform is computed from PixelFromRootTransform3D.
Returns null if PixelFromRootTransform3D is null.
The default is set when the profile is created.
The below ground transform, also known as the pixel from
root transform, records how the range image pixels within
the region were transformed and mangled to become the profile.
This transform links the range image coordinate spaces to the
profile spaces and define the bond between the range image
pixels and the profile data.
Fires when this property changes.
The following state flag may be affected:
- SfPixelFromRootTransform
Gets or sets the PixelFromRootTransform3D.
The default is set when the profile is created.
The below ground transform, also known as the pixel from
root transform, records how the range image pixels within
the region were transformed and mangled to become the profile.
This transform links the range image coordinate spaces to the
profile spaces and define the bond between the range image
pixels and the profile data.
Fires when this property changes.
The following state flag may be affected:
- SfPixelFromRootTransform3D
If the value is null.
It is not recommended to overwrite the transform.
The integrity of the profile will break and the
tool may not operate properly.
Gets or sets the ProfileSelectedSpaceName
The default is set when the profile is created.
The value depends on the OperatorsParams.ProfileSpaceSelection and
ProfileParams.ProfileDefaultSpaceName.
Fires when this property changes.
The following state flag may be affected:
- SfProfileSelectedSpaceName
if the value is null or empty string.
if the value is not a valid syntax.
Gets the ProjectionHeight.
The number of pixels in the projection direction will also be contained in the profile.
Gets or sets the CoordinateSpaceTree.
The CoordinateSpaceTree will contain a reference to the
CoordinateSpaceTree held by the range image.
Fires when this property changes.
The following state flag may be affected:
- SfCoordinateSpaceTree
If the value is null.
It is not recommended to overwrite the tree.
The integrity of the profile will break and the
tool may not operate properly.
Gets the ProfileRoot. The ProfileRoot object contains
the profile height data and the weights.
Gets or sets the SelectedSpaceName3D.
The default is null.
If the supplied argument is null or an empty string.
The SelectedSpaceName3D is used to map the features found in the profile to the range image.
Gets or sets the SelectedSpaceName.
The default is null.
If the supplied argument is null or an empty string.
The SelectedSpaceName is used to map the features found in the profile to the range image.
Gets or sets the CoordinateSpaceTree3D.
The CoordinateSpaceTree3D will contain the "Sensor3D" space.
Eventually it will hold a reference to the range image
CoordinateSpaceTree3D.
Fires when this property changes.
The following state flag may be affected:
- SfCoordinateSpaceTree3D
If the value is null.
It is not recommended to overwrite the tree.
The integrity of the profile will break and the
tool may not operate properly.
Gets or sets the ProfileSpaceTree.
The ProfileSpaceTree, when the profile is created, will contain one space to convert the
profile data to physical units of the range image.
Fires when this property changes.
The following state flag may be affected:
- SfProfileSpaceTree
If the value is null.
The profile space tree stores a family of 2D coordinate spaces that
lie within the cutting plane. These profile spaces are typically
expressed in physical units (e.g. millimeters), with x and y axes
that are orthogonal in physical space.
It is not recommended to overwrite the tree.
The integrity of the profile will break and the
tool may not operate properly.
Gets the weights for each height value in the profile data.
The weight will indicate the number of pixels contributing
to the height value in the corresponding profile datum.
The weight value is between 0 and 1. A value of 0 indicates
that all pixels contributing to the height are missing.
Returns null if the ProfileRoot is null.
Returns the profile data in the specified 3D space that can be found in the
CoogrdinateSpaceTree3D of the range image.
Each point in the profile is mapped back to the specified 3D space,
packaged as a Cog3DVect3 object, and added to the Cog3DVect3Collection.
Returns null if the ProfileRoot is null, or if the
profile has zero points.
A user specified profile selected space name.
If the value is null or ".", then the SelectedSpaceName3D
is used.
if the ssn is not in the tree.
The user should rely on the weights array (returned by GetWeights())
to determine what action to take with regards to non-visible pixels.
The weights array is of the same size as the profile data array,
and should be used to determine which points in the profile data are "missing".
Any point whose weight is zero is considered "missing" and should not be
examined: its height (z-value) is meaningless.
Returns the profile data in the specified space.
Each point in the profile is mapped from pels to the specified space,
packaged as a Cog3DVect2 object, and added to the Cog3DVect2Collection.
Returns null if the ProfileRoot is null, or if the
profile has zero points.
A user specified profile selected space name.
If the value is null or ".", then the ProfileSelectedSpaceName
is used.
if the ssn is not in the tree.
The user should rely on the weights array (returned by GetWeights())
to determine what action to take with regards to non-visible pixels.
The weights array is of the same size as the profile data array,
and should be used to determine which points in the profile data are "missing".
Any point whose weight is zero is considered "missing", and should not be
examined: its height (y-value) is meaningless.
Gets the profile height data in pixels.
Returns null if the ProfileRoot is null.
The user should rely on the weights array (returned by GetWeights())
to determine what action to take with regards to non-visible pixels.
The weights array is of the same size as the profile data array,
and should be used to determine which points in the profile data are "missing".
Any point whose weight is zero is considered "missing", and should not be
examined: its height (y-value) is meaningless.
Finalize this Cog3DRangeImageCrossSectionProfile.
Destruct this Cog3DRangeImageCrossSectionProfile.
Construct a deep copy of the supplied
Cog3DRangeImageCrossSectionProfile object.
The Cog3DRangeImageCrossSectionProfile object to be copied.
May not be null.
If the supplied argument is null.
Construct a default Cog3DRangeImageCrossSectionProfile object.
NextSf state flag.
This bit will be set in the EventArgs of a Changed event every time
the value returned by SelectedSpaceName3D may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by SelectedSpaceName may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by CuttingPlane may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by PixelFromRootTransform may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by CoordinateSpaceTree may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by PixelFromRootTransform3D may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by CoordinateSpaceTree3D may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by ProfileSelectedSpaceName may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by ProfileSpaceTree may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by ProjectionHeight may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by ProfileRoot may have changed.
The Cross Section profile class.
The profile is the new image-like container of the 1-D height data.
It holds the one-dimensional height data and the one-dimensional
weight data produced by projection. The profile resembles a 1-D range image,
but it is not a true image. It does not support the ICogImage interface.
And the data it holds is a "sideways" view of the original image.
Similar to the image, the profile also has a profile selected space name.
All positional measurements from the operators will be reported in the profile selected space name.
To map points from the profile data back to the range image and to perform the mapping in the 2D and 3D user defined spaces, the profile holds on to:
- The 3D coordinate space tree of the range image
- The 2D coordinate space tree of the range image
- A 3D below ground transform linking the profile data to the range image pixels
- A 2D below ground transform linking the profile data to the range image pixels
There is no default constructor for the profile. It must be created by
running the tool.
Serializer for ProfileData and Weights vector objects.
The standard SerializationInfo argument.
The standard StreamingContext argument.
Serialization constructor for Cog3DRangeImageCrossSectionProfileRoot object.
The standard SerializationInfo argument.
The standard StreamingContext argument.
Gets the weights. The weight value is between 0 and 1.
Returns null if the raw data is null.
Gets the profile height data in pixels.
Returns null if the raw data is null.
Finalize this Cog3DRangeImageCrossSectionProfileRoot.
Destruct this Cog3DRangeImageCrossSectionProfileRoot.
Construct a deep copy of the supplied
Cog3DRangeImageCrossSectionProfileRoot object.
The Cog3DRangeImageCrossSectionProfileRoot object to be copied.
May not be null.
If the supplied argument is null.
Construct a default Cog3DRangeImageCrossSectionProfileRoot object.
NextSf state flag.
The Cross Section profile root class. This class hold the actual
raw height and weight values of the profile.
Serialization constructor for Cog3DRangeImageCrossSectionTolerance
object.
The standard SerializationInfo argument.
The standard StreamingContext argument.
Return true if the name is Angle.
Gets or sets the maximum value to use for tolerance.
Default value is 0.
If Min is less than Max, then Min value will be changed to be equal
to Max.
Fires when the value of this property changes.
- SfMax
- SfMin
Gets or sets the minimum value to use for tolerance.
Default value is 0.
If Max is less than Min, then Max value will be changed to be equal
to Min.
Fires when the value of this property changes.
- SfMin
- SfMax
If True, the operator will check at run time
that the value is within the Min and Max values.
Default value is false.
Fires when the value of this property changes.
- SfEnabled
Gets the name of the item being toleranced.
Finalize this Cog3DRangeImageCrossSectionTolerance.
Destruct this Cog3DRangeImageCrossSectionTolerance.
Construct a deep copy of the supplied
Cog3DRangeImageCrossSectionTolerance
object.
The Cog3DRangeImageCrossSectionTolerance object to be copied.
May not be null.
If the supplied argument is null.
Construct a default Cog3DRangeImageCrossSectionTolerance object.
NextSf state flag.
This bit will be set in the EventArgs of a Changed event every time
the value returned by Max may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by Min may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by Enabled may have changed.
A common class to define the tolerance for a property.
An enumeration that specifies the direction of the extraction with respect to the given line segment
In the direction of the right perpendicular of the line segment
In the direction of the left perpendicular of the line segment
In the opposite direction of the line segment
In the direction of the line segment
An enumeration that specifies whether a value should be understood in profile default space or profile selected space
The value is specified in ProfileSelectedSpace
The value is specified in ProfileDefaultSpace
An enumeration that specifies how the direction of the point extarction extraction will be defined.
The direction is specified by a line segment
The direction is specified by a user given angle
The direction is specified by one of the points from the predefined list: top, left, etc...
The point of the input profile had a value outside the threshold
The point of the input profile was in the given regions
The point of the input profile was missing but has been filled before the measurement
The point of the input profile was missing
An enumeration that specifies the point to find within one or more
profile regions.
ClosestPointBelowReferenceProfile of the AreaResult (if exist):
the closest point below the reference profile.
FarthestPointBelowReferenceProfile of the AreaResult (if exist):
the farthest point below the reference profile.
ClosestPointAboveReferenceProfile of the AreaResult (if exist):
the closest point above the reference profile.
FarthestPointAboveReferenceProfile of the AreaResult (if exist):
the farthest point above the reference profile.
RightPoint of the AreaResult (if exist): the point with the highest x coordinate.
LeftPoint of the AreaResult (if exist): the point with the lowest x coordinate.
The input operator is one that provides CogCircle as output.
The input operator is one that provides CogLineSegment as output.
Parameters for creating the reference profile from the input shapes.
Create the reference profile from the lowest shapes.
Create the reference profile from the highest shapes.
An enumeration that specifies which area is being measured
- above the reference profile and below the input profile
- bwloe the reference profile and above the input profile
- above and below the reference profile and they added together
- above and below the reference profile and the below the below area is substracted from the above area
The area being measured is both the above and below part and
the below area is subtracted from the above area
The area being measured is both the above and below part and they are added together
The area being measured is below the reference profile and above the input profile
The area being measured is above the reference profile and below the input profile
Enumeration of diagnostic data that can be provided in the
Tool's LastRunRecord.
Include all of the diagnostic data in the LastRunRecord.
Include a copy of the region in the LastRunRecord.
Include a deep copy of the input image in the LastRunRecord.
Include a reference to the input image in the LastRunRecord.
Do not include any of the diagnostic data in the LastRunRecord.
Enumeration of non-diagnostic data that can be provided in
the Tool's LastRunRecord.
Include all of the non-diagnostic data in the LastRunRecord.
Include only the measurements in the LastRunRecord.CombinedGraphics.
Include only the features in the LastRunRecord.CombinedGraphics.
Do not include any of the non-diagnostic data in the LastRunRecord.
Include all possible records in the CurrentRecord.
Include the fixtured coordinate space origin
in the CurrentRecord.Profile
Include the (interactive) region to be used as a mask
in the CurrentRecord.
Include the input image in the CurrentRecord.
Do not include any records in the CurrentRecord.
An enumeration that specifies the status of an operator when run.
The operator ran but one or more of its input operators were not found.
The operator ran but failed to produce a measurement.
The operator ran but failed to extract a feature.
The operator ran but failed to compute a feature.
The operator ran but one or more of the tolerances failed.
The operator ran and passed.
The operator has not been run.
An enumeration that specifies the
of an operator.
The operator output is a Circle.
The operator output is a AreaStatistics.
The operator output is a numerical value.
The operator output is an angle: a double value,
measured in radians.
The operator output is a CogLineSegment.
The operator output is a CogPointMarker.
An enumeration that specifies which profile coordinate space will
be used as the
selected profile space when the
operators are executed.
A new profile coordinate space will created and used as the
selected profile space. The name of the new space is given by
and its transform is given by
.
An existing profile coordinate space will be used as the selected
profile space. The name of the existing space is given by
.
The selected profile space will not be changed. It is already
specified by the
of the
profile that is passed into the
method.
An enumeration that specifies the point to find within one or more
profile regions.
BottomRight point: the point with the lowest y coordinate and highest x coordinate.
BottomLeft point: the point with the lowest y coordinate and lowest x coordinate.
TopRight point: the point with the highest y coordinate and highest x coordinate.
TopLeft point: the point with the highest y coordinate and lowest x coordinate.
Average point: the average position of all points within one or
more profile regions.
Rightmost point: the point with the highest x coordinate.
Leftmost point: the point with the lowest x coordinate.
Bottommost point: the point with the lowest y coordinate.
Topmost point: the point with the highest y coordinate.
An enumeration that specifies the sorting order when multiple
corners are found within one or more profile regions.
The sorting order is based on the sharpness of the corner.
The corners are sorted from sharpest to least sharp.
The sorting order is based on the x-axis position of the corner.
The corners are sorted from right to left.
The sorting order is based on the x-axis position of the corner.
The corners are sorted from left to right.
An enumeration that specifies the polarity of a corner.
The desired corner can be either a peak or a valley.
The corner occurs where the profile data is concave upward:
the slope of the profile increases as you move in the positive
direction along the x-axis.
The corner occurs where the profile data is concave downward:
the slope of the profile decreases as you move in the positive
direction along the x-axis.
An enumeration that specifies a point on a given line segment.
The end point of a line segment.
The start point of a line segment.
The middle point of a line segment.
An enumeration that specifies how to compute the distance between
two points.
Compute the y-axis distance between two points.
Compute the x-axis distance between two points.
Compute the Euclidean distance between two points.
An enumeration that specifies whether or not to treat a line
segment as an infinite line when determining the point "on" the
segment that is nearest to a given point.
The nearest point must fall on the line segment.
The nearest point may fall anywhere along the infinite line
that passes through the line segment.
Enable creation of records by bitwise ORing the appropriate
Cog3DRangeImageHeightCalculatorLastRunRecordDiagConstants.
The default is
(Cog3DRangeImageHeightCalculatorLastRunRecordDiagConstants::InputImageByReference |
Cog3DRangeImageHeightCalculatorLastRunRecordDiagConstants::Region |
Cog3DRangeImageHeightCalculatorLastRunRecordDiagConstants::UsedPixels |
Cog3DRangeImageHeightCalculatorLastRunRecordDiagConstants::Histogram)
Fires when this property changes.
The following state flag will be set:
- SfLastRunRecordDiagEnable
Enable creation of records by bitwise ORing the appropriate
Cog3DRangeImageHeightCalculatorLastRunRecordConstants.
The default is Cog3DRangeImageHeightCalculatorLastRunRecordConstants::None
Fires when this property changes.
The following state flag will be set:
- SfLastRunRecordEnable
- SfCreateLastRunRecord
Enable creation of records by bitwise ORing the appropriate
Cog3DRangeImageHeightCalculatorCurrentRecordConstants.
The default is (int)Cog3DRangeImageHeightCalculatorCurrentRecordConstants::InputImage | (int)Cog3DRangeImageHeightCalculatorCurrentRecordConstants::Region
Fires when this property changes.
The following state flag will be set:
- SfCurrentRecordEnable
- SfCreateCurrentRecord
The result of running the height calculator tool
In the context of the height calculator, "used" pixels are the image
pixels that contribute to the height calculation.
A range image pixel is "used" to calculate the height if:
-
it is inside the 2D input
of the tool.
-
it is marked "care" in the optional
provided as part of the
.
-
it is marked as "visible pixel" in the visible pixel mask of the
.
The visible pixel mask can be accessed by calling
on the range image.
-
its height falls within the valid height range configured in the height tool's
run parameters. See .
Pixels that meet these conditions contribute to the height computation
and are marked as "used" in the
.
Only "used" pixels are included in the height tool's
data.
Note that the height of an individual range image pixel is defined as
the signed distance from the center of the range image pixel to
the nearest point on the base plane (measured in selected space 3D units).
By default the positive height direction is defined to be in the same direction as the
normal vector of the base plane. However, the positive height direction can be
reversed by setting the property.
Fires when this property changes.
The following state flag will be set:
- SfResult
The height calculator tool's run parameters operator
The value can not be null.
The default is a default Cog3DRangeImageHeightCalculator.
Fires when this property changes.
The following state flag will be set:
- SfRunParams
The calculated height is the distance of the range image pixels from this
plane (see also
).
The default is a horizontal plane at z = 0.
If BasePlane is set to null a horizontal plane at z = 0 will be used.
Fires when this property changes.
The following state flag will be set:
- SfBasePlane
The 2D region of the range image which contains the pixels
of interest. Only pixels contained within this region will
be used to calculate the height.
A pixel is considered inside the 2D region if the pixel's
2D center falls within the region.
The region can be null to use the entire range image.
The default is a default CogRectangleAffine
Fires when this property changes.
The following state flag will be set:
- SfRegion
The range image surface data used in the height calculation.
The default is null.
Fires when this property changes.
The following state flag will be set:
- SfInputImage
Constructs and returns a record containing a histogram graphic
for use in the tool's last run record.
Creates a DisplayMethod to be used as the content of
a parent image record's subrecord. When the parent image
record is displayed by a CogRecordDisplay, the subrecord
will cause a transform to be renamed in the Display's
UserPixelTree.
Creates a DisplayMethod to be used as the content of
a parent image record's subrecord. When the parent image
record is displayed by a CogRecordDisplay, the subrecord
will cause a transform to be added to the Display's UserPixelTree.
Draws a vertical line to mark a notable height
locations in the histogram graphics.
The statistical mode is not included in
the results returned from CVT.
This function finds the mode of the histogram.
Serialization Constructor
Returns a deep copy of this class instance.
This method's implementation calls
.
Constructs a deep copy of the supplied Cog3DRangeImageHeightCalculatorTool.
The Cog3DRangeImageHeightCalculatorTool to be copied. May not be null.
Thrown if is null.
Thrown if does not support
.
The properties of are copied as follows:
-
is copied by calling with the
CogImageCopyModeConstants flag set.
-
is copied by calling (an exception
is thrown if the region cannot does not support ).
-
is copied by calling .
-
is copied by calling .
-
is copied by calling .
-
The
are copied by calling
.
The data bindings of the original tool are duplicated in the new tool.
The databindings are copied with their destinations pointing _into_ the
new tool, while their sources are copied directly and still point _from_
the same upstream objects (tools) as the original tool's databindings.
-
The
is copied by calling
.
-
The
is copied by calling
.
Construct a new instance of this class.
Cache the last run record data so it
can be accesed by CreateLastRunRecord.
Clear any cached last run record data.
This bit will be set in the EventArgs of a Changed event every time the
value returned by LastRunRecordDiagEnable may have changed.
This bit will be set in the EventArgs of a Changed event every time the
value returned by LastRunRecordEnable may have changed.
This bit will be set in the EventArgs of a Changed event every time the
value returned by CurrentRecordEnable may have changed.
This bit will be set in the EventArgs of a Changed event every time the
value returned by RunParams may have changed.
This bit will be set in the EventArgs of a Changed event every time the
value returned by RunParams may have changed.
This bit will be set in the EventArgs of a Changed event every time the
value returned by Region may have changed.
This bit will be set in the EventArgs of a Changed event every time the
value returned by Region may have changed.
This bit will be set in the EventArgs of a Changed event every time the
value returned by InputImage may have changed.
A range image has pixel values that represent the distance from a
reference plane to an object.
The height calculator tool measures the height of the surface
defined by the range image pixels relative to a user supplied base plane.
The computed height is returned in the
units specified in the range image (e.g. mm^3).
In the context of the height calculator, "used" pixels are the image
pixels that contribute to the height calculation.
A range image pixel is "used" to calculate the height if:
-
it is inside the 2D input
of the tool.
-
it is marked "care" in the optional
provided as part of the
.
-
it is marked as "visible pixel" in the visible pixel mask of the
.
The visible pixel mask can be accessed by calling
on the range image.
-
its height falls within the valid height range configured in the height tool's
run parameters. See .
Pixels that meet these conditions contribute to the height computation
and are marked as "used" in the
.
Only "used" pixels are included in the height tool's
data.
Note that the height of an individual range image pixel is defined as
the signed distance from the center of the range image pixel to
the nearest point on the base plane (measured in selected space 3D units).
By default the positive height direction is defined to be in the same direction as the
normal vector of the base plane. However, the positive height direction can be
reversed by setting the property.
Enumeration of diagnostic data that can be provided in the Tool's
LastRunRecord.
Include all possible records.
Include a histogram graphic
Include a mask graphic representing which range image
pixels were used in the height calculation
Include a graphic representing the input image mask in
the LastRunRecord.
Include a copy of the region in the LastRunRecord.
Include a deep copy of the input image in the LastRunRecord.
Include a reference to the input image in the LastRunRecord.
Do not include any of the non-diagnostic data in the LastRunRecord.
Enumeration of non-diagnostic data that can be provided in the Tool's
LastRunRecord.
Include all possible records.
Do not include any of the non-diagnostic data in the LastRunRecord.
Enumeration of data that can be provided in the Tool's CurrentRecord.
Include all possible records in the CurrentRecord.
Include a graphic representing the input image mask in
the CurrentRecord.
Include the (interactive) region to be processed at run time in the
CurrentRecord.
Include the input image in the CurrentRecord.
Do not include any records in the CurrentRecord.
Computes the height of the range image surface relative to
a horizontal base plane with a user specified Z height.
The base plane has a 3D selected space coordinate normal vector (0, 0, 1),
i.e. oriented along the positive z axis.
The range image surface data of which the height is calculated.
The 2D region of the range image which contains the pixels
of interest. Only pixels contained within this region will
be used to calculate the height.
The region can be null to use the entire range image.
The z value (usually the height) of the horizontal 3D plane,
in the selected space 3D coordinates of the range image
- Thrown if is null.
- Thrown if is is not allocated.
- Thrown if has a transform that is
singular (i.e., not invertible).
- Thrown if
+ is greater
than 1.
- Thrown if
is greater than .
Computes the height between the surface defined by the range image
pixels and the specified base plane.
The range image surface data of which to calculate the height
The 2D region of the range image which contains the pixels
of interest. Only pixels contained within this region will
be used to calculate the height.
The region can be null to use the entire range image.
The plane relative to which the height is calculated.
(see also ).
The basePlane can be null to use a horizontal plane at z = 0.
- Thrown if is null.
- Thrown if is is not allocated.
- Thrown if has a transform that is
singular (i.e., not invertible).
- Thrown if is degenerate.
- Thrown if
+ is greater
than 1.
- Thrown if
is greater than .
if the SelectedSpaceName3D of the range image is not in the tree, or if the
SelectedSpaceName3D of the plane is not in the tree.
Gets or sets the 2D InputImageMask Y offset value in pixels.
The InputImageMask Y offset value in pixels. The X and Y offset values
set the offset from the upper-left corner of the run-time input
image to th upper-left corner of the
in pixels. The default is 0.
Fires when this property changes.
The following state flag will be set:
- SfInputImageMaskOffsetY
Gets or sets the 2D InputImageMask X offset value in pixels.
The InputImageMask X offset value in pixels. The X and Y offset values
set the offset from the upper-left corner of the run-time input
image to th upper-left corner of the
in pixels. The default is 0.
Fires when this property changes.
The following state flag will be set:
- SfInputImageMaskOffsetX
Gets or sets the input image mask.
The input image mask allows you to ignore regions
of the range image by masking them out.
InputImageMask is optional and may be null if no mask is
required. The default is null.
255 = use this pixel
0 = ignore this pixel
Fires when this property changes.
The following state flag will be set:
- SfInputImageMaskOffset
The input image mask is applied to the input image after taking the
and
into account.
Specifies which side of the plane to consider the positive height
direction when computing the height.
The default is Cog3DPlaneSideConstants::IncreasingPlaneNormal.
Fires when this property changes.
The following state flag will be set:
- SfPlaneSide
Gets or sets a value which controls how the
property of the result is calculated.
The default is 0.01. The value must be between [0, 1].
The fraction which dictates how many of the highest pixels are discarded
before calculating the
height.
For example if the HighTailFrac is set to 0.01, then
is set such that 1 percent of "used" pixel heights are above it.
- Thrown if value falls outside the range [0, 1].
Fires when this property changes.
The following state flag will be set:
- SfHighTailFrac
Gets or sets a value which controls how the
property of the result is calculated.
The default is 0.01. The value must be between [0, 1].
The fraction which dictates how many of the lowest pixels are discarded
before calculating the
height.
For example if the LowTailFrac is set to 0.01, then
is set such that 1 percent of "used" pixel heights are below it.
- Thrown if value falls outside the range [0, 1].
Fires when this property changes.
The following state flag will be set:
- SfLowTailFrac
Gets or sets a value that controls how the
property of the result is calculated.
The default is 0.0.
The standard deviation of "used" range image pixel heights is multiplied by StdDevMult.
The resulting value is then added to the mean of all the "used" pixel heights and returned
as the
property of the overall result.
Note that it is valid to set StdDevMult to a value less than 0.0.
Fires when this property changes.
The following state flag will be set:
- SfStdDevMult
Specifies whether or not to include a pixel counts diagnostics
image in the result. The pixel counts diagnostics image indicates
which pixels in the range image were used by the height calculation.
The default is true.
Fires when this property changes.
The following state flag will be set:
- SfComputePixelCountsDiagImage
Specifies whether or not to include the histogram data
in the result.
The default is true.
Fires when this property changes.
The following state flag will be set:
- SfIncludeHistogramInResult
Enables or disables the height range filter.
The height range filter allows the user to exclude pixels which do not fall
within a user selected range of height values.
The default is false
Enable the height range filter to help remove the effect of noisy or
outlying height pixel data from the height calculation.
The height range filter is configured by setting
and
.
The configured height range can inverted by setting
When a height range filter is enabled, the endpoints of the height range
filter ( and
) are always
included in the pixel values used to calculate the height.
The "height" of a range image pixel relative to a base plane is defined as
the signed distance from the center of the range image pixel to the
nearest point on the base plane, measured in selected space 3D coordinates.
Fires when this property changes.
The following state flag will be set:
- SfHeightRangeFilterEnabled
Controls whether the height range filter includes or excludes the
values between the HeightRangeFilterLow and the HeightRangeFilterHigh.
The default is IncludeValuesInRange
The "height" of a range image pixel relative to a base plane is defined as
the signed distance from the center of the range image pixel to the
nearest point on the base plane, measured in selected space 3D coordinates.
When a height range filter is enabled, the endpoints of the height range
filter (HeightRangeFilterLow, HeightRangeFilterHigh) are always included
in the pixel values used to calculate the height.
Fires when this property changes.
The following state flag will be set:
- SfHeightRangeFilterMode
The largest height value to be included or excluded by the height range filter.
The default is 100.
The "height" of a range image pixel relative to a base plane is defined as
the signed distance from the center of the range image pixel to the
nearest point on the base plane, measured in selected space 3D coordinates.
When a height range filter is enabled, the endpoints of the height range
filter (HeightRangeFilterLow, HeightRangeFilterHigh) are always included
in the pixel values used to calculate the height.
Setting this property to a value less than HeightRangeFilterLow will cause
HeightRangeFilterLow to be adjusted accordingly.
Fires when this property changes.
The following state flag will be set:
- SfHeightRangeFilterHigh
The smallest height value to be included or excluded by the height range filter.
The default is 10.
The "height" of a range image pixel relative to a base plane is defined as
the signed distance from the center of the range image pixel to the
nearest point on the base plane, measured in selected space 3D coordinates.
When a height range filter is enabled, the endpoints of the height range
filter (HeightRangeFilterLow, HeightRangeFilterHigh) are always included
in the pixel values used to calculate the height.
Setting this property to a value greater than HeightRangeFilterHigh will cause
HeightRangeFilterHigh to be adjusted accordingly.
Fires when this property changes.
The following state flag will be set:
- SfHeightRangeFilterLow
Gets or sets the region mode. This controls how the optional run time
region is applied to the input image.
The region mode. May be either PixelAlignedBoundingBox or
PixelAlignedBoundingBoxAdjustMask. Default is PixelAlignedBoundingBoxAdjustMask.
CogRegionModeConstants::AffineTransform is not a supported region mode.
If the supplied argument is not either PixelAlignedBoundingBox or
PixelAlignedBoundignBoxAdjustMask.
Fires when this property changes.
The following state flag will be set:
- SfRegionMode
This bit will be set in the EventArgs of a Chagned event every time the
value returned by HeightRangeFilterEnabled may have changed.
This bit will be set in the EventArgs of a Chagned event every time the
value returned by IncludeHistogramInResult may have changed.
This bit will be set in the EventArgs of a Chagned event every time the
value returned by StdDevMult may have changed.
This bit will be set in the EventArgs of a Chagned event every time the
value returned by HighTailFrac may have changed.
This bit will be set in the EventArgs of a Chagned event every time the
value returned by LowTailFrac may have changed.
This bit will be set in the EventArgs of a Changed event every time the
value returned by InputImageMaskOffsetX may have changed.
This bit will be set in the EventArgs of a Changed event every time the
value returned by InputImageMaskOffsetX may have changed.
This bit will be set in the EventArgs of a Changed event every time the
value returned by InputImageMask may have changed.
This bit will be set in the EventArgs of a Changed event every time the
value returned by ComputePixelCountsDiagImage may have changed.
This bit will be set in the EventArgs of a Changed event every time the
value returned by PlaneSide may have changed.
This bit will be set in the EventArgs of a Changed event every time the
value returned by HeightRangeFilterMode may have changed.
This bit will be set in the EventArgs of a Changed event every time the
value returned by HeightThresholdHigh may have changed.
This bit will be set in the EventArgs of a Changed event every time the
value returned by HeightRangeFilterLow may have changed.
This bit will be set in the EventArgs of a Changed event every time the
value returned by RegionMode may have changed.
Serialization Constructor
Constructs a new instance of this class as a deep copy of the
given instance.
The Cog3DRangeImageHeightCalculator object to be copied. May not be null.
If the input argument is null.
Constructs a new instance of this class
The height calculator tool operator.
Holds the run parameters used by the height tool.
Called by the height tool to
the actual height calculation.
Get the histogram bin index for a given height value.
See also:
The height from which to find a cooresponding histogram bin index.
- If the result does not contain any histogram data.
- If falls outside range of histogram data.
- If the transform from histogram bins to height values is invalid.
Get the height value for a given histogram bin index.
See also:
The bin from which to find a cooresponding height value.
- If the result does not contain any histogram data.
- If is less than 0 or greater the total number of bins.
The 2D distance in the Y direction from the upper left corner
of the original input image to the upper left corner of the
(in pixels).
The 2D distance in the X direction from the upper left corner
of the original input image to the upper left corner of the
(in pixels).
Identifies which pixels in the range image were "used" to calculate the height.
Each pixel in the pixel counts diag image is a bit-wise or of
.
In the context of the height calculator, "used" pixels are the image
pixels that contribute to the height calculation.
A range image pixel is "used" to calculate the height if:
-
it is inside the 2D input
of the tool.
-
it is marked "care" in the optional
provided as part of the
.
-
it is marked as "visible pixel" in the visible pixel mask of the
.
The visible pixel mask can be accessed by calling
on the range image.
-
its height falls within the valid height range configured in the height tool's
run parameters. See .
Pixels that meet these conditions contribute to the height computation
and are marked as "used" in the
.
Only "used" pixels are included in the height tool's
data.
Note that the height of an individual range image pixel is defined as
the signed distance from the center of the range image pixel to
the nearest point on the base plane (measured in selected space 3D units).
By default the positive height direction is defined to be in the same direction as the
normal vector of the base plane. However, the positive height direction can be
reversed by setting the property.
Result information which identifies the number of pixels in the range image
that fall into each of 4 different categories.
See
for the definition of the different categories.
In the context of the height calculator, "used" pixels are the image
pixels that contribute to the height calculation.
A range image pixel is "used" to calculate the height if:
-
it is inside the 2D input
of the tool.
-
it is marked "care" in the optional
provided as part of the
.
-
it is marked as "visible pixel" in the visible pixel mask of the
.
The visible pixel mask can be accessed by calling
on the range image.
-
its height falls within the valid height range configured in the height tool's
run parameters. See .
Pixels that meet these conditions contribute to the height computation
and are marked as "used" in the
.
Only "used" pixels are included in the height tool's
data.
Note that the height of an individual range image pixel is defined as
the signed distance from the center of the range image pixel to
the nearest point on the base plane (measured in selected space 3D units).
By default the positive height direction is defined to be in the same direction as the
normal vector of the base plane. However, the positive height direction can be
reversed by setting the property.
The offset value need to map a histogram bin number to an actual height value.
binHeight = binIndex * HistogramHeightFromBinScale + HistogramHeightFromBinOffset
This property returns 0.0 if
was false or if the height calculation included 0 used pixels.
See: .
The scale value needed to map a histogram bin number to an actual height value.
binHeight = binIndex * HistogramHeightFromBinScale + HistogramHeightFromBinOffset
This property returns 0.0 if
was false or if the height calculation included 0 used pixels.
See: .
Returns a histogram of the height values of the individual
range image pixels.
See also:
and
Note that only pixels that were "used" as part of the
actual height calculation are included in the histogram data.
For example, the histogram bins for any height values
that were filtered out by the height range filter will contain
0 pixels.
In the context of the height calculator, "used" pixels are the image
pixels that contribute to the height calculation.
A range image pixel is "used" to calculate the height if:
-
it is inside the 2D input
of the tool.
-
it is marked "care" in the optional
provided as part of the
.
-
it is marked as "visible pixel" in the visible pixel mask of the
.
The visible pixel mask can be accessed by calling
on the range image.
-
its height falls within the valid height range configured in the height tool's
run parameters. See .
Pixels that meet these conditions contribute to the height computation
and are marked as "used" in the
.
Only "used" pixels are included in the height tool's
data.
Note that the height of an individual range image pixel is defined as
the signed distance from the center of the range image pixel to
the nearest point on the base plane (measured in selected space 3D units).
By default the positive height direction is defined to be in the same direction as the
normal vector of the base plane. However, the positive height direction can be
reversed by setting the property.
Note that this property will return null if
was false or if the height calculation included 0 used pixels.
See: .
Returns the value of
which was used to compute
.
This property returns 0.0 if the
height calculation "used" 0 pixels.
See: .
The mean plus std dev mult height is calcualted as:
=
+
std dev of all used pixel heights *
Returns the calculated mean plus standard deviation multiplier height.
This property returns 0.0 if the
height calculation "used" 0 pixels.
See: .
The mean plus std dev mult height is calcualted as:
=
+
std dev of all used pixel heights *
In some applications this value may be used to provide a more
robust estimation of the real minimum or maximum height.
This value is less sensitive to outlying or noisy height data.
Returns the calculated high tail height.
This property returns 0.0 if the
height calculation "used" 0 pixels.
See: .
The high tail height is the height at which:
(number of used pixels greater than this height /
total number of pixels used in the height calculation) =
In some applications this value may be used to provide a more
robust estimation of the real maximum height.
This value is less sensitive to outlying or noisy height data.
Returns the calculated low tail height.
This property returns 0.0 if the
height calculation "used" 0 pixels.
See: .
The low tail height is the height at which:
(number of used pixels less than this height /
total number of pixels used in the height calculation) =
In some applications this value may be used to provide a more
robust estimation of the real minimum height.
This value is less sensitive to outlying or noisy height data.
Returns the maximum height value of pixels used in
the height calculation.
This property returns 0.0 if the
height calculation "used" 0 pixels.
See: .
Because the maximum height returns the maximum height
of all used pixels, a single outlying or noisy pixel
may distort this value from the _real_ maximum height
of an object.
Consider using
for a more robust estimate of the maximum height.
Returns the minimum height value of pixels used in
the height calculation.
This property returns 0.0 if the
height calculation "used" 0 pixels.
See: .
Because the minimum height returns the minimum height
of all used pixels, a single outlying or noisy pixel
may distort this value from the _real_ minimum height
of an object.
Consider using
for a more robust estimate of the minimum height.
Returns the median height of all pixles used in
the height calculation.
This property returns 0.0 if the
height calculation "used" 0 pixels.
See: .
Returns the mean height of all pixels used in
the height calculation.
This property returns 0.0 if the
height calculation "used" 0 pixels.
See: .
Serialization Constructor
Populate the members of the Cog3DRangeImageHeightCalculatorResult from
its CVT equivilent.
Construct a Cog3DRangeImageHeightCalculatorResult based on its CVT equivilent.
Constructs a new instance of this class as a deep copy of the
given instance.
The Cog3DRangeImageHeightCalculatorResult object to be copied.
May not be null.
If the input argument is null.
Constructs a new instance of this class.
The result of running the Cog3DRangeImageHeightCalculator.
Enumeration of different modes for including
or excluding a range of pixel height values
from the overall height calculation.
Include only the values which fall outside the height
range in the height calculation.
Include only the values which fall within the height
range in the height calculation.
Enable creation of records by bitwise ORing the appropriate
Cog3DRangeImageVolumeCalculatorLastRunRecordDiagConstants.
The default is (int)Cog3DRangeImageVolumeCalculatorLastRunRecordDiagConstants::InputImageByReference | (int)Cog3DRangeImageVolumeCalculatorLastRunRecordDiagConstants::Region | (int)Cog3DRangeImageVolumeCalculatorLastRunRecordDiagConstants::UsedPixels
Fires when this property changes.
The following state flag will be set:
- SfLastRunRecordDiagEnable
Enable creation of records by bitwise ORing the appropriate
Cog3DRangeImageVolumeCalculatorLastRunRecordConstants.
The default is Cog3DRangeImageVolumeCalculatorLastRunRecordConstants::None
Fires when this property changes.
The following state flag will be set:
- SfLastRunRecordEnable
- SfCreateLastRunRecord
Enable creation of records by bitwise ORing the appropriate
Cog3DRangeImageVolumeCalculatorCurrentRecordConstants.
The default is (int)Cog3DRangeImageVolumeCalculatorCurrentRecordConstants::InputImage | (int)Cog3DRangeImageVolumeCalculatorCurrentRecordConstants::Region
Fires when this property changes.
The following state flag will be set:
- SfCurrentRecordEnable
- SfCreateCurrentRecord
The result of running the volume calculator tool
Fires when this property changes.
The following state flag will be set:
- SfResult
The volume calculator tool's run parameters operator
The value can not be null.
The default is a default Cog3DRangeImageVolumeCalculator.
Fires when this property changes.
The following state flag will be set:
- SfRunParams
The calculated volume is the volume bounded by the range image surface
and this plane (on the ).
The default is a horizontal plane at z = 0.
Fires when this property changes.
The following state flag will be set:
- SfBasePlane
If BasePlane is set to null a horizontal plane at z = 0 will be used.
The 2D region within which to calculate the volume.
A pixel is considered inside the 2D region if the pixel's
2D center falls within the region.
The region can be null to use the entire range image.
The default is a default CogRectangleAffine
Fires when this property changes.
The following state flag will be set:
- SfRegion
The range image surface data used in the volume calculation.
The default is null.
Fires when this property changes.
The following state flag will be set:
- SfInputImage
Serialization Constructor
Returns a deep copy of this class instance.
This method's implementation calls
.
Constructs a deep copy of the supplied Cog3DRangeImageVolumeCalculatorTool.
The Cog3DRangeImageVolumeCalculatorTool to be copied. May not be null.
Thrown if is null.
Thrown if does not support
.
The properties of are copied as follows:
-
is copied by calling with the
CogImageCopyModeConstants flag set.
-
is copied by calling (an exception
is thrown if the region cannot does not support ).
-
is copied by calling .
-
is copied by calling .
-
is copied by calling .
-
The
are copied by calling
.
The data bindings of the original tool are duplicated in the new tool.
The databindings are copied with their destinations pointing _into_ the
new tool, while their sources are copied directly and still point _from_
the same upstream objects (tools) as the original tool's databindings.
-
The
is copied by calling
.
-
The
is copied by calling
.
Construct a new instance of this class.
Cache the last run record data so it
can be accesed by CreateLastRunRecord.
Clear any cached last run record data.
This bit will be set in the EventArgs of a Changed event every time the
value returned by LastRunRecordDiagEnable may have changed.
This bit will be set in the EventArgs of a Changed event every time the
value returned by LastRunRecordEnable may have changed.
This bit will be set in the EventArgs of a Changed event every time the
value returned by CurrentRecordEnable may have changed.
This bit will be set in the EventArgs of a Changed event every time the
value returned by RunParams may have changed.
This bit will be set in the EventArgs of a Changed event every time the
value returned by RunParams may have changed.
This bit will be set in the EventArgs of a Changed event every time the
value returned by Region may have changed.
This bit will be set in the EventArgs of a Changed event every time the
value returned by Region may have changed.
This bit will be set in the EventArgs of a Changed event every time the
value returned by InputImage may have changed.
A range image has pixel values that represent the
distance from a reference plane to an object.
The volume calculator tool measures the volume enclosed between
the surface of range image pixel data and one side of a user supplied
base plane.
The computed volume is returned in the
units specified in the range image.
A range image pixel is "used" to calculate the volume if:
-
it is inside the 2D input
of the tool.
-
it is marked as "care" in the optional
provided as part of the
.
-
it is marked as a "visible pixel" in the visible pixel mask of the
.
The visible pixel mask can be accessed by calling
on the range image.
-
its height (relative to the base plane) is greater than
or equal to the
.
Pixels that meet these conditions contribute to the volume computation
and are marked as "used" in the
.
Note that the height of an individual range image pixel is defined as
the signed distance from the center of the range image pixel to
the nearest point on the base plane (measured in selected space 3D units).
Note, however, that the volume is calculated by summing the contribution of
the range image pixels within the
projected along the pixel coordinate z axis until they intersect the base plane.
Enumeration of diagnostic data that can be provided in the Tool's
LastRunRecord.
Include all possible records.
Include a mask graphic representing which range image
pixels were used in the volume calculation
Include a graphic representing the input image mask in
the LastRunRecord.
Include a copy of the region in the LastRunRecord.
Include a deep copy of the input image in the LastRunRecord.
Include a reference to the input image in the LastRunRecord.
Do not include any of the non-diagnostic data in the LastRunRecord.
Enumeration of non-diagnostic data that can be provided in the Tool's
LastRunRecord.
Include all possible records.
Do not include any of the non-diagnostic data in the LastRunRecord.
Enumeration of data that can be provided in the Tool's CurrentRecord.
Include all possible records in the CurrentRecord.
Include a graphic representing the input image mask in
the CurrentRecord.
Include the (interactive) region to be processed at run time in the
CurrentRecord.
Include the input image in the CurrentRecord.
Do not include any records in the CurrentRecord.
Computes the volume between the range image surface and a specified base
plane. The plane has a 3D selected space coordinate normal vector (0, 0, 1),
i.e. oriented along the positive z axis.
The range image surface data relative which the volume is calculated.
The 2D region within which to calculate the volume.
The region can be null to use the entire range image.
The z value of the horizontal 3D plane, in the selected space 3D coordinates
of the range image
- Thrown if is null.
- Thrown if is is not allocated.
- Thrown if has a transform that is
singular (i.e., not invertible).
A range image pixel is "used" to calculate the volume if:
-
it is inside the 2D input
of the tool.
-
it is marked as "care" in the optional
provided as part of the
.
-
it is marked as a "visible pixel" in the visible pixel mask of the
.
The visible pixel mask can be accessed by calling
on the range image.
-
its height (relative to the base plane) is greater than
or equal to the
.
Pixels that meet these conditions contribute to the volume computation
and are marked as "used" in the
.
Note that the height of an individual range image pixel is defined as
the signed distance from the center of the range image pixel to
the nearest point on the base plane (measured in selected space 3D units).
Note, however, that the volume is calculated by summing the contribution of
the range image pixels within the
projected along the pixel coordinate z axis until they intersect the base plane.
Computes the volume between the range image surface and a specified base
plane.
The range image surface data reletive which the volume is calculated
The 2D region within which to calculate the volume.
The region can be null to use the entire range image.
The calculated volume is the volume bounded by the range image
surface and the base plane (on the ).
The basePlane can be null to use a hoizontal plane at z = 0.
- Thrown if is null.
- Thrown if is is not allocated.
- Thrown if has a transform that is
singular (i.e., not invertible).
- Thrown if is degenerate.
- Thrown if is vertical in pixel space.
A range image pixel is "used" to calculate the volume if:
-
it is inside the 2D input
of the tool.
-
it is marked as "care" in the optional
provided as part of the
.
-
it is marked as a "visible pixel" in the visible pixel mask of the
.
The visible pixel mask can be accessed by calling
on the range image.
-
its height (relative to the base plane) is greater than
or equal to the
.
Pixels that meet these conditions contribute to the volume computation
and are marked as "used" in the
.
Note that the height of an individual range image pixel is defined as
the signed distance from the center of the range image pixel to
the nearest point on the base plane (measured in selected space 3D units).
Note, however, that the volume is calculated by summing the contribution of
the range image pixels within the
projected along the pixel coordinate z axis until they intersect the base plane.
if the SelectedSpaceName3D of the range image is not in the tree, or if the
SelectedSpaceName3D of the plane is not in the tree.
Gets or sets the 2D InputImageMask Y offset value in pixels.
The InputImageMask Y offset value in pixels. The X and Y offset values
set the offset from the upper-left corner of the run-time input
image to th upper-left corner of the
in pixels. The default is 0.
Fires when this property changes.
The following state flag will be set:
- SfInputImageMaskOffsetY
Gets or sets the 2D InputImageMask X offset value in pixels.
The InputImageMask X offset value in pixels. The X and Y offset values
set the offset from the upper-left corner of the run-time input
image to th upper-left corner of the
in pixels. The default is 0.
Fires when this property changes.
The following state flag will be set:
- SfInputImageMaskOffsetX
Gets or sets the input image mask.
The input image mask allows you to ignore regions
of the range image by masking them out.
InputImageMask is optional and may be null if no mask is
required. The default is null.
255 = use this pixel
0 = ignore this pixel
Fires when this property changes.
The following state flag will be set:
- SfInputImageMaskOffset
The input image mask is applied to the input image after taking the
and
into account.
Specifies whether or not to include a pixel counts diagnostics
image in the result. The pixel counts diagnostics image indicates
which pixels in the range image were used by the volume calculation.
The default is true.
Fires when this property changes.
The following state flag will be set:
- SfComputePixelCountsDiagImage
Specifies which side of the plane to consider when computing the volume.
Only range image pixels that are on the specified side of the plane will
be used in computing the volume.
The default is Cog3DPlaneSideConstants::IncreasingPlaneNormal.
Fires when this property changes.
The following state flag will be set:
- SfPlaneSide
The minimum height value, in selected space 3D units, for each range
image pixel in order to include that pixel in the volume computation.
The minimum height threshold must be in the range [0, Double::MaxValue].
The default is 0.0.
The "height" of a range image pixel relative to a base plane is defined as
the signed distance from the center of the range image pixel to the
nearest point on the base plane, measured in selected space 3D coordinates.
The user can specify a minimum height threshold so that
pixels with a small height (e.g. noise about the base plane) can be
excluded from the volume computation.
Only pixels with a positive height that is greater than or equal to the
user-specified minimum height threshold contribute to the computed volume.
Note that height threshold does not affect the amount a pixel
used in the computation contributes to the volume.
The height threshold only determines whether or not a
range image pixel is used.
Throws
if set to a value less than 0.0.
Fires when this property changes.The following state flag will be set:- SfMinimumHeightThreshold
Gets or sets the region mode. This controls how the optional run time
region is applied to the input image.
The region mode. May be either PixelAlignedBoundingBox or
PixelAlignedBoundingBoxAdjustMask. Default is PixelAlignedBoundingBoxAdjustMask.
CogRegionModeConstants::AffineTransform is not a supported region mode.
If the supplied argument is not either PixelAlignedBoundingBox or
PixelAlignedBoundignBoxAdjustMask.
Fires when this property changes.
The following state flag will be set:
- SfRegionMode
This bit will be set in the EventArgs of a Changed event every time the
value returned by InputImageMaskOffsetX may have changed.
This bit will be set in the EventArgs of a Changed event every time the
value returned by InputImageMaskOffsetX may have changed.
This bit will be set in the EventArgs of a Changed event every time the
value returned by InputImageMask may have changed.
This bit will be set in the EventArgs of a Changed event every time the
value returned by ComputePixelCountsDiagImage may have changed.
This bit will be set in the EventArgs of a Changed event every time the
value returned by PlaneSide may have changed.
This bit will be set in the EventArgs of a Changed event every time the
value returned by MinimumHeightThreshold may have changed.
This bit will be set in the EventArgs of a Changed event every time the
value returned by RegionMode may have changed.
Serialization Constructor
Constructs a new instance of this class as a deep copy of the
given instance.
The Cog3DRangeImageVolumeCalculator object to be copied. May not be null.
If the input argument is null.
Constructs a new instance of this class
The volume calculator tool operator
The 2D distance in the Y direction from the upper left corner
of the original input image to the upper left corner of the
(in pixels).
The 2D distance in the X direction from the upper left corner
of the original input image to the upper left corner of the
(in pixels).
Diagnostic which identifies which pixels in the range image fall
into each of 4 different categories.
See
for the definition of the different categories.
Each pixel in the pixel counts diag image is a bit-wise or of
.
A range image pixel is "used" to calculate the volume if:
-
it is inside the 2D input
of the tool.
-
it is marked as "care" in the optional
provided as part of the
.
-
it is marked as a "visible pixel" in the visible pixel mask of the
.
The visible pixel mask can be accessed by calling
on the range image.
-
its height (relative to the base plane) is greater than
or equal to the
.
Pixels that meet these conditions contribute to the volume computation
and are marked as "used" in the
.
Note that the height of an individual range image pixel is defined as
the signed distance from the center of the range image pixel to
the nearest point on the base plane (measured in selected space 3D units).
Note, however, that the volume is calculated by summing the contribution of
the range image pixels within the
projected along the pixel coordinate z axis until they intersect the base plane.
Result information which identifies the number of pixels in the range image
that fall into each of 4 different categories.
See
for the definition of the different categories.
A range image pixel is "used" to calculate the volume if:
-
it is inside the 2D input
of the tool.
-
it is marked as "care" in the optional
provided as part of the
.
-
it is marked as a "visible pixel" in the visible pixel mask of the
.
The visible pixel mask can be accessed by calling
on the range image.
-
its height (relative to the base plane) is greater than
or equal to the
.
Pixels that meet these conditions contribute to the volume computation
and are marked as "used" in the
.
Note that the height of an individual range image pixel is defined as
the signed distance from the center of the range image pixel to
the nearest point on the base plane (measured in selected space 3D units).
Note, however, that the volume is calculated by summing the contribution of
the range image pixels within the
projected along the pixel coordinate z axis until they intersect the base plane.
The calculated volume between the 3D surface defined by the
range image pixels and the specified base plane, measured in the
coordinates (e.g. mm3) of the range image
A range image pixel is "used" to calculate the volume if:
-
it is inside the 2D input
of the tool.
-
it is marked as "care" in the optional
provided as part of the
.
-
it is marked as a "visible pixel" in the visible pixel mask of the
.
The visible pixel mask can be accessed by calling
on the range image.
-
its height (relative to the base plane) is greater than
or equal to the
.
Pixels that meet these conditions contribute to the volume computation
and are marked as "used" in the
.
Note that the height of an individual range image pixel is defined as
the signed distance from the center of the range image pixel to
the nearest point on the base plane (measured in selected space 3D units).
Note, however, that the volume is calculated by summing the contribution of
the range image pixels within the
projected along the pixel coordinate z axis until they intersect the base plane.
Serialization Constructor
Populate the members of the Cog3DRangeImageVolumeCalculatorResult from its CVT equivilent.
Construct a Cog3DRangeImageVolumeCalculatorResult based on its CVT equivilent.
Constructs a new instance of this class as a deep copy of the
given instance.
The Cog3DRangeImageVolumeCalculatorResult object to be copied. May not be null.
If the input argument is null.
Constructs a new instance of this class.
The result of running the 3D Volume Calculator Tool
This enumeration is used to specify one side of a plane.
The side of the plane containing points in the negative
normal vector direction.
The side of the plane containing points in the positive
normal vector direction.
The number of pixels that were actually used by the tool or function to compute the
result. Such pixels must always be visible care pixels, but some
functions may choose to impose other restrictions as well. Each function should
document how it computes NumUsedPels. Note that this value is always less than
or equal to NumVisibleCarePels.
The number of pixels in the effective source region that are both care pixels and
visible pixels. Note that this value is always less than or equal to NumCarePels.
The number of care pixels in the region of interest. Note that this value
is always less than or equal to NumRegionBoundingBoxPixels.
The number of pixels in the pixel aligned bounding box of the region of interest.
Populate the members of the pixelCount_c from its CVT equivilent.
Construct a Cog3DRangeImagePixelCounts based on its CVT equivilent.
Serialization Constructor
Constructs a new instance of this class as a deep copy of the
given instance.
The Cog3DRangeImagePixelCounts object to be copied. May not be null.
If the input argument is null.
Constructs a new instance of this class.
Result information about how a 3D tool used
the pixels of a range image.
This enumeration is used as a diagnostic,
it reports whether a range image pixel was
"Used" by a 3D tool to produce the result
or if the pixel was ignored by the tool.
A pixel is a Used pixel if:
it is a VisibleCare pixel
AND
it was used by the operation
that is reporting the pixel count
A pixel is a VisibleCare pixel if:
it is a Care pixel
AND
it is marked as visible in the
range image.
A pixel is a Care pixel if:
it lies within the region of interest,
AND
its is not filtered out when
an input image mask is applied
NOTE:
THE PIXELS IN THE PIXEL COUNT MASK RETURNED FROM
CVT ARE A BITWISE OR OF THESE CONSTANTS.
THIS MAKES IT IMPORTANT THAT THE VALUES
OF THESE ENUMS ARE KEPT IN SYNC WITH THEIR
CVT EQUIVILENTS (WE DON'T CONVERT THE VALUES
OF THE RETURNED CVT IMAGE TO MACTH THESE VALUES).
A pixel is a RegionBoundingBox pixel if:
it lies within the pixel aligned
bounding box of the region of interest
Serialization constructor for Cog3DRangeImagePlaneEstimatorTool object.
The standard SerializationInfo argument.
The standard StreamingContext argument.
Gets the results from the last call to the Run method.
A new instance of Cog3DRangeImagePlaneEstimatorResult is created for each
run of the tool.
Fires when this property changes.
The following state flag may be affected:
- SfResult
Gets or sets the run parameters (operator) for this Cog3DRangeImagePlaneEstimatorTool.
The value can not be null.
The default is a default Cog3DRangeImagePlaneEstimator.
Fires when this property changes.
The following state flag may be affected:
- SfRunParams
Gets or sets the optional 2D region that specifies a portion of the
input image to be used for plane estimation. The
property specifies exactly how this region will be applied to the
InputImage.
The default is null.
Fires when this property changes.
The following state flag may be affected:
- SfRegion
Gets or sets the input range image for use in plane estimation.
The default is null.
If the supplied input image is not CogImage16Range.
Fires when this property changes.
The following state flag may be affected:
- SfInputImage
Enable creation of records by bitwise ORing the appropriate
Cog3DRangeImagePlaneEstimatorLastRunRecordDiagConstants.
the default is (int)Cog3DRangeImagePlaneEstimatorLastRunRecordDiagConstants::InputImageByReference | (int)Cog3DRangeImagePlaneEstimatorLastRunRecordDiagConstants::Region | (int)Cog3DRangeImagePlaneEstimatorLastRunRecordDiagConstants::InputImageMask
Fires when this property changes.
The following state flag may be affected:
- SfLastRunRecordDiagEnable
Enable creation of records by bitwise ORing the appropriate
Cog3DRangeImagePlaneEstimatorLastRunRecordConstants.
The default is Cog3DRangeImagePlaneEstimatorLastRunRecordConstants::All
Fires when this property changes.
The following state flag may be affected:
- SfLastRunRecordEnable
- SfCreateLastRunRecord
Enable creation of records by bitwise ORing the appropriate
Cog3DRangeImagePlaneEstimatorCurrentRecordConstants.
The default is (int)Cog3DRangeImagePlaneEstimatorCurrentRecordConstants::InputImage | (int)Cog3DRangeImagePlaneEstimatorCurrentRecordConstants::Region | (int)Cog3DRangeImagePlaneEstimatorCurrentRecordConstants::InputImageMask
Fires when this property changes.
The following state flag may be affected:
- SfCurrentRecordEnable
- SfCreateCurrentRecord
Finalize this Cog3DRangeImagePlaneEstimatorTool object.
Destruct this Cog3DRangeImagePlaneEstimatorTool object.
Construct a deep copy of the supplied Cog3DRangeImagePlaneEstimatorTool object.
The Cog3DRangeImagePlaneEstimatorTool object to be copied. May not be null.
If the input argument is null.
Construct a default Cog3DRangeImagePlaneEstimatorTool object.
This bit will be set in the EventArgs of a Changed event every time
the value returned by Results may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by Region may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by InputImage may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by RunParams may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by CurrentRecordEnable may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by LastRunRecordDiagEnable may have changed.
This bit will be set in the EventArgs of a Changed event every time
the value returned by LastRunRecordEnable may have changed.
The purpose of the plane estimator tool is to find the best fitting plane
to a surface in a range image.
This plane estimator tool allows the user to fit a plane using pixels specified in a region or specified 2D point locations.
This class encapsulates all of the classes needed to perform
plane estimation on a range image.
The plane is returned in the
units specified in the range image.
When is set to Area:
Range image pixels that meet the following criteria are
used to fit the plane:
1) must be contained within the 2D region of interest of the range image. No region means all of the input image.
2) must be marked as "Care" if an input image mask is provided.
3) must be marked as "Visible" in the range image's visible pixel mask.
Pixels that meet these conditions are used to fit the plane
and are counted in
When is set to Points:
Range image pixels that meet the following criteria are
used to fit the plane:
1) must be contained within the range image boundaries.
2) must be marked as "Visible" in the range image's visible pixel mask.
Pixels that meet these conditions are used to fit the plane
and are counted in
Perform 3D plane fit on the supplied range image.
The 3D Plane (defined in SelectedSpaceName3D), RMS error and number of pixels used in estimation.
When is set to Area:
Range image pixels that meet the following criteria are
used to fit the plane:
1) must be contained within the 2D region of interest of the range image. No region means all of the input image.
2) must be marked as "Care" if an input image mask is provided.
3) must be marked as "Visible" in the range image's visible pixel mask.
Pixels that meet these conditions are used to fit the plane
and are counted in
When is set to Points:
Range image pixels that meet the following criteria are
used to fit the plane:
1) must be contained within the range image boundaries.
2) must be marked as "Visible" in the range image's visible pixel mask.
Pixels that meet these conditions are used to fit the plane
and are counted in
The range image.
An optional region used only the FitMethod is set to Area. May be null. If supplied, this region is used to
define the pixels used in fitting the 3D plane in the range image. The region
mode is defaulted to PixelAlignedBoundingBoxAdjustMask. If no
inputRegion is supplied, the entire input image is processed.
If the supplied input image argument is not a CogImage16Range.
If the supplied input image argument is null.
If the supplied input image unbound.
If the transform is not linear
If region is outside of image
There are fewer than 3 points in the list of points that correspond to visible pixel locations in the image, or the combination of the input mask and visible pixel mask contains less than 3 care/visible pixels.
The list of points doesn't include 3 non-collinear points.
The list of input points is fewer than 3.
The pixel location of one or more points in the list of input points falls outside the extent of the image.
The RMS residual was above the threshold specified in the runtime params.
The tool was unable to compute the plane.
If licensing for this operator cannot be confirmed.
For Cognex internal use only
Delete a point from the input point list using the index specified
If the index is outside the range of points available.
invalid range exception will be thrown
Fires when this property changes.
The following state flag may be affected:
- SfNumPoints
Add a point to the locations. The values are in selected space.
The point will be added at the the end of the list.
Out of memory exception will be thrown if the point could not be added.
Fires when this property changes.
The following state flag may be affected:
- SfNumPoints
Gets or sets the plane direction.
The default plane direction positive image z direction.
If the argument supplied is not PositiveImageZ or NegativeImageZ.
The plane direction specifies the direction in which the estimated plane's
normal should point. Note that, regardless of the direction selected, the
plane is always returned in selected space.
Fires when this property changes.
The following state flag may be affected:
- SfPlaneDirection
Sets the (x,y) coordinates defined in selected space for a single point using the index.
The points are used only when FitMethod is set to Points.
The default is (0,0)
If the index is outside the range of points available.
Fires when this property changes.
The following state flag may be affected:
- SfGetPointX
- SfGetPointY
Gets the (x,y) coordinates defined in selected space for a single point using the index.
The points are used only when FitMethod is set to Points.
The default is (0,0)
If the index is outside the range of points available.
Fires when this property changes.
The following state flag may be affected:
- SfGetPointX
- SfGetPointY
Sets the Y (defined in selected space) for a single point using the index.
The points are used only when FitMethod is set to Points.
The default is 0.
If the index is outside the range of points available.
Fires when this property changes.
The following state flag may be affected:
- SfGetPointY
Gets the Y (defined in selected space) for a single point using the index.
The points are used only when FitMethod is set to Points.
The default is 0.
If the index is outside the range of points available.
Fires when this property changes.
The following state flag may be affected:
- SfGetPointY
Sets the X (defined in selected space) for a single point using the index.
The points are used only when FitMethod is set to Points.
The default is 0
If the index is outside the range of points available.
Fires when this property changes.
The following state flag may be affected:
- SfGetPointX
Gets the X (defined in selected space) for a single point using the index.
The points are used only when FitMethod is set to Points.
The default is 0
If the index is outside the range of points available.
Fires when this property changes.
The following state flag may be affected:
- SfGetPointX
Gets or sets the number of 2D locations specified in selected space.
The points are used only when FitMethod is set to Points.
A minimum of 3 points are required to fit a plane. The default is 0.
If the index is less than 0.
When not enough memory available to allocate the number of points specified.
Fires when this property changes.
The following state flag may be affected:
- SfNumPoints
The locations are only used when the Fit Method is set to Points.
Gets or sets the NeighborhoodSizeYInPixels.
Only used when is set to Points and
is set to NeighborhoodMedian or Neighborhood.
The neighborhood size in Y. The neighborhood to use when the
ZLookupMethod is NeighborhoodMedian or Neighborhood. The default is 5.
If the supplied argument is less than 1.
Fires when this property changes.
The following state flag may be affected:
- SfNeighborhoodSizeYInPixels
Gets or sets the NeighborhoodSizeXInPixels.
Only used when is set to Points and
is set to NeighborhoodMedian or Neighborhood.
The neighborhood size in X. The neighborhood to use when the
ZLookupMethod is NeighborhoodMedian or Neighborhood. The default is 5.
If the supplied argument is less than 1.
Fires when this property changes.
The following state flag may be affected:
- SfNeighborhoodSizeXInPixels
Gets or sets the Residuals RMS Threshold.
If the Residuals RMS computed for the fitted plane
is above this threshold. The tool will throw.
The default is HUGE_VAL.
If the supplied argument is less than 0.
Fires when this property changes.
The following state flag may be affected:
- SfResidualsRMSThreshold
Gets or sets the InputImageMask Y offset value in pixels.
The InputImageMask Y offset value in pixels. The X and Y offset values
set the offset from the upper-left corner of the run-time input
image to the upper-left corner of the
in pixels. The default is 0.
Fires when this property changes.
The following state flag may be affected:
- SfInputImageMaskOffsetY
Gets or sets the InputImageMask X offset value in pixels.
The InputImageMask X offset value in pixels. The X and Y offset values
set the offset from the upper-left corner of the run-time input
image to the upper-left corner of the
in pixels. The default is 0.
Fires when this property changes.
The following state flag may be affected:
- SfInputImageMaskOffsetX
Gets or sets the input image mask.
The input image mask allows you to ignore regions
of the range image by masking them out.
InputImageMask is optional and may be null if no mask is
required. The default is null.
255 = use this pixel
0 = ignore this pixel
Fires when this property changes.
The following state flag may be affected:
- SfInputImageMask
The input image mask is applied to the input image after taking the
and
into account.
Gets or sets the FitMethod.
The fit Method specifies which mode is used to fit the plane. May be either Area or
Points. The default is Area.
If the supplied argument is not Area or
Points.
Fires when this property changes.
The following state flag may be affected:
- SfFitMethod
Gets or sets the ZLookupMethod.
The Z Lookup Method specifies how z values are looked up from pixels in the range image.
May be either Neighborhood, SinglePixel or
NeighborhoodMedian. The default is Neighborhood.
The Z Lookup Method is only used when the is set to Points.
If the supplied argument is not Neighborhood, SinglePixel or
NeighborhoodMedian.
Fires when this property changes.
The following state flag may be affected:
- SfZLookupMethod
Gets or sets the region mode. This controls how the optional run time
region is applied to the input image.
The region mode. May be either PixelAlignedBoundingBox or
PixelAlignedBoundingBoxAdjustMask. The Default is
PixelAlignedBoundingBoxAndAdjustMask.
If the supplied argument is not either PixelAlignedBoundingBox or
PixelAlignedBoundignBoxAdjustMask.
Fires when this property changes.
The following state flag may be affected:
- SfRegionMode
Serializer for point vector object.
The standard SerializationInfo argument.
The standard StreamingContext argument.
Serialization constructor for Cog3DRangeImagePlaneEstimator object.
The standard SerializationInfo argument.
The standard StreamingContext argument.
Finalize this Cog3DRangeImagePlaneEstimator.
Destruct this Cog3DRangeImagePlaneEstimator.
Construct a deep copy of the supplied Cog3DRangeImagePlaneEstimator object.
The Cog3DRangeImagePlaneEstimator object to be copied. May not be null.
If the supplied argument is null.
If the supplied argument is disposed.
Construct a default Cog3DRangeImagePlaneEstimator object.
This bit will be set in the EventArgs of a changed event every time
the value returned by PlaneDirection may have cahnged.
This bit will be set in the EventArgs of a Changed event every time
the value returned by GetPointY may have cahnged.
This bit will be set in the EventArgs of a Changed event every time
the value returned by GetPointX may have cahnged.
This bit will be set in the EventArgs of a Changed event every time
the value returned by NumPoints may have cahnged.
This bit will be set in the EventArgs of a Changed event every time
the value returned by FitMethod may have cahnged.
This bit will be set in the EventArgs of a Changed event every time
the value returned by NeighborhoodSizeYInPixels may have cahnged.
This bit will be set in the EventArgs of a Changed event every time
the value returned by NeighborhoodSizeXInPixels may have cahnged.
This bit will be set in the EventArgs of a Changed event every time
the value returned by ZLookupMethod may have cahnged.
This bit will be set in the EventArgs of a Changed event every time
the value returned by ResidualsRMSThreshold may have cahnged.
This bit will be set in the EventArgs of a Changed event every time
the value returned by InputImageMaskOffsetY may have cahnged.
This bit will be set in the EventArgs of a Changed event every time
the value returned by InputImageMaskOffsetX may have cahnged.
This bit will be set in the EventArgs of a Changed event every time
the value returned by InputImageMask may have cahnged.
This bit will be set in the EventArgs of a Changed event every time
the value returned by RegionMode may have cahnged.
The plane estimator operator.
The best fit plane found. The plane is defined in the
coordinates of the range image
When FitMethod is set to Area:
Range image pixels that meet the following criteria are
used to fit the plane:
1) must be contained within the 2D region of interest of the range image. No region means all of the input image.
2) must be marked as "Care" if an input image mask is provided.
3) must be marked as "Visible" in the range image's visible pixel mask.
Pixels that meet these conditions are used to fit the plane
and are counted in
When FitMethod is set to Points:
Range image pixels that meet the following criteria are
used to fit the plane:
1) must be contained within the range image boundaries.
2) must be marked as "Visible" in the range image's visible pixel mask.
Pixels that meet these conditions are used to fit the plane
and are counted in
The number of points used to fit the plane
The Residuals RMS error.
The RMS error should be small (less than 0.1)
to indicate that the plane is properly fitted.
Serialization constructor for Cog3DRangeImagePlaneEstimatorResult object.
The standard SerializationInfo argument.
The standard StreamingContext argument.
Finalize this Cog3DRangeImagePlaneEstimatorResult.
Destruct this Cog3DRangeImagePlaneEstimatorResult.
Constructs a new instance of this class as a deep copy
of the given instance.
The Cog3DRangeImagePlaneEstimatorResult object to be copied. May not be null.
If the input argument is null.
Constructs a new instance of this class.
The result of running the plane Estimator tool.
Enumeration of diagnostic data that can be provided in the
Tool's LastRunRecord.
Include all of the diagnostic data in the LastRunRecord.
Include a copy of the points in the LastRunRecord. When the ZLookupMethod is set to
Neighborhood or NeighborhoodMedian then a child rectangle
graphic representing the neighbors will be displayed.
Include a copy of the input image mask in the LastRunRecord.
Include a copy of the region in the LastRunRecord.
Include a deep copy of the input image in the LastRunRecord.
Include a reference to the input image in the LastRunRecord.
Do not include any of the diagnostic data in the LastRunRecord.
Enumeration of non-diagnostic data that can be provided in
the Tool's LastRunRecord.
Include all of the non-diagnostic data in the LastRunRecord.
Do not include any of the non-diagnostic data in the LastRunRecord.
Enumeration of data that can be provided in the Tool's
CurrentRecord.
Include all possible records in the CurrentRecord.
Include a graphic representing the input points in
the CurrentRecord. When the ZLookupMethod is set to
Neighborhood or NeighborhoodMedian then a child rectangle
graphic representing the neighbors will be displayed.
Include a graphic representing the input image mask in
the CurrentRecord.
Include the (interactive) region to be used as a mask
in the CurrentRecord.
Include the input image in the CurrentRecord.
Do not include any records in the CurrentRecord.
Constants used to specify how the plane is computed.
Use the points specified by the region and mask to fit the plane.
Use the points to fit the plane.
Constants used to specify how z values are
looked up from a range image.
All visible pixels inside the neighborhood around each specified
location are used to estimate the plane. The z value for each pixel is
looked up using 'singlePixel' mode.
Only valid when FitMethod is set to Points.
the z value is inferred from the median of an NxM neighborhood around each pixel in the range image.
Only valid when FitMethod is set to Points.
the z value is inferred from a single pixel in the range image.
An enumeration that specifies the direction in which the estimated plane's
normal should point. Note that, regardless of the direction selected, the
plane is always returned in selected space.
The estimated plane's normal (in selected space) is forced to point
towards the direction that corresponds approximately to the negative z-axis in pixel space
coordinates, when the plane is mapped to pixel space coordinates.
The estimated plane's normal (in selected space) is force to point
towards the direction that corresponds approximately to the positive z-axis in pixel space
coordinates, when the plane is mapped to pixel space coordinates.
This static method generates 3D model features from the specified crsp2D3DsForAllPartPoses
and the specified raw2DFromPhys3Ds.
A List of camera calibration objects. May not be null.
The List of Lists of 2D feature to 3D model feature correspondences.
The specified crsp2D3DsForAllPartPoses are indexed as crsp2D3DsForAllPartPoses[partPoseIndex][crspIndex].
Each crsp2D3D in should be fully initialized.
It is OK for the FeatureRaw2D member of some crsp2D3DsForAllPartPoses to be null, indicating that
no 2D feature was found.
If any crsp2D3D in [i][j] and [m][n]
correspond to the
same 3D model feature, then [i][j].FeatureModel3DIndex
must be the same as [m][n].FeatureModel3DIndex,
and [i][j].FeatureModel3DType
must be the same as [m][n].FeatureModel3DType.
[i][j].PartInstanceIndex must be 0.
A results object
containing a List of the 3D model features and a List of the pose of the part
in each part pose.
The List of part poses in the results object is indexed by part pose index.
The List of 3D model features is indexed by the FeatureModel3DIndex used in the specified crsp2D3DsForAllPartPoses.
Thus, the crsp2D3Ds in with a
FeatureModel3DIndex of N, were used in the generation of
().GetFeatureModel3DResults()[N].
If
().GetFeatureModel3DResults()[i].IsFound
is false, it means that there was not enough information in the
to generate 3D model feature[i].
If any of the input arguments are null, or any input argument includes
a null item with the exception that the FeatureRaw2D member of a crsp2D3D can be null.
- If .Count is less than 2;
-
If [i] includes duplicate items
with the same CameraIndex,
the same PartInstanceIndex, and corresponding to the same model point;
- If [i][j].
PartInstanceIndex is not 0;
- If [i][j].CameraIndex is
not inside range [0, .Count-1];
- If [i][j].FeatureModel3DType
is not Cog3DVect3, Cog3DLine, Cog3DLineSeg,
Cog3DCylinder, or Cog3DCircle;
- If [i][j].FeatureModel3DType
is Cog3DVect3, but
[i][j].Subfeature is not
Cog3DSubfeatureConstants.Point0;
- If [i][j].FeatureModel3DType
is Cog3DLine or Cog3DLineSeg, but
[i][j].Subfeature is not
Cog3DSubfeatureConstants.StraightEdge0;
- If [i][j].FeatureModel3DType is
Cog3DCircle, but
[i][j].Subfeature is not
Cog3DSubfeatureConstants.CircleEdge0 or Cog3DSubfeatureConstants.Point0;
- If [i][j].FeatureModel3DType is
Cog3DCylinder, but
[i][j].Subfeature is not
Cog3DSubfeatureConstants.OccludingEdge0, .OccludingEdge1, .CircularEdge0,
or .CircularEdge1;
- If [i][j].FeatureRaw2D
is not null, and its type is not Cog3DVect2, or Cog3DVect2Collection;
- If [i][j].FeatureModel3DType
is Cog3DVect3,
[i][j].FeatureRaw2D
has type of Cog3DVect2Collection, and its size is greater than 1.
The should be created by
placing a single part under your cameras and simultaneously acquiring images
of the one part from all the cameras. This set of images constitutes a
"part pose". You should create several part poses of your part,
see the Best Practices listed below for details. Providing multiple
part poses improves the accuracy of the generated 3D model features.
After collecting the part poses (sets of images of the part), you need to extract
the crsp2D3Ds from each of them. For each part pose, extract the crsp2D3Ds from
the images of the part pose and put them into a List.
The List of crsp2D3Ds from each part pose is then placed in another List thereby creating
which
is indexed as [partPoseIndex][crspIndex].
The 3D model features in the returned results object are in the Model3D coordinate space.
The Model3D coordinate space is defined in part pose 0 or [0]
i.e. the pose of the Phys3D origin in part pose 0 will be used to define the origin
of the part's 3D coordinate space - Model3D. Thus, the pose of the part (the transform
from Model3D space to Phys3D space) in [0]
is the identity transform.
If [i][j].FeatureRaw2D is null or empty,
then [i][j] is ignored
during model feature generation.
All the specified camera calibrations must refer to the same Phys3D coordinate space.
Best Practices for Generating 3D Model Features:
-
The FOV must contain a single part.
-
Use the 5 part poses described below when creating .
-
Pose 0: Place the part as close as possible to the origin of Phys3D, use a z rotation of 0 degrees. Note that
the origin of the Model3D coordinate space (the coordinate space all your 3D model features are defined in) is defined
by the Phys3D origin in this pose.
-
Pose 1: Place the part in the upper left corner of FOV visible by both cameras, use a z rotation of ~20 degrees.
-
Pose 2: Place the part in the upper right corner of FOV visible by both cameras, use a z rotation of ~45 degrees.
-
Pose 3: Place the part in the lower left corner of FOV visible by both cameras, use a z rotation of ~67 degrees.
-
Pose 4: Place the part in the lower right corner of FOV visible by both cameras, use a z rotation of ~90 degrees.
-
Verify the IsFound and the residuals in GetFeatureModel3DResults() from the returned results object are acceptable for your 3D model.
This class provides 3D model feature generation using crsp2D3Ds
and camera calibrations. Use this class to generate the 3D features
in your 3D model.
Gets a deep copy of the pose results for all the part poses used in 3D model feature generation,
indexed by part pose.
A deep copy of the pose results for all the part poses.
Gets a deep copy of the generated 3D model feature results, indexed by FeatureModel3DIndex.
A deep copy of the generated 3D model feature results.
This class holds the results from a 3D model feature generation operation.
Note that this class is immutable - it may not be changed once
it has been constructed. The usage model for this class is that it
gets factoried by the Cog3DModelFeatureGeneratorUsingCrsp2D3Ds class.
Gets the List of Phys3D residual statistics for this 3D model feature result
indexed by part pose.
If IsFound is false.
The List of residual statistics of this result in Phys3D space for all the part poses.
Gets the List of Raw2D residual statistics for this 3D model feature result
indexed by part pose.
If IsFound is false.
The List of residual statistics of this 3D model feature result in Raw2D space for all the part poses.
Gets a deep copy of the flags indicating which residuals are valid.
Indexed by part pose.
A deep copy of the flags indicating which residuals are valid.
If IsFound is false.
The returned List ResidualsValid indicates whether or not the 2D features
from a part pose contributed to the generation of this 3D model feature.
If ResidualsValid[i] is true, it means part pose[i] had 2D features
used in generating this 3D feature, and ResidualsRaw2D[i] and
ResidualsPhys3D[i] are valid.
If ResidualsValid[i] is false, it means 2D features from part pose[i] were not used
in generating this 3D model feature, and ResidualsRaw2D[i] and
ResidualsPhys3D[i] are not valid.
Gets a deep copy of the generated 3D model feature.
Deep copy of the generated 3D model feature.
If IsFound is false.
The return object type will be one of
Cog3DVect3,
Cog3DCircle, Cog3DLine, Cog3DLineSeg, or Cog3DCylinder.
Gets the 3D model feature index of this 3D feature within the List of 3D model features.
The 3D model feature index, which is the same as FeatureModel3DIndex in the
crsp2D3Ds used for this 3D model feature generation.
Gets whether or not this 3D model feature was found.
True if this 3D model feature was found; false otherwise.
This class holds one 3D model feature result from a 3D model feature generation operation.
This class is immutable - it may not be changed once
it has been constructed. The usage model for this class is that it
gets factoried by the Cog3DModelFeatureGeneratorUsingCrsp2D3Ds class.
This method performs a 3D pose refinement based on an initial pose,
the specified crsp2D3DsUnified,
and the specified
camera calibrations, from one or multiple cameras/views. Note that this method
uses all the input features.
An initial estimation for the pose. May not be NULL.
The refined 3D pose result. The pose maps
point/shape features from Model3D space to Phys3D space.
A List of camera calibrations. One calibration per camera/view.
The size of this list specifies the number of cameras/views.
May not be null.
A List of crsp2D3Ds. May not be null. Note that
each item has the camera index, the index of the part instance,
the 2D feature(s), the corresponding 3D feature index,
and sub-feature type.
Note that when there is multiple part instances, the PartInstanceIndex
of
must be unified for all cameras by calling part corresponder
(
Cog3DPartCorresponderUsingCrsp2D3Ds.Execute ).
Therefore, for the same 3D part instance, the same PartInstanceIndex
is used for the corresponding crsp2D3Ds items across all cameras.
If there is only one part instance, and the PartInstanceIndex
is 0 for all items of crsp2D3Ds, then no need to call part corresponder.
Note that if [i].FeatureRaw2D
is null or empty,
then [i] is ignored
during pose estimation.
This parameter specifies which part instance to run the pose estimation.
If [i].PartInstanceIndex is not equal to
, then that
element is not used in
the pose estimation.
If any of the arguments (except ) is null,
or any input argument includes null item, or
FeaturesModel3D[[i].FeatureModel3DIndex]
is null.
- If .Count == 0;
-
if .Count is 1, and
[0].IsTelecentric is true .
- If is less than 0;
- If [i].CameraIndex is
not inside range [0, .Count-1];
- If [i].FeatureModel3DType
is not Cog3DVect3, Cog3DLine, Cog3DLineSeg,
Cog3DCylinder, or Cog3DCircle;
- If [i].FeatureModel3DType
is Cog3DVect3, but
[i].Subfeature is not
Cog3DSubfeatureConstants.Point0;
- If [i].FeatureModel3DType
is Cog3DLine or Cog3DLineSeg, but
[i].Subfeature is not
Cog3DSubfeatureConstants.StraightEdge0;
- If [i].FeatureModel3DType is
Cog3DCircle, but
[i].Subfeature is not
Cog3DSubfeatureConstants.CircleEdge0 or Cog3DSubfeatureConstants.Point0;
- If [i].FeatureModel3DType is
Cog3DCylinder, but
[i].Subfeature is not
Cog3DSubfeatureConstants.OccludingEdge0, .OccludingEdge1, .CircularEdge0,
or .CircularEdge1;
- If [i].FeatureRaw2D
is not null, and its type is not Cog3DVect2, or Cog3DVect2Collection;
- If [i].FeatureModel3DType
is Cog3DVect3,
[i].FeatureRaw2D
has type of Cog3DVect2Collection, and its size is greater than 1.
- If [i].FeatureModel3DIndex is
not inside range [0, FeaturesModel3D.Count-1];
- If [i].FeatureModel3DType is not
the same as the type of
FeaturesModel3D[[i].FeatureModel3DIndex];
Note that this method handles a single part instance.
Therefore, all 2D features with the specified
in must correspond to the same
part instance.
Note that if 3D line segment model features are used, and some 3D line
segments are shorter than the actual lengths, then it may return result(s)
with larger residuals. Dilating the 3D line segments
may avoid this problem.
This method performs a 3D robust pose estimation for one part instance based on
the specified crsp2D3DsUnified, and the specified
camera calibrations, from one or multiple cameras/views. Note that
robust pose estimation parameters are used, and the returned result
includes information about feature outliers.
Simple parameters to specify the behavior of the robust pose estimation.
May not be null.
The pose estimation result ().
A pose estimation result is always returned
except when a throw occurs. The pose estimation result contains a list of
pose results ()
and the list of crsp2D3D indices of the outliers
() .
The pose in each pose result maps features from Model3D space to Phys3D space.
A list of pose results is returned in order to handle the situation where there
are multiple pose estimations for the available features.
The list of pose results will contain:
- 0 pose results, when no poses were found to meet the estimation parameters;
- 1 pose result, when there was a single pose that met the estimation parameters;
- > 1 pose results, when there were multiple poses that satisfied the estimation
parameters
Note that the returned object of
has properties
and
:
is the same as the input argument , and can
be used to correspond pose estimation results and part instances.
is NULL if pose results
in the returned object is not empty; Otherwise,
contains
diagnosis information about why the pose results in the returned object is empty.
A List of camera calibrations. One calibration per camera/view.
The size of this list specifies the number of cameras/views.
May not be null.
A List of crsp2D3Ds. May not be null. Note that
each item has the camera index, the index of the part instance,
the 2D feature(s), the corresponding 3D feature index,
and sub-feature type.
Note that when there is multiple part instances, the PartInstanceIndex
of
must be unified for all cameras by calling part corresponder
(
Cog3DPartCorresponderUsingCrsp2D3Ds.Execute ).
Therefore, for the same 3D part instance, the same PartInstanceIndex
is used for the corresponding crsp2D3Ds items across all cameras.
If there is only one part instance, and the PartInstanceIndex
is 0 for all items of crsp2D3Ds, then no need to call part corresponder.
Note that if [i].FeatureRaw2D
is null or empty,
then [i] is ignored
during pose estimation.
This parameter specifies which part instance to run the pose estimation.
If [i].PartInstanceIndex is not equal to
, then that
element is not used in
the pose estimation.
If any of the arguments (except ) is null,
or any input argument includes null item, or
FeaturesModel3D[[i].FeatureModel3DIndex]
is null.
- If .Count == 0;
-
if .Count is 1, and
[0].IsTelecentric is true .
- If is less than 0;
- If [i].CameraIndex is
not inside range [0, .Count-1];
- If [i].FeatureModel3DType
is not Cog3DVect3, Cog3DLine, Cog3DLineSeg,
Cog3DCylinder, or Cog3DCircle;
- If [i].FeatureModel3DType
is Cog3DVect3, but
[i].Subfeature is not
Cog3DSubfeatureConstants.Point0;
- If [i].FeatureModel3DType
is Cog3DLine or Cog3DLineSeg, but
[i].Subfeature is not
Cog3DSubfeatureConstants.StraightEdge0;
- If [i].FeatureModel3DType is
Cog3DCircle, but
[i].Subfeature is not
Cog3DSubfeatureConstants.CircleEdge0 or Cog3DSubfeatureConstants.Point0;
- If [i].FeatureModel3DType is
Cog3DCylinder, but
[i].Subfeature is not
Cog3DSubfeatureConstants.OccludingEdge0, .OccludingEdge1, .CircularEdge0,
or .CircularEdge1;
- If [i].FeatureRaw2D
is not null, and its type is not Cog3DVect2, or Cog3DVect2Collection;
- If [i].FeatureModel3DType
is Cog3DVect3,
[i].FeatureRaw2D
has type of Cog3DVect2Collection, and its size is greater than 1.
- If [i].FeatureModel3DIndex is
not inside range [0, FeaturesModel3D.Count-1];
- If [i].FeatureModel3DType is not
the same as the type of
FeaturesModel3D[[i].FeatureModel3DIndex];
Note that this method handles a single part instance.
Therefore, all 2D features with the specified
in must correspond to the same
part instance.
Note that if 3D line segment model features are used, and some 3D line
segments are shorter than the actual lengths, then it may return result(s)
with larger residuals. Dilating the 3D line segments
may avoid this problem.
Note that this method might return multiple different poses with similar fitting residuals.
If the returned result has a list of multiple pose results, it means not enough
information in to get a unique pose for the specified part instance.
Pose ambiguities can be avoided by adding more feature correspondences.
The following is a list of situations that satisfy the requirements for
estimating a pose. Note that under some of these situations there may
be multiple poses with equivalent fitting residuals:
- There are 3 or more point correspondences;
- There are 3 or more intersection points among 3D model lines or
line segments;
- There are 3 or more model circles;
- There are 2 or more non-parallel model cylinders;
- The combination of number of point correspondences, number of
intersection points among 3D model lines or line segments,
and number of model circles, is 3 or more;
- There are 2 or more nonparallel model lines or line segments
observed simultaneously by two or more cameras;
- There are 2 or more model circles observed simultaneously
by two or more cameras;
- There are one or more model points, and one or more model circles
observed simultaneously by two or more cameras;
- There are one or more model points, and one or more model lines
or line segments observed simultaneously by two or more cameras;
- There are one or more model points, and one or more model
cylinders observed simultaneously by two or more cameras;
- There are one or more model lines or line segments, and one or
more model circles observed simultaneously by two or more cameras;
- There are one or more model cylinders, and one or more model
circles observed simultaneously by two or more cameras;
- There are one or more model cylinders, and one or more model
lines or line segments (not parallel to the cylinder's axis) observed
simultaneously by two or more cameras.
Note that the returned result might have an empty list of pose results,
if it can not find any pose satisfying the requirements
specified by the robust pose estimation parameters.
This method performs a 3D pose estimation for one part instance based on the specified
crsp2D3DsUnified and the specified camera calibrations, from one or multiple cameras/views.
The pose estimation result ().
A pose estimation result is always returned
except when a throw occurs. The pose estimation result contains a list of
pose results ()
and the list of crsp2D3D indices of the outliers
().
The list of outliers is empty because this method does not remove outliers.
The pose in each pose result maps features from Model3D space to Phys3D space.
A list of pose results is returned in order to handle the situation where there
are multiple pose estimations for the available features.
The list of pose results will contain:
- 0 pose results, when no poses were found to meet the estimation parameters;
- 1 pose result, when there was a single pose that met the estimation parameters;
- > 1 pose results, when there were multiple poses that satisfied the estimation
parameters
Note that the returned object of
has properties
and
:
is the same as the input argument , and can
be used to correspond pose estimation results and part instances.
is NULL if pose results
()
in the returned object is not empty; Otherwise,
contains
diagnosis information about why the pose results in the returned object is empty.
A List of camera calibrations. One calibration per camera/view.
The size of this list specifies the number of cameras/views.
May not be null.
A List of crsp2D3Ds. May not be null. Note that
each item has the camera index, the index of the part instance,
the 2D feature(s), the corresponding 3D feature index,
and sub-feature type.
Note that when there is multiple part instances, the PartInstanceIndex
of
must be unified for all cameras by calling part corresponder
(
Cog3DPartCorresponderUsingCrsp2D3Ds.Execute ).
Therefore, for the same 3D part instance, the same PartInstanceIndex
is used for the corresponding crsp2D3Ds items across all cameras.
If there is only one part instance, and the PartInstanceIndex
is 0 for all items of crsp2D3Ds, then no need to call part corresponder.
Note that if [i].FeatureRaw2D
is null or empty,
then [i] is ignored
during pose estimation.
This parameter specifies which part instance to run the pose estimation.
If [i].PartInstanceIndex is not equal to
, then that
element is not used in
the pose estimation.
If any of the arguments (except ) is null,
or any input argument includes null item, or
FeaturesModel3D[[i].FeatureModel3DIndex]
is null.
- If .Count == 0;
-
if .Count is 1, and
[0].IsTelecentric is true .
- If is less than 0;
- If [i].CameraIndex is
not inside range [0, .Count-1];
- If [i].FeatureModel3DType
is not Cog3DVect3, Cog3DLine, Cog3DLineSeg,
Cog3DCylinder, or Cog3DCircle;
- If [i].FeatureModel3DType
is Cog3DVect3, but
[i].Subfeature is not
Cog3DSubfeatureConstants.Point0;
- If [i].FeatureModel3DType
is Cog3DLine or Cog3DLineSeg, but
[i].Subfeature is not
Cog3DSubfeatureConstants.StraightEdge0;
- If [i].FeatureModel3DType is
Cog3DCircle, but
[i].Subfeature is not
Cog3DSubfeatureConstants.CircleEdge0 or Cog3DSubfeatureConstants.Point0;
- If [i].FeatureModel3DType is
Cog3DCylinder, but
[i].Subfeature is not
Cog3DSubfeatureConstants.OccludingEdge0, .OccludingEdge1, .CircularEdge0,
or .CircularEdge1;
- If [i].FeatureRaw2D
is not null, and its type is not Cog3DVect2, or Cog3DVect2Collection;
- If [i].FeatureModel3DType
is Cog3DVect3,
[i].FeatureRaw2D
has type of Cog3DVect2Collection, and its size is greater than 1.
- If [i].FeatureModel3DIndex is
not inside range [0, FeaturesModel3D.Count-1];
- If [i].FeatureModel3DType is not
the same as the type of
FeaturesModel3D[[i].FeatureModel3DIndex];
Note that this method handles a single part instance.
Therefore, all 2D features with the specified
in must correspond to the same
part instance.
Note that if 3D line segment model features are used, and some 3D line
segments are shorter than the actual lengths, then it may return result(s)
with larger residuals. Dilating the 3D line segments
may avoid this problem.
Note that this method might return multiple different poses with similar fitting residuals.
If the returned result has a list of multiple pose results, it means not enough
information in to get a unique pose for the specified part instance.
Pose ambiguities can be avoided by adding more feature correspondences.
The following is a list of situations that satisfy the requirements for
estimating a pose. Note that under some of these situations there may
be multiple poses with equivalent fitting residuals:
- There are 3 or more point correspondences;
- There are 3 or more intersection points among 3D model lines or
line segments;
- There are 3 or more model circles;
- There are 2 or more non-parallel model cylinders;
- The combination of number of point correspondences, number of
intersection points among 3D model lines or line segments,
and number of model circles, is 3 or more;
- There are 2 or more nonparallel model lines or line segments
observed simultaneously by two or more cameras;
- There are 2 or more model circles observed simultaneously
by two or more cameras;
- There are one or more model points, and one or more model circles
observed simultaneously by two or more cameras;
- There are one or more model points, and one or more model lines
or line segments observed simultaneously by two or more cameras;
- There are one or more model points, and one or more model
cylinders observed simultaneously by two or more cameras;
- There are one or more model lines or line segments, and one or
more model circles observed simultaneously by two or more cameras;
- There are one or more model cylinders, and one or more model
circles observed simultaneously by two or more cameras;
- There are one or more model cylinders, and one or more model
lines or line segments (not parallel to the cylinder's axis) observed
simultaneously by two or more cameras.
Note that calling GetIndicesOfOutlierCrsp2D3Ds() from the returned result
will obtain an empty list since all features are used in this pose estimation method.
Note that the returned result might have an empty list of pose results,
if it can not find any pose.
Gets/sets the 3D model features, in Model3D space, that define
the object of interest.
A collection of 3D model features in Model3D space.
If input argument in the setter is null.
Construct this default Cog3DPoseEstimatorUsingCrsp2D3Ds. Note that FeaturesModel3D is an empty collection.
This class provides 3D pose estimation methods from the specified crsp2D3DsUnified
for one part instance (specified by the input parameter "partInstanceIndex" in the
methods).
The pose estimation is done by determining the best fit between
a set of 3D features
and the set or sets of corresponded 2D image features.
Get the message string of this result.
The message string of this result.
The message might hold information about why no poses in this result.
It is null if no information provided.
Get the index of the found part instance.
The index of the found part instance.
This index is the same as the input parameter "partInstanceIndex"
in related methods of Cog3DPoseEstimatorUsingCrsp2D3Ds.
Gets the indices of the crsp2D3Ds classified as outliers
and excluded from the pose estimation.
The list of the indices of the crsp2D3Ds classified as
outliers.
Gets the 3D pose results for one part instance.
Note that multiple pose results might be returned.
The 3D pose results for one part instance.
If the returned list has multiple pose results, it means not enough
information to get a unique pose during calling methods of
Cog3DPoseEstimatorUsingCrsp2D3Ds.
Pose ambiguities can be avoided by adding more feature correspondences.
This class encapsulates the result of a 3D pose estimation using
the specified crsp2D3Ds for one part instance.
Note that this class is immutable - it may not be changed once
it has been constructed.
Gets/sets the minimum number of 3D model features from at least
2 cameras to be used for the pose estimation.
The minimum number of 3D model features from at least 2 cameras
to be used for the pose estimation.
If the input argument to the setter is less than 0.
Gets/sets the minimum number of 3D model features to be used
for the pose estimation.
The minimum number of 3D model features to be used
for the pose estimation.
If the input argument to the setter is less than 1.
Gets/sets a threshold used to specify the desired quality of the pose
estimation. The threshold specifies the maximum allowed RMS value of
the distances between the rays of 2D features and their corresponding
mapped 3D model feature. If the threshold is exceeded, then the crsp2D3Ds
having the largest impact on the RMS residuals are
considered outliers. Default value is HUGE_VAL.
The threshold of maximum residual in Phys3D.
If the input argument to the setter is less than 0.0.
Gets/sets a threshold used to specify the desired quality of the pose
estimation. The threshold specifies the maximum allowed distance
between the rays of any 2D feature and its corresponding mapped 3D
model feature. If the threshold is exceeded on one crsp2D3D, then that
crsp2D3D is considered an outlier. Default value is HUGE_VAL.
The threshold of maximum residual in Phys3D.
If the input argument to the setter is less than 0.0.
Default constructor. Default values are:
- ResidualsPhys3DMaxThreshold is HUGE_VAL
- ResidualsPhys3DRmsThreshold is HUGE_VAL
- MinNumOfFeaturesModel3D is 3.
- MinNumOfFeaturesModel3DFromAtLeast2Cameras is 0.
This class defines the simple robust pose estimation parameters that
controls the behavior of robust 3D pose estimation.
Fits a 3D cylinder from 2D point sets and a set of camera calibrations.
It is not required that the 2D points of the different cameras/views
correspond.
Notes:
- The result's IsFound property will be set to false
if no cylinder can be fit to the given points.
- This operation determines the 3D cylinder which minimizes
the sum squared error in image pixels.
- This operation can compute the cylinder's radius and height
if the input data includes image points from more than one camera.
The List of camera calibrations of the cameras used to extract the 2D points.
The size of the list defines the number of cameras/views used.
A List of 2D point collections for occluding edges, one collection per
camera/view. The size of the list must be equal to the number of cameras.
May not be null.
Notes:
- It only requires that all points in
one collection correspond to the same occluding edge from that camera, i.e., all points
in [camIndex_i] must
correspond to one occluding edge,
and points in [camIndex_j]
must correspond to one occluding edge (but diffent from the one for
[camIndex_i] if
camIndex_j != camIndex_i).
- This function can tolerate the situation where some or all items
of pointsRaw2DOnOccludingEdge0 are empty (i.e.,
[camIndex_i].Count==0);
- It is NOT required that
[camIndex_i].Count ==
[camIndex_j].Count
(camIndex_i != camIndex_j);
- It is NOT required that
[camIndex_i][k] corresponds
to [camIndex_j][k]
(camIndex_i != camIndex_j).
A List of 2D point collections for occluding edges, one collection per
camera/view. The size of the list must be equal to the number of cameras.
May not be null.
Note that [camIndex_i] and
[camIndex_i] must correspond
to two different occluding edges of the same cylinder observed from the
same camera. For detailed specification, see the notes of
for more information.
A List of 2D point collections for circular edges, one collection per
camera/view. The size of the List must be equal to the number of cameras.
May not be null.
Notes:
- It only requires that all points in
one collection correspond to the same circular edge (i.e., all points in
[camIndex_i] must
correspond to one circular edge on the cylinder,
and points in [camIndex_j]
must correspond to one circular edge on the cylinder (which might be
different from the one for
[camIndex_i)).
- This function can tolerate the situation where some or all items
of are empty
(i.e., [camIndex_i].Count==0);
- It is NOT required that
[camIndex_i].Count ==
[camIndex_j].Count
(camIndex_i != camIndex_j);
- It is NOT required that
[camIndex_i][k] corresponds
to [camIndex_j][k]
(camIndex_i != camIndex_j).
A List of 2D point collections for circular edges, one collection per
camera/view. The size of the List must be equal to the number of cameras.
May not be null.
Note that [camIndex_i]
[camIndex_i] must correspond
to different circular edges of the same cylinder.
For detailed specification, see the notes of
for more information.
A Cog3DCylinderFitterUsing2DPointsResult containing the fitted cylinder
and 2D and 3D residuals.
If any of the input arguments is null or any argument includes null item.
- If .Count is less than 1.
- If is not the same size as
,
,
, or
-
If Radius == 0 or Height == 0, and FitMode is
Cog3DCylinderFitterUsing2DPointsFitModeConstants.LeastSquaresUseSpecifiedRadiusAndHeight.
-
If FitMode is
Cog3DCylinderFitterUsing2DPointsFitModeConstants.LeastSquaresComputeRadiusAndHeight and
.Count is 1.
-
If none or only one of collections in
and
contains two or more points, AND
none of the collections in and
contains five or more points.
-
if .Count is 1, and
[0].IsTelecentric is true .
The minimum 2D information required when fitting with
FitMode of
Cog3DCylinderFitterUsing2DPointsFitModeConstants.LeastSquaresUseSpecifiedRadiusAndHeight
is:
At least two 2D points along each occluding edge for one camera;
or at least five 2D points along one of the circular edge for one camera.
The minimum 2D information required when fitting with
FitMode of
Cog3DCylinderFitterUsing2DPointsFitModeConstants.LeastSquaresComputeRadiusAndHeight is:
At least two 2D points (from each camera) along each occluding edge for two cameras;
Or at least five 2D points (from each camera) along the same circular edge for two cameras.
Gets/sets the expected height of the cylinder to find.
The expected height of the cylinder to find.
If is less than 0.
If FitMode is
Cog3DCylinderFitterUsing2DPointsFitModeConstants.eLeastSquaresUseSpecifiedRaiusAndHeight,
then Execute() will use this specified height. If FitMode is
Cog3DCylinderFitterUsing2DPointsFitModeConstants.eLeastSquaresComputeRadiusAndHeight,
then Execute() will ignore this specified height.
Gets/sets the expected radius of the cylinder to find.
The expected radius of the cylinder to find.
If is less than 0.
If FitMode is
Cog3DCylinderFitterUsing2DPointsFitModeConstants.eLeastSquaresUseSpecifiedRadiusAndHeight,
then Execute() will use this specified radius. If FitMode is
Cog3DCylinderFitterUsing2DPointsFitModeConstants.eLeastSquaresComputeRadiusAndHeight,
then Execute() will ignore this specified radius.
Gets/sets the fit mode for 3D cylinder fitting.
The fit mode for cylinder fitting.
If an invalid fit mode is used in the setter.
If FitMode is
Cog3DCylinderFitterUsing2DPointsFitModeConstants.eLeastSquaresUseSpecifiedRadiusAndHeight,
then Execute()
will use the values of Radius and Height . If FitMode is
Cog3DCylinderFitterUsing2DPointsFitModeConstants.eLeastSquaresComputeRadiusAndHeight,
then Execute() will ignore the values of Radius and Height.
Default constructor. Initializes this object for use.
Note that FitMode is
Cog3DCylinderFitterUsing2DPointsFitModeConstants.LeastSquaresUseSpecifiedRadiusAndHeight,
Radius is 0, and Height is 0.
This class provides 3D cylinder fitting from 2D points.
A 3D cylinder is fitted from multiple sets of 2D image points.
The sets of image points can come from different cameras or from
a single camera.
The 3D cylinder fitter computes the pose of the cylinder which
minimizes the sum squared image error with respect to the given 2D
image points from calibrated camera(s).
This enum class defines enumeration constants for the different 3D
cylinder fitting modes.
DefaultFitMode is equal to LeastSquaresUseSpecifiedRadiusAndHeight.
Least squares fit using the specified radius and height.
Least squares fit using the measured radius and height.
If IsFound is false.
If IsFound is false.
Get a deep copy of the fitted 3D cylinder.
A deep copy of the fitted 3D cylinder.
If IsFound is false.
Gets whether or not a fitted cylinder was found.
True if a fitted cylinder was found; false otherwise.
This class holds a result from a 3D cylinder fitting operation, where 2D
points have been used as input.
Note that this class is immutable - it may not be changed once
it has been constructed. The usage model for this class is that it
gets factoried by the Cog3DCylinderFitterUsing2DPoints class.
Method to convert a Dictionary List (each Dictionary corresponds to one 3D part instance) to
a list of Cog3DPartCorresponderUsingCrsp2D3DsResult.
The Dictionary List, each item represents one 3D part instance.
A list of Cog3DPartCorresponderUsingCrsp2D3DsResult.
Method to create unified crsp2D3Ds based on the original (non-unified) crsp2D3Ds and the part correspondences.
The List of the original crsp2D3Ds with associated camera index and
original part instance index. May not be null.
Note that [i].PartInstanceIndex should be the same index of the corresponding item in
raw2DFromModel2Ds[[i].CameraIndex] where raw2DFromModel2Ds is the input parameter used in Execute method.
In other words, crsps corresponding to raw2DFromModel2Ds[i][j] must have CameraIndex of i, and PartInstanceIndex of j.
The part correspondences computed using method Execute. May not be null.
A list of crsp2D3Ds where the PartInstanceIndex is modified so that each PartInstanceIndex refers to the same 3D part instance
for all cameras.
If any input argument is null, or any item inside each input argument is null.
-
If [i] has item whose Key is outside of the camera indices range specified
by the input parameter raw2DFromPhys3Ds in constructor.
- If [i].CameraIndex is
outside of the camera indices range specified
by the input parameter raw2DFromPhys3Ds in constructor.
Method to run the corresponder based on the 2D part poses for each part instance in each camera.
A doubly indexed list of 2D part poses found in each camera, indexed first by camera, then by part instance.
May not be null.
Note that the indices of specify the camera indices, and original part
instance indices.
The part correspondences among different cameras. Each item is a Dictionary for one 3D part instance,
and each KeyValuePair inside the Dictionary
corresponds to (cameraIndex, originalPartInstanceIndex). Note that originalPartInstanceIndex is the index of
the corresponding item in .
In other words, if [i][j] belongs to one 3D part instance,
then the Dictionary for that 3D part instance has KeyValuePair of (i, j).
If is null.
- If .Count is not the same as the number of cameras specified by
the input parameter raw2DFromPhys3Ds in the constructor.
Usage model is as follows:
- Run pattern finding tools ( such as trained PatMax) to find the 2D poses of part instances in each camera
(This step generates ).
- Run this method to compute part correspondences among different cameras.
- Run feature extraction for each corresponded part.
- If there are enough features extracted for one part instance, run pose estimation for the corresponded part.
Construct this Cog3DPartCorresponderUsing2DPoses.
Upon construction, the corresponder will be trained using the provided data.
Therefore, a part must be located, e.g. in a training position. This training position
can be e.g. the position where its model features have been created.
The data needed to configure the corresponder is:
- The camera calibrations used to locate the part.
- The 3D model features.
- The 2D poses of the located part in the camera images.
- The 3D pose of the part.
The List of camera calibrations. One calibration per camera.
The size of this list specifies the number of cameras.
May not be null.
The 3D model features, in Model3D space, that define
the object of interest. May not be null. Note that model features can be obtained
using Cog3DModelFeatureGeneratorUsingCrsp2D3Ds.
The 2D poses of the part for the train image set, one 2D pose per camera. May not be null.
The 3D pose for the part in train time. May not be null. See the Remark section for more details.
If any input argument
is null, or any item in is null, or any item in is null.
- If .Count is less than 2;
- If .Count != .Count;
- If there are not enough features in ;
The usage model is as follows: At Train/Construction time.
- Acquire the train image sets with only one part inside the scene.
- Configure pattern finding tools (such as PatMax tools) and feature extraction tools based on the first train image set.
- Run pattern finding tools (such as PatMax tools) on the first train image set to obtain .
- Run the model feature generator tool (cog3DModelFeatureGeneratorUsingCrsp2D3Ds) to compute (or create based on known model information)
- Run pose estimator to compute the 3D pose of the part for the first train image set (this pose is used as ).
- Call this constructor to create a corresponder.
This class solves the correspondence problem that occurs when multiple
cameras are viewing a scene containing multiple instances of a part, and returns the
correct image pattern correspondences for each 3D part instance. 2D poses of
the 2D part models for the part are used in computing the part correspondences.
The usage model is:
- At train time, create a 2D part model (such as PatMax pattern) in each image from a training image set.
- At run time, run the pattern finder tool in each image and get the 2D poses for each found part instance.
- Call this part corresponder to get part correspondences.
See the constructor and methods for more detail information.
This method determines the part correspondences among the multiple part instances seen
by multiple cameras using the original 2D/3D part feature correspondences
(),
and the camera calibrations. After determining
the part correspondences across cameras, generate a result object for each
corresponded part instance and a result object for each uncorresponded part
instance.
Also generate a new set of 2D/3D part feature correspondences
()
with updated PartInstanceIndex members that map to the returned result objects.
The List of camera calibrations. One calibration per camera.
The size of this list specifies the number of cameras.
May not be null.
The List of the original crsp2D3Ds with associated camera index and
original part instance index. May not be null.
Note that if [i].FeatureRaw2D
is null or empty, then [i] is ignored
when computing the part correspondences.
This is a copy of where the
PartInstanceIndex in have been updated to
reflect the correct part correspondences across cameras.
is created by first
making a shallow copy of each element in whose
(CameraIndex, PartInstance) exists in one item of
the returned List of , then updating
its PartInstanceIndex to be the index of the corresponding item in
the returned List of , i.e. if
([i].CameraIndex,
[i].PartInstanceIndex) exists in
the returned List()[j].GetIndicesOfCameraAndPartInstance(),
then a shallow copy of [i] will be inside
and its PartInstanceIndex is modified to be
j.
The List of result objects (). Each item contains
one 3D part instance's correspondences.
If there are 2 cameras, 10 parts in the scene observed by both cameras,
and all the parts are corresponded, then this returned list will include 10 items,
one item for each part instance.
If 6 of the parts are corresponded, then this returned list will include 14 items:
6 items for the corresponded parts, 4 items for the uncorresponded parts in camera 0
and 4 items for the uncorresponded parts in camera 1.
Each item includes a dictionary of (key=camera index, value=original 2D part instance index).
If or
is null, or any item in one of them is null, or
FeaturesModel3D[[i].FeatureModel3DIndex]
is null.
- If .Count is less than 2;
-
If includes duplicate items
with the same CameraIndex,
the same PartInstanceIndex, and corresponding to the same
model point (model feature with type Cog3DVect3);
- If [i].CameraIndex is
not inside range [0, .Count-1];
- If [i].FeatureModel3DType
is not Cog3DVect3, Cog3DLine, Cog3DLineSeg,
Cog3DCylinder, or Cog3DCircle;
- If [i].FeatureModel3DType
is Cog3DVect3, but
[i].Subfeature is not
Cog3DSubfeatureConstants.Point0;
- If [i].FeatureModel3DType
is Cog3DLine or Cog3DLineSeg, but
[i].Subfeature is not
Cog3DSubfeatureConstants.StraightEdge0;
- If [i].FeatureModel3DType is
Cog3DCircle, but
[i].Subfeature is not
Cog3DSubfeatureConstants.CircleEdge0 or Cog3DSubfeatureConstants.Point0;
- If [i].FeatureModel3DType is
Cog3DCylinder, but
[i].Subfeature is not
Cog3DSubfeatureConstants.OccludingEdge0, .OccludingEdge1, .CircularEdge0,
or .CircularEdge1;
- If [i].FeatureRaw2D
is not null, and its type is not Cog3DVect2, or Cog3DVect2Collection;
- If [i].FeatureModel3DType
is Cog3DVect3,
[i].FeatureRaw2D
has type of Cog3DVect2Collection, and its size is greater than 1.
- If [i].FeatureModel3DIndex is
not inside range [0, FeaturesModel3D.Count-1];
- If [i].FeatureModel3DType is not
the same as the type of
FeaturesModel3D[[i].FeatureModel3DIndex];
-
If FeaturesModel3D contains less than 3 distinct
model points (including derived 3D model points from intersected
3D lines or 3D line segments).
If there are 3D lines or 3D line segments in the model, this corresponder
internally computes the derived 3D model points from 3D line intersections,
and the corresponding derived 2D points from 2D line intersections.
In order for an intersection point to be computed and used, the two
line segments/lines in the image must have different directions
(difference of the direction angles must be 10 degrees or more),
and the nearest distance between the corresponding two 3D
line segments/lines must be small enough comparing to the size of the 3D model.
In order for a part instance to be corresponded, at least there are
2 cameras seeing that part instance, and each camera sees at least
3 2D points (including the derived 2D points
corresponding to the derived 3D model points).
If this does not happen,
then the part instance will not be corresponded.
Note that FeaturesModel3D and
[i].FeatureModel3DIndex for any i
must be set
correctly in order to use this part corresponder.
Cog3DModelFeatureGeneratorUsing2D3Ds
might be used to generate 3D model features at train time.
Gets/sets the 3D model features, in Model3D space, that define
the object of interest.
A collection of 3D model features in Model3D space.
If input argument in the setter is null.
Construct this default Cog3DPartCorresponderUsingCrsp2D3Ds. Note that FeaturesModel3D is an empty collection.
This class solves the correspondence problem that occurs when multiple
cameras are viewing a scene containing multiple parts, and returns the
correct image pattern correspondences for each 3D part instance.
The inputs to this corresponder are crsp2D3Ds.
Each Cog3DCrsp2D3D
instance corresponds to a particular calibrated camera and a particular
part instance in the image acquired from that camera. Each part
instance in a calibrated camera corresponds to one or more
Cog3DCrsp2D3D instances.
All part instances are corresponded to the same 3D model.
The corresponder can tolerate missing part instances.
In other words, it is acceptable for some of the
part instances to be absent from some of the cameras.
The class determines a set of 3D part instances of the known 3D model
which best explain the input data.
This class encapsulate the process running the part corresponder.
Gets the indices of the camera and the original part instance corresponding
to this result. Each KeyValuePair inside the returned Dictionary
corresponds to (cameraIndex, originalPartInstanceIndex).
The indices of the camera and the original part instance corresponding
to this result. Note that there is at most one Dictionary entry for
each camera.
Gets the coverage of this result.
The coverage of this result.
The coverage is computed as follows:
Coverage = (number of 2D points) / ((number of 3D model points)
* (number of cameras))
Where the number of 3D model points includes the number of distinct
3D model points in the specified crsp2D3Ds
(which is the input argument for Cog3DPartCorresponderUsingCrsp2D3Ds.CorrespondPartsUsingPointsAndIntersectionPoints)
and the number of the
derived 3D points from intersected 3D lines or 3D line segments in the model.
The number of 2D points is the
total number of 2D points corresponding to 3D model points for this part instance in
the specified crsp2D3Ds, plus
the total number of the derived 2D points corresponding to the derived 3D
points for this part instance.
Note that Coverage can be used to check whether multiple cameras can see the same
part instance or not. Coverage of 1.0 means all cameras can see this part instance.
This class encapsulates the result information for one 3D part instance
from part corresponder (Cog3DPartCorresponderUsingCrsp2D3Ds),
including a coverage score, and a Dictionary explaining the correspondence result.
Note that this class is immutable - it may not be changed once
it has been constructed.
Gets/sets the subfeature type within the 3D model feature.
The found 2D feature(s) corresponds to this subfeature type.
The subfeature type within the 3D feature.
The subfeature type allows
explicit correspondence of the 2D features to a particular subfeature
of the 3D feature. For example, you can specify a set of 2D feature points
correspond to the circular end of a cylinder.
Gets/Sets an object that can be used to store application-specific information.
An Object representing application-specific data.
Gets/sets the 2D feature(s).
An Object representing the found 2D feature or a collection
of found 2D features in the acquired image.
Set this property to null to indicate the 2D feature(s) was not found.
Note that most corresponders
and pose estimators support Objects of type Cog3DVect2 and Cog3DVect2Collection.
Check the corresponder/pose estimator you are using for supported 2D feature types.
Gets/sets the 3D model feature type.
The type of the corresponding 3D model feature.
Note that most corresponders
and pose estimators support type Cog3DVect3
as a minimum.
Check the corresponder/pose estimator you are using for supported 3D feature types.
If the input argument of the setter is null.
Gets/sets the 3D model feature index (within the 3D model feature collection)
corresponding to the found 2D feature(s).
The 3D feature index (within the 3D model feature collection) corresponding to
the found 2D feature(s).
Note that most corresponders
and pose estimators support Objects of type Cog3DVect3
as a minimum.
Check the corresponder/pose estimator you are using for
supported 3D feature types.
If the input argument of the setter is less than 0.
Gets/sets the index of the found part instance.
The index of the found part instance.
If the input argument of the setter is less than 0.
Note that the index of the found part instance is particular
to the image acquired from the specified camera. The part instances
with the same index number from different cameras may not correspond
to the same part instance in the scene.
Gets/sets the index of the camera.
The index of the camera from which the image was acquired.
If the input argument of the setter is less than 0.
Construct this Cog3DCrsp2D3D with the supplied components.
The index of the camera.
The index of the found part instance (in the image acquired from
the specified camera).
The index of the corresponding 3D feature within the 3D model feature
collection.
The type of the corresponding 3D feature. May not be null.
The 2D feature(s) corresponding to the subfeature type within the specified
3D model feature. The 2D feature(s) must be in Raw2D space.
Note that it can be null to indicate the 2D feature was not found.
The subfeature type within the 3D feature corresponding to the 2D
feature(s).
If is null.
If ,
, or
is less than 0.
Construct this default
Cog3DCrsp2D3D:
- CameraIndex is 0;
- PartInstanceIndex is 0;
- FeatureModel3DIndex is 0;
- FeatureModel3DType is type of Cog3DVect3;
- FeatureRaw2D is null;
- Subfeature is Cog3DSubfeatureConstants.Point0;
This class holds feature correspondence information for a particular feature
(point, line segment, circle, etc.).
A Cog3DCrsp2D3D is a data holder class that expresses how a 2D feature(s)
(found in the acquired image from a particular
camera) corresponds to a 3D feature of the 3D model.
The feature correspondence information consists of:
- The index of the camera from which the image was acquired;
- The index of the found part instance in the acquired image.
Each part found in an acquired image from camera C, must have a unique index.
Each part found in an acquired image from camera C+1, must also have a unique
index, however there is no requirement for the part indices across the
acquired images to match.
- An Object representing the found 2D feature e.g. Cog3DVect2 or an Object
representing a collection of found 2D features e.g. Cog3DVect2Collection
from the acquired image. The 2D feature's pose must be in Raw2D space of
the acquired image.
- The index of the 3D model feature within the 3D model feature collection
- The subfeature type (Cog3DSubfeatureConstants) within the 3D
feature that corresponds to the found 2D feature(s).
Note that the index of the found part instance is particular
to the image acquired from the specified camera. The part instances
with the same index number from different cameras may not correspond to
the same part in the scene.
This class defines enumeration constants of the subfeature types
available in decomposing 3D model features.
It indicates that the subfeature type is a 3D occluding edge
within a 3D feature
It indicates that the subfeature type is a 3D occluding edge
within a 3D feature
It indicates that the subfeature type is a 3D circle curve
within a 3D feature
It indicates that the subfeature type is a 3D circle curve
within a 3D feature
It indicates that the subfeature type is a 3D line or a 3D line segment
within a 3D feature.
It indicates that the subfeature type is a 3D point within a 3D feature.
Computes the affine transforms between images from telecentric cameras.
Telecentric cameras are cameras with telecentric lenses.
Specifically, this method computes the affine transforms from the image of
the camera specified as the base camera via
to the images of all the other cameras specified in
.
The affine transforms are computed using the cameras'
calibration information (), and
a 3D plane in Phys3D ().
The specified 3D plane should be the 3D plane coincident with the planar part
or a planar feature on the part.
This method assumes that all the telcentric cameras are viewing the same planar part
or the same planar feature on the part.
A list of Cog3DCameraCalibrations, indexed by camera. One calibration per
camera. May not be null. Note that all the camera calibrations must be
relative to the same Phys3D coordinate space.
The feature's 3D plane in Phys3D. May not be null.
The index of the base camera.
The List of CogTransform2DLinears representing the affine transforms between
the telecentric cameras' images. The List will have the same size as
. The List element with index
will be the identity transform.
When pattern searching for a feature in each camera’s acquired
image, the 3D accuracy achieved by triangulating 3D points from the 2D
image pattern origin positions in the different images, is highly dependent on
the accuracy of the image pattern origins. This method provides
an accurate way to take an image pattern in the base camera's image and then
use this method’s output 2D affine transforms to map the base
camera's image pattern and/or the base camera's image pattern origin to the other cameras.
This technique assumes that all the cameras are viewing the same pattern
of interest.
Specifically, this method
-
Facilitates taking an image pattern (set of pixels in Raw2D space)
acquired by the base camera and mapping that image pattern to the Raw2D
image spaces of all the other cameras. The mapping can be achieved
using the VisionPro CogAffineTransformTool.
-
Facilitates taking a 2D point e.g. the image pattern origin, in Raw2D space
of the base camera and mapping the 2D point to the Raw2D
image spaces of all the other cameras.
-
Computes the affine transforms by projecting points from
the base camera's Raw2D space to the specified 3D plane (),
and then projecting the points from the specified 3D plane to the other cameras' Raw2D space.
The 3D plane of the part or a planar feature of the part
() is defined in the 3D physical
space (Phys3D). This must be the same Phys3D space of the camera calibrations.
If is parallel to the part
or a planar feature of the part but the actual feature is not lying
precisely in the specified 3D plane, then the translation part of the returned
affine transforms will not be accurate. However, all other
components of the returned affine transforms, such as aspect ratio,
rotation, skew, etc. will still be accurate.
If or
is null, or any item
in is null.
If any of the following conditions are true:
- .Count is less than 2.
- [i].IsTelecentric is false
(i is inside [0, .Count - 1]).
- is less than 0 or greater than
.Count - 1
- is degenerate
This class contains static methods that perform various operations for
telecentric cameras.
Telecentric cameras are cameras with telecentric lenses.
Note that this class is comprised of static methods.
Fits a 3D plane from a 3D point set
A 3D point collection.
A Cog3DPlaneFitterUsing3DPointsResult containing the fitted plane and 3D
residuals.
If the input argument is null.
If .Count is less than 3.
If a 3D plane cannot be fitted.
Default constructor. Initializes this object for use.
Note that robust fit parameters are the same as the ones in
a default constructed
.
This class provides 3D plane fitting from 3D points.
The 3D plane fitter computes the pose of a 3D plane
based on the specified 3D input points.
The fitting technique is controlled by the Cog3DRobustFitParameters.
See the Remarks section of the Cog3DRobustFitTechniqueConstants enum
and the Cog3DRobustFitParameters class for details.
Gets the indices of the data points classified as inliers
and included in the fit.
The list of indices of the data points classified as inliers.
Gets the indices of the data points classified as outliers
and excluded from the fit.
The list of indices of the data points classified as outliers.
Get a deep copy of the fitted 3D plane.
A deep copy of the fitted 3D plane.
This class holds a result from a 3D plane fitting operation, where 3D
points have been used as input.
Note that this class is immutable - it may not be changed once
it has been constructed. The usage model for this class is that it
gets factoried by the Cog3DPlaneFitterUsing3DPoints class.
Fits a 3D line from a 3D point set.
A 3D point collection.
A Cog3DLineFitterUsing3DPointsResult containing the fitted line and 3D
residuals.
If the input argument is null.
If .Count is less than 2.
If a 3D line cannot be fitted.
Default constructor. Initializes this object for use.
Note that robust fit parameters are the same as the ones in
a default constructed
.
This class provides 3D line fitting from 3D points.
The 3D line fitter computes the pose of a 3D line
based on the specified 3D input points.
The fitting technique is controlled by the Cog3DRobustFitParameters.
See the Remarks section of the Cog3DRobustFitTechniqueConstants enum
and the Cog3DRobustFitParameters class for details.
Gets the indices of the data points classified as inliers
and included in the fit.
The list of indices of the data points classified as inliers.
Gets the indices of the data points classified as outliers
and excluded from the fit.
The list of indices of the data points classified as outliers.
Get a deep copy of the fitted 3D line.
A deep copy of the fitted 3D line.
If IsFound is false.
This class holds a result from a 3D line fitting operation, where 3D points
have been used as input.
Note that this class is immutable - it may not be changed once
it has been constructed. The usage model for this class is that it
gets factoried by the Cog3DLineFitterUsing3DPoints class.
Fits a 3D circle from a 3D point set.
A 3D point collection.
A Cog3DCircleFitterUsing3DPointsResult containing the fitted circle
and 3D residuals.
If the input argument is null.
If .Count is less than 3.
If a 3D circle cannot be fitted.
Gets/sets the robust fitting parameters.
A Cog3DRobustFitParameters containing the robust fitting parameters.
If the input argument to the setter is null.
Default constructor. Initializes this object for use.
Note that robust fit parameters are the same as the ones in
a default constructed
.
This class provides 3D circle fitting from 3D points.
The 3D circle fitter computes the pose of a 3D circle
based on the specified 3D input points.
The fitting technique is controlled by the Cog3DRobustFitParameters.
See the Remarks section of the Cog3DRobustFitTechniqueConstants enum
and the Cog3DRobustFitParameters class for details.
Gets the indices of the data points classified as inliers
and included in the fit.
The list of indices of the data points classified as inliers.
Gets the indices of the data points classified as outliers
and excluded from the fit.
The list of indices of the data points classified as outliers.
Get a deep copy of the fitted 3D circle.
A deep copy of the fitted 3D circle.
This class holds a result from a 3D circle fitting operation, where 3D
points have been used as input.
Note that this class is immutable - it may not be changed once
it has been constructed. The usage model for this class is that it
gets factoried by the Cog3DCircleFitterUsing3DPoints class.
Gets/sets the worst case proportion of outliers that is expected
in the data points used for model fitting.
The worst case proportion of outliers.
If the input argument to the setter is less than 0.0, or larger than or equal
to 1.0.
This property will be used if RobustFitTechnique
is Cog3DRobustFitTechniqueConstants.AdaptiveRANSAC.
If WorstCaseProportionOutliers is 0, all the input points are used
for fitting.
Gets/sets the proportion assurance. This parameter is the desired
likelihood that the computed fit contains only inliers.
The proportion assurance.
If the input argument to the setter is less than or equal to 0.0, or larger than 1.0.
If Assurance is 1.0, and if
RobustFitTechnique is Cog3DRobustFitTechniqueConstants.AdaptiveRANSAC, the
exhaustive technique is executed.
This property will be used if RobustFitTechnique
is Cog3DRobustFitTechniqueConstants.AdaptiveRANSAC.
Gets/sets the distance threshold. If the absolute distance between a
point and the model is greater than this parameter, then the point is
considered to be an outlier.
The distance threshold.
If the input argument to the setter is less than 0.0.
This property will be used if RobustFitTechnique is
Cog3DRobustFitTechniqueConstants.AdaptiveRANSAC.
Gets/sets the type of robust fit technique to be employed.
The type of robust fit technique to be employed.
If the input argument to the setter is not a valid
Cog3DRobustFitTechniqueConstants value.
Default constructor. Default values are:
- RobustFitTechnique is Cog3DRobustFitTechniqueConstants.AllPoints
- DistanceThreshold is 1.0
- Assurance is 1.0
- WorstCaseProportionOutliers is 0.0
This class defines the robust fitting parameters that modify the behavior
of robust fitters.
Classical techniques for parameter estimation, such as least squares,
optimize (according to a specified objective function) the fit of a
functional description (model) to all of the presented data. These techniques
have no internal mechanisms for detecting and rejecting gross errors in the data. They
are averaging techniques that rely on the assumption (the smoothing
assumption) that regardless of the size of the data set, there will always be
enough good values to smooth out any gross deviations.
In many practical parameter estimation problems the smoothing assumption
does not hold; i.e., the data contain uncompensated gross errors. To deal
with this situation, several heuristics have been proposed. The technique
usually employed is some variation of first using all the data to derive the
model parameters, then locating the datum that is farthest from agreement
with the instantiated model, assuming that it is a gross error, deleting it,
and iterating this process until either the maximum deviation is less then
some preset threshold or until there is no longer sufficient data to
proceed. It can easily be shown that a single gross error ("poisoned
point"), mixed in with a set of good data, can cause the above heuristic to
fail. Robust fitters use techniques that get around this shortcoming.
See the Remarks section of the Cog3DRobustFitTechniqueConstansts enum
for details on fitting techniques.
This class defines the enumeration constants for robust fitting techniques.
RANSAC is a very popular technique and information about RANSAC can be
obtained from a number of sources.
One such source is "Random Sample Consensus: A paradigm for Model
fitting with Application to Image Analysis and Automated Cryptography",
Martin A. Fischler and Robert C. Bolles, Communications of ACM, June
1981, Volume 24, Number 6, 381-395.
In the Adaptive RANSAC approach the number of tries is computed
adaptively. It is often the case that the proportion of outliers is not
known. In such cases the algorithm is initialized using the worst case
estimate of the proportion of outliers. The distance threshold t is
assumed to be specified. The following is the outline of the approach. - Inputs:
- Data points.
- Distance threshold, t.
- The worst case proportion of data points that are outliers, w.
An outlier is a data point that is further away than t.
- Proportion assurance, z. This is the likelihood that the
computed fit contains only inliers.
- Compute the number of tries based upon w.
- Randomly select a sample of s data points from a data set S and
instantiate the model from this subset, where s is the minimum number
of data points that are required to instantiate the free parameters of
the model.
- Identify all the points that are within the distance threshold t. The
number of such points will be the number of inliers.
- Set w = (number of outliers)/(total number of points).
- Recompute the number of tries using w and z.
- If the total number of tries thus far is greater than the number of
tries computed above, terminate the algorithm. Otherwise, repeat
steps 3-7.
- Re-estimate the model using all the inliers.
- Refine the above model by recategorizing the data points as inliers
and outliers and fitting to the inliers.
- Repeat step 9. for a maximum of three times or until the number of
inliers ceases to increase
It should be noted that the above technique is executed only if the
proportion assurance is less than 1. If not, an exhaustive technique
described below is executed. - The WorstCaseProportionOutliers is assumed to be the true proportion
of outliers and the number of inliers are computed.
- If there are n input points and m outliers, a combinations generator
that generates nC(n-m) combinations is initialized.
- A combination of points are considered as being inliers and the model
is computed.
- The actual number of inliers for the above model is computed. If the
number of inliers is less than the expected number of inliers, steps
3-4 is repeated until all the combinations are tested. If after
testing all combinations, a model could not be computed, the
algorithm will
terminate.
- Re-estimate the model using all the inliers.
- Refine the above model by recategorizing the data points as inliers
and outliers and fitting to the inliers.
- Repeat step 6. for a maximum of three times or until the number of
inliers ceases to increase.
Use Adaptive RANSAC robust fitting technique. See Remarks section.
Do not use any robust fitting technique.
Validate the specified hand-eye calibration result using the specified
calibration features and robot poses,
and then return the hand-eye calibration validation result.
A list of feature correspondences from the camera viewing the calibration plate.
The list of feature correspondences are indexed
by the robot hand pose. [i] corresponds to the
ith robot pose. May not be null.
A list of Cog3DTransformRigid's defining the robot hand poses.
The list is indexed by robot hand pose.
The size of this list must match the size of . May not be null.
The hand-eye calibration result to be validated.
If any input argument is null or any input argument includes a null item
(except [i].Weights).
If input arguments do not match, e.g.
- If .Count !=
.Count;
- If .Count is less than 2.
- If [i].PointsModel3D.Count !=
[i].PointsRaw2D.Count
(i is inside [0, .Count-1]);
- If [i].Weights is not null,
and [i].Weights.Count !=
[i].PointsModel3D.Count
(i is inside [0, .Count-1]);
The hand-eye calibration validation result.
Notes:
- This tool requires at least 2 sets of features, and
can provide more accurate results if more sets of features
(corresponding to distinct robot hand poses) are provided.
- This tool requires all of the elements in
to be from the same camera.
- The returned hand-eye calibration validation result includes a camera calibration validation result
characterizing the accuracy of the camera intrinsics, and 3D residuals characterizing
the accuracy of the whole hand-eye system.
Construct this default Cog3DHandEyeCalibrationValidator.
This class is for validating an existing 3D hand-eye calibration for
one camera. The validation step accepts as inputs the
original hand-eye calibration, a set of robot poses, and a corresponding set of feature positions.
The output of the validation is a hand-eye validation result object.
the hand-eye validation result object contains a camera calibration validation result
and residuals for the hand-eye calibration validation. These
characterize the accuracy of the hand-eye system. The accuracy can be compared
to "baseline"
accuracy estimates from calibration time in order to determine if
the hand-eye system is still in calibration.
A "baseline" validation should be performed immediately
after hand-eye calibration. That baseline validation step should involve
multiple view sets so that one can estimate the distribution of residuals.
The "baseline" validation measurements are
stored for future comparison.
Then, at some arbitrary time (usually after the
system performed vision tasks for a period of time), the user
acquires images of the same calibration plate in some
set of (preferrably, the same) robot poses and executes hand-eye calibration validation to get the "current"
measurements. Finally, the user compares the "current" validation
measurements with the "baseline". If the "current" measurements agree with the "baseline"
measurements to a satisfactory degree, then the system is in
calibration and the user does not need to perform any
recalibration.
If the measurements inside the camera calibration validation results
satisfactorily agree, but the measurements of hand-eye validation residuals
do not satisfactorily agree, then the user can use the baseline camera intrinsics
to re-perform hand-eye calibration.
If camera calibration validation results do not agree
and the hand-eye calibration validation results do not agree,
then camera calibration and hand-eye calibration both need to be performed again.
Perform image correction (lens distortion removal) on the specified image.
Use Raw2DFromPhys3DUsingCorrectImage as the camera calibration for the returned, corrected image.
The raw image to correct.
If the input argument is null.
If IsTrained is false.
The corrected image.
Discard the trained data. Note that IsTrained will return false until Train() is called again.
Train the image corrector using the specified camera calibration.
The camera calibration associated with the raw (acquired) images.
If is null.
If .IsTelecentric is true.
Gets the camera calibration produced at training-time.
This is the camera calibration which should be used with the corrected images.
The camera calibration to be used with the corrected images.
If IsTrained is false.
Gets whether this image corrector is trained.
True if it is trained, and false otherwise.
Construct this default Cog3DLensDistortionCorrector. Note that IsTrained is false.
This class provides lens distortion correction based on a camera calibration.
At training-time, this class trains an image corrector using the lens distortion data in a camera calibration, and
produces a new camera calibration to be used with corrected images.
At run-time, via the Execute() method, this class converts an acquired (raw) image into
a corrected image where the lens distortion has been removed.
The new camera calibration produced at training-time (Raw2DFromPhys3DUsingCorrectedImage) has
a distortion model of Cog3DCameraCalibrationDistortionModelConstants.eNoDistortion, and
has extrinsic parameters (Raw2DFromPhys3DUsingCorrectedImage.Camera3DFromPhys3D) that
are the same as the original camera calibration (specified at training-time) extrinsic parameters.
2D features in the corrected image mapped to 3D rays in Phys3D space using
Raw2DFromPhys3DUsingCorrectedImage, correspond to exactly
the same 3D rays as corresponding 2D features in the
uncorrected image mapped using the original camera calibration specified at training-time.
Fits a 3D circle from 2D point sets and a set of camera calibrations.
Each 2D point set must have been extracted from different cameras or views.
The 2D point sets from the different cameras or views do not need to correspond,
but they must lie on the same 3D circle.
The camera calibrations used during the extraction of the 2D points.
The size of this list defines the number of cameras or views used.
The List of 2D point collections, one collection per camera or view.
The size of the list must be equal to the number of cameras/views.
A List containing 1 or 2 Cog3DCircleFitterUsing2DPointsResult objects (see Remarks section).
Each result object contains the fitted 3D circle and 2D/3D residuals.
If any input argument is null.
If one of the following is true:
- The number of camera calibrations is less than 1.
- The number of camera calibrations does not match the number of 2D point collections.
- FitMode is Cog3DCircleFitterUsing2DPointsFitModeConstant.LeastSquaresUseSpecifiedRadius and Radius is 0.
- FitMode is Cog3DCircleFitterUsing2DPointsFitModeConstant.LeastSquaresComputeRadius and only one camera calibration is provided.
- None of the individual collections of 2D points contain five or more points.
- If any of the camera calibrations have telecentric lens distortion.
If a 3D circle cannot be fitted.
This Execute method may return at
most two results. It returns a single result if
there is one unambiguous 3D circle which induces the minimum sum
squared image error. It returns two different 3D circles
if there are two different 3D circles which induce similar sum squared image errors
(For an explanation of why there are at most 2
different circles that match the image data, refer to the Forsyth et al paper "Invariant Descriptors for 3D
Object Recognition" which appeared in IEEE PAMI, Vol. 13, No. 10,
October 1991, pages 971 - 991)).
Gets/sets the fit mode for circle fitting.
The fit mode for circle fitting.
If invalid fit mode is used in the setter.
If FitMode is
Cog3DCircleFitterUsing2DPointsFitModeConstants.eLeastSquaresUseSpecifiedRadius, then Execute
will use the value of Radius. If FitMode is
Cog3DCircleFitterUsing2DPointsFitModeConstants.eLeastSquaresComputeRadius, then
Execute will ignore the value of Radius.
Gets/sets the expected radius of the circle to find.
The expected radius of the circle to find.
If is less than 0.
If FitMode is
Cog3DCircleFitterUsing2DPointsFitModeConstants.eLeastSquaresUseSpecifiedRadius, then Execute
will use this specified radius. If FitMode is
Cog3DCircleFitterUsing2DPointsFitModeConstants.eLeastSquaresComputeRadius, then
Execute will ignore this specified radius.
Default constructor. Note that FitMode is
Cog3DCircleFitterUsing2DPointsFitModeConstants.LeastSquaresUseSpecifiedRadius, and
Radius is 0.
This class provides 3D circle fitting from 2D points.
A 3D circle is fitted from one or multiple sets of 2D image points.
The sets of image points can come from different cameras or from
a single camera providing multiple views of the circle.
The 3D circle fitter computes the pose of the circle which
minimizes the sum squared image error with respect to the given 2D
image points from calibrated camera(s).
This enum class defines enumeration constants for the different 3D circle fitting modes.
DefaultFitMode is equal to LeastSquaresUseSpecifiedRadius.
Least squares fit using the specified radius.
Least squares fit using measured radius.
Gets a copy of the fitted 3D circle.
A copy of the fitted 3D circle.
Finalizer.
This class holds a result from a 3D circle fitting operation, where 2D points have been
used as input. Note that this class is immutable - it may not be changed once
it has been constructed. The usage model for this class is that it
gets factoried by the Cog3DCircleFitterUsing2DPoints class and always
contains a 3D circle fitting result.
Fits a 3D line from 2D point sets and a set of camera calibrations.
The 2D points must be extracted from different cameras or views.
It is not required that the 2D points of the different cameras/views correspond,
but all the 2D points must lie on the same 3D line.
The stability and precision of the fitted line segment can
be determined by setting Perturbation to a value greater than 0.
This will estimate the precision of the found line segment by trying slight
perturbations of the fitted line segment and comparing the
residuals (induced by the perturbed line segment) with the
residuals corresponding to the fitted line segment.
The difference between the residuals induced by the perturbed line segment
and the residuals of the fitted line segment are stored in the
Cog3DLineFitterUsing2DPointsResult.MinDeltaResidualsPhys3D and
Cog3DLineFitterUsing2DPointsResult.MinDeltaResidualsRaw2D properties.
Notes:
- The result's IsFound property will be set to false
if no line can be fit to the given points (such as when the
line formed by the image points is exactly parallel to the baseline
between two cameras).
- This operation determines the 3D line segment which minimizes
the sum squared error in image pixels.
- The endpoints of the fitted line segment are determined by
inferring 3D rays from all the pointsRaw2D,
determining the nearest point on the fitted line segment to each 3D ray,
determining the 2 outermost points with respect to all the nearest points
on the fitted line segment.
The camera calibrations of the cameras used to extract the 2D points.
The size of the list defines the number of cameras/views used.
A list of 2D point collections, one collection per camera/view.
The size of the list must be equal to the number of cameras.
Notes:
- This function can tolerate the situation where some items
of pointsRaw2D are empty (i.e., [i].Count==0);
- It is NOT
required that [camIndex_i].Count == [camIndex_j].Count (camIndex_i != camIndex_j);
- It is NOT required that
[camIndex_i][k] corresponds to [camIndex_j][k]
(camIndex_i != camIndex_j).
A Cog3DLineFitterUsing2DPointsResult containing the fitted line segment and 2D and 3D residuals.
If any of the input arguments is null.
- If .Count is less than 2.
- If .Count != .Count.
-
If fewer than two of the individual items in
contain two or more points.
Gets/sets the perturbation used for measuring the precision
of the estimated line segment.
Note that perturbation is specified in physical units.
The perturbation used for measuring the precision
of the estimated line segment.
If is less than 0.
The measurement using this perturbation involves
performing multiple experiments, measuring results, and
then saving the most extreme result. Each experiment
involves modifying the fitted line segment by moving
one of the fitted line segment's endpoints along a ray
(the ray starts from one of the cameras and is coincident with the endpoint)
by the specified perturbation
distance, and then computing the residuals (in both image
and physical coordinates) between the rays corresponding
to the raw2D image points and the perturbed line segment,
and then subtracting the respective residuals of the best
fit line.
Default constructor. Initializes this object for use. Note that Perturbation is 0.
This class provides 3D line fitting from 2D points.
A 3D line is fitted from multiple sets of 2D image points.
The sets of image points can come from different cameras or from
a single camera providing multiple views of the line.
The 3D line fitter computes the pose of the line which
minimizes the sum squared image error with respect to the given 2D
image points from calibrated camera(s).
Gets a measure of the precision of the fitted line segment, and the measure is in Phys3D.
Note that larger residuals indicate a more precise fitted line segment result
(because the more the residuals increase per line segment
perturbation, the more accurately the line segment is localized).
A measure of the precision of the fitted line segment (in Phys3D units).
If IsFound is false.
Deprecated. Please use MinDeltaResidualsPhys3D instead.
Deprecated. Please use MinDeltaResidualsRaw2D instead.
Gets a measure of the precision of the fitted line segment in Raw2D space.
Note that larger residuals indicate a more precise fitted line segment result
(because the more the residuals increase per line segment
perturbation, the more accurately the line segment is localized).
If IsFound is false.
A measure of the precision of the fitted line segment (in Raw2D units).
If IsFound is false.
If IsFound is false.
Get a deep copy of the fitted 3D line.
A deep copy of the fitted 3D line.
If IsFound is false.
Get a deep copy of the fitted 3D line segment.
Note that the line segment is the shortest line segment that incorporates
all of the 3D rays corresponding to the 2D points from calibrated
cameras/views.
The fitted 3D line segment.
If IsFound is false.
Gets whether or not a fitted line segment was found.
True if a fitted line segment was found; false otherwise.
This class holds a result from a 3D line fitting operation, where 2D points have been used as input.
Note that this class is immutable - it may not be changed once
it has been constructed. The usage model for this class is that it
gets factoried by the Cog3DLineFitterUsing2DPoints class.
Perform a 3D pose estimation using PointsModel3D (model points in Model3D space) and
and the specified 3D points in Phys3D space.
The 3D point collection in Phys3D space. Each 3D point in this collection must
correspond to the 3D model point with the same index in PointsModel3D.
The 3D estimated pose result object.
The pose in the result object is the pose of the model in Phys3D space
i.e. the pose maps points from the Model3D space to the Phys3D space.
If the input argument is null.
If the size of pointsPhys3D does not match the size of PointsModel3D.
Gets/sets the 3D model points, in Model3D space, that define
the object of interest.
A collection of 3D model points in Model3D space.
If input argument in the setter is null.
Construct this default Cog3DPoseEstimatorUsing3DPoints. Note that PointsModel3D is an empty collection.
This class provides 3D pose estimation from a set 3D "found" points
and their corresponding 3D model points.
The pose estimation is done by determining the best fit between
the set of 3D model points and the set of corresponded 3D found points.
Perform a 3D pose estimation based on the 3D model points, the specified camera calibrations,
the specified 2D image points, and the specified weights, from one or multiple cameras/views.
A List of CameraCalibrations. One calibration per camera/view.
The size of this list specifies the number of cameras/views.
A List of 2D point collections, indexed by camera/view.
The size of the List must equal the number of cameras/views.
The size of each collection must equal the number of model points.
Each point in represents its corresponding model point from a specific camera/view,
i.e., [i][j] is from camera i, and corresponds to PointsModel3D[j].
The total number of valid 2D points must be >= 3.
A List of collections of weights, indexed by camera/view.
The List may be null to indicate all points have a weight of 1.
If not null, then the size of the List must be equal to the number of cameras/views, and each collection in the List is
either null to indicate that all points from the corresponding camera have a weight of 1, or the collection has the same
size as the number of 3D model points.
Each weight must be >= 0.
The 3D estimated pose result object. The pose in the result object maps points from Model3D space to Phys3D space.
If any of the arguments (except ) is null.
- If .Count == 0;
- If .Count != .Count;
- If is not null, and
.Count != .Count;
- If [i].Count != PointsModel3D.Count
(i is inside [0, .Count-1]);
- If [i] is not null, and
[i].Count != PointsModel3D.Count
(i is inside [0, .Count-1]).
Gets/sets the 3D model points, in Model3D space, that define
the object of interest.
A collection of 3D model points in Model3D space.
If input argument in the setter is null.
Construct this default Cog3DPoseEstimatorUsing2DPoints. Note that PointsModel3D is an empty collection.
This class provides 3D pose estimation from a set or sets of 2D image points.
The pose estimation is done by determining the best fit between a set of 3D model points
and the set or sets of corresponded 2D image points.
Gets the 3D pose of this result,
i.e. the 3D pose of the model in Phys3D space.
The 3D pose of the model in Phys3D space.
This class encapsulates the result of a 3D pose estimation using
3D found points.
Note that this class is immutable - it may not be changed once
it has been constructed.
Gets the 3D pose of this result,
i.e. the 3D pose of the model in Phys3D space.
The 3D pose of the model in Phys3D space.
This class encapsulates the result of a 3D pose estimation using
2D image points.
Note that this class is immutable - it may not be changed once
it has been constructed.
Triangulate a collection of 3D features from their corresponding 2D image points from different cameras.
A list of Cog3DCameraCalibration, indexed by camera. One calibration per camera.
The size of this list defines the number of cameras. Must be greater than or equal to two.
A List of 2D point collections, indexed by camera. Each 2D point collection contains all 2D feature points from a specific camera.
The size of the List must be equal to the number of cameras.
The size of each 2D point collection must be the same and defines the number of 3D features to be triangulated.
A List of valid flags Lists, indexed by camera. The outer List may be null to indicate all points are valid.
If not null, the size of the outer List must be equal to the number of cameras, and each item in the outer List must
be either null (to indicate all points from the corresponding camera are valid), or have the same size
as the number of 3D features to be triangulated.
This output parameter is a list of valid flags for the returned 3D features. If a 3D feature could not be triangulated,
its corresponding flag will be false; true otherwise.
The passed list will be re-initialized by this function.
2D residual error information is returned via this Out argument.
One Cog3DResiduals per triangulated 3D feature.
The passed list will be re-initialized by this function.
3D residual error information is returned via this Out argument.
One Cog3DResiduals per triangulated 3D feature.
The passed list will be re-initialized by this function.
A collection of the triangulated 3D feature coordinates and updates .
- If any of the input arguments (except ) is null;
- If any item of is null;
- If any item of is null.
- If the sizes of and
are different or are less than two;
- If [i] does not have the same length as
[j] (i and j are inside [0, .Count-1]);
- If is not null, and
does not have the same length as ;
- if [i] is not null, and does not have the
same length as [i] (i is inside [0, .Count-1]).
Triangulate a collection of 3D features from their corresponding 2D image points from different cameras.
A list of Cog3DCameraCalibration, indexed by camera. One calibration per camera.
The size of this list defines the number of cameras. Must be greater than or equal to two.
A List of 2D point collections, indexed by camera. Each 2D point collection contains all 2D feature points from a specific camera.
The size of the List must be equal to the number of cameras.
The size of each 2D point collection must be the same and defines the number of 3D features to be triangulated.
A List of valid flags Lists, indexed by camera. The outer List may be null to indicate all points are valid.
If not null, the size of the outer List must be equal to the number of cameras, and each item in the outer List must
be either null (to indicate all points from the corresponding camera are valid), or have the same size
as the number of 3D features to be triangulated.
This output parameter is a list of valid flags for the returned 3D features. If a 3D feature could not be triangulated,
its corresponding flag will be false; true otherwise.
The passed list will be re-initialized by this function.
A collection of the triangulated 3D feature coordinates and updates .
- If any of the input arguments (except ) is null;
- If any item of is null;
- If any item of is null.
- If the sizes of and
are different or are less than two
- If [i] does not have the same length as
[j] (i and j are inside [0, .Count-1]);
- If is not null, and
does not have the same length as ;
- If [i] is not null, and does not have the
same length as [i] (i is inside [0, .Count-1]).
Triangulate a 3D point from 2D image points from different cameras.
A list of Cog3DCameraCalibrations, indexed by camera. One calibration per camera.
A collection of 2D points, indexed by camera, representing the same object feature detected from different cameras.
A collection of valid flags for each 2D point. This argument may be null, indicating that all points are valid.
If it is not null, its size must be the same as the size of pointsRaw2D.
2D residual error information will be returned via this Out argument.
3D residual error information will be returned via this Out argument.
The triangulated 3D point coordinate.
If any of the arguments (except ) is null, or any item of
is null.
If the sizes of and
are different or are less than two; or is not null and does not
have the same length as .
Triangulate a 3D point from 2D image points from different cameras.
A list of Cog3DCameraCalibrations, indexed by camera. One calibration per camera.
A collection of 2D points, indexed by camera, representing the same object feature detected from different cameras.
A collection of valid flags for each 2D point. This argument may be null, indicating that all points are valid.
If it is not null, its size must be the same as the size of pointsRaw2D.
The triangulated 3D point coordinate.
If any of the arguments (except ) is null, or any item of
is null.
If the sizes of and
are different or are less than two; or is not null and does not
have the same length as .
Construct this Cog3DTriangulator.
This class encapsulates a 3D Triangulator.
It triangulates the 3D coordinate of an object's feature from 2D image coordinates
of that feature observed from different cameras.
Compute the hand-eye calibration(s) based on extrinsic camera transforms and robot poses.
A doubly indexed list of Cog3DTransformRigid for extrinsic camera transforms under various robot hand poses.
The first index is the robot hand pose index, the second index is the camera index.
The size of the outer list must equal the number of robot hand poses.
The size of each inner list must equal the number of cameras.
A list of Cog3DTransformRigid's defining the robot hand poses, indexed by robot hand pose.
The size of this list must equal the number of robot hand poses.
A list of Cog3DTransformRigid indexed by camera, representing Camera3DFromHand3D if
IsCameraMoving is true, or representing CalPlate3DFromHand3D if IsCameraMoving is false.
If any input argument is null or any input argument includes a null item.
If any of the following is true:
- is empty;
- .Count is not equal to .Count;
- [i].Count is not equal to [j].Count (i, j are inside [0, .Count]).
If the operation is cancelled by user via the event handler.
Compute the hand-eye calibration(s) based on camera intrinsic parameters, extrinsic camera transforms,
and robot poses.
A list of rectangles indexed by camera, that specifies the region of interest
of the raw acquired calibration image (the camera's field of view).
The size of this list defines the number of cameras.
Each item must be the size of the acquired images for that camera (with origin (0,0)).
A list of the cameras' intrinsic parameters indexed by camera.
The size of this list must equal the number of cameras.
A doubly indexed list of Cog3DTransformRigid for extrinsic camera transforms under various robot hand poses.
The first index is the robot hand pose index, the second index is the camera index.
The size of the outer list must equal the number of robot hand poses.
The size of each inner list must equal the number of cameras.
A list of Cog3DTransformRigid's defining the robot hand poses, indexed by robot hand pose.
The size of this list must equal the number of robot hand poses.
A list of Cog3DHandEyeCalibrationResult's indexed by camera containing the hand-eye calibration
result for each camera.
If any input argument is null or any input argument includes null item.
If any of the following is true:
- is empty
- , ,
and [i]
(i is inside [0, .Count -1]) are not the same size.
- .Count is not equal to .Count
If the operation is cancelled by user via the event handler.
Compute the hand-eye calibration(s) using the specified calibration plate images acquired from
different cameras and at different robot hand poses.
A list of the cameras' intrinsic parameters indexed by camera.
A doubly indexed list of calibration plate images, acquired at various robot hand poses.
The first index is the robot hand pose index, the second index is the camera index.
The feature extractor to be used for extracting calibration features from the images.
A list of Cog3DTransformRigid's defining the robot hand poses, indexed by robot hand pose.
The size of this list must equal the number of robot hand poses.
A list of Cog3DHandEyeCalibrationResults indexed by camera, containing the hand-eye calibration
result for each of the cameras.
If any input argument is null or any input argument includes a null item.
If any of the following is true:
- .Count is not equal to .Count
- [i].Count (i is inside [0, .Count -1]) is not equal to
.Count
If the operation is cancelled by user via the event handler.
Compute the hand-eye calibration(s) using previously extracted calibration
plate features and previously computed camera intrinsic parameters.
A list of rectangles indexed by camera, that specifies the region of interest
of the raw acquired calibration image (the camera's field of view).
The size of this list defines the number of cameras.
Each item must be the size of the acquired images for that camera (with origin (0,0)).
A list of the cameras' intrinsic parameters indexed by camera.
The size of this list must equal the number of cameras.
A doubly indexed list of extracted calibration plate features from various robot hand poses.
The first index is the robot hand pose index, the second index is the camera index.
The size of the outer list must equal the number of robot hand poses.
The size of each inner list must equal the number of cameras.
A list of Cog3DTransformRigid's defining the robot hand poses, indexed by robot hand pose.
The size of this list must equal the number of robot hand poses.
A list of Cog3DHandEyeCalibrationResults (index is camera) containing the hand-eye calibration
result for each camera.
If any input argument is null or any input argument includes a null item
(except [i][j].Weights).
If any of the following is true:
- , ,
and [i] (i is inside [0, .Count -1])
are not the same size;
- and are not the same size.
- If [i][j].PointsModel3D.Count !=
[i][j].PointsRaw2D.Count
(i is inside [0, .Count-1],
and j is inside [0,[i].Count-1]);
- If [i][j].Weights is not null,
and [i][j].Weights.Count !=
[i][j].PointsModel3D.Count
(i is inside [0, .Count-1],
and j is inside [0,[i].Count-1]);
If the operation is cancelled by user via the event handler.
Gets/Sets the sampling rectangle for residual error computation. The rectangle is specified in
2D calibration plate space (the units are those in which the calibration plate grid pitch is specified, and
the origin is defined by the fiducial marks on the calibration plate).
If the width or height of the rectangle is 0, no residual statistics will be computed.
The plate rectangle used for residual computation.
Getter returns null if the rectangle has not been set (default constructed Cog3DHandEyeCalibrator).
Gets/sets the number of residual error sampling points in the Y-direction of PlateRectangleForResidualComputing.
If this value is less than 1, no residual error will be computed.
The number of residual error sampling points in the Y-direction of PlateRectangleForResidualComputing.
Gets/sets the number of residual error sampling points in the X-direction of PlateRectangleForResidualComputing.
If this value is less than 1, no residual error will be computed.
The number of sample points (in X-direction) to be used for residual computation.
Gets/sets whether the calibrator should perform calibration for moving or stationary camera(s)
The value indicating whether a moving camera hand-eye calibration shall be performed.
Construct this default Cog3DHandEyeCalibrator.
Note that IsCameraMoving is true, PlateRectangleForResidualComputing
is null,
NumPlateSamplesX is 0,
and NumPlateSamplesY is 0.
Method to support hand-eye calibration progress event.
The object containing hand-eye calibration progress event arguments.
Hand-eye calibration progress event.
This class encapsulates hand-eye calibration. Hand-eye calibration
establishes the mapping between the camera(s) and the robot end effector.
The IsCameraMoving property when true, specifies the cameras are mounted
on the robot end effector; when false, specifies the cameras are stationary.
This is the delegate for the hand-eye calibration progress event handler.
Request to cancel the current hand-eye calibration.
Gets whether a request to cancel the hand-eye calibration has been made.
True if cancel is requested; False Otherwise
Gets the message string.
A string describing the progress.
Gets the progress (fraction of completion).
The progress which is a number between 0 (0%) and 1.0 (100%).
Construct this Cog3DHandEyeCalibrationProgressEventArgs using the
specified progress and message.
The progress (the fraction of completion).
A string describing the progress.
This class holds data generated by the hand-eye calibration progress
event. The hand-eye calibration progress event fires periodically during hand-eye calibration.
A progress value of 0.0 means 0% complete and a value of 1.0 means 100% complete.
Use the specified calibration features and the specified camera calibrations
to compute 2 camera calibration validation results.
The first result ()
contains the residuals when the specified camera calibrations are used.
The second result ()
contains the residuals after a new set of extrinsic parameters are computed
using the specified calibration features.
Note that for the case of a single camera, the two results
should be exactly equal to each other.
The list of rectangles representing the size of the raw
acquired images (the fields of view of the cameras). May not be null.
The two-dimensional list of feature correspondences from the cameras viewing the calibration plate.
The feature correspondences are indexed first
by the calibration plate pose, then by camera. [i][j] corresponds to the
ith calibration plate pose and the jth camera. May not be null.
The list of camera calibrations, indexed by camera. [i]
corresponds to the ith camera. May not be null.
The computed validation result corresponding to using the original camera calibrations.
The computed validation result corresponding to using re-computed
extrinsics based on the specified calibration features. Note that the camera intrinsics are kept from the
input camera calibrations. Note that it will be set to null if any camera distortion model is
Cog3DCameraCalibrationDistortionModelConstants.eTelecentric.
If any input argument is null or any input argument includes null item
(except [i][j].Weights).
If input arguments do not match, e.g.
- If .Count, .Count, and
[i].Count are not the same.
(i is inside [0, .Count-1]);
- If is empty;
- If is empty;
- If [i][j].PointsModel3D.Count !=
[i][j].PointsRaw2D.Count
(i is inside [0, .Count-1],
and j is inside [0,[i].Count-1]);
- If [i][j].Weights is not null,
and [i][j].Weights.Count !=
[i][j].PointsModel3D.Count
(i is inside [0, .Count-1],
and j is inside [0,[i].Count-1]);
Notes:
- This tool only requires a single set of calibration features, but
can provide more accurate results if multiple sets of calibration features
are provided.
- The tool can tolerate some of the correspondences being empty
so long as there are other correspondences which allow the
validation to be computed.
- This tool handles calibration features with 3-dimensional
physical positions.
- This tool requires that all of the elements in the calibration features vector
correspond to the same set of cameras.
- This tool requires that all of the calibration features correspond to cameras,
and the optical paths associated with each camera are unchanged.
Construct this default Cog3DCameraCalibrationValidator.
This class provides the ability to verify a set of camera calibrations
accurately reflects the current intrinsic parameters
for a set of cameras as well as the relative positions of the cameras.
Note that the size of the set of camera calibrations
and the size of the set of cameras can be 1.
The verification requires as input
the original camera calibrations and a set of calibration features that
have been extracted from a newly acquired set of images.
The verification outputs
the 2D and 3D residuals characterizing the current accuracy of the image
acquisition system. These "current" accuracies can be compared to the "baseline"
accuracies computed at the time of the original camera calibration.
The results of the comparison determine whether or not
the image acquisition system is still in calibration.
Due to the nature
of the validation procedure (positioning a calibration plate in an arbitrary pose),
the validation cannot determine if the world coordinate system has changed.
Validation can only determine if the camera intrinsics are out of calibration,
and if the camera positions RELATIVE TO EACH OTHER have changed.
A "baseline" validation should be performed immediately
after camera calibration. That baseline validation step should involve
multiple view sets so it is possible to estimate the distribution of 2D
residuals and 3D residuals. The "baseline" validation measurements should be
stored for future comparison.
Then, at some arbitrary time (usually after the
system performed vision tasks for a period of time), the user
acquires images of the same calibration plate in some
set of (preferrably, the same) poses and executes camera calibration validation to get the "current"
measurements. Finally, the user compares the "current" validation
measurements with the "baseline". If the "current" measurements agree with the "baseline"
measurements to a satisfactory degree, then the system is in
calibration and the user does not need to perform any
recalibration. If the measurement computed using the "recomputed
extrinsics" satisfactorily agrees, but the measurement computed
using the existing "camera calibration" do not satisfactorily agrees, then the
user needs to perform extrinsic calibration. If neither validation
measurements agree, then the user needs to perform full recalibration.
Overload to draw a collection of 3D points.
can be a VisionPro shape that
serves as a marker: CogCircle, CogPointMarker, or CogRectangle.
A collection of 3D points in an arbitrary 3D space.
The rigid transform used to map the points inside
to the Phy3D space of
. This parameter can be null to signify
an identity transform should be used.
The camera calibration used for projecting the mapped 3D points onto an
acquired image. May not be null.
An example shape graphic used to draw each projected 2D point.
If it is true, the graphic properties of this shape projector will be used
in rendering, otherwise the graphic properties of
will be used instead.
The VisionPro graphics collection the rendered graphics is appended to.
If , ,
,
or is null.
If is not of Type CogCircle,
CogRectangle, or CogPointMarker.
Overload to draw a collection of 2D points.
can be a VisionPro shape that
serves as a marker: CogCircle, CogPointMarker, or CogRectangle.
A collection of 2D points in the Raw2D space.
An example shape graphic used to draw each 2D point.
If it is true, the graphic properties of this shape projector will be used
in rendering, otherwise the graphic properties of
will be used instead.
The VisionPro graphics collection the rendered graphics is appended to.
If ,
,
or is null.
If is not of Type CogCircle,
CogRectangle, or CogPointMarker.
Maps 3D coordinate axes using the phys3DFromAxes3D transform.
Then projects the mapped 3D coordinate axes using the raw2DFromPhys3D
camera calibration onto the image plane. The projected axes, along with
x, y, z text and specified label are then rendered as VisionPro graphics
and appended to the specified graphicsCollection.
The 3D vector representing the physical length of the X, Y, and Z
coordinate axes to be projected and rendered.
The rigid transform used to specify the pose of the 3D coordinate axes
in the Phys3D coordinate space of the specified
raw2DFromPhys3D camera calibration. This parameter can be null to signify
an identity transform should be used.
The camera calibration used for projecting the 3D coordinate axes onto an
acquired image. May not be null.
The specified label for the 3D coordinate axes. If it is null, then the
label string is empty.
The VisionPro graphics collection the projected and rendered axes are
appended to.
If is zero or negative in any dimension.
if ,
or is null.
Maps a list of 3D shapes using the phys3DFromShape3D transform.
Then projects the mapped 3D shapes using the raw2DFromPhys3D camera calibration
onto the image plane. The shapes are then rendered as VisionPro graphics and
appended to the specified graphicsCollection.
The 3D shapes to be projected and rendered.
The rigid transform used to map the shapes from the coordinate space it is
defined into the Phys3D coordinate space of the specified
raw2DFromPhys3D camera calibration. This parameter can be null to signify
an identity transform should be used.
The camera calibration used for projecting the 3D shapes onto an acquired image.
The VisionPro graphics collection the rendered shape is appended to.
If ,
any item of ,
,
or is null.
Maps the specified 3D shape using the phys3DFromShape3D transform.
Then projects the mapped 3D shape using the raw2DFromPhys3D camera
calibration onto the image plane. The shape is then rendered as a
VisionPro graphic and appended to the specified graphicsCollection.
The 3D shape to be projected and rendered.
The rigid transform used to map the shape from the coordinate space
it is defined into the Phys3D coordinate space of the specified
raw2DFromPhys3D camera calibration. This parameter can be null to
signify an identity transform should be used.
The camera calibration used for projecting the 3D shape onto an acquired
image.
The VisionPro graphics collection the rendered shape is appended to.
If , ,
or is null.
Gets/sets the line style used for rendering the shapes.
The line style used for rendering shapes.
Gets/sets the line width used for rendering the shapes.
The line width in screen pixels used for rendering shapes.
From setter if is less than 1.
Gets/sets the color of the shapes being rendered.
The color used for rendering shapes.
Gets/sets how shapes are to be rendered.
Bitfield specifying how shapes are rendered.
Set the Cog3DShapeStateConstants::Vertex bit to have vertices representing
the shape rendered.
Set the Cog3DShapeStateConstants::Curve bit to have the curves representing
the shape rendered.
The Cog3DShapeStateConstants::Vertex bit and/or the
Cog3DShapeStateConstants::Curve bit must be set in
.
Initializes this object for use. It is initialized such that:
Color is CogColorConstants.Cyan,
LineWidthInScreenPixels is 1,
LineStyle is CogGraphicLineStyleConstants.Solid, and
ShapeRepresentation is
Cog3DShapeStateConstants.Vertex | Cog3DShapeStateConstants::Curve.
This class provides the functionality for projecting the
vertex and/or curve representations of 3D shapes onto the image plane
of a calibrated 2D camera i.e. acquired image, converting the
projection results to 2D VisionPro graphics and then appending the graphics
to a VisionPro CogGraphicCollection.
Overload for computing the 3D camera calibration from the given feature correspondences, camera
intrinsic parameters, and calibration plate poses. Note that
DistortionModel inside this Cog3DCameraCalibrator will be ignored, and the ones inside
will be used instead.
The list of the regions of interest (the fields of view) of the raw
acquired images (the fields of view of the cameras). May not be null.
Each item must be the size of acquired calibration images for that camera (with origin (0,0)).
Two-dimensional list of feature correspondences from the cameras viewing the calibration plate.
The feature correspondences are indexed first
by the calibration plate pose, then by camera. [i][j] corresponds to the
ith calibration plate pose and the jth camera. May not be null.
A list of intrinsic camera calibration parameters, and indexed by camera. [i]
corresponds to the ith camera. May not be null.
The list of poses of the calibration plate (with respect to the calibration plate pose
defining the world coordinate system). [i] corresponds to
the ith calibration plate pose.
Calibration plate pose does not need to be specified exactly for pose types of PoseElevated or
PoseTilted. The requirement is as follows:
- The poses for pose types of PoseSpecified must be valid/appropriate;
- The poses for pose types of PoseTilted will be ignored;
- The poses for pose types of PoseElevated will be used
to set the z height information of the calibration plate (only pose.Translation.Z will be used);
- The pose for pose type of PoseDefineWorldCoord must be identity.
The list of calibration plate pose types. It should have the same length as . May not be null.
If any input argument is null or any input argument includes null item
(except [i][j].Weights).
If input arguments do not match, e.g.
- If ,
, and are not the same length;
- If , , and
[i]
(i is inside [0, .Count-1]) are not the same length;
- If is empty;
- If is empty.
- If [i][j].PointsModel3D.Count !=
[i][j].PointsRaw2D.Count
(i is inside [0, .Count-1],
and j is inside [0,[i].Count-1]);
- If [i][j].Weights is not null,
and [i][j].Weights.Count !=
[i][j].PointsModel3D.Count
(i is inside [0, .Count-1],
and j is inside [0,[i].Count-1]);
If the operation is cancelled by user via the event handler.
The 3D camera calibration result.
This overload ignores DistortionModel value of this Cog3DCameraCalibrator object.
Overload for computing the 3D camera calibration from the given feature correspondences and camera
intrinsic parameters, and z height information of the calibration plate poses. Note that
DistortionModel inside this Cog3DCameraCalibrator will be ignored, and the ones inside
will be used instead.
The list of the regions of interest (the fields of view) of the raw
acquired images (the fields of view of the cameras). May not be null.
Each item must be the size of acquired calibration images for that camera (with origin (0,0)).
Two-dimensional list of feature correspondences from the cameras viewing the calibration plate.
The feature correspondences are indexed first
by the calibration plate pose, then by camera. [i][j] corresponds to the
ith calibration plate pose and the jth camera. May not be null.
A list of intrinsic camera calibration parameters, and indexed by camera. [i]
corresponds to the ith camera. May not be null.
The z positions of the calibration plate for different calibration plate poses.
[i] corresponds to the ith calibration plate pose. The requirement is as follows:
- The z positions corresponding to pose types of PoseElevated must be valid/appropriate;
- The z position corresponding to pose type of PoseDefineWorldCoord must be 0;
- The z positions corresponding to pose types of PoseTilted will be ignored;
- The z positions corresponding to pose types of PoseSpecified require that the calibration
plate is a pure translation in Z from the PoseDefineWorldCoord poseType.
Thus, a Z value is all that is required.
May not be null.
The list of calibration plate pose types. [i] corresponds to the ith calibration
plate pose type. It should have the same length as . May not be null.
If any input argument is null or any input argument includes null item
(except [i][j].Weights).
If input arguments do not match, e.g.
- If , , and
are not the same length;
- If , , and [i]
(i is inside [0, .Count-1]) are not the same length;
- If is empty;
- If is empty.
- If [i][j].PointsModel3D.Count !=
[i][j].PointsRaw2D.Count
(i is inside [0, .Count-1],
and j is inside [0,[i].Count-1]);
- If [i][j].Weights is not null,
and [i][j].Weights.Count !=
[i][j].PointsModel3D.Count
(i is inside [0, .Count-1],
and j is inside [0,[i].Count-1]);
If the operation is cancelled by user via the event handler.
The 3D camera calibration result.
This overload ignores DistortionModel value of this Cog3DCameraCalibrator object.
Overload for computing the 3D camera calibration from the given feature correspondences, and
calibration plate poses.
The list of the regions of interest (the fields of view) of the raw
acquired images (the fields of view of the cameras). May not be null.
Each item must be the size of acquired calibration images for that camera (with origin (0,0)).
Two-dimensional list of feature correspondences from the cameras viewing the calibration plate.
The feature correspondences are indexed first
by the calibration plate pose, then by camera. [i][j] corresponds to the
ith calibration plate pose and the jth camera. May not be null.
The list of poses of the calibration plate (with respect to the calibration plate pose
defining the world coordinate system). [i] corresponds to
the ith calibration plate pose.
Calibration plate pose does not need to be specified exactly for pose types of PoseElevated or
PoseTilted. The requirement is as follows:
- The poses for pose types of PoseSpecified must be valid/appropriate;
- The poses for pose types of PoseTilted will be ignored;
- The poses for pose types of PoseElevated will be used
to set the z height information of the calibration plate (only pose.Translation.Z will be used);
- The pose for pose type of PoseDefineWorldCoord must be identity.
The list of calibration plate pose types. It should have the same length as . May not be null.
If any input argument is null or any input argument includes null item
(except [i][j].Weights).
If input arguments do not match, e.g.
- If , , and
are not the same length;
- If does not have the same length as
[i]
(i is inside [0, .Count-1]);
- If is empty;
- If is empty.
- If [i][j].PointsModel3D.Count !=
[i][j].PointsRaw2D.Count
(i is inside [0, .Count-1],
and j is inside [0,[i].Count-1]);
- If [i][j].Weights is not null,
and [i][j].Weights.Count !=
[i][j].PointsModel3D.Count
(i is inside [0, .Count-1],
and j is inside [0,[i].Count-1]);
If the operation is cancelled by user via the event handler.
The 3D camera calibration result.
Overload for computing the 3D camera calibration from the given feature correspondences, and z
height information of the calibration plate poses.
The list of the regions of interest (the fields of view) of the raw
acquired images (the fields of view of the cameras). May not be null.
Each item must be the size of acquired calibration images for that camera (with origin (0,0)).
Two-dimensional list of feature correspondences from the cameras viewing the calibration plate.
The feature correspondences are indexed first
by the calibration plate pose, then by camera. [i][j] corresponds to the
ith calibration plate pose and the jth camera. May not be null.
The z positions of the calibration plate for different calibration plate poses.
[i] corresponds to the ith calibration plate pose. The requirement is as follows:
- The z positions corresponding to pose types of PoseElevated must be valid/appropriate;
- The z position corresponding to pose type of PoseDefineWorldCoord must be 0;
- The z positions corresponding to pose types of PoseTilted will be ignored;
- The z positions corresponding to pose types of PoseSpecified require that the calibration
plate is a pure translation in Z from the PoseDefineWorldCoord poseType.
Thus, a Z value is all that is required.
May not be null.
The list of calibration plate pose types. [i] corresponds to the ith calibration
plate pose type. It should have the same length as . May not be null.
If any input argument is null or any input argument includes null item
(except [i][j].Weights).
If input arguments do not match, e.g.
- If ,
, and are not the same length;
- If does not have the same length as
[i]
(i is inside [0, .Count-1]);
- If is empty;
- If is empty;
- If [i][j].PointsModel3D.Count !=
[i][j].PointsRaw2D.Count
(i is inside [0, .Count-1],
and j is inside [0,[i].Count-1]);
- If [i][j].Weights is not null,
and [i][j].Weights.Count !=
[i][j].PointsModel3D.Count
(i is inside [0, .Count-1],
and j is inside [0,[i].Count-1]);
If the operation is cancelled by user via the event handler.
The 3D camera calibration result.
Overload method of Computing the 3D camera calibration from the given images and calibration plate poses.
Two-dimensional list of images from the cameras viewing the calibration plate. The images are indexed first
by the calibration plate pose, then by camera. [i][j] corresponds to the
ith calibration plate pose and the jth camera. May not be null.
The feature extractor operator to be used. A Cog3DCheckerboardFeatureExtractor should be used if using
Cognex checkerboard calibration plate. May not be null.
The list of poses of the calibration plate (with respect to the calibration plate pose
defining the world coordinate system). [i] corresponds to
the ith calibration plate pose.
Calibration plate pose does not need to be specified exactly for pose types of PoseElevated or
PoseTilted. The requirement is as follows:
- The poses for pose types of PoseSpecified must be valid/appropriate;
- The poses for pose types of PoseTilted will be ignored;
- The poses for pose types of PoseElevated will be used
to set the z height information of the calibration plate (only pose.Translation.Z will be used);
- The pose for pose type of PoseDefineWorldCoord must be identity.
The list of calibration plate pose types. It should have the same length as . May not be null.
If any input argument is null or any input argument includes null item.
If input arguments do not match, e.g.
- If , , and
are not the same length;
- If [i] does not have the same length as
[j] (i and j are inside [0, .Count-1]);
- If is empty or [0] is empty.
If the operation is cancelled by user via the event handler.
The 3D camera calibration result.
Compute the 3D camera calibration from the given images and z height information of the calibration plate poses.
Two-dimensional list of images from the cameras viewing the calibration plate. The images are indexed first
by the calibration plate pose, then by camera. [i][j] corresponds to the
ith calibration plate pose and the jth camera. May not be null.
The feature extractor operator to be used. A Cog3DCheckerboardFeatureExtractor should be used if using
Cognex checkerboard calibration plate. May not be null.
The z positions of the calibration plate for different calibration plate poses.
[i] corresponds to the ith calibration plate pose. The requirement is as follows:
- The z positions corresponding to pose types of PoseElevated must be valid/appropriate;
- The z position corresponding to pose type of PoseDefineWorldCoord must be 0;
- The z positions corresponding to pose types of PoseTilted will be ignored;
- The z positions corresponding to pose types of PoseSpecified require that the calibration
plate is a pure translation in Z from the PoseDefineWorldCoord poseType.
Thus, a Z value is all that is required.
May not be null.
The list of calibration plate pose types. [i] corresponds to the ith calibration
plate pose type. It should have the same length as . May not be null.
If any input argument is null or any input argument includes null item.
If input arguments do not match, e.g.
- If , , and
are not the same length;
- If [i] does not have the same length as
[j] (i and j are inside [0, .Count-1]);
- If is empty or [0] is empty.
If the operation is cancelled by user via the event handler.
The 3D camera calibration result.
Gets/sets the approximate cameras' positions
with respect to the calibration plate (for telecentric cameras).
If of setter is null.
The approximate estimates of the cameras' positions (Z heights in
Phys3D). May not be null.
Since the direction of Z axis of Phys3D is out the back of the calibration plate,
the Z values of cameras that can see the calibration plate when defining the world coordinate
should be negative.
Gets/sets the distortion model parameter.
The distortion model used for camera calibration.
Construct this default Cog3DCameraCalibrator. Note that the default distortion model is
Cog3DCameraCalibrationDistortionModelConstants.e3ParamRadial.
Method to support calibration progress event.
The object containing camera calibration progress event arguments.
Camera calibration progress event.
This class is for executing 3D camera calibration for one or multiple cameras.
Cognex 3D camera calibration tool requires:
- All of the images/features correspond to the same set of stationary cameras, and the optical paths associated with
each camera are unchanged.
- All of the images/features correspond to the same calibration plate.
Notes:
- The tool can tolerate it if the plate pose defining
world coordinates does not include features for some of the
cameras - as long as the camera poses can be induced from other
images.
- The tool may take a relatively long time to run, and supports
progress event.
- The tool can handle cameras of different camera intrinsics,
such as different resolutions and cameras with different focal
length lenses.
- The calibration computation minimizes the sum squared error in image
coordinates. Therefore, if different cameras have different pixel
resolutions, then the calibration may be dominated by the
higher resolution cameras. Consequently, this tool is most
useful when all cameras have similar pixel resolutions.
- Cognex strongly recommends performing a camera calibration validation after
you perform camera calibration. This camera calibration validation
establishes a baseline that can be used in the future to determine
if your cameras are still calibrated. See the Cog3DCameraCalibrationValidator
class for details.
This class defines enumeration constants used for calibration plate pose types.
DefaultPoseType is equal to PoseDefineWorldCoord.
The calibration plate is accurately positioned at a known pose in
the world coordinate system.
The calibration plate is arbitrarily positioned.
The calibration plate pose is precisely parallel to the pose that
defined the world coordinate system (and the offset between the
two calibration plate poses will be specified). Note that the
(x,y) translation and rotation in-the-plane are unconstrained.
The calibration plate pose defines the world coordinate system.
This is the delegate of camera calibration progress event handler.
Request to cancel the operation.
Gets whether it is requested to cancel the operation.
True if cancel is requested; False Otherwise
Gets the message string.
A string describing the progress.
Gets the progress (the fraction of completion).
The progress.
Construct this Cog3DCameraCalibrationProgressEventArgs using the
specified progress and message.
The progress (the fraction of completion).
A string describing the progress.
This class holds data provided by the camera calibration progress
event. The camera calibration progress event fires periodically during camera calibration.
A progress value of 1.0 means 100% complete.
Extracts features from a Cognex checkerboard calibration plate image.
The fiducial defining the calibration plate's
origin, must be within the field of view or an exception is thrown.
The calibration image of the Cognex checkerboard calibration plate.
The extracted feature correspondences and their weights.
If the input argument is null.
If the expected origin fiducial feature could not be found.
If True, use the
value when
is either
DataMatrix
or
DataMatrixWithGridPitch.
The default value is False.
The maximum time in milliseconds to search for a single
DataMatrix fiducial.
This property is only used when
is true and
is either
UseDataMatrix
or
UseDataMatrixWithGridPitch:
-
If
is
Exhaustive,
an exception will occur if it takes longer than
to find an acceptable DataMatrix fiducial.
-
If
is
ExhaustiveMultiRegion,
an exception will occur if it takes longer than
to find the first acceptable DataMatrix fiducial. Once the operator
finds the first acceptable DataMatrix fiducial without timeout, the
operator processes each isolated region of checkerboard features. For
each isolated region of checkerboard features, if it takes longer than
to find a DataMatrix fiducial, the operator will not include any
features from that region but no exception will be thrown.
The default value is 30000 (i.e. 30 seconds).
If the supplied value is less than or equal to zero.
Gets/sets the algorithm to be used for feature finding.
The default is
Exhaustive.
Gets/sets the style of fiducial mark to be found on the
Cognex calibration plate.
The default is
UseFiducial.
Gets/sets the physical grid pitch of the Cognex checkerboard
calibration plate.
The physical grid pitch of the Cognex checkerboard calibration plate.
Construct this Cog3DCheckerboardFeatureExtractor using the specified
grid pitch.
The initial grid pitch for the calibration plate.
This class defines a Cognex checkerboard calibration feature extractor.
This extractor extracts the calibration features from an image of a Cognex
checkerboard calibration plate.
Enumeration that specifies the algorithm used in feature extraction.
Similar to Exhaustive, but it returns feature correspondences from
all contiguous regions of checkerboard features in which a
DataMatrix was successfully decoded.
An exhaustive algorithm used for registering and labeling the
features.
The standard algorithm used for registering and labeling the
features. This algorithm is fast and works well on clean
images but may fail on images better handled by Exhaustive mode.
Enumeration that specifies what style of fiducial mark
is present on the calibration plate.
The calibration plate has DataMatrix fiducial marks
that incorporate specification of the grid pitch.
The calibration plate has DataMatrix fiducial marks.
The calibration plate has a Cognex standard fiducial mark: two
rectangles of different lengths arranged in an 'L' shape.
The origin of the coordinate system is set at the vertex closest to
the center of the image. The X axis is set to be the direction
of a row or column of vertices along which X components of image
coordinates of vertices increase faster.
Method to support feature extraction progress event.
False if user requires to cancel the operation, and true otherwise.
Extract features from a set of calibration images, acquired
from one or multiple cameras over different calibration plate poses.
The images are organized in a List, indexed by calibration plate pose.
Each item in the list is a List of images, indexed by camera.
It is expected that the fiducial defining the calibration plate's
origin is within the field of view.
The feature extraction is done by calling the Execute( ICogImage )
method for each calibration image.
The Execute( ICogImage ) method will be invoked on multiple threads
if the IsThreadSafe property is true.
The FeaturesExtracted event is fired after the featues are extracted from each image.
A doubly indexed list of the calibration images, indexed first by calibration plate pose,
then by camera.
The extracted feature correspondences and their weights.
The feature correspondences are arranged the same way as the calibration images.
If the operation is cancelled by user via the event handler.
If feature extraction for one image failed.
Feature extraction progress event.
Default constructor.
This class is the abstract base class for 3D calibration feature extractors.
Clients that are using a Cognex checkerboard calibration plate can use the Cog3DCheckerboardFeatureExtractor class
to perform calibration feature extraction. These clients do not need to be concerned with this base class.
Clients that are not using a Cognex checkerboard calibration plate must implement their own calibration feature
extractor class capable of extracting calibration features from images of the special calibration object.
One way to implement such a custom calibration feature extractor class, is to derive the custom calibration
feature extraction class from this base class.
The derived calibration feature extraction class can then be passed into the Cog3DCameraCalibrator.Execute() overloads that
require an ICog3DCalibrationFeatureExtractor.
This abstract base class provides an implementation of
the ICog3DCalibrationFeatureExtractor.Execute(List< List< ICogImage > >) method.
This implementation calls derived class' ICog3DCalibrationFeatureExtractor.Execute( ICogImage ) and
will make the calls on multiple threads if the derived class' ICog3DCalibrationFeatureExtractor.IsThreadSave property is true.
The provided implementation supports feature extraction progress events as well - the FeaturesExtracted event is fired
as soon as feature extraction is completed on each calibration image.
Derived classes must: implement an override of the
ICog3DCalibrationFeatureExtractor.Execute( ICogImage ) method as well as implement
the IsThreadSafe property which specifies whether the override of Execute() is thread-safe or not.
This is the delegate of features Extracted progress event handler.
Request to cancel the operation.
Gets whether it is requested to cancel the operation.
True if cancel is requested; False Otherwise
Gets the features that have been extracted.
The features that have been extracted.
The features are NOT deep copy from the feature extraction, and modifying
them may result in unexpected behavior.
Gets the camera index of the image whose calibration features have been extracted.
The camera index of the image whose calibration features have been extracted.
Gets the calibration plate pose index of the image whose calibration features have been extracted.
The calibration plate pose index of the image whose calibration features have been extracted.
Construct this Cog3DFeaturesExtractedEventArgs using the providing
information for an image whose calibration features have been extracted.
The calibration plate pose index for the processed image.
The camera index for the processed image.
The collection of feature correspondences for the processed image.
Property Features will return
This class holds data provided by Cog3DCalibrationFeatureExtractorBase.FeaturesExtracted event.
FeaturesExtracted event fires each time processing of an image has finished.
Gets whether the implementation of the Execute(ICogImage) method is thread-safe.
thread-safety is required to allow multithreading within implementations
of the
Execute(List< List< ICogImage > >) method.
Whether the implementation of the Execute(ICogImage) method is thread-safe.
Extract features from a set of calibration images, acquired
from one or multiple cameras over different calibration plate poses.
The images are organized in a List, indexed by calibration plate pose.
Each item in the list is a List of images, indexed by camera.
It is expected that the fiducial defining the calibration plate's
origin is within the field of view.
The feature extraction is done by calling the Execute( ICogImage )
method for each calibration image.
The Execute( ICogImage ) method will be invoked on multiple threads
if the IsThreadSafe property is true.
A doubly indexed list of the calibration images, indexed first by calibration plate pose,
then by camera.
The extracted feature correspondences and their weights.
The feature correspondences are arranged the same way as the calibration images.
If the input argument is null.
Extract features from a calibration image.
The calibration image to extract features from.
The extracted feature correspondences and their weights.
If the input argument is null.
This is the interface class for 3D calibration feature extractors.
This interface class is used in several Cog3DCameraCalibrator.Execute() overloads.
Gets/sets the collection of weights.
A collection of weights.
Null value means that all the points have equal weight of 1.0.
Gets/sets the collection of 2D feature points.
A collection of 2D feature points.
If the input argument of the setter is null.
Gets/sets the collection of 3D model points.
A collection of 3D model points.
If the input argument of the setter is null.
Construct this Cog3DCrspFeaturesCollection with the supplied components.
The collection of 3D model points. May not be null.
The collection of 2D feature points. May not be null.
The collection of weights. Note that if is null,
it means that all the points have equal weight of 1.0.
If or is null.
Construct this default (empty) Cog3DCrspFeaturesCollection.
The PointsModel3D collection is empty.
The PointsRaw2D collection is empty.
The Weights collection is null.
This class holds 3 collections: a collection of 3D model points,
a collection of 2D image feature points, and a collection of weights.
The elements of the 3 collections are corresponded. This means the
jth element of the 3D model point collection, corresponds to the
jth element of the 2D image feature point collection, which in turn corresponds to the
jth element of the weights collection.
Note that many functions that accept a Cog3DCrspFeaturesCollection as an argument,
allow the weights collection to be null.