Halcon XLD: eXtended Line Descriptions 亚像素轮廓

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

 

已标记关键词 清除标记
相关推荐
简介 笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级、中级、高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情、执着,对IT的憧憬、向往!此时此景,笔者只专注Android、Iphone等移动平台开发,看着这些源码心中有万分感慨,写此文章纪念那时那景! Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除,从账户中取出amt,如果amt>账户余额抛出异常,一个实体Bean可以表示不同的数据实例,我们应该通过主键来判断删除哪个数据实例…… ejbCreate函数用于初始化一个EJB实例 5个目标文件,演示Address EJB的实现 ,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口函数得到远程接口的引用,用远程接口的引用访问EJB。 EJB中JNDI的使用源码例子 1个目标文件,JNDI的使用例子,有源代码,可以下载参考,JNDI的使用,初始化Context,它是连接JNDI树的起始点,查找你要的对象,打印找到的对象,关闭Context…… ftp文件传输 2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户可以在终端上直接地使用它,但是它的主要作用是供程序使用的。本规范尝试满足大型主机、微型主机、个人工作站、和TACs 的不同需求。例如,容易实现协议的设计。 Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天通信演示代码 2个目标文件,一个服务器,一个客户端。 Java Telnet客户端实例源码 一个目标文件,演示Socket的使用。 Java 组播组中发送和接受数据实例 3个目标文件。 Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密   Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。   设定字符串为“张三,你好,我是李四”   产生张三的密钥对(keyPairZhang)   张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节   通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后的公钥,将其解码,李四用张三的公钥加密信息,并发送给李四,张三用自己的私钥解密从李四处收到的信息…… Java利用DES私钥对称加密代码实例 同上 java聊天室 2个目标文件,简单。 java模拟掷骰子2个 1个目标文件,输出演示。 java凭图游戏 一个目标文件,简单。 java求一个整数的因子 如题。 Java生成密钥的实例 1个目标文件 摘要:Java源码,算法相关,密钥   Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥,通常应对私钥加密后再保存、如何从文件中得到公钥编码的字节数组、如何从字节数组解码公钥。 Java数据压缩与传输实例 1个目标文件 摘要:Java源码,文件操作,数据压缩,文件传输   Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲
©️2020 CSDN 皮肤主题: 成长之路 设计师:Amelia_0503 返回首页