http://www.emgu.com
First apply Canny Edge Detector on the current image, then apply Hough transform to find circles

Namespace: Emgu.CV
Assembly: Emgu.CV (in Emgu.CV.dll) Version: 2.4.2.1777 (2.4.2.1777)

Syntax

C#
public CircleF[][] HoughCircles(
	TColor cannyThreshold,
	TColor accumulatorThreshold,
	double dp,
	double minDist,
	int minRadius,
	int maxRadius
)
Visual Basic
Public Function HoughCircles ( _
	cannyThreshold As TColor, _
	accumulatorThreshold As TColor, _
	dp As Double, _
	minDist As Double, _
	minRadius As Integer, _
	maxRadius As Integer _
) As CircleF()()
Visual C++
public:
array<array<CircleF>^>^ HoughCircles(
	TColor cannyThreshold, 
	TColor accumulatorThreshold, 
	double dp, 
	double minDist, 
	int minRadius, 
	int maxRadius
)

Parameters

cannyThreshold
Type: TColor
The higher threshold of the two passed to Canny edge detector (the lower one will be twice smaller).
accumulatorThreshold
Type: TColor
Accumulator threshold at the center detection stage. The smaller it is, the more false circles may be detected. Circles, corresponding to the larger accumulator values, will be returned first
dp
Type: System..::..Double
Resolution of the accumulator used to detect centers of the circles. For example, if it is 1, the accumulator will have the same resolution as the input image, if it is 2 - accumulator will have twice smaller width and height, etc
minDist
Type: System..::..Double
Minimum distance between centers of the detected circles. If the parameter is too small, multiple neighbor circles may be falsely detected in addition to a true one. If it is too large, some circles may be missed
minRadius
Type: System..::..Int32
Minimal radius of the circles to search for
maxRadius
Type: System..::..Int32
Maximal radius of the circles to search for

Return Value

The circle detected for each of the channels

See Also