一、区域(Region)
1)elliptic_axis() 计算区域的方向(-π/2<θ<=π/2)
这个算子是通过moments_region_2nd()算子,使用图形的Geometric Moments(几何矩)来找到的区域质心和区域方向。水平方向为角度0的方向,区域的方向一般是指长轴与水平方向的夹角(注意:gen_ellipse和elliptic_axis并不是可逆操作,通过gen_ellipse得到的椭圆区域,再用elliptic_axis计算会有误差,不是特别理解)
2)orientation_region() 计算区域的方向(-π<=θ<π)
计算方法同elliptic_axis ,当轮胎上与重心最大距离的点,横坐标在重心左边时,则计算得到的角度值+π
3) gen_rectangle2计算区域的方向(-π/2<θ<=π/2)
二、轮廓(XLD)
1)line_orientation()计算线的方向(-π/2<θ<=π/2)
2)angle_ll()计算线的角度(-π<=θ<π)
3)gen_measure_rectangle2获得测量矩,角度范围(--π<θ<=π)
4)执行edges_sub_pix算子后,后续算子涉及到角度的为:
select_contours_xld():'direction'角度范围为0-π,会把输入的值自动转换到0-π之间,下面两个代码效果是一样的
select_contours_xld (ContoursSplit, LineContour1, 'direction', 1.45+π, 1.65+π, -0.5, 0.5) select_contours_xld (ContoursSplit, LineContour2, 'direction', 1.45, 1.65, -0.5, 0.5)
get_contour_attrib_xld(ObjectSelected3, 'edge_direction', Attrib):
'edge_direction'角度范围为0-2*π,边界方向的定义如下:沿着边界方向,左边为亮区域,右边为暗区域。比如:对于垂直直线,若从左到右极性为从暗到亮,则对应角度为270°,否则则为90°