在机器视觉领域,常见的应用场景是工业。如:手机制造,汽车制造,等等。在这些零部件生产加工时,需要对工件进行定位。通过工件的边缘,拟合直线,可实现获取工件的坐标位置。
XLD分割:在获取亚像素轮廓后,需要将轮廓进行分割,各个线条的折点,一般为分割点。
算子: segment_contours_xld () 轮廓分割
XLD的拟合:根据线条的预先模型,对线条进行重新生成。
算子:fit_line_contour_xld () 拟合直线
XLD的拟合原理:最小二乘法拟合,权重拟合。
*关闭窗口
dev_close_window ()
*打开窗口
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
*读取图像
read_image (Image, 'printer_chip/printer_chip_01')
*画矩形区域
draw_rectangle1 (WindowHandle, Row1, Column1, Row2, Column2)
*生成矩形区域
gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2)
*裁剪区域
reduce_domain (Image,Rectangle, ImageReduced)
*显示
dev_display (ImageReduced)
*亚像素轮廓提取
edges_sub_pix (ImageReduced, Edges, 'canny', 1, 20, 40)
*选择特定形态的轮廓
select_shape_xld (Edges, SelectedXLD, 'area', 'and', 5000, 99999)
*分割轮廓
segment_contours_xld (SelectedXLD, ContoursSplit, 'lines_circles', 5, 4, 2)
*选择特定形态的轮廓
select_shape_xld (ContoursSplit, SelectedXLD1, 'phi', 'and', -0.01, 0)
*拟合直线
fit_line_contour_xld (SelectedXLD1, 'huber', -1, 0, 5, 2, RowBegin, ColBegin, RowEnd, ColEnd, Nr, Nc, Dist)
*生成直线
gen_contour_polygon_xld (Result, [RowBegin,RowEnd], [ColBegin-500,ColEnd+500])
*显示区域
dev_display (ImageReduced)
*显示轮廓
dev_display (Edges)
*显示结果
dev_display (Result)