XLD: eXtended Line Descriptions 亞像素輪廓
1、何謂亞像素?
面陣錄影機的成像面以像素為最小機關。例如某CMOS攝像晶片,其像素間距為5.2微米。錄影機拍攝時,将實體世界中連續的圖像進行了離散化處理。到成像面上每一個像素點隻代表其附近的顔色。至于“附近”到什麼程度?就很困難解釋。兩個像素之間有5.2微米的距離,在宏觀上可以看作是連在一起的。但是在微觀上,它們之間還有無限的更小的東西存在。這個更小的東西我們稱它為“亞像素”。實際上“亞像素”應該是存在的,隻是硬體上沒有個細微的傳感器把它檢測出來。于是軟體上把它近似地計算出來。為了最大限度利用圖像資訊來提高分辨率,有人提出了Sub-Pixel概念。意思是說,在兩個實體像素之間還有像素,稱之為Sub-Pixel,
如果原始圖像是n行m列的,希望做k細分的Sub-Pixel,這樣就有新的行N和列M,有
N = k*n
M = k*m
原來相鄰4個像素包含的區域現在變成了(k+1)*(k+1)的區域了;要填滿這個(k+1)*(k+1)的區域,從一個小正方形映照到一個大正方形。
2、何謂亞像素精度?
亞像素精度是指相鄰兩像素之間細分情況。輸入值通常為二分之一,三分之一或四分之一。這意味着每個像素将被分為更小的單元進而對這些更小的單元實施插值算法。例如,如果選擇四分之一,就相當于每個像素在橫向和縱向上都被當作四個像素來計算。
由上圖可知,檢測結果為對“插值後圖像”處理的結果,由于圖像分辨率提高了一倍,故用于表示小圓直徑的像素數量也增加了一倍,這就是一階亞像素元技術。我們在每兩個像素之間插值一個像素,這樣本來是120萬像素的圖像,插值後的實際處理圖像就是240萬像素了,相當于把一個像素拆分為1/2,同理依次有1/3拆分、1/4拆分等,一些優秀的算法甚至可以達到1/100拆分,同時還能保證處理速度。亞像素元技術相對于傳統方案,檢測精度是提升了1倍嗎?
3、3、使用亞像素測量,系統應注意什麼?
在圖像上,通過算法對圖像插值,是不存在任何問題的。然而,一個重大的誤差來源是,成像系統。
a、如果錄影機沒有進行幾何标定,以亞像素準确度提取邊緣是無意義的。假設在整個視野内某鏡頭的畸變小于1%,這意味着對于一幅640x480圖象,邊緣偏移4像素。
b、圖象透視失真造成的影響。任何時候如果在安裝錄影機時不能保證其垂直于被測物體,那麼都會引發透視失真。如果對錄影機進行了标定,确定了錄影機内方位參數以及被測物體所在平面的外方位參數,那麼通過此标定就能将圖象中得到的測量結果轉換成世界坐标上的測量結果。
為了得到準确的亞像素精度級的測量,首先錄影機和圖象采集裝置的灰階值響應應該是線形的。為了保證這個前提,應對錄影機進行輻射标定。此外,被選用的鏡頭其像差(如彗差和像散應該非常小)。還應該使用單色光以避免色差的影響。另外,錄影機的填充因子應該盡可能的大以避免“盲點”的影響。最後,應對相繼進行幾何标定以擷取有意義的測量結果。
Halcon實踐
1、亞像素精度門檻值分割
threshold_sub_pix(Image : Border : Threshold : )
2、亞像素輪廓查找
edges_sub_pix(Image : Edges : Filter, Alpha, Low, High : )
zero_crossing_sub_pix(Image : ZeroCrossings : : )
3、傳回輪廓點的行列坐标
get_contour_xld(Contour : : : Row, Col)
4、将亞像素輪廓分割為值線段、圓、或圓弧
segment_contours_xld(Contours : ContoursSplit : Mode, SmoothCont, MaxLineDist1, MaxLineDist2 : )
5、其他
fit_circle_contour_xld,gen_circle_contour_xld,get_deformable_model_contours
19.1 Access
1. get_contour_xld
功能:傳回XLD輪廓(contour)的坐标。
2. get_lines_xld
功能:傳回一個XLD多邊形(polygon)資料。
3. get_parallels_xld
功能:傳回一個XLD并行資料。
4. get_polygon_xld
19.2 Creation
1. gen_contour_nurbs_xld
功能:将一個NURBS曲線轉換為一個XLD(密度?)輪廓(contour)。
2. gen_contour_polygon_rounded_xld
功能:根據一個多邊形(polygon)(以元組形式給出)的圓形角點建立一個XLD輪廓(contour)。
3. gen_contour_polygon_xld
功能:根據一個多邊形(polygon)(以元組形式給出)建立一個XLD輪廓(contour)。
4. gen_contour_region_xld
功能:根據區域建立XLD輪廓(contour)。
5. gen_contours_skeleton_xld
功能:将架構轉換為XLD輪廓(contour)。
6. gen_cross_contour_xld
功能:根據每個輸入點交叉的形狀創鍵一個XLD輪廓(contour)。
7. gen_ellipse_contour_xld
功能:根據相應的橢圓弧建立一個XLD輪廓(contour)。
8. gen_parallels_xld
功能:提取并行XLD多邊形(polygon)。
9. gen_polygons_xld
功能:根據多邊形近似建立XLD輪廓(contour)。
10. gen_rectangle2_contour_xld
功能:建立一個矩形XLD輪廓(contour)。
11. mod_parallels_xld
功能:提取一個包括同質區域的并行XLD多邊形(polygon)。
19.3 Features
1. area_center_points_xld
功能:被看做點雲的輪廓(contour)和多邊形(polygon)的面積和重心。
2. area_center_xld
功能:輪廓(contour)和多邊形(polygon)的面積和重心。
3. circularity_xld
功能:影響輪廓(contour)或多邊形(polygon)圓度(與圓相近的程度)的形狀系數。
4. compactness_xld
功能:影響輪廓(contour)或多邊形(polygon)緻密性的形狀系數。
5. contour_point_num_xld
功能:傳回一個XLD輪廓(contour)中點的數目。
6. convexity_xld
功能:影響輪廓(contour)或多邊形(polygon)凹凸性的形狀系數。
7. diameter_xld
功能:兩個輪廓(contour)或多邊形(polygon)點間的最大距離。
8. dist_ellipse_contour_points_xld
功能:計算所有輪廓(contour)内的點到一個橢圓的距離。
9. dist_ellipse_contour_xld
功能:輪廓到一個橢圓的距離。
10. dist_rectangle2_contour_points_xld_
功能:計算所有輪廓(contour)内的點到一個矩形的距離。
11. eccentricity_points_xld_
功能:被看做點雲的輪廓(contour)或多變形(polygon)的Anisometry。
12. eccentricity_xld
功能:源自輪廓(contour)或多邊形(polygon)的橢圓參數的形狀系數。
13. elliptic_axis_points_xld
功能:被看做點雲的輪廓(contour)或多邊形(polygon)的等價橢圓參數。
14. elliptic_axis_xld
功能:輪廓(contour)或多變形(polygon)的等價橢圓參數。
15. fit_circle_contour_xld
功能:根據圓周近似擷取XLD輪廓(contour)。
16. fit_ellipse_contour_xld
功能:根據橢圓或橢圓弧近似擷取XLD輪廓(contour)。
17. fit_line_contour_xld
功能:根據分割線近似擷取XLD輪廓(contour)。
18. fit_rectangle2_contour_xld
功能:用矩形來比對XLD輪廓(contour)。
19. get_contour_angle_xld
功能:為每個輪廓(contour)點計算一個XLD輪廓(contour)方向。
20. get_contour_attrib_xld
功能:傳回一個XLD輪廓(contour)的點的特征值。
21. get_contour_global_attrib_xld
功能:傳回一個XLD輪廓(contour)的全局特征值。
22. get_regress_params_xld
功能:傳回XLD輪廓(contour)參數。
23. info_parallels_xld
功能:傳回被XLD多邊形(polygon)包圍的區域的灰階值的資訊。
24. length_xld
功能:輪廓(contour)或多邊形(polygon)的長度。
25. local_max_contours_xld
功能:選擇局域最大灰階值的XLD輪廓(contour)。
26. max_parallels_xld
功能:合并具有相同多邊形(polygon)的重建XLD并行。
27. moments_any_points_xld
功能:被看做點雲的輪廓(contour)或多變形(polygon)的任意幾何時刻(moments)。
28. moments_any_xld
功能:輪廓(contour)或多變形(polygon)的任意集合時刻(moments)。
29. moments_points_xld
功能:被看做點雲的輪廓(contour)或多變形(polygon)的幾何時刻(moments)M20,_M02,_和_M11。
30. moments_xld
功能:輪廓(contour)或多變形的幾何時刻(moments)M20,_M02,_and_M11。
31. orientation_points_xld
功能:被看做點雲的輪廓(contour)或多變形(polygon)的方向。
32. orientation_xld
功能:輪廓(contour)或多變形(polygon)的方向。
33. query_contour_attribs_xld
功能:傳回一個XLD輪廓(contour)定義的屬性的名字。
34. query_contour_global_attribs_xld
功能:傳回一個XLD輪廓(contour)定義的全局屬性的名字。
35. select_contours_xld
功能:根據一些特征選擇XLD輪廓(contour)。
36. select_shape_xld
功能:根據形狀特征選擇輪廓(contour)或多邊形(polygon)。
37. select_xld_point
功能:選擇包括給定點在内的所有的輪廓(contour)或多邊形(polygon)。
38. smallest_circle_xld
功能:輪廓(contour)或多邊形(polygon)的最小封閉圓。
39. smallest_rectangle1_xld
功能:平行與輪廓(contour)或多邊形(polygon)的坐标軸的封閉矩形。
40. smallest_rectangle2_xld
功能:輪廓(contour)或多邊形(polygon)任意方向的最小封閉矩形。
41. test_self_intersection_xld
功能:測試輪廓(contour)或多邊形(polygon)自身相交性。
42. test_xld_point
功能:測試一個或多個包括給定點在内的輪廓(contour)或多邊形(polygon)。
19.4 Geometric-Transformations
1. affine_trans_contour_xld
功能:對XLD輪廓(contour)進行一個任意二維仿射變換。
2. affine_trans_polygon_xld
功能:對XLD多邊形(polygon)進行一個任意仿射變換。
3. gen_parallel_contour_xld
功能:計算一個XLD輪廓(contour)的平行輪廓(contour)。
4. polar_trans_contour_xld
功能:将一個環狀弧中的輪廓(contour)轉換為極坐标形式。
5. polar_trans_contour_xld_inv
功能:将極坐标下的輪廓(contour)轉換為笛卡爾坐标下的形式。
6. projective_trans_ontour_xld
功能:對一個XLD輪廓(contour)進行射影變換。
19.5 Sets
1. difference_closed_contours_xld
功能:閉合輪廓(contour)的差異。
2. difference_closed_polygons_xld_
功能:閉合多邊形(polygon)的差異。
3. intersection_closed_contours_xld
功能:閉合輪廓(contour)的交集。
4. intersection_closed_polygons_xld
功能:閉合多邊形(polygon)的交集。
5. symm_difference_closed_contours_xld
功能:閉合輪廓(contour)的對稱差異。
6. symm_difference_closed_polygons_xld
功能:閉合多邊形(polygon)的對稱差異。
7. union2_closed_contours_xld
功能:閉合輪廓(contour)的并集。
8. union2_closed_polygons_xld
功能:閉合多邊形(polygon)的并集。
19.6 Transformation
1. add_noise_white_contour_xld
功能:向XLD輪廓(contour)中加入噪聲。
2. clip_contours_xld
功能:修剪一個XLD輪廓(contour)。
3. close_contours_xld
功能:關閉一個XLD輪廓(contour)。
4. combine_roads_xld
功能:合并兩個等級分辨率中的路(road)。
5. crop_contours_xld
功能:切割一個XLD輪廓(contour)。
6. merge_cont_line_scan_xld
功能:合并連續線掃描圖像中的XLD輪廓(contour)。
7. regress_contours_xld
功能:計算一個XLD輪廓(contour)回歸線的參數。
8. segment_contours_xld
功能:将XLD輪廓(contour)分割為分割線和圓周或橢圓弧。
9. shape_trans_xld
功能:改變輪廓(contour)或多邊形(polygon)的形狀。
10. smooth_contours_xld
功能:XLD輪廓(contour)的平滑。
11. sort_contours_xld
功能:根據相關位置分類輪廓(contour)。
12. split_contours_xld
功能:在主要點分割XLD輪廓(contour)。
13. union_adjacent_contours_xld
功能:合并終點連接配接在一起的輪廓(contour)。
14. union_cocircular_contours_xld
功能:合并屬于同一個圓周的輪廓(contour)。
15. union_collinear_contours_ext_xld
功能:合并位于同一條直線上的輪廓(contour)(由附加函數操作)。
16. union_collinear_contours_xld
功能:合并位于同一條直線上的輪廓(contour)。
17. union_straight_contours_histo_xld
功能:合并到給定線有相似距離的相鄰直線輪廓(contour)。
18. union_straight_contours_xld
功能:合并具有相似方向的相鄰直線輪廓(contour)。
---
參考文獻
https://www.cnblogs.com/liuzebei/p/5458566.html http://www.it610.com/article/3936372.htm https://blog.csdn.net/pengjc2001/article/details/55095023