一、區域(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°