建立3d位姿
( : : transx, transy, transz, rotx, roty, rotz, orderoftransform, orderofrotation, viewoftransform : pose)
輸入:輸出:
1.create_pose建立3d姿勢-pose。 姿勢描述了剛性3d變換,即由任意平移和旋轉組成的變換,具有6個引數:transx,transy和transz分別指定沿x,y和z軸的平移,而rotx ,roty和rotz描述旋轉。
2.3d姿態通常以兩種方式使用:首先,描述乙個座標系相對於另一座標係的位置和方向(例如,零件座標系相對於相機座標系的姿態,簡而言之:零件相對姿態;
其次是描述如何在兩個座標系之間轉換座標(例如,將點從零件座標轉換為攝像機座標)。
3.方向表示(旋轉)
1)圍繞任意軸的3d旋轉可以多種方式由3個引數表示。 halcon允許您使用引數orderofrotation在其中三個中進行選擇:如果傳遞值』gba』,則旋轉將通過以下圍繞三個軸的旋轉鏈來描述(有關旋轉矩陣rx,ry,rz的內容,請參見hom_mat3d_rotate):
2)rgba 在文獻中表示為「 yaw-pitch-roll 翻滾-偏航-仰俯」。
請注意,您可以通過兩種方式「讀取」該鏈:如果從右側開始,則始終相對於全域性(即固定或「舊」)座標系進行旋轉。 因此,可以理解為:首先繞著z軸旋轉,然後繞著「舊」 y軸旋轉,最後繞著「舊」 x軸旋轉。 相反,如果您從左到右閱讀,則相對於區域性(即「新」)座標系進行旋轉。 然後,對應於以下內容:首先繞x軸旋轉,繞「新」 y軸旋轉,最後繞「新(等)」 z軸旋轉。
從右到左讀取對應於以下運算元呼叫順序:
hom_mat3d_identity (hommat3dident)
hom_mat3d_rotate (hommat3dident, rotz, 'z', 0, 0, 0, hommat3drotz)
hom_mat3d_rotate (hommat3drotz, roty, 'y', 0, 0, 0, hommat3drotyz)
hom_mat3d_rotate (hommat3drotyz, rotx, 'x', 0, 0, 0, hommat3dxyz)
相反,從左向右讀取對應於以下運算元呼叫順序:
hom_mat3d_identity (hommat3dident)
hom_mat3d_rotate_local (hommat3dident, rotx, 'x', hommat3drotx)
hom_mat3d_rotate_local (hommat3drotx, roty, 'y', hommat3drotxy)
hom_mat3d_rotate_local (hommat3drotxy, rotz, 'z', hommat3dxyz)
3)在orderofrotation中傳遞「 abg」時,旋轉對應於以下鏈:
rabg在文獻中表示為「 roll-pitch-yaw 翻滾-偏航-仰俯」。
4)如果在orderofrotation中傳遞「rodriguez」,則旋轉引數rotx,roty和rotz將被解釋為所謂的rodriguez旋轉向量的x,y和z分量。 向量的方向定義為(任意)旋轉軸。 向量的長度通常定義為正方向的旋轉角度。 此處,使用rodriguez向量的變體,其中向量的長度定義為旋轉角一半的正切值:
請注意,這些3d位姿可能是模稜兩可的,這意味著齊次變換矩陣可以具有多個位姿表示形式。 例如,對於rgba (b=±90)以下位姿對應於相同的齊次變換矩陣:
// 兩種變換形式下,最終變換後的座標位姿一樣的
create_pose(0, 0, 0, 30 , 90, 54, 'rp+t', 'gba', 'point', pose1)
create_pose(0, 0, 0, 17, 90, 67, 'rp+t', 'gba', 'point', pose2)
如果這會導致問題,則可以改用齊次變換矩陣或四元數(axis_angle_to_quat)表示旋轉。
4.對應的齊次變換矩陣
1)您可以使用運算子 pose_to_hom_mat3d 獲得與姿勢相對應的齊次變換矩陣。 在標準定義中,這是以下齊次變換矩陣,可以將其分解為兩個單獨的矩陣,乙個用於平移(h(t)),乙個用於旋轉(h(r)):
2)座標轉換
下面的等式描述了如何使用位姿(pose)或更確切地說,即其相應的齊次變換矩陣2h1 (輸入和輸出點作為齊次向量,另請參見affine_trans_point_3d)將乙個點的從座標系1轉換為座標系2。 請注意,要將點從座標系1轉換為座標系2,請使用描述座標系1相對於座標系2的姿態的轉換矩陣(hommat3dfrom1in2)。
這對應於以下運算元呼叫:
pose_to_hom_mat3d(poseof1in2, hommat3dfrom1in2)
affine_trans_point_3d(hommat3dfrom1in2, p1x, p1y, p1z, p2x, p2y, p2z)
3)非標準位姿定義
到目前為止,我們已經描述了標準姿勢定義。 要建立此類姿勢,請為引數orderoftransform選擇(預設)值「 rp + t」,為viewoftransform選擇「 point」。 通過為這些引數指定其他值,您可以建立非標準位姿型別,我們將在下面簡要描述。 請注意,僅為了向後相容才支援這些表示型別。 我們強烈建議使用標準型別。
如果為orderoftransform選擇』r(p-t)』,則建立的位姿對應於以下變換鏈,即旋轉和平移的順序相反,並且平移取反:
如果為viewoftransform選擇』coordinate_system』,則轉換順序保持不變,但旋轉角度將被取反。 請注意,與其名稱相反,這並不等同於變換座標系
4)返回的資料結構
建立的3d姿勢以pose返回,該姿勢是長度為7的元組。 前三個元素包含平移引數transx,transy和transz,然後是旋轉引數rotx,roty和rotz。 最後乙個元素對使用引數orderoftransform,orderofrotation和viewoftransform選擇的姿勢的表示型別進行編碼。 下表列出了可能的組合。 如前所述,我們建議僅使用orderoftransform ='rp + t』和viewoftransform ='point』的表示型別(**0、2和4)。
您可以使用convert_pose_type將姿勢轉換為其他表示型別,並使用get_pose_type查詢型別。
halcon運算元學習
1.gen contour polygon xld contour row,col 功能 根據乙個多邊形 polygon 以元組形式給出 建立乙個xld輪廓 contour 輸出 contour 輸出建立的xld輪廓 輸入 row 輸入的行陣列 輸入 col 輸入的列陣列 例 gen contour...
halcon學習 measure 運算元
measure pair measure measure rehandle,sigma,threshold,transition,select rowedgefirst,columnedgefirst,amplitudefirst,rowedgesecond,columnedgesecond,amp...
Halcon運算元學習理解 threshold
threshold imagefilled,region,0,90 用來分割影象,運算元的原形是 threshold image region mingray,maxgray 其中 image是輸入影象 region是分割後的結果 mingray和maxgray是輸入的控制引數,分割的最小灰度值與最...