要测量一个圆的直径,可以先通过阈值筛选出黑色部分threshold (Rim, Dark, 0, 128),
然后将选中部分组合connection (Dark, DarkRegions),选择其中类圆度高的部分根据选中部分与圆的相似度筛选出圆型部分select_shape (DarkRegions, Circles, ['circularity','area'], 'and', [0.85,50], [1.0,99999]),
然后选择将所选的类圆区域扩大8.5个像素点作为一个区域,缩小8.5个像素点作为一个区域,然后将连个区域合并,去两个区域不同的部分,那么这个圆区域的边缘就在这个合并区域中,算子如下:
dilation_circle (Circles, ROIOuter, 8.5)
erosion_circle (Circles, ROIInner, 8.5)
difference (ROIOuter, ROIInner, ROI)
union1 (ROI, ROIEdges)
这时我们在用算子edges_sub_pix (RimReduced, Edges, 'lanser2', 0.3, 10, 20)提取其边缘轮廓。
用一个椭圆去近似它(这个圆形区域毕竟不是真正的圆,需要进行拟合)fit_ellipse_contour_xld (RelEdges, 'ftukey', -1, 2, 0, 200, 3, 2, Row, Column, Phi, Ra, Rb, StartPhi, EndPhi, PointOrder)从而得到这个区域的中点坐标 Row, Column,与x轴的角度Phi,半长轴Ra,半短轴Rb,开始角度StartPhi,结束角度EndPhi,
这是就可以计算圆的近似半径了