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
功能:返回一个XLD多边形(polygon)数据。
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