gpt4 book ai didi

opencv - 如何改进Hough Circle Transform以检测由散点组成的圆

转载 作者:太空宇宙 更新时间:2023-11-03 21:00:48 26 4
gpt4 key购买 nike

我有一个非常基本的代码,它使用 openCV 中的标准化 HoughCircles 命令来检测圆。但是,我的问题是我的数据(图像)是使用一种算法(出于数据模拟的目的)生成的,该算法在 r 的 +-15%(随机在此范围内)范围内绘制一个点(其中 r 是半径的圆,已随机生成为 5 到 10(实数)),并使用圆方程对 360 度进行计算。 (附上示例图像)。 http://imgur.com/a/iIZ1N现在使用 Hough circle 命令,我能够通过手动调整参数(通过设置轨迹栏,灵感来自相同性质的 github 代码)来检测一个半径大致相同的圆,但我想将这个过程自动化我有超过 1000 张图像,我想一遍又一遍地这样做。有更好的方法吗?或者,如果有人有任何建议,我将不胜感激,因为我是图像处理领域的初学者,并且拥有物理背景而不是 CS 背景。我的代码的粗略示例(下面没有轨迹栏等):

Mat img = imread("C:\\Users\\walee\\Documents\\MATLAB\\plot_2 .jpeg", 0);
Mat cimg,copy;
copy = img;
medianBlur(img, img, 5);
GaussianBlur(img, img, Size(1, 5), 1.1, 0);

cvtColor(img, cimg, COLOR_GRAY2BGR);
vector<Vec3f> circles;
HoughCircles(img, circles, HOUGH_GRADIENT,1, 10, 94, 57, 120, 250);
for (size_t i = 0; i < circles.size(); i++)
{
Vec3i c = circles[i];
circle(cimg, Point(c[0], c[1]), c[2], Scalar(0, 0, 255), 1, LINE_AA);
circle(cimg, Point(c[0], c[1]), 2, Scalar(0, 255, 0), 1, LINE_AA);
}
imshow("detected circles", cimg);
waitKey();
return 0;

最佳答案

如果所有图像都具有相同的性质(黑色轴和圆点),我建议执行以下操作:

1) 通过找到黑色元素移除轴并用背景替换它们

2) 将颜色反转为黑色背景

3) 执行形态学闭合以填充圆圈并创建更多实心点

4)(可选)如果点的密度高可以尝试应用另一种形态学操作,即膨胀使数据圈变薄

5)应用霍夫圆

关于opencv - 如何改进Hough Circle Transform以检测由散点组成的圆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42206292/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com