学习和掌握Halcon是如何进行模板匹配的。主要包括基于形状的模板匹配,基于相关性的模板匹配,基于组件的模板匹配,基于局部形变的模板匹配,以及基于描述符的模板匹配。
1,基于形状的模板匹配
dev_close_window()
read_image (Holesboard, 'C:/Users/15383/Desktop/halcon/data/holesBoard.jpg')
rgb1_to_gray(Holesboard, GrayImage)
dev_open_window(0, 0, 512, 512, 'black', WindowHandle)
dev_set_draw('margin')
dev_set_line_width(3)
dev_display(GrayImage)
gen_rectangle1 (ROI_0, 699.083, 948.619, 901.05, 1156.77)
reduce_domain(GrayImage, ROI_0, ImageReduced)
crop_domain(ImageReduced, ImagePart)
*测试金字塔的层级参数
inspect_shape_model(ImagePart, ModelImages, ModelRegions, 4, 30)
* create_shape_model(
* Template : : //reduce_domain后的模板图像
* NumLevels ,//金字塔的层数,可设为“auto”或0—10的整数
* AngleStart ,//模板旋转的起始角度
* AngleExtent ,//模板旋转角度范围, >=0
* AngleStep ,//旋转角度的步长, >=0 and <=pi/16
* Optimization ,//设置模板优化和模板创建方法
* Metric , //匹配方法设置
* Contrast ,//设置对比度
* MinContrast ://设置最小对比度
* ModelID ) //输出模板句柄
create_shape_model(ImageReduced, 'auto', -0.39, 0.79, 'auto', 'auto', 'use_polarity', 'auto', 'auto', ModelID)
get_shape_model_contours (ModelContours, ModelID, 1)//**返回形状模型的轮廓
dev_display (ModelContours) //展示提取的模板轮廓,我的显示位置在图像(0,0)的位置,缩小就能看到
stop()
read_image (Holesboardnoise, 'C:/Users/15383/Desktop/halcon/data/holesBoardNoise.jpg')
* find_shape_model(Image, //搜索图像
* ModelID, //模板句柄
* AngleStart, // 搜索时的起始角度
* AngleExtent, //搜索时的角度范围,必须与创建模板时的有交集
* MinScore, //最小匹配值,输出的匹配的得分Score 大于该值
* NumMatches, //定义要输出的匹配的最大个数
* MaxOverlap, //当找到的目标存在重叠时,且重叠大于该值时选择一个好的输出
* SubPixel, //计算精度的设置,五种模式,多选2,3
* NumLevels, //搜索时金字塔的层数
* Greediness : //贪婪度,搜索启发式,一般都设为0.8,越高速度快,容易出现找不到的情况
* Row,Column, Angle, Score) //输出匹配位置的行和列坐标、角度、得分。
find_shape_model(Holesboardnoise, ModelID, -0.39, 0.79, 0.5, 1, 0.5, 'least_squares', 0, 0.9, Row, Column, Angle, Score)
dev_display_shape_matching_results (ModelID, 'red', Row, Column, Angle, 1, 1, 0)
clear_shape_model(ModelID)
实验结果得出图像:
2,基于
https://blog.csdn.net/weixin_43197380/article/details/90053756
https://blog.csdn.net/weixin_43197380/article/details/90053756