基于1:1的图像匹配

* 在一个图片中获取ROI并在此图片中匹配
dev_close_window ()
dev_open_window (0, 0, 600, 600, 'black', WindowHandle)
* 窗口语句
read_image(Image,'L:/Halcon test/mk2.jpg')
*read_image(Image,'L:/Halcon test/mk3.jpg')
*read_image(Image,'L:/Halcon test/mk4.jpg')
* 这里有4张图片,每一张都说明一个小问题,附图分析。
gen_rectangle1 (ROI1, 57.8333, 49.5, 181.167, 342.833)
* 画一个矩形选择ROI,矩形在左上角,覆盖一个完整的,无变形规定尺寸的商标,作为模板。
reduce_domain(Image,ROI1,ImageReduced1)
* 大图和这个矩形的ROI相减就会得到一个左上角的商标的图案作为模板,命名ImageReduced。
create_shape_model(ImageReduced1,0,0,rad(360),0,'no_pregeneration','use_polarity',40,10,ModelID1)
* 创建一个比例不变(1:1)的匹配的轮廓模型。具体参数下个帖子说明,也可见[Halcon算子学习交流区] Halcon模版匹配算子解析
find_shape_model(Image,ModelID1,0,rad(360),0.7,13,0.5,'interpolation',0,0.9,Row,Column,Angle,Score)
* 寻找与模板的大小尺寸必须是一比一匹配的,只是角度的不同而已,若大小发生变化,则不能匹配
get_shape_model_contours(ModelContours1,ModelID1,1)
* 在大图中获取匹配。
for i := 0 to |Row|-1 by 1
    vector_angle_to_rigid(0,0,0,Row,Column,Angle,HomMat2D)
    affine_trans_contour_xld(ModelContours1,ContoursAffinTrans,HomMat2D)
endfor
* 获取匹配。
disp_message (WindowHandle, '总共匹配了' + |Row| + '个商标', 'window', 12, 12, 'red', 'true')
* 输出数量统计。
clear_shape_model(ModelID1)
stop()

图片mk2,共匹配出9个商标,商标只是角度变化(360度,也可自己规定角度)。



图片mk3,匹配到4个商标,有的商标放大,有的缩小,有的变形,则不能被找出。
若要识别这类匹配,就需要采用基于可变比例的匹配。下个帖子讲。

图片mk4,共匹配9个商标,可以看到这张图里,有些商标缺了一角,有些商标中间多了一条白线,等等,商标受到不同程度的干扰认可被识别,只要总的轮廓是一致的。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值