IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
Computation of accumulator matrix for Hough circles detection

computes the accumulator matrix used by the Hough circles detector ("gradient" method) More...

IPSDKIPLFEATUREDETECTION_API image::ImagePtr ipsdk::imaproc::fd::houghCircles2dImg (const image::ImageConstPtr &pInGxImg, const image::ImageConstPtr &pInGyImg, const ipsdk::imaproc::attr::HoughCirclesRadiusRangeConstPtr &pRadiusRange)
 wrapper function for detects circles in images of gradient using Hough algorithm More...
 
IPSDKIPLFEATUREDETECTION_API void ipsdk::imaproc::fd::houghCircles2dImg (const image::ImageConstPtr &pInGxImg, const image::ImageConstPtr &pInGyImg, const ipsdk::imaproc::attr::HoughCirclesRadiusRangeConstPtr &pRadiusRange, const ipsdk::imaproc::attr::eCircleIntensityType &eCircleIntensityType, const ipReal64 maxAngleWithGradDir, const ipUInt32 nbMaxPtsPerCircle, const image::ImagePtr &pOutImg)
 wrapper function for detects circles in images of gradient using Hough algorithm More...
 

Detailed Description

computes the accumulator matrix used by the Hough circles detector ("gradient" method)

This algorithm computes, from the 2 gradient images (respectively along x and y axis) of the same grey levels 2d image, the accumulator matrix used to detect circles in an image, using Hough algorithm ("gradient" method).

See Hough circles detection for more information.

Below is an example of image returned by the algorithm on gradient images computed from an image of coins. We can see that positions of high local maxima in accumulation matrix correspond to positions of centers of circles in the original image:

houghCircles2dImg.png

Attributes description

Attribute description for algorithm :

Name ToolTip Default Initializer
ipsdk::imaproc::attr::InGxGreyImg2d [Input] 2d grey levels image of gradient computed along x-axis X
ipsdk::imaproc::attr::InGyGreyImg2d [Input] 2d grey levels image of gradient computed along y-axis X
ipsdk::imaproc::attr::InOptCircleIntensityType [Input Optional] circle intensity type for detection algorithms X
ipsdk::imaproc::attr::InOptMaxAngleWithGradDir [Input Optional] maximum angle with gradient direction, in radians X
ipsdk::imaproc::attr::InOptNbMaxPtsPerCircle [Input Optional] maximum number of points per circle X
ipsdk::imaproc::attr::InOptHoughCirclesRadiusRange [Input Optional] range of radius of circles to detect using Hough circles algorithm X
ipsdk::imaproc::attr::OutRealImg [Output] image for processing operation (data contained in image buffer are reals) ipsdk::imaproc::duplicateInOut (_pOutRealImg, _pInGxGreyImg2d, ipsdk::image::eImageBufferType::eIBT_Real32)

Global Rule description

Global rule description for algorithm :
ipsdk::imaproc::matchSizeAndType (_pInGxGreyImg2d,_pInGyGreyImg2d) && 
ipsdk::imaproc::matchSize (_pInGxGreyImg2d,_pOutRealImg) && ipsdk::imaproc::matchSize<ipsdk::imaproc::attr::HoughCirclesRadiusRange::MaxRadius>(ipsdk::imaproc::eMatchImageSizeType::eMIST_2d,ipsdk::imaproc::eMatchImageSizeScale::eMISS_HalfSize,_pInGxGreyImg2d,_pInOptHoughCirclesRadiusRange)

Example of Python code :

Example imports

import PyIPSDK
import PyIPSDK.IPSDKIPLFeatureDetection as fd
import PyIPSDK.IPSDKIPLFiltering as filter

Code Example

# opening of input image
inImg = PyIPSDK.loadTiffImageFile(inputImgPath)
# associated gradient images computation
gxImg, gyImg = filter.gaussianGradient2dImg(inImg, 1.0)
# radius range detection definition
radiusRange = PyIPSDK.createHoughCirclesRadiusRange(15, 20)
# hough circle detection computation
outImg = fd.houghCircles2dImg(gxImg, gyImg, radiusRange)

Example of C++ code :

Example informations

Associated library

IPSDKIPLFeatureDetection

Header file

Code Example

// function returning the accumulation image used by Hough circle detector
// ("gradient" method) applied on an input image loaded from a given file to
// detect circles of radii belonging to a given range
computeHoughCircles2dImage(
const std::string& inImgFilePath,
ipUInt64 nMinRadius,
ipUInt64 nMaxRadius)
{
// load input image from file specified by the user
// compute gradient images, in x and y
GradientXYImg gxyImg =
gaussianGradient2dImg(pInImg, 1.0f, 1.0f, createGaussianCoverage(0.997f, 2));
ImagePtr pInGxImg = gxyImg._pXGradImg;
ImagePtr pInGyImg = gxyImg._pYGradImg;
// apply Hough circles detection on gradient images
ImagePtr pAccumulationImg =
pInGxImg,
pInGyImg,
// return the accumulation image
return pAccumulationImg;
}
See also
HoughCircles2dImgLvl1
HoughCircles2dImgLvl2
HoughCircles2dImgLvl3

Function Documentation

◆ houghCircles2dImg() [1/2]

IPSDKIPLFEATUREDETECTION_API image::ImagePtr ipsdk::imaproc::fd::houghCircles2dImg ( const image::ImageConstPtr pInGxImg,
const image::ImageConstPtr pInGyImg,
const ipsdk::imaproc::attr::HoughCirclesRadiusRangeConstPtr pRadiusRange 
)

wrapper function for detects circles in images of gradient using Hough algorithm

Exceptions
ipsdk::processor::IPSDKBaseProcessingExceptionon failure

◆ houghCircles2dImg() [2/2]

IPSDKIPLFEATUREDETECTION_API void ipsdk::imaproc::fd::houghCircles2dImg ( const image::ImageConstPtr pInGxImg,
const image::ImageConstPtr pInGyImg,
const ipsdk::imaproc::attr::HoughCirclesRadiusRangeConstPtr pRadiusRange,
const ipsdk::imaproc::attr::eCircleIntensityType eCircleIntensityType,
const ipReal64  maxAngleWithGradDir,
const ipUInt32  nbMaxPtsPerCircle,
const image::ImagePtr pOutImg 
)

wrapper function for detects circles in images of gradient using Hough algorithm

Exceptions
ipsdk::processor::IPSDKBaseProcessingExceptionon failure