VisionPro 坐標空間樹(Coordinate Space Trees)


VisionPro中的每一幅圖像都有自己的坐標空間樹,即Coordinate Space Tree,坐標空間樹由根空間(root space)與用戶空間(user space )組成。在圖像處理過程中,通過根空間與用戶空間之間的坐標轉換實現圖像在不同坐標系下的轉換,例如,當進行Blob分析時可能需要在根空間下,在進行尺寸測量時,可能需要將坐標空間轉換到實際物理坐標系下。VisionPro中坐標空間樹可以通過圖像的CoordinateSpaceTree屬性獲取。
用戶空間(user space)一定能通過一個或者多個空間變換得到根空間。當用戶通過工具為圖像創建新的坐標空間時會自動更新圖像的坐標空間樹,默認情況下后續工具在新的坐標空間下運行,例如,通過CogCalibCheckBoardTool進行處理后得到新的用戶坐標系Checkerboard Calibration,默認情況下已新的坐標系為輸出空間,也可以在工具中指定所要輸出的坐標空間,如下圖中紅色矩形框所示。
在這里插入圖片描述
注意:生成的用戶坐標空間可以自己命名,但是同一副圖像由不同工具進行處理得到新的user Sacpe名字一定不能相同。
當前工具正在使用的坐標空間叫做選中空間(Selected Sapce),工具進行的測量、識別、計算等返回的結果都是在選中空間坐標系下的。當然,VisionPro工具允許使用者在既有的坐標空間中進行選擇,計算后得到的位置、距離等結果也可以轉換到其他坐標空間中。如下圖所示,每一個綠色的箭頭都代表一個根空間到用戶空間或者用戶空間到用戶空間坐標轉換。Calibrated mm是基於根空間的坐標空間,Label(mm)坐標空間在軟盤的標簽邊角位置以便於完成后續操作。
在這里插入圖片描述
像素空間與根空間
根空間並不是我們所謂的圖像像素空間,根空間是像素空間通過調整之后得到的,兩者之間的轉化關系VisionPro文檔未進行詳細說明。像素空間也不出現在坐標空間樹中。
在這里插入圖片描述
坐標空間樹提供 獲取在不同坐標系之間轉換關系的方法,可以實現數據在不同坐標系之間的自由轉換。圖像的GetTransFrom方法可以獲取兩個坐標系之間的轉換關系。

ICogTransform2D GetTransform(string toSpaceName,string fromSpaceName)
“.”表示當前選中的坐標空間;
“@”表示根空間。
“#”表示像素空間。

例如,下述代碼將Fixtured(即SelectedSpaceName)坐標空間的圓心轉換為checkboard Calibration坐標下的坐標值(該部分代碼截取自項目中Block腳本)

 1   //創建線性坐標轉換對象
 2  CogTransform2DLinear xform;  3     //通過當前Block的輸入圖像獲取轉換關系賦值給xform
 4   xform = mImage.GetTransform("Checkerboard Calibration",mImage.SelectedSpaceName) as CogTransform2DLinear;  5   double checkBoardx = 0;  6   double checkBoardy = 0;  7   //運行FindCircle工具得到圓心坐標
 8   mToolBlock.RunTool(mToolFindCirle0, ref message, ref result);  9    //通過轉換關系將圓心坐標轉換到checkboard Calibrated坐標空間
10   xform.MapPoint(mToolFindCirle0.Results.GetCircle().CenterX, mToolFindCirle0.Results.GetCircle().CenterY, out checkBoardx, out checkBoardy); 11   //為輸出終端賦值
12   mToolBlock.Outputs["X0"].Value = checkBoardx; 13   mToolBlock.Outputs["Y0"].Value = checkBoardy;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM