realImg,imImg = | houghCirclesPhaseCoded2dImg (inGxImg,inGyImg,radiusRange) |
computes the complex accumulator matrix used by the Hough circles detector ("gradient phase-coded" method)
This algorithm computes, from the 2 gradient images (respectively along x and y axis) of the same grey levels 2d image, the complex accumulator matrix used to detect circles in an image, using Hough algorithm ("gradient phase-coded" 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:
Example of Python code :
Example imports
import PyIPSDK
import PyIPSDK.IPSDKIPLFeatureDetection as fd
import PyIPSDK.IPSDKIPLFiltering as filter
Code Example
inImg = PyIPSDK.loadTiffImageFile(inputImgPath)
gxImg, gyImg = filter.gaussianGradient2dImg(inImg, 1.0)
radiusRange = PyIPSDK.createHoughCirclesRadiusRange(15, 20)
outRealImg, outImImg = fd.houghCirclesPhaseCoded2dImg(gxImg, gyImg, radiusRange)
Example of C++ code :
Example informations
Header file
#include <IPSDKIPL/IPSDKIPLFeatureDetection/Processor/HoughCirclesPhaseCoded2dImg/HoughCirclesPhaseCoded2dImg.h>
Code Example
#include <IPSDKImage/Geometry/ImageGeometryInstances.h>
#include <IPSDKImage/Image/Memory/MemoryImage.h>
#include <IPSDKImageFile/Tiff/TiffImageFileUtils.h>
#include <IPSDKIPL/IPSDKIPLFeatureDetection/Processor/HoughCirclesPhaseCoded2dImg/HoughCirclesPhaseCoded2dImg.h>
#include <utility>
std::pair<ipsdk::image::ImagePtr, ipsdk::image::ImagePtr>
computeHoughCirclesPhaseCoded2dImages(
const std::string& inImgFilePath,
ipUInt64 nMinRadius,
ipUInt64 nMaxRadius)
{
ipsdk::image::ImagePtr pInImg =
GradientXYImg gxyImg =
ImagePtr pInGxImg = gxyImg._pXGradImg;
ImagePtr pInGyImg = gxyImg._pYGradImg;
HoughCirclesComplexImg hcComplexImg =
ipsdk::imaproc::fd::houghCirclesPhaseCoded2dImg(
pInGxImg,
pInGyImg,
return std::make_pair(hcComplexImg._pRealImg, hcComplexImg._pImImg);
}