halcon中什么是xld?
xld(eXtended Line Descriptions) 擴展的線性描述,它不是基於像素的,人們稱它是亞像素,只不過比像素更精確罷了,可以精確到像素內部的一種描述。
而image和region這些數據結構都是像素級別的。
亞像素精度數據可以通過亞像素閾值分割或者亞像素邊緣提取來獲得,這些處理得到的結果就是用亞像素輪廓來表示。
上面提到的亞像素輪廓其實在halcon中指的就是xld,它可以表示直線或多邊形,是一組有序的控制點集合,控制點順序用來說明彼此相連的關系。
當然亞像素輪廓可以分為兩種:
1.閉輪廓:首尾相交
2.開輪廓:首尾不相交
我們可以通過如下算子得到xld:
threshold_sub_pix(Image:Boreder:Threshold:):提取xld並不是沿着像素與像素邊界交界的地方,而是halcon經過某種計算得出的位置(一種描述)。其中Threshold為提取xld的閾 值,灰度值以閾值為界提取xld。
xld的特征部分和region有很多相同的部分:
1.基礎特征:xld面積,中心,寬高,左上角及右下角坐標。
2.形狀特征:圓度,緊密度,長度,矩形度,凸性,偏心率,蓬松度(bulkiness),外接圓半徑,外接矩形的方向及兩邊長度等。
3.雲點特征:雲點面積,中心,等效橢圓半軸及角度,雲點方向等。
4.幾何特征:二階矩等。
選取特定xld:
使用算子:
select_shape_xld(XLD:SelectedXLD:Features,Operation,Min,Max:)
作用:選擇特定形狀特征要求的xld輪廓或多邊形
XLD:要提取的XLD
SelectedXLD:提取到的XLD
Features:提取XLD的特征依據
Operation:特征之間的邏輯關系(and or)
Min,Max:特征值的要求范圍
Select_Contours_xld(Contours:SelectedContours:Features,Min,Max,Min2,Max2:)
作用:選擇多種特征要求的XLD輪廓 (如長度 開閉 方向 等特征,不支持多邊形)
Contours:要提取的XLD輪廓
SelectedContours:提取到的XLD輪廓
Features:提取XLD輪廓的依據(篩選)
Min,Max,Min2,Max2:特征值的范圍
area_center_xld(XLD:::Area,Row,Column,PointOrder)
作用:計算xld的面積和中心位置
下面來看看XLD的合並操作:
union_collinear_contours_xld:合並在同一直線的XLD
union_cocircular_contours_xld:合並在同圓的XLD
union_adjacent_contours_xld:合並鄰近的XLD
這些算子以后會詳細講解。
再來看看XLD的合並操作:
把XLD轉換成其他規則形狀的XLD,相應說明及算子和region的很類似:
1.convex hull
2.outer_circle
3.retangle1
4.retangle2
這四種類型轉換使用同一個算子:
shape_trans_xld(XLD:XLDTrans:Type:)
作用:轉換XLD的形狀,其中Type為轉換的類型如上面的四種類型
接下來看看XLD的分割操作:
算子:
segment_contours_xld(Contours:ContoursSplit:Mode,SmoothCont,Max,LineDist1,MaxLineDist2:)
具體操作以后再說。
然后就是XLD的擬合操作:(fit_***_contour_xld)
具體算子如下:
fit_line_contour_xld:擬合直線
fit_circle_contour_xld:擬合圓
fit_ellipse_contour_xld:擬合橢圓
fit_retangle2_contour_xld:擬合矩形