码迷,mamicode.com
首页 > 其他好文 > 详细

重新看halcon模板匹配

时间:2018-08-11 01:17:06      阅读:1408      评论:0      收藏:0      [点我收藏+]

标签:输入   3.2   constant   for   model   rectangle   abs   fine   alc   

工业中模板匹配有很多需求。

技术分享图片

 

技术分享图片

代码如下:

read_image (Image, J:/测试图片/test1/1.bmp)
get_image_size (Image, Width, Height)
gen_rectangle1 (Rectangle, 1057.01, 1698.27, 1241.98, 1898.29)
*gen_rectangle1 (Rectangle, 449.726, 813.267, 669.604, 1005.06)
area_center (Rectangle, Area, RowRef, ColumnRef)
reduce_domain (Image, Rectangle, ImageReduced)
create_ncc_model (ImageReduced, auto,rad(-45), rad(90), auto, use_polarity, ModelID)





for J := 1 to 1 by 1
    read_image (Image1, J:/测试图片/test1/9.bmp)
    find_ncc_model (Image1, ModelID,rad(-45), rad(90), 0.5, 1, 0.5, true, 0, Row, Column, Angle, Score)
    vector_angle_to_rigid ( Row, Column, Angle, RowRef, ColumnRef, 0, HomMat2D1)
    affine_trans_image(Image1, ImageAffinTrans, HomMat2D1, constant, false)
    write_image(ImageAffinTrans, bmp, 0, J:/测试图片/test1/91.bmp)
    xb:=abs(Column-ColumnRef)
    yb:=abs(Row-RowRef)
 
endfor
clear_ncc_model (ModelID)

 

模板匹配关键就是获取以下的矩阵

 

技术分享图片

 

tx ty就是平移量,R矩阵就是旋转,实际上和旋转角度相关。

  vector_angle_to_rigid ( Row, Column, Angle, RowRef, ColumnRef, 0, HomMat2D1)这个代码就是获得上述矩阵的。 前面是输入图像,后面是匹配后的图像,HomMat2D1就是从输入图像通过这个矩阵转化为匹配后的图像。
因此,如果我们希望从匹配后的图像转化到输入图像的位置,只需要将二者的输入调换。

    affine_trans_image(Image1, ImageAffinTrans, HomMat2D1, ‘constant‘, ‘false‘) 这个代码就可以将图像进行仿射变换,只要指定仿射变换的矩阵。

技术分享图片

 

重新看halcon模板匹配

标签:输入   3.2   constant   for   model   rectangle   abs   fine   alc   

原文地址:https://www.cnblogs.com/love6tao/p/9457730.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!