1. 程式人生 > 實用技巧 >VisionPro 座標空間樹(Coordinate Space Trees)

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;