圆形和矩形的霍夫变换

时间:2014-07-31 16:30:07

标签: opencv image-processing javacv

我希望识别图像中的圆圈。圆圈是图像中存在的车辆的轮胎。然而,使用Hough's变换,图像中出现了许多圆圈,而不是轮胎周围的圆圈。不确定是否有更好的方法。

此外,有没有办法识别图像中最大的矩形,即车辆的存储容器。

任何指针都会有很大的帮助。

此致 维杰

2 个答案:

答案 0 :(得分:1)

我认为您需要使用参数来过滤掉不需要的圈子。

void HoughCircles(InputArray image,OutputArray circles,int method,double dp,double minDist,double param1 = 100,double param2 = 100,int minRadius = 0,int maxRadius = 0)

minDist - 检测到的圆圈中心之间的最小距离。如果参数太小,除了真实的一个之外,可能错误地检测到多个相邻的圆圈。如果太大,可能会遗漏一些圈子。

param1 - 第一个特定于方法的参数。在CV_HOUGH_GRADIENT的情况下,它是传递给Canny()边缘检测器的两个较高阈值(较低的一个是两倍小)。

param2 - 第二个特定于方法的参数。在CV_HOUGH_GRADIENT的情况下,它是检测阶段圆心的累加器阈值。它越小,可以检测到更多的假圆圈。将首先返回与较大累加器值对应的圆圈。

minRadius - 最小圆半径。 maxRadius - 最大圆半径

答案 1 :(得分:0)

对于第一个问题,您可以尝试快速圈检测'下面的算法。

Fast Circle Detection Using Gradient Pair Vectors

我在之前的项目中得到了非常好的结果,这是一个实时处理,找到虹膜和人眼巩膜之间的边界。

希望这会有所帮助。