参考论文
《一种改进的随机圆检测算法 》-光电工程
数据结构
//圆信息
struct CircleInfo
{
CvPoint circlecentre; //圆心
double raduis; //半径
};//点信息
struct CvPoint
{
int x;
int y
};CircleInfo* GetCircle(CvPoint point1,CvPoint point2,CvPoint point3)
{
CircleInfo *circle3point;
circle3point = new CircleInfo;
double mat1,mat2,mat3 ;
mat1 = ((point2.x*point2.x +point2.y*point2.y)-(point1.x*point1.x +point1.y*point1.y))*(2*(point3.y-point1.y))-
((point3.x*point3.x +point3.y*point3.y)-(point1.x*point1.x +point1.y*point1.y))*(2*(point2.y-point1.y));
mat2 = (2*(point2.x-point1.x))*((point3.x*point3.x+point3.y*point3.y)-(point1.x*point1.x +point1.y*point1.y))-
(2*(point3.x-point1.x))*((point2.x*point2.x+point2.y*point2.y)-(point1.x*point1.x +point1.y*point1.y));
mat3 = 4*((point2.x-point1.x)*(point3.y-point1.y) - (point3.x-point1.x)*(point2.y-point1.y));
circle3point->circlecentre.x = mat1/mat3;
circle3point->circlecentre.y = mat2/mat3;
circle3point->raduis = sqrt((double)((point1.x-circle3point->circlecentre.x)*(point1.x-circle3point->circlecentre.x) +
(point1.y-circle3point->circlecentre.y)*(point1.y-circle3point->circlecentre.y)));
return circle3point;
}
本文详细介绍了《一种改进的随机圆检测算法》的研究成果,包括圆信息的结构定义、点信息的结构定义以及实现算法的关键步骤。通过计算三个点到圆心的距离,实现了圆的精确检测。
1418

被折叠的 条评论
为什么被折叠?



