機器視覺halcon學習系列---XLD的介紹和使用

機器視覺halcon學習系列---XLD的介紹和使用

定義

XLD是eXtended Line Description的縮寫,中文你可以直譯過來解釋為 擴展線的描述,XLD可以來表達輪廓和多邊形數據。XLD屬於圖像變量,輪廓是一系列的二維點組成,一系列點連接成線,這裡的可以看到這些連接的線是從像素中穿過去的,我們叫這是亞像素精度(sub_pixel),在halcon中,XLD不僅包括點集,而且XLD裡面保存了局部和全局的屬性,典型的屬性有點的幅度以及輪廓分割的迴歸參數

機器視覺halcon學習系列---XLD的介紹和使用

XLD輪廓

在halcon中,還可以對輪廓XLD進行一系列的處理,例如可以通過select_shape_xld選擇特定的特徵對象XLD,還可以segment_contour_xld來把輪廓分割,還可以把union_*_contours_xld一系列算子對輪廓進行合併等操作。

我們認識了XLD之後,我們可以使用XLD拿來幹嘛呢? XLD可以用來做測量,XLD創建模板,XLD可以用來擬合直線等。

獲取XLD

在獲取XLD中,一種是交互式畫XLD,draw_xld,這種方式在實際基本沒有使用,意義不大。還有一種是通過read_contour_xld_dxf讀取XLD,這是通過CAD畫的輪廓圖,或者通過write_contour_xld_dxf寫入的輪廓,這裡面可能在某些應用中會使用,前期通過CAD建模,讀取到XLD後我們就可以拿來用作匹配的輪廓。

機器視覺halcon學習系列---XLD的介紹和使用

xld保存

機器視覺halcon學習系列---XLD的介紹和使用

dxf輪廓轉換

還有一種方式是直接通過算法來獲取XLD輪廓,在這裡是基於亞像素的輪廓,對應著有彩色圖像和灰度圖像的獲取。edge_color_sub_pix、edges_sub_pix,這兩個算子我們會經常使用。

我們還可以通過gen_contour_*_xld系列算子來轉換成XLD,只不過,在這裡有些是亞像素精度,有些是像素精度。

當我們得到輪廓後,還需要對輪廓進行修飾,常用的使用select_shap_xld,主要的特徵有四類,基本、形狀、點、moments等特徵。

機器視覺halcon學習系列---XLD的介紹和使用

select_shape_xld

有時候也需要對輪廓進行分割,通過segment_contours_xld來進行分割,獲取特定輪廓的座標點通過get_contour_xld算子獲取,這個算子輸出輪廓的座標點集,我們可以使用這些點集來進行特定的應用,可以是擬合直線、擬合圓、判斷最大最小值,這就是你的業務邏輯的事情了。

總結一下,XLD是halcon裡面的一種數據格式,把點集封裝了一下,點集連接成線,這些點集有一些自己的特性,halcon已經封裝好了,XLD在應用中是廣泛使用的一種工具,用來分割圖像特徵,學會使用XLD工具會給我們工作帶來極大的便利。


分享到:


相關文章: