前面写的使用改进的最小二乘法拟合缺陷圆效果很好,但在小孔的圆心定位上效果大相径庭,原因可能是小孔边缘点坐标数少,同时小孔变形的影响也很大。在王术彬的论文《基于几何特征的圆心定位方法研究与应用》中学到两种方法。
一、直角三角形法
通过在圆内找到一个内接直角三角形,利用斜边的中点为圆心,斜边的一半为半径的性质实现小孔定位。
步骤:
- 随机找一个点为A,但最好是第 n / 3 个点,避免所选点位于水平和垂直线上,导致找不到后面两点;
- 沿A的 x 方向寻找垂直的B点;
- 沿A的 y 方向寻找水平的C点;
- 计算B、C点间的中点为圆心,距离为直径。
但该方法易受孔大小的限制,当孔过小时不能找到合适的B、C点,且只适用于完整圆中。
二、中垂线法
利用圆上三点可以构造两条弦,分别做弦的中垂线,两线交点即为圆心,求得半径。
步骤:
- 可取第一点为A,第 n / 3个点为B,第 2 * n / 3个点为C点;
- 求取两线的斜率和线上一点;
- 推导出交点计算公式,利用公式计算圆心:
x = double(y2 - y1 + k1 * x1 - k2 * x2) / (k1 - k2);
y = k1*(x - x1) + y1;
该方法较直角三角形法,计算稍微复杂,但适用范围更广。
三、结果显示