ConcentricRake Method
Syntax
CWIMAQVision.ConcentricRake SourceImage, Regions, ScanDirection, EdgeCoordinatesReport [, EdgeOptions] [, Process = cwimaqEdgeProcessAll] [, StepSize = 5] [, ArcCoordinates]
Return Type
On success, this method returns 0. On failure, this method returns a negative number.
Purpose
Finds edges along concentric circular or angular paths in the image. Edges are determined based on their contrast and slope.
Parameters
SourceImage As CWIMAQImage
The input image.
Regions As CWIMAQRegions
Regions describes the bounding circular or annular region within which the concentric paths are defined.
ScanDirection As CWIMAQConcentricRakeScanDirections
Specifies the direction in which the method searches for edges along the concentric paths. You can search in either a clockwise or counterclockwise direction.
EdgeCoordinatesReport As CWIMAQEdgeCoordinatesReport
On return, a report containing information about the edges detected.
EdgeOptions As Variant
[Optional] A CWIMAQEdgeOptions object defining the characteristics the method uses to find the edges and the parameters it needs for subpixel analysis of the edges.
Process As Variant
[Optional] Determines the type of search. The method can return the first edge, both the first and the last edge, or all edges found along each concentric path.
This parameter has a default value of cwimaqEdgeProcessAll.
StepSize As Variant
[Optional] StepSize is the radial distance in pixels between the concentric paths.
This parameter has a default value of 5.
ArcCoordinates As Variant
[Optional] If this parameter is supplied, it must be a CWIMAQArcs object that on return contains the arcs that the method used for edge detection.
Example
'This routine assumes that you have an annulus selected on the viewer
Private Sub Run_Click()
'Declarations
Dim EdgeCoordinatesReport As New CWIMAQEdgeCoordinatesReport
Dim EdgeOptions As New CWIMAQEdgeOptions
Dim ArcCoordinates As New CWIMAQArcs
Dim I As Integer
'Perform a concentric rake operation with subpixel accuracy of one-tenth. Find only
'the first edge along each line.
EdgeOptions.SubPixelAccuracy = cwimaqSubPixelOneTenth
CWIMAQVision1.ConcentricRake CWIMAQViewer1.Image, CWIMAQViewer1.Regions, cwimaqScanClockwise, _
EdgeCoordinatesReport, EdgeOptions, cwimaqEdgeProcessFirst, 10, _
ArcCoordinates
'Overlay the search arcs
For I = 1 To ArcCoordinates.Count
CWIMAQViewer1.Image.Overlays(1).DrawArc ArcCoordinates(I), cwimaqOverlayModeFrame, vbBlue
Next I
'Overlay edge points found
With EdgeCoordinatesReport.FirstEdgePoints
For I = 1 To .Count
CWMachineVision1.DrawCircularPoint CWIMAQViewer1.Image.Overlays(1), .Item(I), 5, _
cwimaqOverlayModePaint, vbRed
Next I
End With
End Sub