区域和轮廓在计算中总是互相交替使用,因此,了解好轮廓,能够更好地解决区域问题。本篇介绍三个获取外轮廓的例子。
功能:查询突起的外表作为轮廓(contour)。
- read_image (Image, 'f:/images/DOTS/block.jpg')
- rgb1_to_gray(Image,gray)
-
- get_image_size(gray,width,height)
- * gen_rectangle1(rect,0,0,height,width)
- fast_threshold (gray,regin,0, 50 , 7)
- get_region_convex(regin, row, col)
- gen_image_const(BlkImage,'byte',width,height)
-
- for I:=0 to |row|-1 by 1
- tmpRow :=row[I]
- tmpCol :=col[I]
- set_grayval(BlkImage, tmpRow, tmpCol, 228)
- endfor
- dev_display(BlkImage)
- disp_polygon(3600, row, col)
原图:

显示突出点:

将突出点连接的图形为:


通过散列点坐标,生成一个区域,该区域是轮廓条区域。通过该区域,可以生成亚像素轮廓线。如(上图的红色线状区域)。
gen_contour_nurbs_xld 生成近似 NURBS 曲线(非均匀有理 B 样条曲线)的 XLD 轮廓。 NURBS 曲线由其度数、控制多边形(通过行和列)、权重向量和节点向量指定。(上图的绿色线状区域)。
曲线的度数决定了曲线的可微性等级。曲线位于其控制多边形 (Rows,Cols) 的凸包内。权重中的权重决定了曲线被各个控制点(行、列)吸引的程度。如果选择“自动”,则会生成对所有控制点具有相同权重的权重向量。 Knots 向量描述了曲线的域。通常,此参数可以设置为“自动”。
生成的 Contour 的精度取决于两个参数 MaxDistance 和 MaxError。 MaxDistance 限制两个后续 Contour 点的最大距离。生成的 Contour 和实际 NURBS 曲线之间的最大距离限制为 MaxError。默认情况下,近似值必须满足这两个约束,但可以将这些参数之一设置为“省略”。选择的 MaxError 和 MaxDistance 越低,曲线的近似值就越好。请注意,所有等高线点都准确地位于曲线上(数值不准确除外)。