Halcon各个算子角度计算方式

一、区域(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算子后,后续算子涉及到角度的为:

1
select_contours_xld(): 'direction' 角度范围为0-π,会把输入的值自动转换到0-π之间,下面两个代码效果是一样的
1
2
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)
1
get_contour_attrib_xld(ObjectSelected3,  'edge_direction' , Attrib):<br>    'edge_direction' 角度范围为0-2*π,边界方向的定义如下:沿着边界方向,左边为亮区域,右边为暗区域。比如:对于垂直直线,若从左到右极性为从暗到亮,则对应角度为270°,否则则为90°

  

猜你喜欢

转载自www.cnblogs.com/wwwbdabc/p/12326125.html