重新看halcon模板匹配


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

 

代碼如下:

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') 這個代碼就可以將圖像進行仿射變換,只要指定仿射變換的矩陣。


 
        

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM