第一范文网 - 专业文章范例文档资料分享平台

一个基于可变比例的匹配的halcon实例及详解

来源:用户分享 时间:2025/6/17 0:54:18 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

一个基于可变比例的匹配的实例及详解

楼主

#

更多发布于:2014-03-26 10:05

昨天说到的有两个有用的例子和大家分享,一个是基于1:1比例的匹配的实例,一个是基于可变比例的匹配, 今天的例子是基于可变比例的匹配。

* 读取一个轮廓模型(shape model),使这个模型可放大或缩小地进行寻找匹配。 dev_close_window ()

dev_open_window (0, 0, 600, 600, 'black', WindowHandle) read_image(Image,'L:/Halcon test/mk3.jpg')

* 选取一张有各种大小,角度,甚至变形的商标的图片做测试

*read_image(Image,'L:/Halcon test/mk5.jpg')

gen_rectangle1 (ROI, 57.8333, 49.5, 181.167, 342.833)

* 画一个矩形选择ROI,矩形在左上角,覆盖一个完整的,无变形规定尺寸的商标,作为模板

reduce_domain(Image,ROI,ImageReduced)

* 大图和这个矩形的ROI相减就会得到一个左上角的商标的图案作为模板,命名ImageReduced

inspect_shape_model (ImageReduced, ModelImages, ModelRegions, 5, 40)

* 创建一个对比的模型,后面两个参数:第一个是层数(NumLevels,如5层),第二个是对比度阈值(具体用法效果还不是很明白)

* 这里看到前面有位朋友之前提到不理解金字塔层数的意义,这里解释一下,如图:

金字塔层数在inspect_shape_model设置为5层,那么相应的在create_scaled_shape_model 创建为5层,在find_scaled_shape_model查找为5层,上图中的5个紫色的箭头指的是就是金字塔层数,层数越多越容易被查找,反应的速度也就越快,一般是1-10层,但要注意保证最底层依然能被识别,主要是作为模板的图片的精度影响。一般5层左右识别的速度都可以接受了。

create_scaled_shape_model (ImageReduced, 5, rad(-180), rad(360), 0, 0.1, 5.0, 0, ['none','no_pregeneration'], 'ignore_global_polarity', 40, 10, ModelID)* 创建一个比例不变的匹配的轮廓模型

* create_scaled_shape_model(Template : : NumLevels, AngleStart, AngleExtent, AngleStep, ScaleMin, ScaleMax, ScaleStep, Optimization, Metric, Contrast, MinContrast : ModelID) * 01、Template,//reduce_domain后的模板图像

* 02、NumLevels,//金字塔的层数,可设为“auto”或0—10的整数* 03、AngleStart,//模板旋转的起始角度

* 04、AngleExtent,//模板旋转角度范围, >=0* 05、AngleStep,//旋转角度的步长, >=0 and <=pi/16

* 06、ScaleMin,//模板最小比例* 07、ScaleMax,//模板最大比例

* 08、ScaleStep,//模板比例的步长* 09、Optimization,//设置模板优化和模板创建方法 * 10、Metric, //匹配方法设置* 11、Contrast,//设置对比度

* 12、MinContrast,//设置最小对比度* 13、ModelID,//输出模板句柄

* write_shape_model (ModelID, 'mk.shm')

* 把这个模型保存成一个shm模板*clear_shape_model (ModelID) stop()

*read_shape_model ('mk.shm', ModelID)find_scaled_shape_model (Image, ModelID, rad(-180), rad(360), 0.1, 5.0, 0.5, 0, 0.5, 'least_squares', 5, 0.8, Row, Column, Angle, Scale, Score)

* 匹配一个比例不变的轮廓模型,参数和创建的参数差不多get_shape_model_contours (ModelContours, ModelID, 1)

for I := 0 to |Score|-1 by 1

vector_angle_to_rigid (0, 0, 0, Row【i】, Column【i】, Angle【i】, HomMat2DRotate) hom_mat2d_scale (HomMat2DRotate, Scale【i】, Scale【i】, Row【i】, Column【i】, HomMat2DScale)

affine_trans_contour_xld (ModelContours, ModelTrans, HomMat2DScale) dev_display (ModelTrans) endfor

disp_message (WindowHandle, '总共匹配了' + |Score| + '个商标', 'window', 12, 12, 'red', 'true')

disp_continue_message (WindowHandle, 'black', 'true')* 但是变形则不能被识别 stop ()

clear_shape_model (ModelID)

图片:MK3-test2.jpg

总共匹配了8 个形状相同,大小比例不同的商标,但紫色圈中的变形的商标并不能被识别。

一个基于可变比例的匹配的halcon实例及详解.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c9lxbs3ug92670es7bbdx_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top