对于十字定位标记,最稳健的方式是使用模板匹配得到定为标志中心。十字定位标记和圆不同,阈值之后没有稳健的形状拟合。因此,阈值的结果如果有孔洞或者边缘误差,其中心坐标值计算结果会不稳定。所以,对于十字标记或者其他的定位标记物,建议使用模板匹配计算中心值作为定位基准。其实现过程可分为2步:1是制作十字模板;2是进行模板的匹配。
制作十字模板
*此函数是根据根据图像建立模板
read_image (Image, 'F:/SZWX912/TestImage/912TestImage1111/111.bmp')
*缩小至点位标志区域
gen_rectangle1 (Rectangle, 1067, 1415, 1191, 1563)
reduce_domain (Image, Rectangle, ImageReduced)
*阈值和填充得到饱满的Region
threshold (ImageReduced, Region, 126, 255)
fill_up (Region, Region)
reduce_domain (ImageReduced, Region, ImageReduced1)
crop_domain (ImageReduced1, ImagePart)
*创建边缘形状模板,该模板比整个的形状模板耗时要少
gen_contour_region_xld (RegionOpening, Contours, 'border')
create_shape_model_xld (Contours, 'auto', -0.39, 0.79, 'auto', 'auto', 'ignore_local_polarity', 5, ModelID)
write_shape_model (ModelID, 'F:/SZWX912/work_x32_MFOL2/CrossModel/CrossModel.shm')
计算定位中心坐标值
通过find_shape_model函数遍历图像寻找模板,并得到计算中心。
(1)读取模板
read_shape_model ('F:/SZWX912/work_x32_MFOL2/CrossModel/CrossModel.shm', ModelID)
(2)读取图像
read_image (ModelImage, 'F:/SZWX912/work_x32_MFOL2/ModelImage/WireBondingModel1.bmp')
(3)在图像中寻找模板的位置,这样就得到了模板的坐标值CrossRowofTemplet和CrossColofTemplet
find_shape_model (ModelImage, ModelID, -0.39, 0.78, 0.1, 2, 0.5, 'none', 0, 0.8, CrossRowofTemplet, CrossColofTemplet, ModelAngle, ModelScore)