首页 理论教育 如何优化圆形检测实现的 threshold 和 y

如何优化圆形检测实现的 threshold 和 y

时间:2023-06-25 理论教育 版权反馈
【摘要】:threshold控制从霍夫变换中监测到的圆。应用程序的正确的threshold值取决于图像。y_margin控制所检测的圆的合并。利用find_circles方法检测圆形物体的例程如下:# image.circle对象有四个值:x,y,r(半径)和magnitude。magnitude是检测圆的强度,值越高越好。缩小测试圆半径的数值可以提升搜索性能。如果视野中检测到的圆过多,需要增大阈值;相反,如果视野中检测到的圆过少,需要减少阈值。图4.2对圆形进行检测的情况

如何优化圆形检测实现的 threshold 和 y_margin 值

Python视觉库中提供image.find_circles([roi[,x_stride=2[,y_stride=1[,threshold=2000[,x_margin=10[,y_margin=10[,r_margin=10[,r_min=2[,r_max[,r_step=2]]]]]]]]]])方法,使用霍夫变换在图像中查找圆。返回一个image.circle对象列表。

其中,roi是一个用以搜索的矩形的感兴趣区域(x,y,w,h),图像操作范围仅限于roi区域内的像素。如果未指定,默认的roi即整幅图像。

x_stride是霍夫变换时需要跳过的x像素的数量。若已知圆较大,可增加x_stride。

y_stride是霍夫变换时需要跳过的y像素的数量。若已知圆较大,可增加y_stride。

threshold控制从霍夫变换中监测到的圆。只返回大于或等于threshold的圆。应用程序的正确的threshold值取决于图像。注意:一个圆的大小(magnitude)是组成圆所有索贝尔滤波像素大小的总和。

x_margin控制所检测的圆的合并。圆像素为x_margin、y_margin和r_margin的部分合并。

y_margin控制所检测的圆的合并。圆像素为x_margin、y_margin和r_margin的部分合并。

r_margin控制所检测的圆的合并。圆像素为x_margin、y_margin和r_margin的部分合并。

利用find_circles方法检测圆形物体的例程如下:

# image.circle对象有四个值:x,y,r(半径)和magnitude。magnitude是检测圆的强度,值越高越好。

# roi是一个用以搜索的矩形区域(x,y,w,h),图像操作范围仅限于roi区域内的像素。如果未指定,默认的roi即整幅图像。

# x_stride是霍夫变换时需要跳过的x像素的数量。若已知圆较大,可增加x_stride。(www.xing528.com)

# y_stride是霍夫变换时需要跳过的y像素的数量。若已知直线段较长,可增加y_stride。

# threshold控制从霍夫变换中监测到的圆。只返回大于或等于阈值的圆。一个圆的大小是组成圆的所有索贝尔滤波像素大小的总和。

#margin的分量x_margin、y_margin和r_margin用来控制所检测的圆的合并。

#r_min,r_max和r_step用来控制测试圆的半径。缩小测试圆半径的数值可以提升搜索性能。

#阈值threshold=3500比较合适。如果视野中检测到的圆过多,需要增大阈值;相反,如果视野中检测到的圆过少,需要减少阈值。

for c in img.find_circles(threshold=2500,x_margin=10,y_margin=10,r_margin=10,r_min=2,r_max=100,r_step=2):

程序调试通过后,运行情况如图4.2所示。

图4.2 对圆形进行检测的情况

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈