Halcon中关于角度计算的算子详解

  • 1、计算直线与水平轴之间的夹角

 angle_lx( : : Row1Column1Row2Column2 : Angle)

角度计算方式:将直线看作向量(有方向性),以直线与水平轴的交点为起点(旋转中心)。如果终点在水平轴上方,则夹角为逆时针旋转水平轴到向量的角度(带正号)。如果终点在水平轴下方,则夹角为顺时针旋转水平轴到向量的角度(带负号)。结果取决于定义线条的两点的顺序。

角度表示方式:弧度,-π<=Angle

  • 2、计算两条直线之间的夹角

 angle_ll( : : RowA1ColumnA1RowA2ColumnA2RowB1ColumnB1RowB2ColumnB2 : Angle)

角度计算方式:该算子计算原理与angle_lx类似,只不过把水平轴替换为任意直线B

角度表示方式:弧度,-π<=Angle<=π

  • 3、计算一条直线的方向

 line_orientation( : : RowBeginColBeginRowEndColEnd : Phi)

角度计算方式:当直线(无方向性)大致位于1、3象限的方向,角度为正。当直线大致位于2、4象限的方向,角度为负。

角度表示方式:弧度,-π/2<Phi<=π/2

  • 4、计算一条直线的参数

line_position( : : RowBeginColBeginRowEndColEnd : RowCenterColCenterLengthPhi)

角度计算方式:同算子 line_orientation

角度表示方式:弧度,-π/2<Phi<=π/2

  • 5、计算区域等效椭圆的参数

elliptic_axis(Regions : : : RaRbPhi)

角度计算方式:该区域等效椭圆的主轴(无方向性)相对于水平轴(有方向性)的角度。

角度表示方式:弧度,-π/2<Phi<=π/2

  • 6、计算区域的最小仿射外接矩形的参数

 smallest_rectangle2(Regions : : : RowColumnPhiLength1Length2)

角度计算方式:同算子elliptic_axis

角度表示方式:弧度,-π/2<Phi<=π/2

  • 7、计算区域的方向

orientation_region(Regions : : : Phi)

角度计算方式:计算原理基于算子elliptic_axis。此外,还计算了轮廓上离重心最大距离的点。如果此点的列坐标小于重心的列坐标,则elliptic_axis计算得到的角度值需要加上π。

角度表示方式:弧度,-π<=Phi

  • 8、计算contours 或 polygons的等效椭圆的参数

elliptic_axis_xld(XLD : : : RaRbPhi)

角度计算方式:计算原理同算子elliptic_axis。需要注意的是输入的contours 或 polygons不能自相交,如果他们不是闭合轮廓,那么在计算过程中会自动闭合,由此可能会产生自相交,从而导致最终的计算结果不准确。如果输入的轮廓存在自相交,可用elliptic_axis_points_xld算子代替。

角度表示方式:弧度,-π/2<Phi<=π/2

  • 9、计算contours 或 polygons的方向

 orientation_xld(XLD : : : Phi)

角度计算方式:计算原理同算子orientation_region。需要注意的是输入的contours 或 polygons不能自相交,如果他们不是闭合轮廓,那么在计算过程中会自动闭合,由此可能会产生自相交,从而导致最终的计算结果不准确。如果输入的轮廓存在自相交,可用orientation_points_xld算子代替。

角度表示方式:弧度,-π<Phi<=π

  • 总结

计算角度时,如果有方向性,角度范围一般是(-π,π)。如果没有方向性,角度范围一般是(-π/2,π/2)

 

 

你可能感兴趣的:(#,Halcon)