首页 文章

圆检测:houghcricles的参数

提问于
浏览
2

我想检测一个对象,我尝试使用OpenCV中的Houghcirles函数,但我无法为所有图像获得更好的参数,但通过进行threasholding,我可以过滤掉圆圈 . 我用的代码是

int main()
{
// Load an image
src = imread("occupant/cam_000569.png");
threshold(src,binary,52,255,0);
imwrite("binary.png",binary);
canny(src,canny,50,200,3);
houghcircles(canny,circles,CV_HOUGH_GRADIENT,1,src.gray.rows/8,7,24,28);


在阈值处理后,我得到下面的图像,即使包含干扰但是对于阈值 52 我可以看到对象清晰的所有其他图像相同 .


使用带有参数的 cannyhoughcircles 函数后的代码 . 我可以检测到所需的物体 .

但问题是,当我使用下一个图像时,相同的阈值可用,但对于canny和houghcircles使用相同的参数,我无法检测到该对象 .

所以我的问题是如何选择houghcircle的参数或者是否可以检测具有不同OpenCV函数的对象?

2 回答

  • 2

    我认为这里的主要问题是照明 . 在应用canny边缘检测器之前,尝试直方图均衡,然后进行一些平滑处理 . 您将需要拍摄大量图像并估计适用于大多数图像的canny和Hough参数 . 找不到导致100%检测率的值是不可能的 .

    另一种选择是使用Haar或LBP功能训练您想要识别的对象的物体探测器 . 如果对象是一个圆圈,这似乎有点矫枉过正 .

  • 1

    这种检测的更好解决方案是在C语言中使用blob检测或在MATLAB中使用regionprops,并根据面积和圆度计算过滤掉 .

相关问题