Python 检测图像中的圆形段

Python 检测图像中的圆形段,python,matlab,detection,shapes,hough-transform,Python,Matlab,Detection,Shapes,Hough Transform,我正在尝试使用图像中可见的圆切片来确定圆参数。我想知道半径,中心坐标,画一个完整的圆(当然是在大图上)。我尝试使用imfindcircles和Hough变换。不幸的是,看起来圆的切片不够大,算法无法将其识别为完整的圆 我已经改变了灵敏度、阈值、Rmin、Rmax,甚至方法,但仍然没有发生任何变化。如果不是在Matlab中,那么可能是在Python中,我如何检测这个圆呢?这不是Hough适合的问题类型,但它实际上比那些问题简单得多。你需要在边缘得到一些像素(找到白色的像素,有一个黑色的邻居),得

我正在尝试使用图像中可见的圆切片来确定圆参数。我想知道半径,中心坐标,画一个完整的圆(当然是在大图上)。我尝试使用imfindcircles和Hough变换。不幸的是,看起来圆的切片不够大,算法无法将其识别为完整的圆


我已经改变了灵敏度、阈值、Rmin、Rmax,甚至方法,但仍然没有发生任何变化。如果不是在Matlab中,那么可能是在Python中,我如何检测这个圆呢?

这不是Hough适合的问题类型,但它实际上比那些问题简单得多。你需要在边缘得到一些像素(找到白色的像素,有一个黑色的邻居),得到它们的坐标列表,然后通过这些坐标拟合一个圆。如果你只有3个点,那么这个配合就微不足道了。如果你使用更多的点,你需要做一个最小的下蹲配合,但你会得到更精确的结果。@CrisLuengo我也在考虑这个问题。但是,创建这样一个符合这些坐标的圆的最佳方法是什么呢?我需要一个函数,它可以画出一个圆圈,穿过图片上的三个给定点。。
clear all;
close all;

figure();
image = imread('circle3.jpg');
imshow(image);

Rmin = 10;
Rmax = 10000;

[centersBright, radiiBright] = imfindcircles(image,[Rmin 
Rmax],'ObjectPolarity','bright','Method','TwoStage','Sensitivity',0.98,'EdgeThreshold',0.9);

viscircles(centersBright, radiiBright,'Color','b');